VaryNode.js 803 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import Node from './Node.js';
  2. import { NodeShaderStage } from './constants.js';
  3. class VaryNode extends Node {
  4. constructor( value, name = '' ) {
  5. super();
  6. this.value = value;
  7. this.name = name;
  8. }
  9. getNodeType( builder ) {
  10. // VaryNode is auto type
  11. return this.value.getNodeType( builder );
  12. }
  13. generate( builder ) {
  14. const type = this.getNodeType( builder );
  15. const value = this.value;
  16. const name = this.name;
  17. const nodeVary = builder.getVaryFromNode( this, type );
  18. if ( name !== '' ) {
  19. nodeVary.name = name;
  20. }
  21. const propertyName = builder.getPropertyName( nodeVary );
  22. // force nodeVary.snippet work in vertex stage
  23. builder.flowNodeFromShaderStage( NodeShaderStage.Vertex, value, type, propertyName );
  24. return propertyName;
  25. }
  26. }
  27. export default VaryNode;