@openhps/core
Version:
Open Hybrid Positioning System - Core component
39 lines (37 loc) • 1.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _SpotLightNode = _interopRequireDefault(require("./SpotLightNode.js"));
var _TextureNode = require("../accessors/TextureNode.js");
var _TSLBase = require("../tsl/TSLBase.js");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* An IES version of the default spot light node.
*
* @augments SpotLightNode
*/
class IESSpotLightNode extends _SpotLightNode.default {
static get type() {
return 'IESSpotLightNode';
}
/**
* Overwrites the default implementation to compute an IES conform spot attenuation.
*
* @param {Node<float>} angleCosine - The angle to compute the spot attenuation for.
* @return {Node<float>} The spot attenuation.
*/
getSpotAttenuation(angleCosine) {
const iesMap = this.light.iesMap;
let spotAttenuation = null;
if (iesMap && iesMap.isTexture === true) {
const angle = angleCosine.acos().mul(1.0 / Math.PI);
spotAttenuation = (0, _TextureNode.texture)(iesMap, (0, _TSLBase.vec2)(angle, 0), 0).r;
} else {
spotAttenuation = super.getSpotAttenuation(angleCosine);
}
return spotAttenuation;
}
}
var _default = exports.default = IESSpotLightNode;