添加关照、全局等高线、修改图层问题
This commit is contained in:
66
static/sdk/three/jsm/nodes/lighting/LightingContextNode.js
Normal file
66
static/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