|
|
@@ -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;
|
|
|
|
|
|
}
|
|
|
|