Skip to content

Commit d8c9d46

Browse files
authored
Merge pull request #20593 from Mugen87/dev3
LineMaterial: Add dash offset.
2 parents cf0b35d + e2c5134 commit d8c9d46

File tree

3 files changed

+46
-2
lines changed

3 files changed

+46
-2
lines changed

examples/js/lines/LineMaterial.js

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
* dashed: <boolean>,
66
* dashScale: <float>,
77
* dashSize: <float>,
8+
* dashOffset: <float>,
89
* gapSize: <float>,
910
* resolution: <Vector2>, // to be set by renderer
1011
* }
@@ -16,6 +17,7 @@ THREE.UniformsLib.line = {
1617
resolution: { value: new THREE.Vector2( 1, 1 ) },
1718
dashScale: { value: 1 },
1819
dashSize: { value: 1 },
20+
dashOffset: { value: 0 },
1921
gapSize: { value: 1 }, // todo FIX - maybe change to totalSize
2022
opacity: { value: 1 }
2123

@@ -184,6 +186,7 @@ THREE.ShaderLib[ 'line' ] = {
184186
#ifdef USE_DASH
185187
186188
uniform float dashSize;
189+
uniform float dashOffset;
187190
uniform float gapSize;
188191
189192
#endif
@@ -206,7 +209,7 @@ THREE.ShaderLib[ 'line' ] = {
206209
207210
if ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps
208211
209-
if ( mod( vLineDistance, dashSize + gapSize ) > dashSize ) discard; // todo - FIX
212+
if ( mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize ) discard; // todo - FIX
210213
211214
#endif
212215
@@ -327,6 +330,24 @@ THREE.LineMaterial = function ( parameters ) {
327330

328331
},
329332

333+
dashOffset: {
334+
335+
enumerable: true,
336+
337+
get: function () {
338+
339+
return this.uniforms.dashOffset.value;
340+
341+
},
342+
343+
set: function ( value ) {
344+
345+
this.uniforms.dashOffset.value = value;
346+
347+
}
348+
349+
},
350+
330351
gapSize: {
331352

332353
enumerable: true,

examples/jsm/lines/LineMaterial.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export interface LineMaterialParameters extends MaterialParameters {
1010
dashed?: boolean;
1111
dashScale?: number;
1212
dashSize?: number;
13+
dashOffset?: number;
1314
gapSize?: number;
1415
linewidth?: number;
1516
resolution?: Vector2;
@@ -22,6 +23,7 @@ export class LineMaterial extends ShaderMaterial {
2223
dashed: boolean;
2324
dashScale: number;
2425
dashSize: number;
26+
dashOffset: number;
2527
gapSize: number;
2628
opacity: number;
2729
readonly isLineMaterial: true;

examples/jsm/lines/LineMaterial.js

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
* dashed: <boolean>,
1414
* dashScale: <float>,
1515
* dashSize: <float>,
16+
* dashOffset: <float>,
1617
* gapSize: <float>,
1718
* resolution: <Vector2>, // to be set by renderer
1819
* }
@@ -24,6 +25,7 @@ UniformsLib.line = {
2425
resolution: { value: new Vector2( 1, 1 ) },
2526
dashScale: { value: 1 },
2627
dashSize: { value: 1 },
28+
dashOffset: { value: 0 },
2729
gapSize: { value: 1 }, // todo FIX - maybe change to totalSize
2830
opacity: { value: 1 }
2931

@@ -192,6 +194,7 @@ ShaderLib[ 'line' ] = {
192194
#ifdef USE_DASH
193195
194196
uniform float dashSize;
197+
uniform float dashOffset;
195198
uniform float gapSize;
196199
197200
#endif
@@ -214,7 +217,7 @@ ShaderLib[ 'line' ] = {
214217
215218
if ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps
216219
217-
if ( mod( vLineDistance, dashSize + gapSize ) > dashSize ) discard; // todo - FIX
220+
if ( mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize ) discard; // todo - FIX
218221
219222
#endif
220223
@@ -335,6 +338,24 @@ var LineMaterial = function ( parameters ) {
335338

336339
},
337340

341+
dashOffset: {
342+
343+
enumerable: true,
344+
345+
get: function () {
346+
347+
return this.uniforms.dashOffset.value;
348+
349+
},
350+
351+
set: function ( value ) {
352+
353+
this.uniforms.dashOffset.value = value;
354+
355+
}
356+
357+
},
358+
338359
gapSize: {
339360

340361
enumerable: true,

0 commit comments

Comments
 (0)