12345678910111213141516171819202122232425262728293031323334353637383940 |
- import Node, { addNodeClass } from '../core/Node.js';
- import { nodeImmutable, float } from '../shadernode/ShaderNode.js';
- import { BackSide, WebGLCoordinateSystem } from 'three';
- class FrontFacingNode extends Node {
- constructor() {
- super( 'bool' );
- this.isFrontFacingNode = true;
- }
- generate( builder ) {
- const { renderer, material } = builder;
- if ( renderer.coordinateSystem === WebGLCoordinateSystem ) {
- if ( material.side === BackSide ) {
- return 'false';
- }
- }
- return builder.getFrontFacing();
- }
- }
- export default FrontFacingNode;
- export const frontFacing = nodeImmutable( FrontFacingNode );
- export const faceDirection = float( frontFacing ).mul( 2.0 ).sub( 1.0 );
- addNodeClass( 'FrontFacingNode', FrontFacingNode );
|