@openhps/core
Version:
Open Hybrid Positioning System - Core component
38 lines (34 loc) • 1.01 kB
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;