diff --git a/src/Nazara/Shader/Ast/EliminateUnusedPassVisitor.cpp b/src/Nazara/Shader/Ast/EliminateUnusedPassVisitor.cpp index 95afe355d..8d5f9e913 100644 --- a/src/Nazara/Shader/Ast/EliminateUnusedPassVisitor.cpp +++ b/src/Nazara/Shader/Ast/EliminateUnusedPassVisitor.cpp @@ -61,14 +61,24 @@ namespace Nz::ShaderAst void Visit(CallFunctionExpression& node) override { - const auto& targetFuncType = GetExpressionType(node); + const auto& targetFuncType = GetExpressionType(*node.targetFunction); assert(std::holds_alternative(targetFuncType)); const auto& funcType = std::get(targetFuncType); assert(currentFunctionIndex); - UsageSet& usageSet = Retrieve(functionUsages, *currentFunctionIndex); - usageSet.usedFunctions.UnboundedSet(funcType.funcIndex); + if (currentVariableDeclIndex) + { + UsageSet& usageSet = Retrieve(variableUsages, *currentVariableDeclIndex); + usageSet.usedFunctions.UnboundedSet(funcType.funcIndex); + } + else + { + UsageSet& usageSet = Retrieve(functionUsages, *currentFunctionIndex); + usageSet.usedFunctions.UnboundedSet(funcType.funcIndex); + } + + AstRecursiveVisitor::Visit(node); } void Visit(DeclareExternalStatement& node) override