2
0

PropertyNode.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import Node, { addNodeClass } from './Node.js';
  2. import { nodeImmutable, nodeObject, getConstNodeType } from '../shadernode/ShaderNode.js';
  3. class PropertyNode extends Node {
  4. constructor( nodeType, name = null ) {
  5. super( nodeType );
  6. this.name = name;
  7. }
  8. getHash( builder ) {
  9. return this.name || super.getHash( builder );
  10. }
  11. isGlobal( /*builder*/ ) {
  12. return true;
  13. }
  14. generate( builder ) {
  15. const nodeVary = builder.getVarFromNode( this, this.getNodeType( builder ) );
  16. const name = this.name;
  17. if ( name !== null ) {
  18. nodeVary.name = name;
  19. }
  20. return builder.getPropertyName( nodeVary );
  21. }
  22. }
  23. export default PropertyNode;
  24. export const property = ( name, nodeOrType ) => nodeObject( new PropertyNode( name, getConstNodeType( nodeOrType ) ) );
  25. export const diffuseColor = nodeImmutable( PropertyNode, 'vec4', 'DiffuseColor' );
  26. export const roughness = nodeImmutable( PropertyNode, 'float', 'Roughness' );
  27. export const metalness = nodeImmutable( PropertyNode, 'float', 'Metalness' );
  28. export const specularColor = nodeImmutable( PropertyNode, 'color', 'SpecularColor' );
  29. export const shininess = nodeImmutable( PropertyNode, 'float', 'Shininess' );
  30. addNodeClass( PropertyNode );