 
             /* FRESNEL */
             if (!swimming) {
-                float f = fresnel(dot(normalWater, normalizedVPos), waterFresnelBias, waterFresnelPow);
+                float f = fresnel(dot(normalWater, normalizedViewPos), waterFresnelBias, waterFresnelPow);
                 color += mix(refractionColor * (1.0 - waterTint) +  waterTint * litWaterTint,
                     reflectionColor * (1.0 - waterTint) + waterTint * litWaterTint, f);
             } else {

#endif
#if defined (NORMAL_MAPPING)
    //Normalised but not orthonormalised. It should be orthogonal anyway (except for some non-rectangular block shapes like torches), but it's not obvious what's the best thing to do when it isn't.
    mat3 extendedTangentSpaceToViewSpace = mat3(normalize(uvToView[0]), normalize(uvToView[1]), normal);
    normalOpaque = normalize(texture2D(textureAtlasNormal, texCoord).xyz * 2.0 - 1.0);
    normalOpaque = normalize(extendedTangentSpaceToViewSpace * normalOpaque);

    shininess = texture2D(textureAtlasNormal, texCoord).w;
#endif


    vec2 texCoord = gl_TexCoord[0].xy;

    vec3 normalizedViewPos = -normalize(vertexViewPos.xyz);
    vec2 projectedPos = projectVertexToTexCoord(vertexProjPos);
    vec3 normalOpaque = normal;
    float shininess = 0.0;
