VaryNode.js 718 B

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