Как в пиксельном шейдере сделать волны?
Понятно как сделать волны в вертексном шейдере
void vert(inout appdata_full vertexData)
{
float3 p = vertexData.vertex.xyz;
p.z = sin(p.x + _Time.y);
p.y += sin(p.x + _Time.y);
vertexData.vertex.xyz = p;
}
А вот в пиксельном сложнее. По горизонтали я его двигаю следующим образом
fixed4 frag(v2f i) : SV_Target
{
half2 uv = i.uv;
uv.x = i.uv.x + _Time.x;
fixed4 col = tex2D(_MainTex, uv);
return col;
}
Но как создать волну? Надо как то исказить uv таким образом, чтобы какая-то часть текстуры была меньше, а какая - то больше, и двигать это с помощью синуса и времени туда-сюда. Но как с помощью uv сделать часть текстуры больше\меньше по сравнению с остальной частью?