Przeglądaj źródła

Add label and temp functions to ShaderNode (#23546)

* Add makeVar function to ShaderNode

* Fix

* Update VarNode

* Update makeVar

* Add temp and label functions

* Refactor label function

* Try to resolve merge conflicts

* Try to resolve merge conflicts

* Try to resolve merge conflicts

* Try to resolve merge conflicts
LeviPesin 3 lat temu
rodzic
commit
5439159fd2

+ 29 - 1
examples/jsm/nodes/ShaderNode.js

@@ -198,6 +198,34 @@ export const nodeObject = ( val ) => {
 
 };
 
+export const label = ( node, name = null, nodeType = null ) => {
+
+	if ( node.isVarNode === true ) {
+
+		// node is already a VarNode
+
+		if ( ( node.name !== name ) && ( name !== null ) ) {
+
+			node.name = name;
+
+		}
+
+		if ( ( node.nodeType !== nodeType ) && ( nodeType !== null ) ) {
+
+			node.nodeType = nodeType;
+
+		}
+
+		return nodeObject( node );
+
+	}
+
+	return nodeObject( new VarNode( nodeObject( node ), name, nodeType ) );
+
+};
+
+export const temp = ( node, nodeType = null ) => label( node, null, nodeType );
+
 export const float = ( val ) => {
 
 	if ( val?.isNode === true ) {
@@ -226,7 +254,7 @@ export const color = ( ...params ) => {
 
 	if ( params[ 0 ]?.isNode === true ) {
 
-		return nodeObject( new ConvertNode( params[0], 'color' ) );
+		return nodeObject( new ConvertNode( params[ 0 ], 'color' ) );
 
 	}
 

+ 2 - 0
examples/jsm/nodes/core/VarNode.js

@@ -48,4 +48,6 @@ class VarNode extends Node {
 
 }
 
+VarNode.prototype.isVarNode = true;
+
 export default VarNode;