Shader2.0-一個簡單的uv動畫:平移
阿新 • • 發佈:2018-11-15
Shader "Hidden/TestStruct" { Properties { _MainTex ("Texture", 2D) = "white" {} _Range("WaveNumber",float)=1 _Frency("Frency",float)=0.5 _Speed("Speed",float)=1 } SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; float _Range;//引用property中的變數,Shader2.0中,凡是要用到Propertiy中的變數,都要新增引用 float _Frency; float _Speed; v2f vert (appdata v) { v2f o; //float timer = _Speed*_Time.y;//定義計時器 //float wave = _Range * sin(timer + v.vertex.x*_Frency);//根據三角函式算出頂點的y軸位置 //v.vertex.y = v.vertex.y+wave;//把計算的值賦值給頂點著色器的y o.vertex = UnityObjectToClipPos(v.vertex);//轉換到世界座標系,所有在Shader2.0中的操作最後都要轉換到世界座標系 o.uv = v.uv; return o; } sampler2D _MainTex; fixed4 frag (v2f i) : SV_Target { float2 tempUV = i.uv; tempUV.x += _Time.x; tempUV.y += _Time.y; //這裡圖片的型別必須是Repeat,否則會出現無法預知的結果 fixed4 col = tex2D(_MainTex, tempUV);//tex2D表示按照i.uv的比例將圖片對映到模型,i.uv表示對映的比例 // just invert the colors //col.rgb = 1 - col.rgb; return col; } ENDCG } } }