From 832237c6d4106da2ed5710805927e7931cee6acf Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 15 Jan 2017 15:07:12 +0100 Subject: [PATCH] Renderer/ShaderAst: Fix a few multiply/divide cases --- include/Nazara/Renderer/ShaderAst.inl | 13 ++++++++++++- src/Nazara/Renderer/GlslWriter.cpp | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/include/Nazara/Renderer/ShaderAst.inl b/include/Nazara/Renderer/ShaderAst.inl index 9f268a09a..4587ca87c 100644 --- a/include/Nazara/Renderer/ShaderAst.inl +++ b/include/Nazara/Renderer/ShaderAst.inl @@ -95,7 +95,6 @@ namespace Nz switch (op) { case BinaryType::Add: - case BinaryType::Divide: case BinaryType::Equality: case BinaryType::Substract: { @@ -104,13 +103,25 @@ namespace Nz } case BinaryType::Multiply: + case BinaryType::Divide: { switch (leftType) { + case ExpressionType::Float2: + case ExpressionType::Float3: + case ExpressionType::Float4: + { + if (rightType != ExpressionType::Float1) + throw std::runtime_error("Left expression type is not compatible with right expression type"); + + break; + } + case ExpressionType::Mat4x4: { switch (rightType) { + case ExpressionType::Float1: case ExpressionType::Float4: case ExpressionType::Mat4x4: break; diff --git a/src/Nazara/Renderer/GlslWriter.cpp b/src/Nazara/Renderer/GlslWriter.cpp index aea4b5667..1c856f8eb 100644 --- a/src/Nazara/Renderer/GlslWriter.cpp +++ b/src/Nazara/Renderer/GlslWriter.cpp @@ -24,6 +24,7 @@ namespace Nz m_currentState = nullptr; }); + // Register global variables (uniforms, varying, ..) node->Register(*this); // Header