最新代码
This commit is contained in:
		
							
								
								
									
										66
									
								
								public/sdk/three/jsm/nodes/lighting/LightingContextNode.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								public/sdk/three/jsm/nodes/lighting/LightingContextNode.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,66 @@ | ||||
| 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 ); | ||||
		Reference in New Issue
	
	Block a user