diff --git a/include/Nazara/Renderer/ShaderAst.hpp b/include/Nazara/Renderer/ShaderAst.hpp index 831241853..c88fc10df 100644 --- a/include/Nazara/Renderer/ShaderAst.hpp +++ b/include/Nazara/Renderer/ShaderAst.hpp @@ -51,7 +51,7 @@ namespace Nz Float4, // vec4 Mat4x4, // mat4 - None // void + Void // void }; enum class VariableType diff --git a/include/Nazara/Renderer/ShaderAst.inl b/include/Nazara/Renderer/ShaderAst.inl index f59c9f972..9f268a09a 100644 --- a/include/Nazara/Renderer/ShaderAst.inl +++ b/include/Nazara/Renderer/ShaderAst.inl @@ -58,8 +58,8 @@ namespace Nz } inline Variable::Variable(VariableType varKind, ExpressionType varType) : - kind(varKind), - type(varType) + type(varType), + kind(varKind) { } diff --git a/include/Nazara/Renderer/ShaderBuilder.hpp b/include/Nazara/Renderer/ShaderBuilder.hpp index 4f9c6a1fe..d65d9ff41 100644 --- a/include/Nazara/Renderer/ShaderBuilder.hpp +++ b/include/Nazara/Renderer/ShaderBuilder.hpp @@ -16,29 +16,39 @@ namespace Nz { namespace ShaderBuilder template struct AssignOpBuilder { + constexpr AssignOpBuilder() = default; + std::shared_ptr operator()(const ShaderAst::VariablePtr& left, const ShaderAst::ExpressionPtr& right) const; }; template struct BinOpBuilder { + constexpr BinOpBuilder() = default; + std::shared_ptr operator()(const ShaderAst::ExpressionPtr& left, const ShaderAst::ExpressionPtr& right) const; }; struct BuiltinBuilder { + constexpr BuiltinBuilder() = default; + std::shared_ptr operator()(ShaderAst::BuiltinEntry builtin) const; }; template struct GenBuilder { + constexpr GenBuilder() = default; + template std::shared_ptr operator()(Args&&... args) const; }; template struct VarBuilder { + constexpr VarBuilder() = default; + template std::shared_ptr operator()(Args&&... args) const; }; diff --git a/src/Nazara/Renderer/GlslWriter.cpp b/src/Nazara/Renderer/GlslWriter.cpp index b910e2519..3da5b011d 100644 --- a/src/Nazara/Renderer/GlslWriter.cpp +++ b/src/Nazara/Renderer/GlslWriter.cpp @@ -64,6 +64,9 @@ namespace Nz switch (kind) { + case ShaderAst::VariableType::Builtin: //< Only there to make compiler happy + break; + case ShaderAst::VariableType::Input: m_currentState->inputs.insert(std::make_pair(type, name)); break; @@ -288,6 +291,9 @@ namespace Nz { switch (type) { + case ShaderAst::ExpressionType::Boolean: + Append("bool"); + break; case ShaderAst::ExpressionType::Float1: Append("float"); break;