Skip to content

⬅️ Back to Table of Contents

📄 WebGLRenderStates.js

📊 Analysis Summary

Metric Count
🔧 Functions 9
📦 Imports 1
📊 Variables & Constants 6

📚 Table of Contents

🛠️ File Location:

📂 src/renderers/webgl/WebGLRenderStates.js

📦 Imports

Name Source
WebGLLights ./WebGLLights.js

Variables & Constants

Name Type Kind Value Exported
lights any let/var new WebGLLights( extensions )
lightsArray any[] let/var []
shadowsArray any[] let/var []
state { lightsArray: any[]; shadowsArray: a... let/var { lightsArray: lightsArray, shadowsArray: shadowsArray, camera: null, lights:...
renderStates WeakMap<WeakKey, any> let/var new WeakMap()
renderState any let/var *not shown*

Functions

WebGLRenderState(extensions: any): { init: (camera: any) => void; state: { lightsArray: any[]; shadowsArray: any[]; camera: any; lights: any; transmissionRenderTarget: {}; }; setupLights: () => void; setupLightsView: (camera: any) => void; pushLight: (light: any) => void; pushShadow: (shadowLight: any) => void; }

Parameters:

  • extensions any

Returns: { init: (camera: any) => void; state: { lightsArray: any[]; shadowsArray: any[]; camera: any; lights: any; transmissionRenderTarget: {}; }; setupLights: () => void; setupLightsView: (camera: any) => void; pushLight: (light: any) => void; pushShadow: (shadowLight: any) => void; }

Calls:

  • lightsArray.push
  • shadowsArray.push
  • lights.setup
  • lights.setupView
Code
function WebGLRenderState( extensions ) {

    const lights = new WebGLLights( extensions );

    const lightsArray = [];
    const shadowsArray = [];

    function init( camera ) {

        state.camera = camera;

        lightsArray.length = 0;
        shadowsArray.length = 0;

    }

    function pushLight( light ) {

        lightsArray.push( light );

    }

    function pushShadow( shadowLight ) {

        shadowsArray.push( shadowLight );

    }

    function setupLights() {

        lights.setup( lightsArray );

    }

    function setupLightsView( camera ) {

        lights.setupView( lightsArray, camera );

    }

    const state = {
        lightsArray: lightsArray,
        shadowsArray: shadowsArray,

        camera: null,

        lights: lights,

        transmissionRenderTarget: {}
    };

    return {
        init: init,
        state: state,
        setupLights: setupLights,
        setupLightsView: setupLightsView,

        pushLight: pushLight,
        pushShadow: pushShadow
    };

}

init(camera: any): void

Parameters:

  • camera any

Returns: void

Code
function init( camera ) {

        state.camera = camera;

        lightsArray.length = 0;
        shadowsArray.length = 0;

    }

pushLight(light: any): void

Parameters:

  • light any

Returns: void

Calls:

  • lightsArray.push
Code
function pushLight( light ) {

        lightsArray.push( light );

    }

pushShadow(shadowLight: any): void

Parameters:

  • shadowLight any

Returns: void

Calls:

  • shadowsArray.push
Code
function pushShadow( shadowLight ) {

        shadowsArray.push( shadowLight );

    }

setupLights(): void

Returns: void

Calls:

  • lights.setup
Code
function setupLights() {

        lights.setup( lightsArray );

    }

setupLightsView(camera: any): void

Parameters:

  • camera any

Returns: void

Calls:

  • lights.setupView
Code
function setupLightsView( camera ) {

        lights.setupView( lightsArray, camera );

    }

WebGLRenderStates(extensions: any): { get: (scene: any, renderCallDepth?: number) => any; dispose: () => void; }

Parameters:

  • extensions any

Returns: { get: (scene: any, renderCallDepth?: number) => any; dispose: () => void; }

Calls:

  • renderStates.get
  • renderStates.set
  • renderStateArray.push
Code
function WebGLRenderStates( extensions ) {

    let renderStates = new WeakMap();

    function get( scene, renderCallDepth = 0 ) {

        const renderStateArray = renderStates.get( scene );
        let renderState;

        if ( renderStateArray === undefined ) {

            renderState = new WebGLRenderState( extensions );
            renderStates.set( scene, [ renderState ] );

        } else {

            if ( renderCallDepth >= renderStateArray.length ) {

                renderState = new WebGLRenderState( extensions );
                renderStateArray.push( renderState );

            } else {

                renderState = renderStateArray[ renderCallDepth ];

            }

        }

        return renderState;

    }

    function dispose() {

        renderStates = new WeakMap();

    }

    return {
        get: get,
        dispose: dispose
    };

}

get(scene: any, renderCallDepth: number): any

Parameters:

  • scene any
  • renderCallDepth number

Returns: any

Calls:

  • renderStates.get
  • renderStates.set
  • renderStateArray.push
Code
function get( scene, renderCallDepth = 0 ) {

        const renderStateArray = renderStates.get( scene );
        let renderState;

        if ( renderStateArray === undefined ) {

            renderState = new WebGLRenderState( extensions );
            renderStates.set( scene, [ renderState ] );

        } else {

            if ( renderCallDepth >= renderStateArray.length ) {

                renderState = new WebGLRenderState( extensions );
                renderStateArray.push( renderState );

            } else {

                renderState = renderStateArray[ renderCallDepth ];

            }

        }

        return renderState;

    }

dispose(): void

Returns: void

Code
function dispose() {

        renderStates = new WeakMap();

    }