diff --git a/packages/dev/core/src/Materials/GreasedLine/greasedLinePluginMaterial.ts b/packages/dev/core/src/Materials/GreasedLine/greasedLinePluginMaterial.ts index cabcdd710ef..0aa52752849 100644 --- a/packages/dev/core/src/Materials/GreasedLine/greasedLinePluginMaterial.ts +++ b/packages/dev/core/src/Materials/GreasedLine/greasedLinePluginMaterial.ts @@ -372,7 +372,7 @@ export class GreasedLinePluginMaterial extends MaterialPluginBase implements IGr grlCounters = grl_nextAndCounters.w; - mat4 grlMatrix = viewProjection * world; + mat4 grlMatrix = viewProjection * finalWorld; vec4 grlFinalPosition = grlMatrix * vec4( positionUpdated , 1.0 ); vec4 grlPrevPos = grlMatrix * vec4( grlPrevious + grlPositionOffset, 1.0 ); vec4 grlNextPos = grlMatrix * vec4( grlNext + grlPositionOffset, 1.0 ); diff --git a/packages/dev/core/src/Materials/GreasedLine/greasedLineSimpleMaterial.ts b/packages/dev/core/src/Materials/GreasedLine/greasedLineSimpleMaterial.ts index 35aedd8c6f5..5c764ceb1cf 100644 --- a/packages/dev/core/src/Materials/GreasedLine/greasedLineSimpleMaterial.ts +++ b/packages/dev/core/src/Materials/GreasedLine/greasedLineSimpleMaterial.ts @@ -71,7 +71,9 @@ export class GreasedLineSimpleMaterial extends ShaderMaterial implements IGrease { attributes, uniforms: [ - "worldViewProjection", + "world", + "viewProjection", + "view", "projection", "grlColorsWidth", "grlUseColors", diff --git a/packages/dev/core/src/Shaders/greasedLine.vertex.fx b/packages/dev/core/src/Shaders/greasedLine.vertex.fx index e98127acddc..6e917757f6c 100644 --- a/packages/dev/core/src/Shaders/greasedLine.vertex.fx +++ b/packages/dev/core/src/Shaders/greasedLine.vertex.fx @@ -1,10 +1,11 @@ precision highp float; +#include attribute float grl_widths; attribute vec3 grl_offsets; attribute float grl_colorPointers; attribute vec3 position; -uniform mat4 worldViewProjection; +uniform mat4 viewProjection; uniform mat4 projection; varying float grlCounters; varying float grlColorPointer; @@ -28,6 +29,8 @@ varying float grlColorPointer; #endif void main() { + #include + grlColorPointer = grl_colorPointers; #ifdef GREASED_LINE_CAMERA_FACING @@ -39,7 +42,12 @@ void main() { vec3 grlNext = grl_nextAndCounters.xyz; grlCounters = grl_nextAndCounters.w; - mat4 grlMatrix = worldViewProjection; + #ifdef INSTANCES + mat4 grlMatrix = viewProjection * finalWorld ; + #else + mat4 grlMatrix = viewProjection * world ; + #endif + vec3 grlPositionOffset = grl_offsets; vec4 grlFinalPosition = grlMatrix * vec4( position + grlPositionOffset , 1.0 ); vec4 grlPrevPos = grlMatrix * vec4( grlPrevious + grlPositionOffset, 1.0 );