Fix compilation
This commit is contained in:
@@ -10,9 +10,7 @@
|
||||
#include <Nazara/Prerequisites.hpp>
|
||||
#include <Nazara/Shader/Config.hpp>
|
||||
#include <Nazara/Shader/Ast/AstCloner.hpp>
|
||||
#include <optional>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
#include <Nazara/Shader/Ast/Module.hpp>
|
||||
|
||||
namespace Nz::ShaderAst
|
||||
{
|
||||
@@ -28,6 +26,8 @@ namespace Nz::ShaderAst
|
||||
|
||||
inline ExpressionPtr Process(Expression& expression);
|
||||
inline ExpressionPtr Process(Expression& expression, const Options& options);
|
||||
ModulePtr Process(const Module& shaderModule);
|
||||
ModulePtr Process(const Module& shaderModule, const Options& options);
|
||||
inline StatementPtr Process(Statement& statement);
|
||||
inline StatementPtr Process(Statement& statement, const Options& options);
|
||||
|
||||
@@ -65,6 +65,8 @@ namespace Nz::ShaderAst
|
||||
|
||||
inline ExpressionPtr PropagateConstants(Expression& expr);
|
||||
inline ExpressionPtr PropagateConstants(Expression& expr, const AstConstantPropagationVisitor::Options& options);
|
||||
inline ModulePtr PropagateConstants(const Module& shaderModule);
|
||||
inline ModulePtr PropagateConstants(const Module& shaderModule, const AstConstantPropagationVisitor::Options& options);
|
||||
inline StatementPtr PropagateConstants(Statement& ast);
|
||||
inline StatementPtr PropagateConstants(Statement& ast, const AstConstantPropagationVisitor::Options& options);
|
||||
}
|
||||
|
||||
@@ -43,6 +43,18 @@ namespace Nz::ShaderAst
|
||||
return optimize.Process(ast, options);
|
||||
}
|
||||
|
||||
inline ModulePtr PropagateConstants(const Module& shaderModule)
|
||||
{
|
||||
AstConstantPropagationVisitor optimize;
|
||||
return optimize.Process(shaderModule);
|
||||
}
|
||||
|
||||
inline ModulePtr PropagateConstants(const Module& shaderModule, const AstConstantPropagationVisitor::Options& options)
|
||||
{
|
||||
AstConstantPropagationVisitor optimize;
|
||||
return optimize.Process(shaderModule, options);
|
||||
}
|
||||
|
||||
inline StatementPtr PropagateConstants(Statement& ast)
|
||||
{
|
||||
AstConstantPropagationVisitor optimize;
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include <Nazara/Shader/Config.hpp>
|
||||
#include <Nazara/Shader/Ast/AstCloner.hpp>
|
||||
#include <Nazara/Shader/Ast/DependencyCheckerVisitor.hpp>
|
||||
#include <Nazara/Shader/Ast/Module.hpp>
|
||||
|
||||
namespace Nz::ShaderAst
|
||||
{
|
||||
@@ -23,6 +24,7 @@ namespace Nz::ShaderAst
|
||||
EliminateUnusedPassVisitor(EliminateUnusedPassVisitor&&) = delete;
|
||||
~EliminateUnusedPassVisitor() = default;
|
||||
|
||||
ModulePtr Process(const Module& shaderModule, const DependencyCheckerVisitor::UsageSet& usageSet);
|
||||
StatementPtr Process(Statement& statement, const DependencyCheckerVisitor::UsageSet& usageSet);
|
||||
|
||||
EliminateUnusedPassVisitor& operator=(const EliminateUnusedPassVisitor&) = delete;
|
||||
@@ -43,6 +45,10 @@ namespace Nz::ShaderAst
|
||||
Context* m_context;
|
||||
};
|
||||
|
||||
inline ModulePtr EliminateUnusedPass(const Module& shaderModule);
|
||||
inline ModulePtr EliminateUnusedPass(const Module& shaderModule, const DependencyCheckerVisitor::Config& config);
|
||||
inline ModulePtr EliminateUnusedPass(const Module& shaderModule, const DependencyCheckerVisitor::UsageSet& usageSet);
|
||||
|
||||
inline StatementPtr EliminateUnusedPass(Statement& ast);
|
||||
inline StatementPtr EliminateUnusedPass(Statement& ast, const DependencyCheckerVisitor::Config& config);
|
||||
inline StatementPtr EliminateUnusedPass(Statement& ast, const DependencyCheckerVisitor::UsageSet& usageSet);
|
||||
|
||||
@@ -7,6 +7,27 @@
|
||||
|
||||
namespace Nz::ShaderAst
|
||||
{
|
||||
inline ModulePtr EliminateUnusedPass(const Module& shaderModule)
|
||||
{
|
||||
DependencyCheckerVisitor::Config defaultConfig;
|
||||
return EliminateUnusedPass(shaderModule, defaultConfig);
|
||||
}
|
||||
|
||||
inline ModulePtr EliminateUnusedPass(const Module& shaderModule, const DependencyCheckerVisitor::Config& config)
|
||||
{
|
||||
DependencyCheckerVisitor dependencyVisitor;
|
||||
dependencyVisitor.Process(*shaderModule.rootNode, config);
|
||||
dependencyVisitor.Resolve();
|
||||
|
||||
return EliminateUnusedPass(shaderModule, dependencyVisitor.GetUsage());
|
||||
}
|
||||
|
||||
ModulePtr EliminateUnusedPass(const Module& shaderModule, const DependencyCheckerVisitor::UsageSet& usageSet)
|
||||
{
|
||||
EliminateUnusedPassVisitor visitor;
|
||||
return visitor.Process(shaderModule, usageSet);
|
||||
}
|
||||
|
||||
inline StatementPtr EliminateUnusedPass(Statement& ast)
|
||||
{
|
||||
DependencyCheckerVisitor::Config defaultConfig;
|
||||
|
||||
@@ -31,8 +31,8 @@ namespace Nz::ShaderAst
|
||||
SanitizeVisitor(SanitizeVisitor&&) = delete;
|
||||
~SanitizeVisitor() = default;
|
||||
|
||||
inline ModulePtr Sanitize(Module& module, std::string* error = nullptr);
|
||||
ModulePtr Sanitize(Module& module, const Options& options, std::string* error = nullptr);
|
||||
inline ModulePtr Sanitize(const Module& module, std::string* error = nullptr);
|
||||
ModulePtr Sanitize(const Module& module, const Options& options, std::string* error = nullptr);
|
||||
|
||||
SanitizeVisitor& operator=(const SanitizeVisitor&) = delete;
|
||||
SanitizeVisitor& operator=(SanitizeVisitor&&) = delete;
|
||||
@@ -178,8 +178,8 @@ namespace Nz::ShaderAst
|
||||
Context* m_context;
|
||||
};
|
||||
|
||||
inline ModulePtr Sanitize(Module& module, std::string* error = nullptr);
|
||||
inline ModulePtr Sanitize(Module& module, const SanitizeVisitor::Options& options, std::string* error = nullptr);
|
||||
inline ModulePtr Sanitize(const Module& module, std::string* error = nullptr);
|
||||
inline ModulePtr Sanitize(const Module& module, const SanitizeVisitor::Options& options, std::string* error = nullptr);
|
||||
}
|
||||
|
||||
#include <Nazara/Shader/Ast/SanitizeVisitor.inl>
|
||||
|
||||
@@ -7,18 +7,18 @@
|
||||
|
||||
namespace Nz::ShaderAst
|
||||
{
|
||||
inline ModulePtr SanitizeVisitor::Sanitize(Module& module, std::string* error)
|
||||
inline ModulePtr SanitizeVisitor::Sanitize(const Module& module, std::string* error)
|
||||
{
|
||||
return Sanitize(module, {}, error);
|
||||
}
|
||||
|
||||
inline ModulePtr Sanitize(Module& module, std::string* error)
|
||||
inline ModulePtr Sanitize(const Module& module, std::string* error)
|
||||
{
|
||||
SanitizeVisitor sanitizer;
|
||||
return sanitizer.Sanitize(module, error);
|
||||
}
|
||||
|
||||
inline ModulePtr Sanitize(Module& module, const SanitizeVisitor::Options& options, std::string* error)
|
||||
inline ModulePtr Sanitize(const Module& module, const SanitizeVisitor::Options& options, std::string* error)
|
||||
{
|
||||
SanitizeVisitor sanitizer;
|
||||
return sanitizer.Sanitize(module, options, error);
|
||||
|
||||
Reference in New Issue
Block a user