UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

61 lines (54 loc) 2.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _NodeMaterial = _interopRequireDefault(require("./NodeMaterial.js")); var _PropertyNode = require("../../nodes/core/PropertyNode.js"); var _Packing = require("../../nodes/utils/Packing.js"); var _MaterialNode = require("../../nodes/accessors/MaterialNode.js"); var _Normal = require("../../nodes/accessors/Normal.js"); var _ColorSpaceNode = require("../../nodes/display/ColorSpaceNode.js"); var _TSLBase = require("../../nodes/tsl/TSLBase.js"); var _constants = require("../../constants.js"); var _MeshNormalMaterial = require("../MeshNormalMaterial.js"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const _defaultValues = /*@__PURE__*/new _MeshNormalMaterial.MeshNormalMaterial(); /** * Node material version of {@link MeshNormalMaterial}. * * @augments NodeMaterial */ class MeshNormalNodeMaterial extends _NodeMaterial.default { static get type() { return 'MeshNormalNodeMaterial'; } /** * Constructs a new mesh normal node material. * * @param {Object} [parameters] - The configuration parameter. */ constructor(parameters) { super(); /** * This flag can be used for type testing. * * @type {boolean} * @readonly * @default true */ this.isMeshNormalNodeMaterial = true; this.setDefaultValues(_defaultValues); this.setValues(parameters); } /** * Overwrites the default implementation by computing the diffuse color * based on the normal data. */ setupDiffuseColor() { const opacityNode = this.opacityNode ? (0, _TSLBase.float)(this.opacityNode) : _MaterialNode.materialOpacity; // By convention, a normal packed to RGB is in sRGB color space. Convert it to working color space. _PropertyNode.diffuseColor.assign((0, _ColorSpaceNode.colorSpaceToWorking)((0, _TSLBase.vec4)((0, _Packing.directionToColor)(_Normal.transformedNormalView), opacityNode), _constants.SRGBColorSpace)); } } var _default = exports.default = MeshNormalNodeMaterial;