UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

38 lines (34 loc) 1.01 kB
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;