Skip to content

Commit d2c520f

Browse files
committed
Added proper motion vector support to NiagaraSplines
1 parent 942ffa4 commit d2c520f

File tree

4 files changed

+15
-13
lines changed

4 files changed

+15
-13
lines changed
-5.67 KB
Binary file not shown.
63.7 KB
Binary file not shown.
2.97 KB
Binary file not shown.

Plugins/GraphicsPlugin/Shaders/NiagaraSplines/SplinesDeform.ush

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ struct FSplineHelper
1111
float Alpha,
1212
float SegmentCountPerInstance,
1313
in float SplineId,
14-
in Texture2D SplinePositionTexture,
15-
in Texture2D SplineTangentTexture,
16-
in Texture2D SplineNormalTexture,
14+
in float CurrentFrameIndex,
15+
in Texture2DArray SplinePositionTexture,
16+
in Texture2DArray SplineTangentTexture,
17+
in Texture2DArray SplineNormalTexture,
1718
out float3 SplineStartPos,
1819
out float3 SplineStartTangent,
1920
out float3 SplineEndPos,
@@ -28,13 +29,13 @@ struct FSplineHelper
2829
int SegmentIndex0 = floor(saturate(Alpha) * (float)(SegmentCountPerInstance-1));
2930
int SegmentIndex1 = min(SegmentCountPerInstance-1, SegmentIndex0 + 1);
3031

31-
float4 SplineStartPosScale = SplinePositionTexture.Load(int3(SegmentIndex0, SplineId, 0));
32-
float4 SplineEndPosScale = SplinePositionTexture.Load(int3(SegmentIndex1, SplineId, 0));
33-
float4 SplineStartTangentRoll = SplineTangentTexture.Load(int3(SegmentIndex0, SplineId, 0));
34-
float4 SplineEndTangentRoll = SplineTangentTexture.Load(int3(SegmentIndex1, SplineId, 0));
32+
float4 SplineStartPosScale = SplinePositionTexture.Load(int4(SegmentIndex0, SplineId, CurrentFrameIndex, 0));
33+
float4 SplineEndPosScale = SplinePositionTexture.Load(int4(SegmentIndex1, SplineId, CurrentFrameIndex, 0));
34+
float4 SplineStartTangentRoll = SplineTangentTexture.Load(int4(SegmentIndex0, SplineId, CurrentFrameIndex, 0));
35+
float4 SplineEndTangentRoll = SplineTangentTexture.Load(int4(SegmentIndex1, SplineId, CurrentFrameIndex, 0));
3536

36-
SplineStartNormal = SplineNormalTexture.Load(int3(SegmentIndex0, SplineId, 0)).xyz * 2.f - 1.f;
37-
SplineEndNormal = SplineNormalTexture.Load(int3(SegmentIndex1, SplineId, 0)).xyz * 2.f - 1.f;
37+
SplineStartNormal = SplineNormalTexture.Load(int4(SegmentIndex0, SplineId, CurrentFrameIndex, 0)).xyz * 2.f - 1.f;
38+
SplineEndNormal = SplineNormalTexture.Load(int4(SegmentIndex1, SplineId, CurrentFrameIndex, 0)).xyz * 2.f - 1.f;
3839

3940
SplineStartPos = SplineStartPosScale.xyz;
4041
SplineEndPos = SplineEndPosScale.xyz;
@@ -81,10 +82,11 @@ struct FSplineHelper
8182
float3 SplineMeshDir,
8283
float3 SplineMeshX,
8384
float3 SplineMeshY,
84-
Texture2D SplinePositionTexture,
85-
Texture2D SplineTangentTexture,
86-
Texture2D SplineNormalTexture,
85+
Texture2DArray SplinePositionTexture,
86+
Texture2DArray SplineTangentTexture,
87+
Texture2DArray SplineNormalTexture,
8788
float SplineId,
89+
float CurrentFrameIndex,
8890
float3 LocalPosition,
8991
float3 LocalNormal,
9092
out float3 TransformedPosition,
@@ -109,7 +111,7 @@ struct FSplineHelper
109111
float SplineStartRoll, SplineEndRoll;
110112

111113
GetSplineParams(
112-
Alpha, SegmentCountPerInstance, SplineId,
114+
Alpha, SegmentCountPerInstance, SplineId, CurrentFrameIndex,
113115
SplinePositionTexture, SplineTangentTexture, SplineNormalTexture,
114116
SplineStartPos, SplineStartTangent, SplineEndPos, SplineEndTangent,
115117
SplineStartNormal, SplineEndNormal,

0 commit comments

Comments
 (0)