Shader "Custom/UVAni" { Properties{ _MainTex("MainTex", 2D) = "black"{} _NoiseTex("NoiseTex", 2D) = "black"{} _Color("Color", Color) = (1,1,1,1) _Cutout("Cutout", Range(-0.1, 1.1)) = 0.0 _Speed("Speed", Vector) = (1,1,1,1) } SubShader{ Pass{ CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" sampler2D _MainTex; float4 _MainTex_ST; sampler2D _NoiseTex; float4 _NoiseTex_ST; float4 _Color; float _Cutout; float4 _Speed; struct appdata{ float4 vertex : POSITION; float2 uv : TEXCOORD0; //第一套纹理 }; struct v2f{ float4 pos : SV_POSITION; float2 uv : TEXCOORD0; //通用存储器 float2 pos_uv : TEXCOORD1; }; v2f vert(appdata v){ v2f o; o.pos = UnityObjectToClipPos(v.vertex); o.uv = v.uv * _MainTex_ST.xy + _MainTex_ST.zw; o.pos_uv = o.pos.xz * _MainTex_ST.xy + _MainTex_ST.zw; return o; } float4 frag(v2f i) : SV_TARGET //片元函数着色器颜色输出语义 { //float4 col = tex2D(_MainTex, i.uv); half gradient = tex2D(_MainTex, i.uv + _Time.y * _Speed.xy).r; half noise = tex2D(_NoiseTex, i.uv + _Time.y * _Speed.zw).r; //clip(gradient - 0.1); clip(gradient - noise - _Cutout); return _Color; } ENDCG } } }