UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

57 lines (51 loc) 1.88 kB
import { attribute } from '../core/AttributeNode.js'; import { cameraViewMatrix } from './Camera.js'; import { modelViewMatrix } from './ModelNode.js'; import { Fn, vec4 } from '../tsl/TSLBase.js'; /** * TSL object that represents the tangent attribute of the current rendered object. * * @tsl * @type {Node<vec4>} */ export const tangentGeometry = /*@__PURE__*/Fn(builder => { if (builder.geometry.hasAttribute('tangent') === false) { builder.geometry.computeTangents(); } return attribute('tangent', 'vec4'); })(); /** * TSL object that represents the vertex tangent in local space of the current rendered object. * * @tsl * @type {Node<vec3>} */ export const tangentLocal = /*@__PURE__*/tangentGeometry.xyz.toVar('tangentLocal'); /** * TSL object that represents the vertex tangent in view space of the current rendered object. * * @tsl * @type {Node<vec3>} */ export const tangentView = /*@__PURE__*/modelViewMatrix.mul(vec4(tangentLocal, 0)).xyz.toVarying('v_tangentView').normalize().toVar('tangentView'); /** * TSL object that represents the vertex tangent in world space of the current rendered object. * * @tsl * @type {Node<vec3>} */ export const tangentWorld = /*@__PURE__*/tangentView.transformDirection(cameraViewMatrix).toVarying('v_tangentWorld').normalize().toVar('tangentWorld'); /** * TSL object that represents the transformed vertex tangent in view space of the current rendered object. * * @tsl * @type {Node<vec3>} */ export const transformedTangentView = /*@__PURE__*/tangentView.toVar('transformedTangentView'); /** * TSL object that represents the transformed vertex tangent in world space of the current rendered object. * * @tsl * @type {Node<vec3>} */ export const transformedTangentWorld = /*@__PURE__*/transformedTangentView.transformDirection(cameraViewMatrix).normalize().toVar('transformedTangentWorld');