// fog.fs
//
// mgła w oparciu o piksele

uniform float density;

void main(void)
{
    const vec4 fogColor = vec4(0.5, 0.8, 0.5, 1.0);

    // obliczenie współczynnika mgły (wykładniczy drugiego stopnia)
    // w oparciu o współrzędną Z fragmentu
    const float e = 2.71828;
    float fogFactor = (density * gl_FragCoord.z);
    fogFactor *= fogFactor;
    fogFactor = clamp(pow(e, -fogFactor), 0.0, 1.0);

    // zlewanie koloru mgły z kolorem wejściowym
    gl_FragColor = mix(fogColor, gl_Color, fogFactor);
}

