Skip to content

TSL: Improve warnings #30783

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Mar 24, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion examples/jsm/tsl/display/BloomNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -457,7 +457,7 @@ class BloomNode extends TempNode {

//

const colorTexture = texture();
const colorTexture = texture( null );
const gaussianCoefficients = uniformArray( coefficients );
const invSize = uniform( new Vector2() );
const direction = uniform( new Vector2( 0.5, 0.5 ) );
Expand Down
2 changes: 1 addition & 1 deletion src/nodes/accessors/BatchNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -160,4 +160,4 @@ export default BatchNode;
* @param {BatchedMesh} batchMesh - A reference to batched mesh.
* @returns {BatchNode}
*/
export const batch = /*@__PURE__*/ nodeProxy( BatchNode );
export const batch = /*@__PURE__*/ nodeProxy( BatchNode ).setParameterLength( 1 );
2 changes: 1 addition & 1 deletion src/nodes/accessors/BuiltinNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,4 @@ export default BuiltinNode;
* @param {string} name - The name of the built-in shader variable.
* @returns {BuiltinNode}
*/
export const builtin = nodeProxy( BuiltinNode );
export const builtin = nodeProxy( BuiltinNode ).setParameterLength( 1 );
2 changes: 1 addition & 1 deletion src/nodes/accessors/CubeTextureNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -138,4 +138,4 @@ export default CubeTextureNode;
* @param {?Node<float>} [biasNode=null] - The bias node.
* @returns {CubeTextureNode}
*/
export const cubeTexture = /*@__PURE__*/ nodeProxy( CubeTextureNode );
export const cubeTexture = /*@__PURE__*/ nodeProxy( CubeTextureNode ).setParameterLength( 1, 4 ).setName( 'cubeTexture' );
2 changes: 1 addition & 1 deletion src/nodes/accessors/InstanceNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -220,4 +220,4 @@ export default InstanceNode;
* @param {InstancedBufferAttribute} instanceColor - Instanced buffer attribute representing the instance colors.
* @returns {InstanceNode}
*/
export const instance = /*@__PURE__*/ nodeProxy( InstanceNode );
export const instance = /*@__PURE__*/ nodeProxy( InstanceNode ).setParameterLength( 3 );
2 changes: 1 addition & 1 deletion src/nodes/accessors/InstancedMeshNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,4 @@ export default InstancedMeshNode;
* @param {InstancedMesh} instancedMesh - The instancedMesh.
* @returns {InstancedMeshNode}
*/
export const instancedMesh = /*@__PURE__*/ nodeProxy( InstancedMeshNode );
export const instancedMesh = /*@__PURE__*/ nodeProxy( InstancedMeshNode ).setParameterLength( 1 );
2 changes: 1 addition & 1 deletion src/nodes/accessors/MorphNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -307,4 +307,4 @@ export default MorphNode;
* @param {Mesh} mesh - The mesh holding the morph targets.
* @returns {MorphNode}
*/
export const morphReference = /*@__PURE__*/ nodeProxy( MorphNode );
export const morphReference = /*@__PURE__*/ nodeProxy( MorphNode ).setParameterLength( 1 );
24 changes: 12 additions & 12 deletions src/nodes/accessors/Object3DNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -213,57 +213,57 @@ export default Object3DNode;
*
* @tsl
* @function
* @param {?Object3D} [object3d=null] - The 3D object.
* @param {?Object3D} [object3d] - The 3D object.
* @returns {Object3DNode<vec3>}
*/
export const objectDirection = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.DIRECTION );
export const objectDirection = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.DIRECTION ).setParameterLength( 1 );

/**
* TSL function for creating an object 3D node that represents the object's world matrix.
*
* @tsl
* @function
* @param {?Object3D} [object3d=null] - The 3D object.
* @param {?Object3D} [object3d] - The 3D object.
* @returns {Object3DNode<mat4>}
*/
export const objectWorldMatrix = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.WORLD_MATRIX );
export const objectWorldMatrix = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.WORLD_MATRIX ).setParameterLength( 1 );

/**
* TSL function for creating an object 3D node that represents the object's position in world space.
*
* @tsl
* @function
* @param {?Object3D} [object3d=null] - The 3D object.
* @param {?Object3D} [object3d] - The 3D object.
* @returns {Object3DNode<vec3>}
*/
export const objectPosition = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.POSITION );
export const objectPosition = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.POSITION ).setParameterLength( 1 );

/**
* TSL function for creating an object 3D node that represents the object's scale in world space.
*
* @tsl
* @function
* @param {?Object3D} [object3d=null] - The 3D object.
* @param {?Object3D} [object3d] - The 3D object.
* @returns {Object3DNode<vec3>}
*/
export const objectScale = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.SCALE );
export const objectScale = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.SCALE ).setParameterLength( 1 );

/**
* TSL function for creating an object 3D node that represents the object's position in view/camera space.
*
* @tsl
* @function
* @param {?Object3D} [object3d=null] - The 3D object.
* @param {?Object3D} [object3d] - The 3D object.
* @returns {Object3DNode<vec3>}
*/
export const objectViewPosition = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.VIEW_POSITION );
export const objectViewPosition = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.VIEW_POSITION ).setParameterLength( 1 );

/**
* TSL function for creating an object 3D node that represents the object's radius.
*
* @tsl
* @function
* @param {?Object3D} [object3d=null] - The 3D object.
* @param {?Object3D} [object3d] - The 3D object.
* @returns {Object3DNode<vec3>}
*/
export const objectRadius = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.RADIUS );
export const objectRadius = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.RADIUS ).setParameterLength( 1 );
2 changes: 1 addition & 1 deletion src/nodes/accessors/StorageTextureNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ export default StorageTextureNode;
* @param {?Node} [storeNode=null] - The value node that should be stored in the texture.
* @returns {StorageTextureNode}
*/
export const storageTexture = /*@__PURE__*/ nodeProxy( StorageTextureNode );
export const storageTexture = /*@__PURE__*/ nodeProxy( StorageTextureNode ).setParameterLength( 2, 3 );


/**
Expand Down
2 changes: 1 addition & 1 deletion src/nodes/accessors/Texture3DNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -183,4 +183,4 @@ export default Texture3DNode;
* @param {?Node<int>} [levelNode=null] - The level node.
* @returns {Texture3DNode}
*/
export const texture3D = /*@__PURE__*/ nodeProxy( Texture3DNode );
export const texture3D = /*@__PURE__*/ nodeProxy( Texture3DNode ).setParameterLength( 1, 3 );
2 changes: 1 addition & 1 deletion src/nodes/accessors/TextureNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -740,7 +740,7 @@ export default TextureNode;
* @param {?Node<float>} [biasNode=null] - The bias node.
* @returns {TextureNode}
*/
export const texture = /*@__PURE__*/ nodeProxy( TextureNode );
export const texture = /*@__PURE__*/ nodeProxy( TextureNode ).setParameterLength( 1, 4 );

/**
* TSL function for creating a texture node that fetches/loads texels without interpolation.
Expand Down
2 changes: 1 addition & 1 deletion src/nodes/accessors/TextureSizeNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,4 +74,4 @@ export default TextureSizeNode;
* @param {?Node<int>} [levelNode=null] - A level node which defines the requested mip.
* @returns {TextureSizeNode}
*/
export const textureSize = /*@__PURE__*/ nodeProxy( TextureSizeNode );
export const textureSize = /*@__PURE__*/ nodeProxy( TextureSizeNode ).setParameterLength( 1, 2 );
8 changes: 4 additions & 4 deletions src/nodes/code/CodeNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -143,12 +143,12 @@ export default CodeNode;
*
* @tsl
* @function
* @param {string} [code=''] - The native code.
* @param {Array<Node>} [includes=[]] - An array of includes.
* @param {('js'|'wgsl'|'glsl')} [language=''] - The used language.
* @param {string} [code] - The native code.
* @param {?Array<Node>} [includes=[]] - An array of includes.
* @param {?('js'|'wgsl'|'glsl')} [language=''] - The used language.
* @returns {CodeNode}
*/
export const code = /*@__PURE__*/ nodeProxy( CodeNode );
export const code = /*@__PURE__*/ nodeProxy( CodeNode ).setParameterLength( 1, 3 );

/**
* TSL function for creating a JS code node.
Expand Down
6 changes: 3 additions & 3 deletions src/nodes/code/ExpressionNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ export default ExpressionNode;
*
* @tsl
* @function
* @param {string} [snippet=''] - The native code snippet.
* @param {string} [nodeType='void'] - The node type.
* @param {string} [snippet] - The native code snippet.
* @param {?string} [nodeType='void'] - The node type.
* @returns {ExpressionNode}
*/
export const expression = /*@__PURE__*/ nodeProxy( ExpressionNode );
export const expression = /*@__PURE__*/ nodeProxy( ExpressionNode ).setParameterLength( 1, 2 );
8 changes: 4 additions & 4 deletions src/nodes/code/ScriptableNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ class ScriptableNode extends Node {
this.parameters = parameters;

this._local = new Resources();
this._output = scriptableValue();
this._output = scriptableValue( null );
this._outputs = {};
this._source = this.source;
this._method = null;
Expand Down Expand Up @@ -719,8 +719,8 @@ export default ScriptableNode;
*
* @tsl
* @function
* @param {?CodeNode} [codeNode=null] - The code node.
* @param {Object} [parameters={}] - The parameters definition.
* @param {CodeNode} [codeNode] - The code node.
* @param {?Object} [parameters={}] - The parameters definition.
* @returns {ScriptableNode}
*/
export const scriptable = /*@__PURE__*/ nodeProxy( ScriptableNode );
export const scriptable = /*@__PURE__*/ nodeProxy( ScriptableNode ).setParameterLength( 1, 2 );
4 changes: 2 additions & 2 deletions src/nodes/code/ScriptableValueNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ export default ScriptableValueNode;
*
* @tsl
* @function
* @param {any} [value=null] - The value.
* @param {any} [value] - The value.
* @returns {ScriptableValueNode}
*/
export const scriptableValue = /*@__PURE__*/ nodeProxy( ScriptableValueNode );
export const scriptableValue = /*@__PURE__*/ nodeProxy( ScriptableValueNode ).setParameterLength( 1 );
2 changes: 1 addition & 1 deletion src/nodes/core/AssignNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,6 @@ export default AssignNode;
* @param {Node} sourceNode - The source type.
* @returns {AssignNode}
*/
export const assign = /*@__PURE__*/ nodeProxy( AssignNode );
export const assign = /*@__PURE__*/ nodeProxy( AssignNode ).setParameterLength( 2 );

addMethodChaining( 'assign', assign );
2 changes: 1 addition & 1 deletion src/nodes/core/BypassNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,6 @@ export default BypassNode;
* @param {Node} callNode - The call node.
* @returns {BypassNode}
*/
export const bypass = /*@__PURE__*/ nodeProxy( BypassNode );
export const bypass = /*@__PURE__*/ nodeProxy( BypassNode ).setParameterLength( 2 );

addMethodChaining( 'bypass', bypass );
2 changes: 1 addition & 1 deletion src/nodes/core/ContextNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ export default ContextNode;
* @param {Object} [value={}] - The modified context data.
* @returns {ContextNode}
*/
export const context = /*@__PURE__*/ nodeProxy( ContextNode );
export const context = /*@__PURE__*/ nodeProxy( ContextNode ).setParameterLength( 1, 2 );

/**
* TSL function for defining a label context value for a given node.
Expand Down
2 changes: 1 addition & 1 deletion src/nodes/core/StackNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -202,4 +202,4 @@ export default StackNode;
* @param {?StackNode} [parent=null] - The parent stack node.
* @returns {StackNode}
*/
export const stack = /*@__PURE__*/ nodeProxy( StackNode );
export const stack = /*@__PURE__*/ nodeProxy( StackNode ).setParameterLength( 0, 1 );
2 changes: 1 addition & 1 deletion src/nodes/core/VaryingNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ export default VaryingNode;
* @param {?string} name - The name of the varying in the shader.
* @returns {VaryingNode}
*/
export const varying = /*@__PURE__*/ nodeProxy( VaryingNode );
export const varying = /*@__PURE__*/ nodeProxy( VaryingNode ).setParameterLength( 1, 2 );

/**
* Computes a node in the vertex stage.
Expand Down
2 changes: 1 addition & 1 deletion src/nodes/display/BumpMapNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -114,4 +114,4 @@ export default BumpMapNode;
* @param {?Node<float>} [scaleNode=null] - Controls the intensity of the bump effect.
* @returns {BumpMapNode}
*/
export const bumpMap = /*@__PURE__*/ nodeProxy( BumpMapNode );
export const bumpMap = /*@__PURE__*/ nodeProxy( BumpMapNode ).setParameterLength( 1, 2 );
2 changes: 1 addition & 1 deletion src/nodes/display/NormalMapNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -145,4 +145,4 @@ export default NormalMapNode;
* @param {?Node<vec2>} [scaleNode=null] - Controls the intensity of the effect.
* @returns {NormalMapNode}
*/
export const normalMap = /*@__PURE__*/ nodeProxy( NormalMapNode );
export const normalMap = /*@__PURE__*/ nodeProxy( NormalMapNode ).setParameterLength( 1, 2 );
2 changes: 1 addition & 1 deletion src/nodes/display/PosterizeNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,4 @@ export default PosterizeNode;
* @param {Node} stepsNode - Controls the intensity of the posterization effect. A lower number results in a more blocky appearance.
* @returns {PosterizeNode}
*/
export const posterize = /*@__PURE__*/ nodeProxy( PosterizeNode );
export const posterize = /*@__PURE__*/ nodeProxy( PosterizeNode ).setParameterLength( 2 );
4 changes: 2 additions & 2 deletions src/nodes/display/ViewportDepthNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -278,10 +278,10 @@ export const depth = /*@__PURE__*/ nodeImmutable( ViewportDepthNode, ViewportDep
*
* @tsl
* @function
* @param {Node<float>} value - The perspective depth.
* @param {?Node<float>} [value=null] - The perspective depth. If `null` is provided, the current fragment's depth is used.
* @returns {ViewportDepthNode<float>}
*/
export const linearDepth = /*@__PURE__*/ nodeProxy( ViewportDepthNode, ViewportDepthNode.LINEAR_DEPTH );
export const linearDepth = /*@__PURE__*/ nodeProxy( ViewportDepthNode, ViewportDepthNode.LINEAR_DEPTH ).setParameterLength( 0, 1 );

/**
* TSL object that represents the linear (orthographic) depth value of the current fragment
Expand Down
4 changes: 2 additions & 2 deletions src/nodes/display/ViewportDepthTextureNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ export default ViewportDepthTextureNode;
*
* @tsl
* @function
* @param {Node} [uvNode=screenUV] - The uv node.
* @param {?Node} [uvNode=screenUV] - The uv node.
* @param {?Node} [levelNode=null] - The level node.
* @returns {ViewportDepthTextureNode}
*/
export const viewportDepthTexture = /*@__PURE__*/ nodeProxy( ViewportDepthTextureNode );
export const viewportDepthTexture = /*@__PURE__*/ nodeProxy( ViewportDepthTextureNode ).setParameterLength( 0, 2 );
4 changes: 2 additions & 2 deletions src/nodes/display/ViewportSharedTextureNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ export default ViewportSharedTextureNode;
*
* @tsl
* @function
* @param {Node} [uvNode=screenUV] - The uv node.
* @param {?Node} [uvNode=screenUV] - The uv node.
* @param {?Node} [levelNode=null] - The level node.
* @returns {ViewportSharedTextureNode}
*/
export const viewportSharedTexture = /*@__PURE__*/ nodeProxy( ViewportSharedTextureNode );
export const viewportSharedTexture = /*@__PURE__*/ nodeProxy( ViewportSharedTextureNode ).setParameterLength( 0, 2 );
8 changes: 4 additions & 4 deletions src/nodes/display/ViewportTextureNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -118,21 +118,21 @@ export default ViewportTextureNode;
*
* @tsl
* @function
* @param {Node} [uvNode=screenUV] - The uv node.
* @param {?Node} [uvNode=screenUV] - The uv node.
* @param {?Node} [levelNode=null] - The level node.
* @param {?Texture} [framebufferTexture=null] - A framebuffer texture holding the viewport data. If not provided, a framebuffer texture is created automatically.
* @returns {ViewportTextureNode}
*/
export const viewportTexture = /*@__PURE__*/ nodeProxy( ViewportTextureNode );
export const viewportTexture = /*@__PURE__*/ nodeProxy( ViewportTextureNode ).setParameterLength( 0, 3 );

/**
* TSL function for creating a viewport texture node with enabled mipmap generation.
*
* @tsl
* @function
* @param {Node} [uvNode=screenUV] - The uv node.
* @param {?Node} [uvNode=screenUV] - The uv node.
* @param {?Node} [levelNode=null] - The level node.
* @param {?Texture} [framebufferTexture=null] - A framebuffer texture holding the viewport data. If not provided, a framebuffer texture is created automatically.
* @returns {ViewportTextureNode}
*/
export const viewportMipTexture = /*@__PURE__*/ nodeProxy( ViewportTextureNode, null, null, { generateMipmaps: true } );
export const viewportMipTexture = /*@__PURE__*/ nodeProxy( ViewportTextureNode, null, null, { generateMipmaps: true } ).setParameterLength( 0, 3 );
2 changes: 1 addition & 1 deletion src/nodes/geometry/RangeNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -169,4 +169,4 @@ export default RangeNode;
* @param {Node<any>} [maxNode=float()] - A node defining the upper bound of the range.
* @returns {RangeNode}
*/
export const range = /*@__PURE__*/ nodeProxy( RangeNode );
export const range = /*@__PURE__*/ nodeProxy( RangeNode ).setParameterLength( 2 );
2 changes: 1 addition & 1 deletion src/nodes/math/ConditionalNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ export default ConditionalNode;
* @param {?Node} [elseNode=null] - The node that is evaluate when the condition ends up `false`.
* @returns {ConditionalNode}
*/
export const select = /*@__PURE__*/ nodeProxy( ConditionalNode );
export const select = /*@__PURE__*/ nodeProxy( ConditionalNode ).setParameterLength( 2, 3 );

addMethodChaining( 'select', select );

Expand Down
Loading