Shader學習筆記(17) 頂點偏移水面動畫
阿新 • • 發佈:2019-01-27
Shader"wx/water"{
Properties{
_MainTex("Main Tex",2D)="white"{}
_Color("Color Tint",Color)=(1,1,1,1)
_Magnitude("Distortion Magnitude",Float)=1
_Frequency("Distortion Frequency",Float)=1
_InvWaveLength("Distortion Inverse Wave Length",Float)=10
_Speed("Speed",Float)=0.5
}
SubShader {
Tags{"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "DisableBatching"="True"}
Pass{
Tags{"LightMode"="ForwardBase"}
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
Cull Off
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
float4 _MainTex_ST;
fixed4 _Color;
float _Magnitude;
float _Frequency;
float _InvWaveLength;
float _Speed;
struct a2v
{
float4 vertex:POSITION;
float4 texcoord:TEXCOORD0;
};
struct v2f
{
float4 pos:SV_POSITION;
float2 uv:TEXCOORD0;
};
v2f vert(a2v v){
v2f o;
float4 offset;
offset.xyz=float3(0,0,0);
offset.x=sin(_Frequency*_Time.y+v.vertex.x*_InvWaveLength+v.vertex.y*_InvWaveLength+v.vertex.z*_InvWaveLength)*_Magnitude;
o.pos=UnityObjectToClipPos(v.vertex+offset);
o.uv=TRANSFORM_TEX (v.texcoord,_MainTex);
o.uv+=float2(0,_Time.y*_Speed);
return o;
}
fixed4 frag(v2f i):SV_Target{
fixed4 c=tex2D(_MainTex,i.uv);
c.rgb*=_Color.rgb;
return c;
}
ENDCG
}
}
}
假期歸來.....感覺有點要忘精光的趨勢....趕緊學起來吧..順便提一嘴要用TRANSFORM_TEX時 必須要有#include "UnityCG.cginc"