diff --git a/include/Nazara/Renderer/ShaderBuilder.hpp b/include/Nazara/Renderer/ShaderBuilder.hpp index edcda745a..18bb3244e 100644 --- a/include/Nazara/Renderer/ShaderBuilder.hpp +++ b/include/Nazara/Renderer/ShaderBuilder.hpp @@ -44,6 +44,26 @@ namespace Nz { namespace ShaderBuilder } }; + class BuiltinBuilder + { + public: + std::shared_ptr operator()(Nz::ShaderAst::Builtin builtin) const + { + ShaderAst::ExpressionType exprType = ShaderAst::ExpressionType::None; + + switch (builtin) + { + case ShaderAst::Builtin::VertexPosition: + exprType = ShaderAst::ExpressionType::Float4; + break; + } + + NazaraAssert(exprType != ShaderAst::ExpressionType::None, "Unhandled builtin"); + + return std::make_shared(builtin, exprType); + } + }; + template class VarBuilder { @@ -57,6 +77,7 @@ namespace Nz { namespace ShaderBuilder constexpr BinOpBuilder Add; constexpr AssignOpBuilder Assign; + constexpr BuiltinBuilder Builtin; constexpr BinOpBuilder Equal; constexpr GenBuilder Block; constexpr GenBuilder Branch;