From 6ebaf510dbcfff991d37e2a6044855a453798f77 Mon Sep 17 00:00:00 2001 From: Lynix Date: Thu, 5 Jan 2017 14:04:29 +0100 Subject: [PATCH] Renderer/ShaderBuilder: Add builder for builtins --- include/Nazara/Renderer/ShaderBuilder.hpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) 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;