PropertyNode.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import Node, { addNodeClass } from './Node.js';
  2. import { nodeImmutable, nodeObject } from '../shadernode/ShaderNode.js';
  3. class PropertyNode extends Node {
  4. constructor( nodeType, name = null ) {
  5. super( nodeType );
  6. this.name = name;
  7. this.isPropertyNode = true;
  8. }
  9. getHash( builder ) {
  10. return this.name || super.getHash( builder );
  11. }
  12. isGlobal( /*builder*/ ) {
  13. return true;
  14. }
  15. generate( builder ) {
  16. return builder.getPropertyName( builder.getVarFromNode( this, this.name ) );
  17. }
  18. }
  19. export default PropertyNode;
  20. export const property = ( type, name ) => nodeObject( new PropertyNode( type, name ) );
  21. export const diffuseColor = nodeImmutable( PropertyNode, 'vec4', 'DiffuseColor' );
  22. export const roughness = nodeImmutable( PropertyNode, 'float', 'Roughness' );
  23. export const metalness = nodeImmutable( PropertyNode, 'float', 'Metalness' );
  24. export const clearcoat = nodeImmutable( PropertyNode, 'float', 'Clearcoat' );
  25. export const clearcoatRoughness = nodeImmutable( PropertyNode, 'float', 'ClearcoatRoughness' );
  26. export const sheen = nodeImmutable( PropertyNode, 'vec3', 'Sheen' );
  27. export const sheenRoughness = nodeImmutable( PropertyNode, 'float', 'SheenRoughness' );
  28. export const iridescence = nodeImmutable( PropertyNode, 'float', 'Iridescence' );
  29. export const iridescenceIOR = nodeImmutable( PropertyNode, 'float', 'IridescenceIOR' );
  30. export const iridescenceThickness = nodeImmutable( PropertyNode, 'float', 'IridescenceThickness' );
  31. export const specularColor = nodeImmutable( PropertyNode, 'color', 'SpecularColor' );
  32. export const shininess = nodeImmutable( PropertyNode, 'float', 'Shininess' );
  33. export const output = nodeImmutable( PropertyNode, 'vec4', 'Output' );
  34. export const dashSize = nodeImmutable( PropertyNode, 'float', 'dashSize' );
  35. export const gapSize = nodeImmutable( PropertyNode, 'float', 'gapSize' );
  36. addNodeClass( 'PropertyNode', PropertyNode );