diff --git a/src/nodes/core/NodeBuilder.js b/src/nodes/core/NodeBuilder.js index deba7df69d5cd3..be00b81ef36e1a 100644 --- a/src/nodes/core/NodeBuilder.js +++ b/src/nodes/core/NodeBuilder.js @@ -2268,28 +2268,29 @@ class NodeBuilder { const shaderStage = this.shaderStage; const declarations = this.declarations[ shaderStage ] || ( this.declarations[ shaderStage ] = {} ); - const property = this.getPropertyName( node ); + const baseName = node.name; + let name = baseName; + let property = this.getPropertyName( node ); let index = 1; - let name = property; // Automatically renames the property if the name is already in use. - while ( declarations[ name ] !== undefined ) { + while ( declarations[ property ] !== undefined ) { - name = property + '_' + index ++; + name = baseName + '_' + index ++; + node.name = name; + property = this.getPropertyName( node ); } - if ( index > 1 ) { - - node.name = name; + if ( name !== baseName ) { - warn( `TSL: Declaration name '${ property }' of '${ node.type }' already in use. Renamed to '${ name }'.` ); + warn( `TSL: Declaration name '${ baseName }' of '${ node.type }' already in use. Renamed to '${ name }'.` ); } - declarations[ name ] = node; + declarations[ property ] = node; }