MatcapUVNode.js 589 B

1234567891011121314151617181920212223
  1. import TempNode from '../core/TempNode.js';
  2. import { vec2, vec3, negate, normalize, cross, dot, mul, add, transformedNormalView, positionViewDirection } from '../shadernode/ShaderNodeBaseElements.js';
  3. class MatcapUVNode extends TempNode {
  4. constructor() {
  5. super( 'vec2' );
  6. }
  7. construct() {
  8. const x = normalize( vec3( positionViewDirection.z, 0, negate( positionViewDirection.x ) ) );
  9. const y = cross( positionViewDirection, x );
  10. return add( mul( vec2( dot( x, transformedNormalView ), dot( y, transformedNormalView ) ), 0.495 ), 0.5 );
  11. }
  12. }
  13. export default MatcapUVNode;