sampler Tex: register(s0); sampler Env: register(s1); float off; float4 main(float2 texCoord: TEXCOORD0, float3 viewVec: TEXCOORD1) : COLOR { const float4 waterColor = float4(0.3, 0.4, 1.0, 0.0); float4 s = tex2D(Tex, texCoord) - 0.5; float sobelX = s.z; float sobelY = s.w; float3 normal = float3(sobelX, 0.04, sobelY); normal = normalize(normal); viewVec = normalize(viewVec); float3 reflVec = reflect(viewVec, normal); float4 refl = texCUBE(Env, reflVec) * 0.9; float3 refrVec = refract(viewVec, normal, 0.85); float4 refr = texCUBE(Env, refrVec) * waterColor; return lerp(refl, refr, -dot(viewVec, normal)); }