Home Reference Source

src/renderer/chunks/light.js

const DIRECTIONAL = {
    before: () => {
        return `
        struct Directional {
            vec4 dlPosition;
            vec4 dlColor;
            float flIntensity;
        };

        uniform directional {
            Directional directionalLights[MAX_DIRECTIONAL];
        };
        `;
    },

    main: () => {
        return `
            vec3 dcolor = vec3(0.0);
            for (int i = 0; i < MAX_DIRECTIONAL; i++) {
                vec3 inverseLightDirection = normalize(directionalLights[i].dlPosition.xyz);

                vec3 light = vec3(max(dot(v_normal, inverseLightDirection), 0.0));
                vec3 directionalColor = directionalLights[i].dlColor.rgb * light;
                dcolor += mix(dcolor, directionalColor, directionalLights[i].flIntensity);
            }
            dcolor /= float(MAX_DIRECTIONAL);
            base.rgb *= dcolor;
        `;
    },
};

const POINT = {
    before: () => {
        return '';
    },

    main: () => {
        return '';
    },
};

export {
    DIRECTIONAL,
    POINT,
};