修复
This commit is contained in:
@@ -7,8 +7,8 @@ Shader "Soullies/DTM_RandomGridFloor"
|
||||
[Header(Pattern Settings)]
|
||||
_PatternSize("Pattern Size (X, Y)", Vector) = (2.0, 2.0, 0, 0)
|
||||
_GridDensity("Grid Density (Quantity Multiplier)", Float) = 1.0
|
||||
|
||||
_TimeAngle("Time Angle (Speed)", Float) = 1.0
|
||||
_BaseSpeed("Base Speed (Static)", Float) = 1.0
|
||||
_TimeAngle("Time Angle / Offset (Dynamic)", Float) = 0.0
|
||||
|
||||
[Header(Edge Settings)]
|
||||
_StepA("Step A", Range(0, 1)) = 0.293
|
||||
@@ -87,6 +87,7 @@ Shader "Soullies/DTM_RandomGridFloor"
|
||||
half4 _Color0;
|
||||
float4 _PatternSize;
|
||||
float _GridDensity;
|
||||
float _BaseSpeed;
|
||||
float _TimeAngle;
|
||||
float _StepA;
|
||||
float _StepB;
|
||||
@@ -171,8 +172,8 @@ Shader "Soullies/DTM_RandomGridFloor"
|
||||
float s = 0.707106;
|
||||
float2 rotatedUV = mul(scaledUV, float2x2(c, -s, s, c));
|
||||
|
||||
// Time driven animation
|
||||
float t = _TimeAngle * _TimeParameters.x;
|
||||
// Time driven animation (Base Time + Phase Offset)
|
||||
float t = _TimeParameters.x * _BaseSpeed + _TimeAngle;
|
||||
|
||||
// Voronoi mathematical noise
|
||||
float v = VoronoiDistance(rotatedUV, t);
|
||||
|
||||
@@ -7,7 +7,8 @@ Shader "Soullies/DTM_RandomGridTube"
|
||||
[Header(Pattern Settings)]
|
||||
_PatternSize("Pattern Size (X, Y)", Vector) = (2.0, 2.0, 0, 0)
|
||||
_GridDensity("Grid Density (Quantity Multiplier)", Float) = 1.0
|
||||
_TimeAngle("Time Angle (Speed)", Float) = 1.0
|
||||
_BaseSpeed("Base Speed (Static)", Float) = 1.0
|
||||
_TimeAngle("Time Angle / Offset (Dynamic)", Float) = 0.0
|
||||
|
||||
[Header(Edge Settings)]
|
||||
_StepA("Step A", Range(0, 1)) = 0.293
|
||||
@@ -82,6 +83,7 @@ Shader "Soullies/DTM_RandomGridTube"
|
||||
half4 _Color0;
|
||||
float4 _PatternSize;
|
||||
float _GridDensity;
|
||||
float _BaseSpeed;
|
||||
float _TimeAngle;
|
||||
float _StepA;
|
||||
float _StepB;
|
||||
@@ -177,13 +179,9 @@ Shader "Soullies/DTM_RandomGridTube"
|
||||
// Convert adjusted angle to U coordinate
|
||||
float u = angle * _TubeRadius;
|
||||
|
||||
// V is driven by World Z to maintain seamless tiling
|
||||
// 1. 获取管道局部Z轴在世界空间中的单位方向向量
|
||||
float3 tubeForwardWS = TransformObjectToWorldDir(float3(0, 0, 1));
|
||||
|
||||
// 2. 将世界坐标投影到管道的正前方,替代原本写死的 World Z
|
||||
// 这样无论管道怎么旋转,V轴永远沿着管道的长度方向进行世界坐标级别的无缝平铺
|
||||
float v = dot(input.positionWS, tubeForwardWS);
|
||||
// V is driven by Object Z scaled by World Scale to maintain seamless tiling and resist rotation stretching
|
||||
float scaleZ = length(float3(unity_ObjectToWorld[0].z, unity_ObjectToWorld[1].z, unity_ObjectToWorld[2].z));
|
||||
float v = input.positionOS.z * scaleZ;
|
||||
|
||||
float2 cylindricalUV = float2(u, v);
|
||||
|
||||
@@ -198,8 +196,8 @@ Shader "Soullies/DTM_RandomGridTube"
|
||||
float s = 0.707106;
|
||||
float2 rotatedUV = mul(scaledUV, float2x2(c, -s, s, c));
|
||||
|
||||
// Time driven animation
|
||||
float t = _TimeAngle * _TimeParameters.x;
|
||||
// Time driven animation (Base Time + Phase Offset)
|
||||
float t = _TimeParameters.x * _BaseSpeed + _TimeAngle;
|
||||
|
||||
// Voronoi mathematical noise
|
||||
float voronoiV = VoronoiDistance(rotatedUV, t);
|
||||
|
||||
Reference in New Issue
Block a user