From 93a54f6e188ff0845c51151bb1a592cf99b49eb1 Mon Sep 17 00:00:00 2001 From: Roland Csibrei Date: Wed, 25 Oct 2023 05:49:00 +0200 Subject: [PATCH 1/5] GRL - instancing support --- .../src/Materials/GreasedLine/greasedLinePluginMaterial.ts | 2 +- .../src/Materials/GreasedLine/greasedLineSimpleMaterial.ts | 4 ++++ packages/dev/core/src/Shaders/greasedLine.vertex.fx | 6 +++++- 3 files changed, 10 insertions(+), 2 deletions(-) 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..be00207c47b 100644 --- a/packages/dev/core/src/Materials/GreasedLine/greasedLineSimpleMaterial.ts +++ b/packages/dev/core/src/Materials/GreasedLine/greasedLineSimpleMaterial.ts @@ -72,6 +72,10 @@ export class GreasedLineSimpleMaterial extends ShaderMaterial implements IGrease attributes, uniforms: [ "worldViewProjection", + "world", + "worldView", + "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..01ed7ab5646 100644 --- a/packages/dev/core/src/Shaders/greasedLine.vertex.fx +++ b/packages/dev/core/src/Shaders/greasedLine.vertex.fx @@ -1,4 +1,5 @@ precision highp float; +#include attribute float grl_widths; attribute vec3 grl_offsets; @@ -28,6 +29,8 @@ varying float grlColorPointer; #endif void main() { + #include + grlColorPointer = grl_colorPointers; #ifdef GREASED_LINE_CAMERA_FACING @@ -39,7 +42,8 @@ void main() { vec3 grlNext = grl_nextAndCounters.xyz; grlCounters = grl_nextAndCounters.w; - mat4 grlMatrix = worldViewProjection; + mat4 grlMatrix = worldViewProjection * finalWorld; + vec3 grlPositionOffset = grl_offsets; vec4 grlFinalPosition = grlMatrix * vec4( position + grlPositionOffset , 1.0 ); vec4 grlPrevPos = grlMatrix * vec4( grlPrevious + grlPositionOffset, 1.0 ); From 34311f97a8016447649b6723082479bf430e408b Mon Sep 17 00:00:00 2001 From: Roland Csibrei Date: Wed, 25 Oct 2023 13:57:19 +0200 Subject: [PATCH 2/5] fixed view projection --- packages/dev/core/src/Shaders/greasedLine.vertex.fx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dev/core/src/Shaders/greasedLine.vertex.fx b/packages/dev/core/src/Shaders/greasedLine.vertex.fx index 01ed7ab5646..7caa1aca1ae 100644 --- a/packages/dev/core/src/Shaders/greasedLine.vertex.fx +++ b/packages/dev/core/src/Shaders/greasedLine.vertex.fx @@ -42,7 +42,7 @@ void main() { vec3 grlNext = grl_nextAndCounters.xyz; grlCounters = grl_nextAndCounters.w; - mat4 grlMatrix = worldViewProjection * finalWorld; + mat4 grlMatrix = viewProjection * finalWorld; vec3 grlPositionOffset = grl_offsets; vec4 grlFinalPosition = grlMatrix * vec4( position + grlPositionOffset , 1.0 ); From 8278d6d9958c0dd51187f2c33956323dbe4c646b Mon Sep 17 00:00:00 2001 From: Roland Csibrei Date: Wed, 25 Oct 2023 14:18:46 +0200 Subject: [PATCH 3/5] fixed uniform decalaration in shader as well --- packages/dev/core/src/Shaders/greasedLine.vertex.fx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dev/core/src/Shaders/greasedLine.vertex.fx b/packages/dev/core/src/Shaders/greasedLine.vertex.fx index 7caa1aca1ae..e10313d3a4f 100644 --- a/packages/dev/core/src/Shaders/greasedLine.vertex.fx +++ b/packages/dev/core/src/Shaders/greasedLine.vertex.fx @@ -5,7 +5,7 @@ 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; From 3713766b35f659d86a2067a07a3a21b1135f1d41 Mon Sep 17 00:00:00 2001 From: Roland Csibrei Date: Wed, 25 Oct 2023 15:33:36 +0200 Subject: [PATCH 4/5] removed unused uniforms --- .../src/Materials/GreasedLine/greasedLineSimpleMaterial.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/dev/core/src/Materials/GreasedLine/greasedLineSimpleMaterial.ts b/packages/dev/core/src/Materials/GreasedLine/greasedLineSimpleMaterial.ts index be00207c47b..115c8515ac3 100644 --- a/packages/dev/core/src/Materials/GreasedLine/greasedLineSimpleMaterial.ts +++ b/packages/dev/core/src/Materials/GreasedLine/greasedLineSimpleMaterial.ts @@ -71,9 +71,6 @@ export class GreasedLineSimpleMaterial extends ShaderMaterial implements IGrease { attributes, uniforms: [ - "worldViewProjection", - "world", - "worldView", "viewProjection", "view", "projection", From f1e3f516ea118f7f133ccd5ccb01b5fb80d910bf Mon Sep 17 00:00:00 2001 From: Roland Csibrei Date: Wed, 25 Oct 2023 18:43:16 +0200 Subject: [PATCH 5/5] w instances/wo instances fix --- .../Materials/GreasedLine/greasedLineSimpleMaterial.ts | 1 + packages/dev/core/src/Shaders/greasedLine.vertex.fx | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/dev/core/src/Materials/GreasedLine/greasedLineSimpleMaterial.ts b/packages/dev/core/src/Materials/GreasedLine/greasedLineSimpleMaterial.ts index 115c8515ac3..5c764ceb1cf 100644 --- a/packages/dev/core/src/Materials/GreasedLine/greasedLineSimpleMaterial.ts +++ b/packages/dev/core/src/Materials/GreasedLine/greasedLineSimpleMaterial.ts @@ -71,6 +71,7 @@ export class GreasedLineSimpleMaterial extends ShaderMaterial implements IGrease { attributes, uniforms: [ + "world", "viewProjection", "view", "projection", diff --git a/packages/dev/core/src/Shaders/greasedLine.vertex.fx b/packages/dev/core/src/Shaders/greasedLine.vertex.fx index e10313d3a4f..6e917757f6c 100644 --- a/packages/dev/core/src/Shaders/greasedLine.vertex.fx +++ b/packages/dev/core/src/Shaders/greasedLine.vertex.fx @@ -42,8 +42,12 @@ void main() { vec3 grlNext = grl_nextAndCounters.xyz; grlCounters = grl_nextAndCounters.w; - mat4 grlMatrix = viewProjection * finalWorld; - + #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 );