12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import InputNode from './InputNode.js';
- import { addNodeClass } from './Node.js';
- import { nodeObject, getConstNodeType } from '../shadernode/ShaderNode.js';
- class UniformNode extends InputNode {
- constructor( value, nodeType = null ) {
- super( value, nodeType );
- this.isUniformNode = true;
- }
- getUniformHash( builder ) {
- return this.getHash( builder );
- }
- generate( builder, output ) {
- const type = this.getNodeType( builder );
- const hash = this.getUniformHash( builder );
- let sharedNode = builder.getNodeFromHash( hash );
- if ( sharedNode === undefined ) {
- builder.setHashNode( this, hash );
- sharedNode = this;
- }
- const sharedNodeType = sharedNode.getInputType( builder );
- const nodeUniform = builder.getUniformFromNode( sharedNode, builder.shaderStage, sharedNodeType );
- const propertyName = builder.getPropertyName( nodeUniform );
- return builder.format( propertyName, type, output );
- }
- }
- export default UniformNode;
- export const uniform = ( arg1, arg2 ) => {
- const nodeType = getConstNodeType( arg2 || arg1 );
- // @TODO: get ConstNode from .traverse() in the future
- const value = ( arg1 && arg1.isNode === true ) ? ( arg1.node && arg1.node.value ) || arg1.value : arg1;
- return nodeObject( new UniformNode( value, nodeType ) );
- };
- addNodeClass( UniformNode );
|