Shader: Fix variable shadowing with GLSL

This commit is contained in:
Jérôme Leclercq
2021-07-06 11:43:47 +02:00
parent cb82951c9a
commit ae73f68d8c
3 changed files with 15 additions and 0 deletions

View File

@@ -899,6 +899,19 @@ namespace Nz::ShaderAst
else
clone->varType = ResolveType(clone->varType);
if (m_context->options.makeVariableNameUnique && FindIdentifier(clone->varName) != nullptr)
{
unsigned int cloneIndex = 2;
std::string candidateName = clone->varName + "_" + std::to_string(cloneIndex);
while (FindIdentifier(clone->varName + "_" + std::to_string(cloneIndex)) != nullptr)
{
cloneIndex++;
candidateName = clone->varName + "_" + std::to_string(cloneIndex);
}
clone->varName = std::move(candidateName);
}
clone->varIndex = RegisterVariable(clone->varName, clone->varType);
SanitizeIdentifier(clone->varName);