uniform sampler2D reflection; uniform sampler2D ripple; void main() { vec3 dir = normalize(gl_TexCoord[1].xyz); // fresnel float k = dir.y*0.5; vec3 normal = texture2D( ripple, gl_TexCoord[2].xz).xzy - texture2D( ripple, gl_TexCoord[3].xz).xzy; vec4 texcoord = gl_TexCoord[0].xzyw; texcoord.xz += normal.xz; gl_FragColor = texture2DProj( reflection, texcoord.xzyw) * (gl_TexCoord[1].w-k) + vec4(pow(clamp(dot(normal,dir), 0.0, 1.0), 2.0)); gl_FragColor.a = k; }