This commit is contained in:
SoulliesOfficial
2026-04-05 03:14:24 -04:00
parent 1e11f95976
commit c392ae4949
116 changed files with 326290 additions and 954253 deletions

View File

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

View File

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