UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

65 lines (60 loc) 2.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _NodeMaterial = _interopRequireDefault(require("./NodeMaterial.js")); var _MaterialReferenceNode = require("../../nodes/accessors/MaterialReferenceNode.js"); var _PropertyNode = require("../../nodes/core/PropertyNode.js"); var _TSLBase = require("../../nodes/tsl/TSLBase.js"); var _MathNode = require("../../nodes/math/MathNode.js"); var _MatcapUVNode = require("../../nodes/utils/MatcapUVNode.js"); var _MeshMatcapMaterial = require("../MeshMatcapMaterial.js"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const _defaultValues = /*@__PURE__*/new _MeshMatcapMaterial.MeshMatcapMaterial(); /** * Node material version of {@link MeshMatcapMaterial}. * * @augments NodeMaterial */ class MeshMatcapNodeMaterial extends _NodeMaterial.default { static get type() { return 'MeshMatcapNodeMaterial'; } /** * 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.isMeshMatcapNodeMaterial = true; this.setDefaultValues(_defaultValues); this.setValues(parameters); } /** * Setups the matcap specific node variables. * * @param {NodeBuilder} builder - The current node builder. */ setupVariants(builder) { const uv = _MatcapUVNode.matcapUV; let matcapColor; if (builder.material.matcap) { matcapColor = (0, _MaterialReferenceNode.materialReference)('matcap', 'texture').context({ getUV: () => uv }); } else { matcapColor = (0, _TSLBase.vec3)((0, _MathNode.mix)(0.2, 0.8, uv.y)); // default if matcap is missing } _PropertyNode.diffuseColor.rgb.mulAssign(matcapColor.rgb); } } var _default = exports.default = MeshMatcapNodeMaterial;