Shader "Custom/WaveSprite" { Properties { _MainTex ("Sprite Texture", 2D) = "white" {} _Amplitude ("Wave Amplitude", Float) = 0.05 _Frequency ("Wave Frequency", Float) = 10 _Speed ("Wave Speed", Float) = 2 } SubShader { Tags { "RenderType"="Opaque" "Queue"="Transparent" } LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata_t { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; sampler2D _MainTex; float _Amplitude; float _Frequency; float _Speed; //float _Time; v2f vert (appdata_t v) { v2f o; float wave = sin(v.vertex.x * _Frequency + _Time * _Speed) * _Amplitude; v.vertex.y += wave; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.uv; return o; } fixed4 frag (v2f i) : SV_Target { return tex2D(_MainTex, i.uv); } ENDCG } } }