You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
633 B
38 lines
633 B
2 years ago
|
import LightingNode from './LightingNode.js';
|
||
|
import { NodeUpdateType } from '../core/constants.js';
|
||
|
import { uniform } from '../shadernode/ShaderNodeElements.js';
|
||
|
|
||
|
import { Color } from 'three';
|
||
|
|
||
|
class AnalyticLightNode extends LightingNode {
|
||
|
|
||
|
constructor( light = null ) {
|
||
|
|
||
|
super();
|
||
|
|
||
|
this.updateType = NodeUpdateType.OBJECT;
|
||
|
|
||
|
this.light = light;
|
||
|
|
||
|
this.colorNode = uniform( new Color() );
|
||
|
|
||
|
}
|
||
|
|
||
|
getHash( /*builder*/ ) {
|
||
|
|
||
|
return this.light.uuid;
|
||
|
|
||
|
}
|
||
|
|
||
|
update( /*frame*/ ) {
|
||
|
|
||
|
const { light } = this;
|
||
|
|
||
|
this.colorNode.value.copy( light.color ).multiplyScalar( light.intensity );
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
export default AnalyticLightNode;
|