three
Version:
JavaScript 3D library
50 lines (34 loc) • 996 B
JavaScript
import LightingNode from './LightingNode.js';
import { float } from '../tsl/TSLBase.js';
/**
* A specific version of {@link IrradianceNode} that is only relevant
* for {@link MeshBasicNodeMaterial}. Since the material is unlit, it
* requires a special scaling factor for the light map.
*
* @augments LightingNode
*/
class BasicLightMapNode extends LightingNode {
static get type() {
return 'BasicLightMapNode';
}
/**
* Constructs a new basic light map node.
*
* @param {?Node<vec3>} [lightMapNode=null] - The light map node.
*/
constructor( lightMapNode = null ) {
super();
/**
* The light map node.
*
* @type {?Node<vec3>}
*/
this.lightMapNode = lightMapNode;
}
setup( builder ) {
// irradianceLightMap property is used in the indirectDiffuse() method of BasicLightingModel
const RECIPROCAL_PI = float( 1 / Math.PI );
builder.context.irradianceLightMap = this.lightMapNode.mul( RECIPROCAL_PI );
}
}
export default BasicLightMapNode;