constructor()

in src/renderers/webgl/passes/FadeInPass.ts [9:45]


    constructor(speed: number = 1.0) {
        let value = 0.0;
        let active = false;

        let renderProgram: RenderProgram;
        let gl: WebGL2RenderingContext;
        let u_useDepthFade: WebGLUniformLocation;
        let u_depthFade: WebGLUniformLocation;

        this.initialize = (program: ShaderProgram) => {
            if (!(program instanceof RenderProgram)) {
                throw new Error("FadeInPass requires a RenderProgram");
            }

            value = program.started ? 1.0 : 0.0;
            active = true;
            renderProgram = program;
            gl = program.renderer.gl;

            u_useDepthFade = gl.getUniformLocation(renderProgram.program, "useDepthFade") as WebGLUniformLocation;
            gl.uniform1i(u_useDepthFade, 1);

            u_depthFade = gl.getUniformLocation(renderProgram.program, "depthFade") as WebGLUniformLocation;
            gl.uniform1f(u_depthFade, value);
        };

        this.render = () => {
            if (!active || renderProgram.renderData?.updating) return;
            gl.useProgram(renderProgram.program);
            value = Math.min(value + speed * 0.01, 1.0);
            if (value >= 1.0) {
                active = false;
                gl.uniform1i(u_useDepthFade, 0);
            }
            gl.uniform1f(u_depthFade, value);
        };
    }