| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | 
							- Shader "Custom/ParticleUnlitLocalYGradient"
 
- {
 
-     Properties
 
-     {
 
-         _Color1 ("Color 1", Color) = (1, 1, 1, 1)
 
-         _Color2 ("Color 2", Color) = (0, 0, 0, 1)
 
-         _GradientRange ("Gradient Range", Vector) = (0, 1, 0, 0)
 
-     }
 
-     SubShader
 
-     {
 
-         Tags { "Queue" = "Overlay" }
 
-         Pass
 
-         {
 
-             CGPROGRAM
 
-             #pragma vertex vert
 
-             #pragma fragment frag
 
-             #pragma exclude_renderers gles xbox360 ps3
 
-             struct appdata_t
 
-             {
 
-                 float4 vertex : POSITION;
 
-                 float4 color : COLOR;
 
-             };
 
-             struct v2f
 
-             {
 
-                 float4 pos : POSITION;
 
-                 float4 color : COLOR;
 
-                 float localY : TEXCOORD0;
 
-             };
 
-             float4 _Color1;
 
-             float4 _Color2;
 
-             float4 _GradientRange; // xy 是范围的最小值和最大值
 
-             v2f vert (appdata_t v)
 
-             {
 
-                 v2f o;
 
-                 o.pos = UnityObjectToClipPos(v.vertex);
 
-                 o.color = v.color;
 
-                 
 
-                 // 将模型空间的 Y 坐标传递到片段着色器
 
-                 o.localY = v.vertex.y;
 
-                 return o;
 
-             }
 
-             fixed4 frag (v2f i) : SV_Target
 
-             {
 
-                 // 计算渐变的值
 
-                 float gradient = (i.localY - _GradientRange.x) / (_GradientRange.y - _GradientRange.x);
 
-                 gradient = clamp(gradient, 0.0, 1.0); // 确保渐变值在 0 到 1 之间
 
-                 // 线性插值两种颜色
 
-                 fixed4 interpolatedColor = lerp(_Color1, _Color2, gradient);
 
-                 return interpolatedColor * i.color;
 
-             }
 
-             ENDCG
 
-         }
 
-     }
 
-     FallBack "Diffuse"
 
- }
 
 
  |