#if !defined END_CENTER_FOG
#define END_CENTER_FOG
float doEndCenterFog(vec3 ro, vec3 rayDir, float wsdist, float falloff) { // Thanks to FoZy STYLE
    vec3 d = ro - vec3(0.5, 60.5, 0.5); // Light source vector
    d.y *= 0.7;
    rayDir.y *= 0.7;

    float a = falloff * dot(rayDir, rayDir);
    float b  = 2.0 * falloff * dot(rayDir, d);
    float c = 1.0 + falloff * dot(d, d);

    float sqrtDiscr = max(0.001, sqrt(4.0 * a * c - b * b));
    float upper = (2.0 * a * wsdist + b) / sqrtDiscr;
    float lower = b / sqrtDiscr;

    return 2.0 * (atan(upper) - atan(lower)) / sqrtDiscr;
}
#endif