UNPKG

three

Version:

JavaScript 3D library

50 lines (34 loc) 996 B
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;