44
55import { LayerExtension , _mergeShaders as mergeShaders } from '@deck.gl/core' ;
66import { vec3 } from '@math.gl/core' ;
7- import { dashShaders , offsetShaders } from './shaders.glsl' ;
7+ import { dashShaders , Defines , offsetShaders } from './shaders.glsl' ;
88
9- import type { Layer , LayerContext , Accessor , UpdateParameters } from '@deck.gl/core' ;
9+ import type { Accessor , Layer , LayerContext , UpdateParameters } from '@deck.gl/core' ;
1010import type { ShaderModule } from '@luma.gl/shadertools' ;
1111
1212const defaultProps = {
@@ -87,8 +87,12 @@ export default class PathStyleExtension extends LayerExtension<PathStyleExtensio
8787
8888 // Merge shader injection
8989 let result = { } as { inject : Record < string , string > } ;
90+ const defines : Defines = { } ;
9091 if ( extension . opts . dash ) {
9192 result = mergeShaders ( result , dashShaders ) ;
93+ if ( extension . opts . highPrecisionDash ) {
94+ defines . HIGH_PRECISION_DASH = true ;
95+ }
9296 }
9397 if ( extension . opts . offset ) {
9498 result = mergeShaders ( result , offsetShaders ) ;
@@ -104,7 +108,8 @@ export default class PathStyleExtension extends LayerExtension<PathStyleExtensio
104108 }
105109 } ;
106110 return {
107- modules : [ pathStyle ]
111+ modules : [ pathStyle ] ,
112+ defines
108113 } ;
109114 }
110115
@@ -118,19 +123,15 @@ export default class PathStyleExtension extends LayerExtension<PathStyleExtensio
118123 if ( extension . opts . dash ) {
119124 attributeManager . addInstanced ( {
120125 instanceDashArrays : { size : 2 , accessor : 'getDashArray' } ,
121- instanceDashOffsets : extension . opts . highPrecisionDash
126+ ... ( extension . opts . highPrecisionDash
122127 ? {
123- size : 1 ,
124- accessor : 'getPath' ,
125- transform : extension . getDashOffsets . bind ( this )
126- }
127- : {
128- size : 1 ,
129- update : attribute => {
130- attribute . constant = true ;
131- attribute . value = [ 0 ] ;
128+ instanceDashOffsets : {
129+ size : 1 ,
130+ accessor : 'getPath' ,
131+ transform : extension . getDashOffsets . bind ( this )
132132 }
133133 }
134+ : { } )
134135 } ) ;
135136 }
136137 if ( extension . opts . offset ) {
0 commit comments