[小明学Shader]14.热扭曲效果
1.代码
Shader "AAAA/HeatIsland" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _OffsetTex ("Shui (RGB)", 2D) = "white" {} _ClipTex ("Clip (RGB)", 2D) = "white" {} _Speed("速度",range(2,12))=12 _Range("range",range(0,20))=10 } SubShader { Pass { ZTest Always Cull Off ZWrite Off Fog { Mode off } CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma fragmentoption ARB_precision_hint_fastest #include "UnityCG.cginc" uniform sampler2D _MainTex; uniform sampler2D _OffsetTex; uniform float _Speed; uniform float _Range; struct v2f { float4 pos : POSITION; float2 uv : TEXCOORD0; }; v2f vert( appdata_img v ) { v2f o; o.pos = mul (UNITY_MATRIX_MVP, v.vertex); o.uv = v.texcoord; return o; } float4 frag (v2f i) : COLOR{ float2 offset = i.uv; //噪声图的uv随着时间增长一直向下移动 float2 offsetUV=float2(i.uv.x,i.uv.y-_Time.x*_Speed); //计算下移后的uv所对应的color float4 shuiColor = tex2D(_OffsetTex, offsetUV); //将MainTex的uv进行偏移 offsetUV = offset + shuiColor.xy/_Range; return tex2D(_MainTex, offsetUV); } ENDCG } } Fallback off }
2.效果
3.注意
扭曲的本质是UV偏移,便宜信息写在一张噪声图里而已.