123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import ContextNode from '../core/ContextNode.js';
- import { addNodeClass } from '../core/Node.js';
- import { addNodeElement, nodeProxy, float, vec3 } from '../shadernode/ShaderNode.js';
- class LightingContextNode extends ContextNode {
- constructor( node, lightingModel = null, backdropNode = null, backdropAlphaNode = null ) {
- super( node );
- this.lightingModel = lightingModel;
- this.backdropNode = backdropNode;
- this.backdropAlphaNode = backdropAlphaNode;
- this._context = null;
- }
- getContext() {
- const { backdropNode, backdropAlphaNode } = this;
- const directDiffuse = vec3().temp( 'directDiffuse' ),
- directSpecular = vec3().temp( 'directSpecular' ),
- indirectDiffuse = vec3().temp( 'indirectDiffuse' ),
- indirectSpecular = vec3().temp( 'indirectSpecular' );
- const reflectedLight = {
- directDiffuse,
- directSpecular,
- indirectDiffuse,
- indirectSpecular
- };
- const context = {
- radiance: vec3().temp( 'radiance' ),
- irradiance: vec3().temp( 'irradiance' ),
- iblIrradiance: vec3().temp( 'iblIrradiance' ),
- ambientOcclusion: float( 1 ).temp( 'ambientOcclusion' ),
- reflectedLight,
- backdrop: backdropNode,
- backdropAlpha: backdropAlphaNode
- };
- return context;
- }
- setup( builder ) {
- this.context = this._context || ( this._context = this.getContext() );
- this.context.lightingModel = this.lightingModel || builder.context.lightingModel;
- return super.setup( builder );
- }
- }
- export default LightingContextNode;
- export const lightingContext = nodeProxy( LightingContextNode );
- addNodeElement( 'lightingContext', lightingContext );
- addNodeClass( 'LightingContextNode', LightingContextNode );
|