FogNode.js 764 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import Node, { addNodeClass } from '../core/Node.js';
  2. import { positionView } from '../accessors/PositionNode.js';
  3. import { addNodeElement, nodeProxy } from '../shadernode/ShaderNode.js';
  4. class FogNode extends Node {
  5. constructor( colorNode, factorNode ) {
  6. super( 'float' );
  7. this.isFogNode = true;
  8. this.colorNode = colorNode;
  9. this.factorNode = factorNode;
  10. }
  11. getViewZNode( builder ) {
  12. let viewZ;
  13. const getViewZ = builder.context.getViewZ;
  14. if ( getViewZ !== undefined ) {
  15. viewZ = getViewZ( this );
  16. }
  17. return ( viewZ || positionView.z ).negate();
  18. }
  19. setup() {
  20. return this.factorNode;
  21. }
  22. }
  23. export default FogNode;
  24. export const fog = nodeProxy( FogNode );
  25. addNodeElement( 'fog', fog );
  26. addNodeClass( 'FogNode', FogNode );