Home Reference Source

src/renderer/chunks/fog.js

function base() {
    return `
    float fogStart = fogSettings.x;
    float fogEnd = fogSettings.y;
    float fogDensity = fogSettings.z;

    float dist = 0.0;
    float fogFactor = 0.0;
    dist = gl_FragCoord.z / gl_FragCoord.w;`;
}

const FOG = {
    linear: () => {
        return `${base()}

        fogFactor = (fogEnd - dist) / (fogEnd - fogStart);
        fogFactor = clamp(fogFactor, 0.0, 1.0);
        base = mix(fogColor, base, fogFactor);`;
    },
    exponential: () => {
        return `${base()}
        fogFactor = 1.0 / exp(dist * fogDensity);
        fogFactor = clamp(fogFactor, 0.0, 1.0);
        base = mix(fogColor, base, fogFactor);`;
    },
    exponential2: () => {
        return `${base()}
        fogFactor = 1.0 /exp( (dist * fogDensity) * (dist * fogDensity) );
        fogFactor = clamp(fogFactor, 0.0, 1.0);
        base = mix(fogColor, base, fogFactor);`;
    },
};

export {
    FOG,
};