Shader/DependencyCheckerVisitor: Update default config

This commit is contained in:
Jérôme Leclercq 2022-03-04 18:32:06 +01:00
parent b6cd85d6fe
commit 073f1dc434
3 changed files with 12 additions and 2 deletions

View File

@ -27,6 +27,8 @@ namespace Nz::ShaderAst
inline const UsageSet& GetUsage() const; inline const UsageSet& GetUsage() const;
inline void MarkStructAsUsed(std::size_t structIndex);
inline void Process(Statement& statement); inline void Process(Statement& statement);
void Process(Statement& statement, const Config& config); void Process(Statement& statement, const Config& config);
@ -37,7 +39,7 @@ namespace Nz::ShaderAst
struct Config struct Config
{ {
ShaderStageTypeFlags usedShaderStages = ShaderStageType_All; ShaderStageTypeFlags usedShaderStages;
}; };
struct UsageSet struct UsageSet

View File

@ -12,6 +12,11 @@ namespace Nz::ShaderAst
return m_resolvedUsage; return m_resolvedUsage;
} }
inline void DependencyCheckerVisitor::MarkStructAsUsed(std::size_t structIndex)
{
m_globalUsage.usedStructs.UnboundedSet(structIndex);
}
inline void DependencyCheckerVisitor::Process(Statement& statement) inline void DependencyCheckerVisitor::Process(Statement& statement)
{ {
Config defaultConfig; Config defaultConfig;

View File

@ -522,8 +522,11 @@ namespace Nz
{ {
ShaderAst::StatementPtr tempAst; ShaderAst::StatementPtr tempAst;
ShaderAst::DependencyCheckerVisitor::Config dependencyConfig;
dependencyConfig.usedShaderStages = ShaderStageType_All;
tempAst = ShaderAst::PropagateConstants(*targetAst); tempAst = ShaderAst::PropagateConstants(*targetAst);
optimizedAst = ShaderAst::EliminateUnusedPass(*tempAst); optimizedAst = ShaderAst::EliminateUnusedPass(*tempAst, dependencyConfig);
targetAst = optimizedAst.get(); targetAst = optimizedAst.get();
} }