diff --git a/src/Nazara/Renderer/ShaderAst.cpp b/src/Nazara/Renderer/ShaderAst.cpp index d60ebab6a..b6623cc48 100644 --- a/src/Nazara/Renderer/ShaderAst.cpp +++ b/src/Nazara/Renderer/ShaderAst.cpp @@ -122,12 +122,16 @@ namespace Nz::ShaderAst switch (op) { case ShaderAst::BinaryType::Add: - case ShaderAst::BinaryType::Divide: - case ShaderAst::BinaryType::Multiply: case ShaderAst::BinaryType::Substract: exprType = left->GetExpressionType(); break; + case ShaderAst::BinaryType::Divide: + case ShaderAst::BinaryType::Multiply: + //FIXME + exprType = static_cast(std::max(UnderlyingCast(left->GetExpressionType()), UnderlyingCast(right->GetExpressionType()))); + break; + case ShaderAst::BinaryType::Equality: exprType = ExpressionType::Boolean; break; diff --git a/src/Nazara/Renderer/ShaderValidator.cpp b/src/Nazara/Renderer/ShaderValidator.cpp index 2a4d38f25..c7a25989f 100644 --- a/src/Nazara/Renderer/ShaderValidator.cpp +++ b/src/Nazara/Renderer/ShaderValidator.cpp @@ -102,6 +102,14 @@ namespace Nz::ShaderAst { switch (leftType) { + case ExpressionType::Float1: + { + if (Node::GetComponentType(rightType) != ExpressionType::Float1) + throw AstError{ "Left expression type is not compatible with right expression type" }; + + break; + } + case ExpressionType::Float2: case ExpressionType::Float3: case ExpressionType::Float4: