@@ -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