Renderer/GlslWriter: Add support for Uniform and Parameters variables

This commit is contained in:
Lynix
2017-01-04 12:34:47 +01:00
parent 5c3e67bb26
commit d538a7ddf5
5 changed files with 60 additions and 13 deletions

View File

@@ -28,7 +28,7 @@ namespace Nz
Nz::String Generate(const ShaderAst::StatementPtr& node) override;
void RegisterFunction(const String& name, ShaderAst::StatementPtr statement, std::initializer_list<ShaderAst::VariablePtr> parameters, ShaderAst::ExpressionType ret) override;
void RegisterVariable(const String& name, ShaderAst::ExpressionType type) override;
void RegisterVariable(ShaderAst::VariableType kind, const String& name, ShaderAst::ExpressionType type) override;
void Write(const ShaderAst::AssignOp& node) override;
void Write(const ShaderAst::Branch& node) override;

View File

@@ -62,6 +62,8 @@ namespace Nz { namespace ShaderBuilder
constexpr GenBuilder<Nz::ShaderAst::Branch> Branch;
constexpr GenBuilder<Nz::ShaderAst::Constant> Constant;
constexpr GenBuilder<Nz::ShaderAst::ExpressionStatement> ExprStatement;
constexpr VarBuilder<Nz::ShaderAst::VariableType::Parameter> Parameter;
constexpr VarBuilder<Nz::ShaderAst::VariableType::Uniform> Uniform;
constexpr VarBuilder<Nz::ShaderAst::VariableType::Variable> Variable;
} }

View File

@@ -24,7 +24,7 @@ namespace Nz
virtual Nz::String Generate(const ShaderAst::StatementPtr& node) = 0;
virtual void RegisterFunction(const String& name, ShaderAst::StatementPtr node, std::initializer_list<ShaderAst::VariablePtr> parameters, ShaderAst::ExpressionType ret) = 0;
virtual void RegisterVariable(const String& name, ShaderAst::ExpressionType type) = 0;
virtual void RegisterVariable(ShaderAst::VariableType kind, const String& name, ShaderAst::ExpressionType type) = 0;
virtual void Write(const ShaderAst::AssignOp& node) = 0;
virtual void Write(const ShaderAst::Branch& node) = 0;