Кажется, что это тот эффект, который вам нужен, вы можете изменить значение 0.2, чтобы увеличить или уменьшить эффект, или сделать его настраиваемым в вашем шейдере, но это простое изменение. Я бы порекомендовал Shazzam , если вы не используете его для написания шейдеров для WPF или Silverlight.
sampler2D input : register(s0);
float4 main(float2 uv : TEXCOORD) : COLOR
{
float y = uv.y+(sin(uv.x*3.14) * lerp(-1,1,uv.y) * 0.2);
if(y < 0 || y > 1)
return float4(0,0,0,0);
else
return tex2D(input,float2(uv.x,y));
}