diff --git a/include/Nazara/Renderer/ShaderWriter.hpp b/include/Nazara/Renderer/ShaderWriter.hpp index 634c335ec..1058fa924 100644 --- a/include/Nazara/Renderer/ShaderWriter.hpp +++ b/include/Nazara/Renderer/ShaderWriter.hpp @@ -34,6 +34,7 @@ namespace Nz virtual void Write(const ShaderAst::AssignOp& node) = 0; virtual void Write(const ShaderAst::Branch& node) = 0; + virtual void Write(const ShaderAst::BinaryFunc& node) = 0; virtual void Write(const ShaderAst::BinaryOp& node) = 0; virtual void Write(const ShaderAst::BuiltinVariable& node) = 0; virtual void Write(const ShaderAst::Cast& node) = 0; diff --git a/src/Nazara/Renderer/GlslWriter.cpp b/src/Nazara/Renderer/GlslWriter.cpp index 73abec55f..b37b9deff 100644 --- a/src/Nazara/Renderer/GlslWriter.cpp +++ b/src/Nazara/Renderer/GlslWriter.cpp @@ -173,6 +173,26 @@ namespace Nz } } + void GlslWriter::Write(const ShaderAst::BinaryFunc& node) + { + switch (node.intrinsic) + { + case ShaderAst::BinaryIntrinsic::CrossProduct: + Append("cross"); + break; + + case ShaderAst::BinaryIntrinsic::DotProduct: + Append("dot"); + break; + } + + Append("("); + Write(node.left); + Append(", "); + Write(node.right); + Append(")"); + } + void GlslWriter::Write(const ShaderAst::BinaryOp& node) { Write(node.left);