Browse Source

Revert "introduce automatic use of `.toVar()` to `assign()`"

This reverts commit ec0fe885390949a014f613da407e8b0abec674dc.
sunag 5 months ago
parent
commit
250c5f6d93

+ 0 - 3
src/nodes/core/AssignNode.js

@@ -97,9 +97,6 @@ class AssignNode extends TempNode {
 
 		const { targetNode, sourceNode } = this;
 
-		const targetProperties = builder.getNodeProperties( targetNode );
-		targetProperties.assign = true;
-
 		const properties = builder.getNodeProperties( this );
 		properties.sourceNode = sourceNode;
 		properties.targetNode = targetNode.context( { assign: true } );

+ 0 - 2
src/nodes/core/NodeBuilder.js

@@ -1755,8 +1755,6 @@ class NodeBuilder {
 	 */
 	getArrayCount( node ) {
 
-		// TODO: Move this to the node itself
-
 		let count = null;
 
 		if ( node.isArrayNode ) count = node.count;

+ 0 - 36
src/nodes/core/StackNode.js

@@ -245,30 +245,6 @@ class StackNode extends Node {
 
 	}
 
-	setup( builder ) {
-
-		const nodeProperties = builder.getNodeProperties( this );
-
-		let index = 0;
-
-		for ( const childNode of this.getChildren() ) {
-
-			if ( childNode.isVarNode && childNode.intention === true ) {
-
-				continue;
-
-			}
-
-			nodeProperties[ 'node' + index ++ ] = childNode;
-
-		}
-
-		// return a outputNode if exists or null
-
-		return nodeProperties.outputNode || null;
-
-	}
-
 	build( builder, ...params ) {
 
 		const previousBuildStack = builder.currentStack;
@@ -282,18 +258,6 @@ class StackNode extends Node {
 
 		for ( const node of this.nodes ) {
 
-			if ( node.isVarNode && node.intention === true ) {
-
-				const properties = builder.getNodeProperties( node );
-
-				if ( properties.assign !== true ) {
-
-					continue;
-
-				}
-
-			}
-
 			if ( buildStage === 'setup' ) {
 
 				node.build( builder );

+ 1 - 46
src/nodes/core/VarNode.js

@@ -1,5 +1,5 @@
 import Node from './Node.js';
-import { addMethodChaining, getCurrentStack, nodeProxy } from '../tsl/TSLCore.js';
+import { addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
 
 /**
  * Class for representing shader variables as nodes. Variables are created from
@@ -81,16 +81,6 @@ class VarNode extends Node {
 		 */
 		this.parents = true;
 
-		this.intention = false;
-
-	}
-
-	setIntention( value ) {
-
-		this.intention = value;
-
-		return this;
-
 	}
 
 	getMemberType( builder, name ) {
@@ -111,25 +101,6 @@ class VarNode extends Node {
 
 	}
 
-	build( ...params ) {
-
-		if ( this.intention === true ) {
-
-			const builder = params[ 0 ];
-			const properties = builder.getNodeProperties( this );
-
-			if ( properties.assign !== true ) {
-
-				return this.node.build( ...params );
-
-			}
-
-		}
-
-		return super.build( ...params );
-
-	}
-
 	generate( builder ) {
 
 		const { node, name, readOnly } = this;
@@ -218,26 +189,10 @@ export const Var = ( node, name = null ) => createVar( node, name ).toStack();
  */
 export const Const = ( node, name = null ) => createVar( node, name, true ).toStack();
 
-//
-//
-
-export const VarIntention = ( node ) => {
-
-	if ( getCurrentStack() === null ) {
-
-		return node;
-
-	}
-
-	return createVar( node ).setIntention( true ).toStack();
-
-};
-
 // Method chaining
 
 addMethodChaining( 'toVar', Var );
 addMethodChaining( 'toConst', Const );
-addMethodChaining( 'toVarIntention', VarIntention );
 
 // Deprecated
 

+ 0 - 2
src/nodes/math/ConditionalNode.js

@@ -73,8 +73,6 @@ class ConditionalNode extends Node {
 
 			// fallback setup
 
-			// TODO: use build here
-
 			this.setup( builder );
 
 			return this.getNodeType( builder );

+ 51 - 51
src/nodes/math/MathNode.js

@@ -1,6 +1,6 @@
 import TempNode from '../core/TempNode.js';
 import { sub, mul, div, mod, equal } from './OperatorNode.js';
-import { addMethodChaining, nodeObject, nodeProxyIntention, float, vec2, vec3, vec4, Fn } from '../tsl/TSLCore.js';
+import { addMethodChaining, nodeObject, nodeProxy, float, vec2, vec3, vec4, Fn } from '../tsl/TSLCore.js';
 import { WebGLCoordinateSystem, WebGPUCoordinateSystem } from '../../constants.js';
 
 /**
@@ -429,7 +429,7 @@ export const PI2 = /*@__PURE__*/ float( Math.PI * 2 );
  * @param {Node | number} x - The parameter.
  * @returns {Node<bool>}
  */
-export const all = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.ALL ).setParameterLength( 1 );
+export const all = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ALL ).setParameterLength( 1 );
 
 /**
  * Returns `true` if any components of `x` are `true`.
@@ -439,7 +439,7 @@ export const all = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.ALL ).se
  * @param {Node | number} x - The parameter.
  * @returns {Node<bool>}
  */
-export const any = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.ANY ).setParameterLength( 1 );
+export const any = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ANY ).setParameterLength( 1 );
 
 /**
  * Converts a quantity in degrees to radians.
@@ -449,7 +449,7 @@ export const any = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.ANY ).se
  * @param {Node | number} x - The input in degrees.
  * @returns {Node}
  */
-export const radians = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.RADIANS ).setParameterLength( 1 );
+export const radians = /*@__PURE__*/ nodeProxy( MathNode, MathNode.RADIANS ).setParameterLength( 1 );
 
 /**
  * Convert a quantity in radians to degrees.
@@ -459,7 +459,7 @@ export const radians = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.RADI
  * @param {Node | number} x - The input in radians.
  * @returns {Node}
  */
-export const degrees = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.DEGREES ).setParameterLength( 1 );
+export const degrees = /*@__PURE__*/ nodeProxy( MathNode, MathNode.DEGREES ).setParameterLength( 1 );
 
 /**
  * Returns the natural exponentiation of the parameter.
@@ -469,7 +469,7 @@ export const degrees = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.DEGR
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const exp = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.EXP ).setParameterLength( 1 );
+export const exp = /*@__PURE__*/ nodeProxy( MathNode, MathNode.EXP ).setParameterLength( 1 );
 
 /**
  * Returns 2 raised to the power of the parameter.
@@ -479,7 +479,7 @@ export const exp = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.EXP ).se
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const exp2 = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.EXP2 ).setParameterLength( 1 );
+export const exp2 = /*@__PURE__*/ nodeProxy( MathNode, MathNode.EXP2 ).setParameterLength( 1 );
 
 /**
  * Returns the natural logarithm of the parameter.
@@ -489,7 +489,7 @@ export const exp2 = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.EXP2 ).
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const log = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.LOG ).setParameterLength( 1 );
+export const log = /*@__PURE__*/ nodeProxy( MathNode, MathNode.LOG ).setParameterLength( 1 );
 
 /**
  * Returns the base 2 logarithm of the parameter.
@@ -499,7 +499,7 @@ export const log = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.LOG ).se
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const log2 = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.LOG2 ).setParameterLength( 1 );
+export const log2 = /*@__PURE__*/ nodeProxy( MathNode, MathNode.LOG2 ).setParameterLength( 1 );
 
 /**
  * Returns the square root of the parameter.
@@ -509,7 +509,7 @@ export const log2 = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.LOG2 ).
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const sqrt = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.SQRT ).setParameterLength( 1 );
+export const sqrt = /*@__PURE__*/ nodeProxy( MathNode, MathNode.SQRT ).setParameterLength( 1 );
 
 /**
  * Returns the inverse of the square root of the parameter.
@@ -519,7 +519,7 @@ export const sqrt = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.SQRT ).
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const inverseSqrt = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.INVERSE_SQRT ).setParameterLength( 1 );
+export const inverseSqrt = /*@__PURE__*/ nodeProxy( MathNode, MathNode.INVERSE_SQRT ).setParameterLength( 1 );
 
 /**
  * Finds the nearest integer less than or equal to the parameter.
@@ -529,7 +529,7 @@ export const inverseSqrt = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const floor = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.FLOOR ).setParameterLength( 1 );
+export const floor = /*@__PURE__*/ nodeProxy( MathNode, MathNode.FLOOR ).setParameterLength( 1 );
 
 /**
  * Finds the nearest integer that is greater than or equal to the parameter.
@@ -539,7 +539,7 @@ export const floor = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.FLOOR
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const ceil = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.CEIL ).setParameterLength( 1 );
+export const ceil = /*@__PURE__*/ nodeProxy( MathNode, MathNode.CEIL ).setParameterLength( 1 );
 
 /**
  * Calculates the unit vector in the same direction as the original vector.
@@ -549,7 +549,7 @@ export const ceil = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.CEIL ).
  * @param {Node} x - The input vector.
  * @returns {Node}
  */
-export const normalize = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.NORMALIZE ).setParameterLength( 1 );
+export const normalize = /*@__PURE__*/ nodeProxy( MathNode, MathNode.NORMALIZE ).setParameterLength( 1 );
 
 /**
  * Computes the fractional part of the parameter.
@@ -559,7 +559,7 @@ export const normalize = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.NO
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const fract = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.FRACT ).setParameterLength( 1 );
+export const fract = /*@__PURE__*/ nodeProxy( MathNode, MathNode.FRACT ).setParameterLength( 1 );
 
 /**
  * Returns the sine of the parameter.
@@ -569,7 +569,7 @@ export const fract = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.FRACT
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const sin = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.SIN ).setParameterLength( 1 );
+export const sin = /*@__PURE__*/ nodeProxy( MathNode, MathNode.SIN ).setParameterLength( 1 );
 
 /**
  * Returns the cosine of the parameter.
@@ -579,7 +579,7 @@ export const sin = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.SIN ).se
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const cos = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.COS ).setParameterLength( 1 );
+export const cos = /*@__PURE__*/ nodeProxy( MathNode, MathNode.COS ).setParameterLength( 1 );
 
 /**
  * Returns the tangent of the parameter.
@@ -589,7 +589,7 @@ export const cos = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.COS ).se
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const tan = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.TAN ).setParameterLength( 1 );
+export const tan = /*@__PURE__*/ nodeProxy( MathNode, MathNode.TAN ).setParameterLength( 1 );
 
 /**
  * Returns the arcsine of the parameter.
@@ -599,7 +599,7 @@ export const tan = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.TAN ).se
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const asin = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.ASIN ).setParameterLength( 1 );
+export const asin = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ASIN ).setParameterLength( 1 );
 
 /**
  * Returns the arccosine of the parameter.
@@ -609,7 +609,7 @@ export const asin = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.ASIN ).
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const acos = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.ACOS ).setParameterLength( 1 );
+export const acos = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ACOS ).setParameterLength( 1 );
 
 /**
  * Returns the arc-tangent of the parameter.
@@ -621,7 +621,7 @@ export const acos = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.ACOS ).
  * @param {?(Node | number)} x - The x parameter.
  * @returns {Node}
  */
-export const atan = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.ATAN ).setParameterLength( 1, 2 );
+export const atan = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ATAN ).setParameterLength( 1, 2 );
 
 /**
  * Returns the absolute value of the parameter.
@@ -631,7 +631,7 @@ export const atan = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.ATAN ).
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const abs = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.ABS ).setParameterLength( 1 );
+export const abs = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ABS ).setParameterLength( 1 );
 
 /**
  * Extracts the sign of the parameter.
@@ -641,7 +641,7 @@ export const abs = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.ABS ).se
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const sign = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.SIGN ).setParameterLength( 1 );
+export const sign = /*@__PURE__*/ nodeProxy( MathNode, MathNode.SIGN ).setParameterLength( 1 );
 
 /**
  * Calculates the length of a vector.
@@ -651,7 +651,7 @@ export const sign = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.SIGN ).
  * @param {Node} x - The parameter.
  * @returns {Node<float>}
  */
-export const length = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.LENGTH ).setParameterLength( 1 );
+export const length = /*@__PURE__*/ nodeProxy( MathNode, MathNode.LENGTH ).setParameterLength( 1 );
 
 /**
  * Negates the value of the parameter (-x).
@@ -661,7 +661,7 @@ export const length = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.LENGT
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const negate = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.NEGATE ).setParameterLength( 1 );
+export const negate = /*@__PURE__*/ nodeProxy( MathNode, MathNode.NEGATE ).setParameterLength( 1 );
 
 /**
  * Return `1` minus the parameter.
@@ -671,7 +671,7 @@ export const negate = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.NEGAT
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const oneMinus = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.ONE_MINUS ).setParameterLength( 1 );
+export const oneMinus = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ONE_MINUS ).setParameterLength( 1 );
 
 /**
  * Returns the partial derivative of the parameter with respect to x.
@@ -681,7 +681,7 @@ export const oneMinus = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.ONE
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const dFdx = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.DFDX ).setParameterLength( 1 );
+export const dFdx = /*@__PURE__*/ nodeProxy( MathNode, MathNode.DFDX ).setParameterLength( 1 );
 
 /**
  * Returns the partial derivative of the parameter with respect to y.
@@ -691,7 +691,7 @@ export const dFdx = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.DFDX ).
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const dFdy = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.DFDY ).setParameterLength( 1 );
+export const dFdy = /*@__PURE__*/ nodeProxy( MathNode, MathNode.DFDY ).setParameterLength( 1 );
 
 /**
  * Rounds the parameter to the nearest integer.
@@ -701,7 +701,7 @@ export const dFdy = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.DFDY ).
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const round = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.ROUND ).setParameterLength( 1 );
+export const round = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ROUND ).setParameterLength( 1 );
 
 /**
  * Returns the reciprocal of the parameter `(1/x)`.
@@ -711,7 +711,7 @@ export const round = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.ROUND
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const reciprocal = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.RECIPROCAL ).setParameterLength( 1 );
+export const reciprocal = /*@__PURE__*/ nodeProxy( MathNode, MathNode.RECIPROCAL ).setParameterLength( 1 );
 
 /**
  * Truncates the parameter, removing the fractional part.
@@ -721,7 +721,7 @@ export const reciprocal = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.R
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const trunc = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.TRUNC ).setParameterLength( 1 );
+export const trunc = /*@__PURE__*/ nodeProxy( MathNode, MathNode.TRUNC ).setParameterLength( 1 );
 
 /**
  * Returns the sum of the absolute derivatives in x and y.
@@ -731,7 +731,7 @@ export const trunc = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.TRUNC
  * @param {Node | number} x - The parameter.
  * @returns {Node}
  */
-export const fwidth = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.FWIDTH ).setParameterLength( 1 );
+export const fwidth = /*@__PURE__*/ nodeProxy( MathNode, MathNode.FWIDTH ).setParameterLength( 1 );
 
 /**
  * Returns the transpose of a matrix.
@@ -741,7 +741,7 @@ export const fwidth = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.FWIDT
  * @param {Node<mat2|mat3|mat4>} x - The parameter.
  * @returns {Node}
  */
-export const transpose = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.TRANSPOSE ).setParameterLength( 1 );
+export const transpose = /*@__PURE__*/ nodeProxy( MathNode, MathNode.TRANSPOSE ).setParameterLength( 1 );
 
 // 2 inputs
 
@@ -754,7 +754,7 @@ export const transpose = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.TR
  * @param {string} y - The new type.
  * @returns {Node}
  */
-export const bitcast = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.BITCAST ).setParameterLength( 2 );
+export const bitcast = /*@__PURE__*/ nodeProxy( MathNode, MathNode.BITCAST ).setParameterLength( 2 );
 
 /**
  * Returns `true` if `x` equals `y`.
@@ -781,7 +781,7 @@ export const equals = ( x, y ) => { // @deprecated, r172
  * @param {...(Node | number)} values - The values to compare.
  * @returns {Node}
  */
-export const min = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.MIN ).setParameterLength( 2, Infinity );
+export const min = /*@__PURE__*/ nodeProxy( MathNode, MathNode.MIN ).setParameterLength( 2, Infinity );
 
 /**
  * Returns the greatest of the given values.
@@ -791,7 +791,7 @@ export const min = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.MIN ).se
  * @param {...(Node | number)} values - The values to compare.
  * @returns {Node}
  */
-export const max = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.MAX ).setParameterLength( 2, Infinity );
+export const max = /*@__PURE__*/ nodeProxy( MathNode, MathNode.MAX ).setParameterLength( 2, Infinity );
 
 /**
  * Generate a step function by comparing two values.
@@ -802,7 +802,7 @@ export const max = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.MAX ).se
  * @param {Node | number} y - The x parameter.
  * @returns {Node}
  */
-export const step = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.STEP ).setParameterLength( 2 );
+export const step = /*@__PURE__*/ nodeProxy( MathNode, MathNode.STEP ).setParameterLength( 2 );
 
 /**
  * Calculates the reflection direction for an incident vector.
@@ -813,7 +813,7 @@ export const step = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.STEP ).
  * @param {Node<vec2|vec3|vec4>} N - The normal vector.
  * @returns {Node<vec2|vec3|vec4>}
  */
-export const reflect = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.REFLECT ).setParameterLength( 2 );
+export const reflect = /*@__PURE__*/ nodeProxy( MathNode, MathNode.REFLECT ).setParameterLength( 2 );
 
 /**
  * Calculates the distance between two points.
@@ -824,7 +824,7 @@ export const reflect = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.REFL
  * @param {Node<vec2|vec3|vec4>} y - The second point.
  * @returns {Node<float>}
  */
-export const distance = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.DISTANCE ).setParameterLength( 2 );
+export const distance = /*@__PURE__*/ nodeProxy( MathNode, MathNode.DISTANCE ).setParameterLength( 2 );
 
 /**
  * Calculates the absolute difference between two values.
@@ -835,7 +835,7 @@ export const distance = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.DIS
  * @param {Node | number} y - The second parameter.
  * @returns {Node}
  */
-export const difference = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.DIFFERENCE ).setParameterLength( 2 );
+export const difference = /*@__PURE__*/ nodeProxy( MathNode, MathNode.DIFFERENCE ).setParameterLength( 2 );
 
 /**
  * Calculates the dot product of two vectors.
@@ -846,7 +846,7 @@ export const difference = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.D
  * @param {Node<vec2|vec3|vec4>} y - The second vector.
  * @returns {Node<float>}
  */
-export const dot = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.DOT ).setParameterLength( 2 );
+export const dot = /*@__PURE__*/ nodeProxy( MathNode, MathNode.DOT ).setParameterLength( 2 );
 
 /**
  * Calculates the cross product of two vectors.
@@ -857,7 +857,7 @@ export const dot = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.DOT ).se
  * @param {Node<vec2|vec3|vec4>} y - The second vector.
  * @returns {Node<vec2|vec3|vec4>}
  */
-export const cross = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.CROSS ).setParameterLength( 2 );
+export const cross = /*@__PURE__*/ nodeProxy( MathNode, MathNode.CROSS ).setParameterLength( 2 );
 
 /**
  * Return the value of the first parameter raised to the power of the second one.
@@ -868,7 +868,7 @@ export const cross = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.CROSS
  * @param {Node | number} y - The second parameter.
  * @returns {Node}
  */
-export const pow = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.POW ).setParameterLength( 2 );
+export const pow = /*@__PURE__*/ nodeProxy( MathNode, MathNode.POW ).setParameterLength( 2 );
 
 /**
  * Returns the square of the parameter.
@@ -878,7 +878,7 @@ export const pow = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.POW ).se
  * @param {Node | number} x - The first parameter.
  * @returns {Node}
  */
-export const pow2 = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.POW, 2 ).setParameterLength( 1 );
+export const pow2 = /*@__PURE__*/ nodeProxy( MathNode, MathNode.POW, 2 ).setParameterLength( 1 );
 
 /**
  * Returns the cube of the parameter.
@@ -888,7 +888,7 @@ export const pow2 = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.POW, 2
  * @param {Node | number} x - The first parameter.
  * @returns {Node}
  */
-export const pow3 = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.POW, 3 ).setParameterLength( 1 );
+export const pow3 = /*@__PURE__*/ nodeProxy( MathNode, MathNode.POW, 3 ).setParameterLength( 1 );
 
 /**
  * Returns the fourth power of the parameter.
@@ -898,7 +898,7 @@ export const pow3 = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.POW, 3
  * @param {Node | number} x - The first parameter.
  * @returns {Node}
  */
-export const pow4 = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.POW, 4 ).setParameterLength( 1 );
+export const pow4 = /*@__PURE__*/ nodeProxy( MathNode, MathNode.POW, 4 ).setParameterLength( 1 );
 
 /**
  * Transforms the direction of a vector by a matrix and then normalizes the result.
@@ -909,7 +909,7 @@ export const pow4 = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.POW, 4
  * @param {Node<mat2|mat3|mat4>} matrix - The transformation matrix.
  * @returns {Node}
  */
-export const transformDirection = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.TRANSFORM_DIRECTION ).setParameterLength( 2 );
+export const transformDirection = /*@__PURE__*/ nodeProxy( MathNode, MathNode.TRANSFORM_DIRECTION ).setParameterLength( 2 );
 
 /**
  * Returns the cube root of a number.
@@ -941,7 +941,7 @@ export const lengthSq = ( a ) => dot( a, a );
  * @param {Node | number} t - The interpolation value.
  * @returns {Node}
  */
-export const mix = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.MIX ).setParameterLength( 3 );
+export const mix = /*@__PURE__*/ nodeProxy( MathNode, MathNode.MIX ).setParameterLength( 3 );
 
 /**
  * Constrains a value to lie between two further values.
@@ -975,7 +975,7 @@ export const saturate = ( value ) => clamp( value );
  * @param {Node<float>} eta - The ratio of indices of refraction.
  * @returns {Node<vec2|vec3|vec4>}
  */
-export const refract = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.REFRACT ).setParameterLength( 3 );
+export const refract = /*@__PURE__*/ nodeProxy( MathNode, MathNode.REFRACT ).setParameterLength( 3 );
 
 /**
  * Performs a Hermite interpolation between two values.
@@ -987,7 +987,7 @@ export const refract = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.REFR
  * @param {Node | number} x - The source value for interpolation.
  * @returns {Node}
  */
-export const smoothstep = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.SMOOTHSTEP ).setParameterLength( 3 );
+export const smoothstep = /*@__PURE__*/ nodeProxy( MathNode, MathNode.SMOOTHSTEP ).setParameterLength( 3 );
 
 /**
  * Returns a vector pointing in the same direction as another.
@@ -999,7 +999,7 @@ export const smoothstep = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.S
  * @param {Node<vec2|vec3|vec4>} Nref - The reference vector.
  * @returns {Node<vec2|vec3|vec4>}
  */
-export const faceForward = /*@__PURE__*/ nodeProxyIntention( MathNode, MathNode.FACEFORWARD ).setParameterLength( 3 );
+export const faceForward = /*@__PURE__*/ nodeProxy( MathNode, MathNode.FACEFORWARD ).setParameterLength( 3 );
 
 /**
  * Returns a random value for the given uv.

+ 22 - 22
src/nodes/math/OperatorNode.js

@@ -1,6 +1,6 @@
 import { WebGLCoordinateSystem } from '../../constants.js';
 import TempNode from '../core/TempNode.js';
-import { addMethodChaining, Fn, int, nodeProxyIntention } from '../tsl/TSLCore.js';
+import { addMethodChaining, Fn, int, nodeProxy } from '../tsl/TSLCore.js';
 
 const _vectorOperators = {
 	'==': 'equal',
@@ -419,7 +419,7 @@ export default OperatorNode;
  * @param {...Node} params - Additional input parameters.
  * @returns {OperatorNode}
  */
-export const add = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '+' ).setParameterLength( 2, Infinity ).setName( 'add' );
+export const add = /*@__PURE__*/ nodeProxy( OperatorNode, '+' ).setParameterLength( 2, Infinity ).setName( 'add' );
 
 /**
  * Returns the subtraction of two or more value.
@@ -431,7 +431,7 @@ export const add = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '+' ).setPara
  * @param {...Node} params - Additional input parameters.
  * @returns {OperatorNode}
  */
-export const sub = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '-' ).setParameterLength( 2, Infinity ).setName( 'sub' );
+export const sub = /*@__PURE__*/ nodeProxy( OperatorNode, '-' ).setParameterLength( 2, Infinity ).setName( 'sub' );
 
 /**
  * Returns the multiplication of two or more value.
@@ -443,7 +443,7 @@ export const sub = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '-' ).setPara
  * @param {...Node} params - Additional input parameters.
  * @returns {OperatorNode}
  */
-export const mul = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '*' ).setParameterLength( 2, Infinity ).setName( 'mul' );
+export const mul = /*@__PURE__*/ nodeProxy( OperatorNode, '*' ).setParameterLength( 2, Infinity ).setName( 'mul' );
 
 /**
  * Returns the division of two or more value.
@@ -455,7 +455,7 @@ export const mul = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '*' ).setPara
  * @param {...Node} params - Additional input parameters.
  * @returns {OperatorNode}
  */
-export const div = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '/' ).setParameterLength( 2, Infinity ).setName( 'div' );
+export const div = /*@__PURE__*/ nodeProxy( OperatorNode, '/' ).setParameterLength( 2, Infinity ).setName( 'div' );
 
 /**
  * Computes the remainder of dividing the first node by the second one.
@@ -466,7 +466,7 @@ export const div = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '/' ).setPara
  * @param {Node} b - The second input.
  * @returns {OperatorNode}
  */
-export const mod = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '%' ).setParameterLength( 2 ).setName( 'mod' );
+export const mod = /*@__PURE__*/ nodeProxy( OperatorNode, '%' ).setParameterLength( 2 ).setName( 'mod' );
 
 /**
  * Checks if two nodes are equal.
@@ -477,7 +477,7 @@ export const mod = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '%' ).setPara
  * @param {Node} b - The second input.
  * @returns {OperatorNode}
  */
-export const equal = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '==' ).setParameterLength( 2 ).setName( 'equal' );
+export const equal = /*@__PURE__*/ nodeProxy( OperatorNode, '==' ).setParameterLength( 2 ).setName( 'equal' );
 
 /**
  * Checks if two nodes are not equal.
@@ -488,7 +488,7 @@ export const equal = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '==' ).setP
  * @param {Node} b - The second input.
  * @returns {OperatorNode}
  */
-export const notEqual = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '!=' ).setParameterLength( 2 ).setName( 'notEqual' );
+export const notEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '!=' ).setParameterLength( 2 ).setName( 'notEqual' );
 
 /**
  * Checks if the first node is less than the second.
@@ -499,7 +499,7 @@ export const notEqual = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '!=' ).s
  * @param {Node} b - The second input.
  * @returns {OperatorNode}
  */
-export const lessThan = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '<' ).setParameterLength( 2 ).setName( 'lessThan' );
+export const lessThan = /*@__PURE__*/ nodeProxy( OperatorNode, '<' ).setParameterLength( 2 ).setName( 'lessThan' );
 
 /**
  * Checks if the first node is greater than the second.
@@ -510,7 +510,7 @@ export const lessThan = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '<' ).se
  * @param {Node} b - The second input.
  * @returns {OperatorNode}
  */
-export const greaterThan = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '>' ).setParameterLength( 2 ).setName( 'greaterThan' );
+export const greaterThan = /*@__PURE__*/ nodeProxy( OperatorNode, '>' ).setParameterLength( 2 ).setName( 'greaterThan' );
 
 /**
  * Checks if the first node is less than or equal to the second.
@@ -521,7 +521,7 @@ export const greaterThan = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '>' )
  * @param {Node} b - The second input.
  * @returns {OperatorNode}
  */
-export const lessThanEqual = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '<=' ).setParameterLength( 2 ).setName( 'lessThanEqual' );
+export const lessThanEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '<=' ).setParameterLength( 2 ).setName( 'lessThanEqual' );
 
 /**
  * Checks if the first node is greater than or equal to the second.
@@ -532,7 +532,7 @@ export const lessThanEqual = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '<=
  * @param {Node} b - The second input.
  * @returns {OperatorNode}
  */
-export const greaterThanEqual = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '>=' ).setParameterLength( 2 ).setName( 'greaterThanEqual' );
+export const greaterThanEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '>=' ).setParameterLength( 2 ).setName( 'greaterThanEqual' );
 
 /**
  * Performs a logical AND operation on multiple nodes.
@@ -542,7 +542,7 @@ export const greaterThanEqual = /*@__PURE__*/ nodeProxyIntention( OperatorNode,
  * @param {...Node} nodes - The input nodes to be combined using AND.
  * @returns {OperatorNode}
  */
-export const and = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '&&' ).setParameterLength( 2, Infinity ).setName( 'and' );
+export const and = /*@__PURE__*/ nodeProxy( OperatorNode, '&&' ).setParameterLength( 2, Infinity ).setName( 'and' );
 
 /**
  * Performs a logical OR operation on multiple nodes.
@@ -552,7 +552,7 @@ export const and = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '&&' ).setPar
  * @param {...Node} nodes - The input nodes to be combined using OR.
  * @returns {OperatorNode}
  */
-export const or = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '||' ).setParameterLength( 2, Infinity ).setName( 'or' );
+export const or = /*@__PURE__*/ nodeProxy( OperatorNode, '||' ).setParameterLength( 2, Infinity ).setName( 'or' );
 
 /**
  * Performs logical NOT on a node.
@@ -562,7 +562,7 @@ export const or = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '||' ).setPara
  * @param {Node} value - The value.
  * @returns {OperatorNode}
  */
-export const not = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '!' ).setParameterLength( 1 ).setName( 'not' );
+export const not = /*@__PURE__*/ nodeProxy( OperatorNode, '!' ).setParameterLength( 1 ).setName( 'not' );
 
 /**
  * Performs logical XOR on two nodes.
@@ -573,7 +573,7 @@ export const not = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '!' ).setPara
  * @param {Node} b - The second input.
  * @returns {OperatorNode}
  */
-export const xor = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '^^' ).setParameterLength( 2 ).setName( 'xor' );
+export const xor = /*@__PURE__*/ nodeProxy( OperatorNode, '^^' ).setParameterLength( 2 ).setName( 'xor' );
 
 /**
  * Performs bitwise AND on two nodes.
@@ -584,7 +584,7 @@ export const xor = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '^^' ).setPar
  * @param {Node} b - The second input.
  * @returns {OperatorNode}
  */
-export const bitAnd = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '&' ).setParameterLength( 2 ).setName( 'bitAnd' );
+export const bitAnd = /*@__PURE__*/ nodeProxy( OperatorNode, '&' ).setParameterLength( 2 ).setName( 'bitAnd' );
 
 /**
  * Performs bitwise NOT on a node.
@@ -595,7 +595,7 @@ export const bitAnd = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '&' ).setP
  * @param {Node} b - The second input.
  * @returns {OperatorNode}
  */
-export const bitNot = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '~' ).setParameterLength( 2 ).setName( 'bitNot' );
+export const bitNot = /*@__PURE__*/ nodeProxy( OperatorNode, '~' ).setParameterLength( 2 ).setName( 'bitNot' );
 
 /**
  * Performs bitwise OR on two nodes.
@@ -606,7 +606,7 @@ export const bitNot = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '~' ).setP
  * @param {Node} b - The second input.
  * @returns {OperatorNode}
  */
-export const bitOr = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '|' ).setParameterLength( 2 ).setName( 'bitOr' );
+export const bitOr = /*@__PURE__*/ nodeProxy( OperatorNode, '|' ).setParameterLength( 2 ).setName( 'bitOr' );
 
 /**
  * Performs bitwise XOR on two nodes.
@@ -617,7 +617,7 @@ export const bitOr = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '|' ).setPa
  * @param {Node} b - The second input.
  * @returns {OperatorNode}
  */
-export const bitXor = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '^' ).setParameterLength( 2 ).setName( 'bitXor' );
+export const bitXor = /*@__PURE__*/ nodeProxy( OperatorNode, '^' ).setParameterLength( 2 ).setName( 'bitXor' );
 
 /**
  * Shifts a node to the left.
@@ -628,7 +628,7 @@ export const bitXor = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '^' ).setP
  * @param {Node} b - The value to shift.
  * @returns {OperatorNode}
  */
-export const shiftLeft = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '<<' ).setParameterLength( 2 ).setName( 'shiftLeft' );
+export const shiftLeft = /*@__PURE__*/ nodeProxy( OperatorNode, '<<' ).setParameterLength( 2 ).setName( 'shiftLeft' );
 
 /**
  * Shifts a node to the right.
@@ -639,7 +639,7 @@ export const shiftLeft = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '<<' ).
  * @param {Node} b - The value to shift.
  * @returns {OperatorNode}
  */
-export const shiftRight = /*@__PURE__*/ nodeProxyIntention( OperatorNode, '>>' ).setParameterLength( 2 ).setName( 'shiftRight' );
+export const shiftRight = /*@__PURE__*/ nodeProxy( OperatorNode, '>>' ).setParameterLength( 2 ).setName( 'shiftRight' );
 
 /**
  * Increments a node by 1.

+ 8 - 34
src/nodes/tsl/TSLCore.js

@@ -61,10 +61,6 @@ const shaderNodeHandler = {
 
 				return node.isStackNode ? ( ...params ) => nodeObj.add( nodeElement( ...params ) ) : ( ...params ) => nodeElement( nodeObj, ...params );
 
-			} else if ( prop === 'toVarIntention' ) {
-
-				return () => node;
-
 			} else if ( prop === 'self' ) {
 
 				return node;
@@ -215,28 +211,7 @@ const ShaderNodeArray = function ( array, altType = null ) {
 
 const ShaderNodeProxy = function ( NodeClass, scope = null, factor = null, settings = null ) {
 
-	function assignNode( node ) {
-
-		if ( settings !== null ) {
-
-			node = nodeObject( Object.assign( node, settings ) );
-
-			if ( settings.intention === true ) {
-
-				node = node.toVarIntention();
-
-			}
-
-		} else {
-
-			node = nodeObject( node );
-
-		}
-
-		return node;
-
-
-	}
+	const assignNode = ( node ) => nodeObject( settings !== null ? Object.assign( node, settings ) : node );
 
 	let fn, name = scope, minParams, maxParams;
 
@@ -591,20 +566,20 @@ const ConvertType = function ( type, cacheMap = null ) {
 
 		if ( params.length === 1 && cacheMap !== null && cacheMap.has( params[ 0 ] ) ) {
 
-			return nodeObject( cacheMap.get( params[ 0 ] ) ).toVarIntention();
+			return nodeObject( cacheMap.get( params[ 0 ] ) );
 
 		}
 
 		if ( params.length === 1 ) {
 
 			const node = getConstNode( params[ 0 ], type );
-			if ( node.nodeType === type ) return nodeObject( node ).toVarIntention();
-			return nodeObject( new ConvertNode( node, type ) ).toVarIntention();
+			if ( node.nodeType === type ) return nodeObject( node );
+			return nodeObject( new ConvertNode( node, type ) );
 
 		}
 
 		const nodes = params.map( param => getConstNode( param ) );
-		return nodeObject( new JoinNode( nodes, type ) ).toVarIntention();
+		return nodeObject( new JoinNode( nodes, type ) );
 
 	};
 
@@ -629,9 +604,8 @@ export function ShaderNode( jsFunc, nodeType ) {
 export const nodeObject = ( val, altType = null ) => /* new */ ShaderNodeObject( val, altType );
 export const nodeObjects = ( val, altType = null ) => new ShaderNodeObjects( val, altType );
 export const nodeArray = ( val, altType = null ) => new ShaderNodeArray( val, altType );
-export const nodeProxy = ( NodeClass, scope = null, factor = null, settings = null ) => new ShaderNodeProxy( NodeClass, scope, factor, settings );
-export const nodeImmutable = ( NodeClass, ...params ) => new ShaderNodeImmutable( NodeClass, ...params );
-export const nodeProxyIntention = ( NodeClass, scope = null, factor = null, settings = {} ) => new ShaderNodeProxy( NodeClass, scope, factor, { intention: true, ...settings } );
+export const nodeProxy = ( ...params ) => new ShaderNodeProxy( ...params );
+export const nodeImmutable = ( ...params ) => new ShaderNodeImmutable( ...params );
 
 let fnId = 0;
 
@@ -687,7 +661,7 @@ export const Fn = ( jsFunc, layout = null ) => {
 
 		if ( nodeType === 'void' ) fnCall.toStack();
 
-		return fnCall.toVarIntention();
+		return fnCall;
 
 	};
 

粤ICP备19079148号