Renderer/ShaderAst: Fix compilation errors on Linux

This commit is contained in:
Lynix 2017-01-06 16:34:04 +01:00
parent bd8a3ba47d
commit f0a7430d34
4 changed files with 19 additions and 3 deletions

View File

@ -51,7 +51,7 @@ namespace Nz
Float4, // vec4
Mat4x4, // mat4
None // void
Void // void
};
enum class VariableType

View File

@ -58,8 +58,8 @@ namespace Nz
}
inline Variable::Variable(VariableType varKind, ExpressionType varType) :
kind(varKind),
type(varType)
type(varType),
kind(varKind)
{
}

View File

@ -16,29 +16,39 @@ namespace Nz { namespace ShaderBuilder
template<ShaderAst::AssignType op>
struct AssignOpBuilder
{
constexpr AssignOpBuilder() = default;
std::shared_ptr<ShaderAst::AssignOp> operator()(const ShaderAst::VariablePtr& left, const ShaderAst::ExpressionPtr& right) const;
};
template<ShaderAst::BinaryType op>
struct BinOpBuilder
{
constexpr BinOpBuilder() = default;
std::shared_ptr<ShaderAst::BinaryOp> operator()(const ShaderAst::ExpressionPtr& left, const ShaderAst::ExpressionPtr& right) const;
};
struct BuiltinBuilder
{
constexpr BuiltinBuilder() = default;
std::shared_ptr<ShaderAst::Variable> operator()(ShaderAst::BuiltinEntry builtin) const;
};
template<typename T>
struct GenBuilder
{
constexpr GenBuilder() = default;
template<typename... Args> std::shared_ptr<T> operator()(Args&&... args) const;
};
template<ShaderAst::VariableType type>
struct VarBuilder
{
constexpr VarBuilder() = default;
template<typename... Args> std::shared_ptr<ShaderAst::Variable> operator()(Args&&... args) const;
};

View File

@ -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;