Как в пиксельном шейдере сделать волны?

Понятно как сделать волны в вертексном шейдере

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 сделать часть текстуры больше\меньше по сравнению с остальной частью?


Ответы (0 шт):