NormalNode.js 1.1 KB

1234567891011121314
  1. import { attribute } from '../core/AttributeNode.js';
  2. import { varying } from '../core/VaryingNode.js';
  3. import { property } from '../core/PropertyNode.js';
  4. import { cameraViewMatrix } from './CameraNode.js';
  5. import { modelNormalMatrix } from './ModelNode.js';
  6. import { vec3 } from '../shadernode/ShaderNode.js';
  7. export const normalGeometry = /*#__PURE__*/ attribute( 'normal', 'vec3', vec3( 0, 1, 0 ) );
  8. export const normalLocal = /*#__PURE__*/ normalGeometry.toVar( 'normalLocal' );
  9. export const normalView = /*#__PURE__*/ varying( modelNormalMatrix.mul( normalLocal ), 'v_normalView' ).normalize().toVar( 'normalView' );
  10. export const normalWorld = /*#__PURE__*/ varying( normalView.transformDirection( cameraViewMatrix ), 'v_normalWorld' ).normalize().toVar( 'transformedNormalWorld' );
  11. export const transformedNormalView = /*#__PURE__*/ property( 'vec3', 'transformedNormalView' );
  12. export const transformedNormalWorld = /*#__PURE__*/ transformedNormalView.transformDirection( cameraViewMatrix ).normalize().toVar( 'transformedNormalWorld' );
  13. export const transformedClearcoatNormalView = /*#__PURE__*/ property( 'vec3', 'transformedClearcoatNormalView' );