uniform samplerCube skyDome; uniform sampler2D water; uniform vec4 waterColour; varying mat3 tanSpace; void main(void) { vec3 ref = ((gl_TexCoord[1] + texture2D(water, gl_TexCoord[0].xy)) * 0.5).xyz; ref *= 2.0; ref -= vec3(1.0, 1.0, 1.0); ref = tanSpace * ref; vec4 sample = waterColour + ( (textureCube(skyDome, ref) - waterColour) * (dot(ref,vec3(0.0,0.0,1.0)) * waterColour.w)); gl_FragColor = vec4( sample.xyz, 0.825); }