Rename a few classes

This commit is contained in:
Jérôme Leclercq 2020-08-04 15:31:47 +02:00
parent 7a5f91f740
commit 74fb01af28
22 changed files with 286 additions and 282 deletions

View File

@ -53,17 +53,20 @@
#include <Nazara/Renderer/RenderWindowImpl.hpp>
#include <Nazara/Renderer/RenderWindowParameters.hpp>
#include <Nazara/Renderer/ShaderAst.hpp>
#include <Nazara/Renderer/ShaderAstRecursiveVisitor.hpp>
#include <Nazara/Renderer/ShaderAstSerializer.hpp>
#include <Nazara/Renderer/ShaderAstValidator.hpp>
#include <Nazara/Renderer/ShaderAstVisitor.hpp>
#include <Nazara/Renderer/ShaderBinding.hpp>
#include <Nazara/Renderer/ShaderBuilder.hpp>
#include <Nazara/Renderer/ShaderEnums.hpp>
#include <Nazara/Renderer/ShaderExpressionType.hpp>
#include <Nazara/Renderer/ShaderNodes.hpp>
#include <Nazara/Renderer/ShaderSerializer.hpp>
#include <Nazara/Renderer/ShaderStageImpl.hpp>
#include <Nazara/Renderer/ShaderValidator.hpp>
#include <Nazara/Renderer/ShaderVariables.hpp>
#include <Nazara/Renderer/ShaderVarVisitor.hpp>
#include <Nazara/Renderer/ShaderVisitor.hpp>
#include <Nazara/Renderer/ShaderWriter.hpp>
#include <Nazara/Renderer/SpirvWriter.hpp>
#include <Nazara/Renderer/Texture.hpp>
#include <Nazara/Renderer/TextureSampler.hpp>
#include <Nazara/Renderer/UploadPool.hpp>

View File

@ -11,7 +11,7 @@
#include <Nazara/Renderer/Config.hpp>
#include <Nazara/Renderer/ShaderAst.hpp>
#include <Nazara/Renderer/ShaderVarVisitor.hpp>
#include <Nazara/Renderer/ShaderVisitor.hpp>
#include <Nazara/Renderer/ShaderAstVisitor.hpp>
#include <Nazara/Renderer/ShaderWriter.hpp>
#include <set>
#include <sstream>
@ -20,7 +20,7 @@
namespace Nz
{
class NAZARA_RENDERER_API GlslWriter : public ShaderWriter, public ShaderVarVisitor, public ShaderVisitor
class NAZARA_RENDERER_API GlslWriter : public ShaderWriter, public ShaderVarVisitor, public ShaderAstVisitor
{
public:
struct Environment;
@ -60,7 +60,7 @@ namespace Nz
void LeaveScope();
using ShaderVarVisitor::Visit;
using ShaderVisitor::Visit;
using ShaderAstVisitor::Visit;
void Visit(const ShaderNodes::ExpressionPtr& expr, bool encloseIfRequired = false);
void Visit(const ShaderNodes::AccessMember& node) override;
void Visit(const ShaderNodes::AssignOp& node) override;

View File

@ -9,17 +9,17 @@
#include <Nazara/Prerequisites.hpp>
#include <Nazara/Renderer/Config.hpp>
#include <Nazara/Renderer/ShaderVisitor.hpp>
#include <Nazara/Renderer/ShaderAstVisitor.hpp>
namespace Nz
{
class NAZARA_RENDERER_API ShaderRecursiveVisitor : public ShaderVisitor
class NAZARA_RENDERER_API ShaderAstRecursiveVisitor : public ShaderAstVisitor
{
public:
ShaderRecursiveVisitor() = default;
~ShaderRecursiveVisitor() = default;
ShaderAstRecursiveVisitor() = default;
~ShaderAstRecursiveVisitor() = default;
using ShaderVisitor::Visit;
using ShaderAstVisitor::Visit;
void Visit(const ShaderNodes::AccessMember& node) override;
void Visit(const ShaderNodes::AssignOp& node) override;
@ -37,6 +37,6 @@ namespace Nz
};
}
#include <Nazara/Renderer/ShaderRecursiveVisitor.inl>
#include <Nazara/Renderer/ShaderAstRecursiveVisitor.inl>
#endif

View File

@ -2,7 +2,7 @@
// This file is part of the "Nazara Engine - Renderer module"
// For conditions of distribution and use, see copyright notice in Config.hpp
#include <Nazara/Renderer/ShaderRecursiveVisitor.hpp>
#include <Nazara/Renderer/ShaderAstRecursiveVisitor.hpp>
#include <Nazara/Renderer/Debug.hpp>
namespace Nz

View File

@ -17,13 +17,13 @@
namespace Nz
{
class NAZARA_RENDERER_API ShaderSerializerBase
class NAZARA_RENDERER_API ShaderAstSerializerBase
{
public:
ShaderSerializerBase() = default;
ShaderSerializerBase(const ShaderSerializerBase&) = delete;
ShaderSerializerBase(ShaderSerializerBase&&) = delete;
~ShaderSerializerBase() = default;
ShaderAstSerializerBase() = default;
ShaderAstSerializerBase(const ShaderAstSerializerBase&) = delete;
ShaderAstSerializerBase(ShaderAstSerializerBase&&) = delete;
~ShaderAstSerializerBase() = default;
void Serialize(ShaderNodes::AccessMember& node);
void Serialize(ShaderNodes::AssignOp& node);
@ -69,11 +69,11 @@ namespace Nz
template<typename T> void Variable(std::shared_ptr<T>& var);
};
class NAZARA_RENDERER_API ShaderSerializer final : public ShaderSerializerBase
class NAZARA_RENDERER_API ShaderAstSerializer final : public ShaderAstSerializerBase
{
public:
inline ShaderSerializer(ByteStream& stream);
~ShaderSerializer() = default;
inline ShaderAstSerializer(ByteStream& stream);
~ShaderAstSerializer() = default;
void Serialize(const ShaderAst& shader);
@ -96,11 +96,11 @@ namespace Nz
ByteStream& m_stream;
};
class NAZARA_RENDERER_API ShaderUnserializer final : public ShaderSerializerBase
class NAZARA_RENDERER_API ShaderAstUnserializer final : public ShaderAstSerializerBase
{
public:
ShaderUnserializer(ByteStream& stream);
~ShaderUnserializer() = default;
ShaderAstUnserializer(ByteStream& stream);
~ShaderAstUnserializer() = default;
ShaderAst Unserialize();
@ -126,6 +126,6 @@ namespace Nz
NAZARA_RENDERER_API ShaderAst UnserializeShader(ByteStream& stream);
}
#include <Nazara/Renderer/ShaderSerializer.inl>
#include <Nazara/Renderer/ShaderAstSerializer.inl>
#endif

View File

@ -2,13 +2,13 @@
// This file is part of the "Nazara Engine - Renderer module"
// For conditions of distribution and use, see copyright notice in Config.hpp
#include <Nazara/Renderer/ShaderSerializer.hpp>
#include <Nazara/Renderer/ShaderAstSerializer.hpp>
#include <Nazara/Renderer/Debug.hpp>
namespace Nz
{
template<typename T>
void ShaderSerializerBase::Container(T& container)
void ShaderAstSerializerBase::Container(T& container)
{
bool isWriting = IsWriting();
@ -23,7 +23,7 @@ namespace Nz
template<typename T>
void ShaderSerializerBase::Enum(T& enumVal)
void ShaderAstSerializerBase::Enum(T& enumVal)
{
bool isWriting = IsWriting();
@ -37,7 +37,7 @@ namespace Nz
}
template<typename T>
void ShaderSerializerBase::OptEnum(std::optional<T>& optVal)
void ShaderAstSerializerBase::OptEnum(std::optional<T>& optVal)
{
bool isWriting = IsWriting();
@ -55,7 +55,7 @@ namespace Nz
}
template<typename T>
void ShaderSerializerBase::OptVal(std::optional<T>& optVal)
void ShaderAstSerializerBase::OptVal(std::optional<T>& optVal)
{
bool isWriting = IsWriting();
@ -73,7 +73,7 @@ namespace Nz
}
template<typename T>
void ShaderSerializerBase::Node(std::shared_ptr<T>& node)
void ShaderAstSerializerBase::Node(std::shared_ptr<T>& node)
{
bool isWriting = IsWriting();
@ -87,7 +87,7 @@ namespace Nz
}
template<typename T>
void ShaderSerializerBase::Variable(std::shared_ptr<T>& var)
void ShaderAstSerializerBase::Variable(std::shared_ptr<T>& var)
{
bool isWriting = IsWriting();
@ -100,7 +100,7 @@ namespace Nz
var = std::static_pointer_cast<T>(value);
}
inline void ShaderSerializerBase::Value(std::size_t& val)
inline void ShaderAstSerializerBase::Value(std::size_t& val)
{
bool isWriting = IsWriting();
@ -113,12 +113,12 @@ namespace Nz
val = static_cast<std::size_t>(value);
}
inline ShaderSerializer::ShaderSerializer(ByteStream& stream) :
inline ShaderAstSerializer::ShaderAstSerializer(ByteStream& stream) :
m_stream(stream)
{
}
inline ShaderUnserializer::ShaderUnserializer(ByteStream& stream) :
inline ShaderAstUnserializer::ShaderAstUnserializer(ByteStream& stream) :
m_stream(stream)
{
}

View File

@ -12,18 +12,18 @@
#include <Nazara/Core/ByteStream.hpp>
#include <Nazara/Renderer/Config.hpp>
#include <Nazara/Renderer/ShaderAst.hpp>
#include <Nazara/Renderer/ShaderRecursiveVisitor.hpp>
#include <Nazara/Renderer/ShaderAstRecursiveVisitor.hpp>
#include <Nazara/Renderer/ShaderVarVisitor.hpp>
namespace Nz
{
class NAZARA_RENDERER_API ShaderValidator : public ShaderRecursiveVisitor, public ShaderVarVisitor
class NAZARA_RENDERER_API ShaderAstValidator : public ShaderAstRecursiveVisitor, public ShaderVarVisitor
{
public:
inline ShaderValidator(const ShaderAst& shader);
ShaderValidator(const ShaderValidator&) = delete;
ShaderValidator(ShaderValidator&&) = delete;
~ShaderValidator() = default;
inline ShaderAstValidator(const ShaderAst& shader);
ShaderAstValidator(const ShaderAstValidator&) = delete;
ShaderAstValidator(ShaderAstValidator&&) = delete;
~ShaderAstValidator() = default;
bool Validate(std::string* error = nullptr);
@ -33,7 +33,7 @@ namespace Nz
void TypeMustMatch(const ShaderNodes::ExpressionPtr& left, const ShaderNodes::ExpressionPtr& right);
void TypeMustMatch(const ShaderExpressionType& left, const ShaderExpressionType& right);
using ShaderRecursiveVisitor::Visit;
using ShaderAstRecursiveVisitor::Visit;
void Visit(const ShaderNodes::AccessMember& node) override;
void Visit(const ShaderNodes::AssignOp& node) override;
void Visit(const ShaderNodes::BinaryOp& node) override;
@ -65,6 +65,6 @@ namespace Nz
NAZARA_RENDERER_API bool ValidateShader(const ShaderAst& shader, std::string* error = nullptr);
}
#include <Nazara/Renderer/ShaderValidator.inl>
#include <Nazara/Renderer/ShaderAstValidator.inl>
#endif

View File

@ -2,12 +2,12 @@
// This file is part of the "Nazara Engine - Renderer module"
// For conditions of distribution and use, see copyright notice in Config.hpp
#include <Nazara/Renderer/ShaderValidator.hpp>
#include <Nazara/Renderer/ShaderAstValidator.hpp>
#include <Nazara/Renderer/Debug.hpp>
namespace Nz
{
ShaderValidator::ShaderValidator(const ShaderAst& shader) :
ShaderAstValidator::ShaderAstValidator(const ShaderAst& shader) :
m_shader(shader)
{
}

View File

@ -15,13 +15,13 @@
namespace Nz
{
class NAZARA_RENDERER_API ShaderVisitor
class NAZARA_RENDERER_API ShaderAstVisitor
{
public:
ShaderVisitor() = default;
ShaderVisitor(const ShaderVisitor&) = delete;
ShaderVisitor(ShaderVisitor&&) = delete;
virtual ~ShaderVisitor();
ShaderAstVisitor() = default;
ShaderAstVisitor(const ShaderAstVisitor&) = delete;
ShaderAstVisitor(ShaderAstVisitor&&) = delete;
virtual ~ShaderAstVisitor();
void EnableCondition(const std::string& name, bool cond);

View File

@ -21,7 +21,7 @@
namespace Nz
{
class ShaderVisitor;
class ShaderAstVisitor;
namespace ShaderNodes
{
@ -37,7 +37,7 @@ namespace Nz
inline NodeType GetType() const;
inline bool IsStatement() const;
virtual void Visit(ShaderVisitor& visitor) = 0;
virtual void Visit(ShaderAstVisitor& visitor) = 0;
static inline unsigned int GetComponentCount(BasicType type);
static inline BasicType GetComponentType(BasicType type);
@ -77,7 +77,7 @@ namespace Nz
{
inline ExpressionStatement();
void Visit(ShaderVisitor& visitor) override;
void Visit(ShaderAstVisitor& visitor) override;
ExpressionPtr expression;
@ -90,7 +90,7 @@ namespace Nz
{
inline ConditionalStatement();
void Visit(ShaderVisitor& visitor) override;
void Visit(ShaderAstVisitor& visitor) override;
std::string conditionName;
StatementPtr statement;
@ -102,7 +102,7 @@ namespace Nz
{
inline StatementBlock();
void Visit(ShaderVisitor& visitor) override;
void Visit(ShaderAstVisitor& visitor) override;
std::vector<StatementPtr> statements;
@ -113,7 +113,7 @@ namespace Nz
{
inline DeclareVariable();
void Visit(ShaderVisitor& visitor) override;
void Visit(ShaderAstVisitor& visitor) override;
LocalVariablePtr variable;
ExpressionPtr expression;
@ -127,7 +127,7 @@ namespace Nz
ExpressionCategory GetExpressionCategory() const override;
ShaderExpressionType GetExpressionType() const override;
void Visit(ShaderVisitor& visitor) override;
void Visit(ShaderAstVisitor& visitor) override;
VariablePtr var;
@ -140,7 +140,7 @@ namespace Nz
ExpressionCategory GetExpressionCategory() const override;
ShaderExpressionType GetExpressionType() const override;
void Visit(ShaderVisitor& visitor) override;
void Visit(ShaderAstVisitor& visitor) override;
std::size_t memberIndex;
ExpressionPtr structExpr;
@ -156,7 +156,7 @@ namespace Nz
inline AssignOp();
ShaderExpressionType GetExpressionType() const override;
void Visit(ShaderVisitor& visitor) override;
void Visit(ShaderAstVisitor& visitor) override;
AssignType op;
ExpressionPtr left;
@ -170,7 +170,7 @@ namespace Nz
inline BinaryOp();
ShaderExpressionType GetExpressionType() const override;
void Visit(ShaderVisitor& visitor) override;
void Visit(ShaderAstVisitor& visitor) override;
BinaryType op;
ExpressionPtr left;
@ -185,7 +185,7 @@ namespace Nz
inline Branch();
void Visit(ShaderVisitor& visitor) override;
void Visit(ShaderAstVisitor& visitor) override;
std::vector<ConditionalStatement> condStatements;
StatementPtr elseStatement;
@ -204,7 +204,7 @@ namespace Nz
inline Cast();
ShaderExpressionType GetExpressionType() const override;
void Visit(ShaderVisitor& visitor) override;
void Visit(ShaderAstVisitor& visitor) override;
BasicType exprType;
std::array<ExpressionPtr, 4> expressions;
@ -218,7 +218,7 @@ namespace Nz
inline Constant();
ShaderExpressionType GetExpressionType() const override;
void Visit(ShaderVisitor& visitor) override;
void Visit(ShaderAstVisitor& visitor) override;
using Variant = std::variant<
bool,
@ -239,7 +239,7 @@ namespace Nz
ExpressionCategory GetExpressionCategory() const override;
ShaderExpressionType GetExpressionType() const override;
void Visit(ShaderVisitor& visitor) override;
void Visit(ShaderAstVisitor& visitor) override;
std::array<SwizzleComponent, 4> components;
std::size_t componentCount;
@ -255,7 +255,7 @@ namespace Nz
inline Sample2D();
ShaderExpressionType GetExpressionType() const override;
void Visit(ShaderVisitor& visitor) override;
void Visit(ShaderAstVisitor& visitor) override;
ExpressionPtr sampler;
ExpressionPtr coordinates;
@ -270,7 +270,7 @@ namespace Nz
inline IntrinsicCall();
ShaderExpressionType GetExpressionType() const override;
void Visit(ShaderVisitor& visitor) override;
void Visit(ShaderAstVisitor& visitor) override;
IntrinsicType intrinsic;
std::vector<ExpressionPtr> parameters;

View File

@ -11,7 +11,7 @@
#include <Nazara/Renderer/Config.hpp>
#include <Nazara/Renderer/ShaderAst.hpp>
#include <Nazara/Renderer/ShaderVarVisitor.hpp>
#include <Nazara/Renderer/ShaderVisitor.hpp>
#include <Nazara/Renderer/ShaderAstVisitor.hpp>
#include <Nazara/Renderer/ShaderWriter.hpp>
#include <Nazara/Utility/FieldOffsets.hpp>
#include <string>
@ -20,7 +20,7 @@
namespace Nz
{
class NAZARA_RENDERER_API SpirvWriter : public ShaderVisitor
class NAZARA_RENDERER_API SpirvWriter : public ShaderAstVisitor
{
public:
struct Environment;
@ -84,7 +84,7 @@ namespace Nz
UInt32 RegisterType(ShaderExpressionType type);
using ShaderVisitor::Visit;
using ShaderAstVisitor::Visit;
void Visit(const ShaderNodes::AccessMember& node) override;
void Visit(const ShaderNodes::AssignOp& node) override;
void Visit(const ShaderNodes::Branch& node) override;

View File

@ -40,6 +40,7 @@
#include <Nazara/Utility/Config.hpp>
#include <Nazara/Utility/CubemapParams.hpp>
#include <Nazara/Utility/Enums.hpp>
#include <Nazara/Utility/FieldOffsets.hpp>
#include <Nazara/Utility/Font.hpp>
#include <Nazara/Utility/FontData.hpp>
#include <Nazara/Utility/FontGlyph.hpp>

View File

@ -8,7 +8,7 @@
#include <Nazara/OpenGLRenderer/Utils.hpp>
#include <Nazara/Renderer/GlslWriter.hpp>
#include <Nazara/Renderer/ShaderAst.hpp>
#include <Nazara/Renderer/ShaderSerializer.hpp>
#include <Nazara/Renderer/ShaderAstSerializer.hpp>
#include <stdexcept>
#include <Nazara/OpenGLRenderer/Debug.hpp>

View File

@ -5,7 +5,7 @@
#include <Nazara/Renderer/GlslWriter.hpp>
#include <Nazara/Core/Algorithm.hpp>
#include <Nazara/Core/CallOnExit.hpp>
#include <Nazara/Renderer/ShaderValidator.hpp>
#include <Nazara/Renderer/ShaderAstValidator.hpp>
#include <stdexcept>
#include <Nazara/Renderer/Debug.hpp>
@ -305,7 +305,7 @@ namespace Nz
if (enclose)
Append("(");
ShaderVisitor::Visit(expr);
ShaderAstVisitor::Visit(expr);
if (enclose)
Append(")");

View File

@ -0,0 +1,93 @@
// Copyright (C) 2015 Jérôme Leclercq
// This file is part of the "Nazara Engine - Renderer module"
// For conditions of distribution and use, see copyright notice in Config.hpp
#include <Nazara/Renderer/ShaderAstRecursiveVisitor.hpp>
#include <Nazara/Renderer/Debug.hpp>
namespace Nz
{
void ShaderAstRecursiveVisitor::Visit(const ShaderNodes::AccessMember& node)
{
Visit(node.structExpr);
}
void ShaderAstRecursiveVisitor::Visit(const ShaderNodes::AssignOp& node)
{
Visit(node.left);
Visit(node.right);
}
void ShaderAstRecursiveVisitor::Visit(const ShaderNodes::BinaryOp& node)
{
Visit(node.left);
Visit(node.right);
}
void ShaderAstRecursiveVisitor::Visit(const ShaderNodes::Branch& node)
{
for (auto& cond : node.condStatements)
{
Visit(cond.condition);
Visit(cond.statement);
}
if (node.elseStatement)
Visit(node.elseStatement);
}
void ShaderAstRecursiveVisitor::Visit(const ShaderNodes::Cast& node)
{
for (auto& expr : node.expressions)
{
if (!expr)
break;
Visit(expr);
}
}
void ShaderAstRecursiveVisitor::Visit(const ShaderNodes::Constant& /*node*/)
{
/* Nothing to do */
}
void ShaderAstRecursiveVisitor::Visit(const ShaderNodes::DeclareVariable& node)
{
if (node.expression)
Visit(node.expression);
}
void ShaderAstRecursiveVisitor::Visit(const ShaderNodes::ExpressionStatement& node)
{
Visit(node.expression);
}
void ShaderAstRecursiveVisitor::Visit(const ShaderNodes::Identifier& /*node*/)
{
/* Nothing to do */
}
void ShaderAstRecursiveVisitor::Visit(const ShaderNodes::IntrinsicCall& node)
{
for (auto& param : node.parameters)
Visit(param);
}
void ShaderAstRecursiveVisitor::Visit(const ShaderNodes::Sample2D& node)
{
Visit(node.sampler);
Visit(node.coordinates);
}
void ShaderAstRecursiveVisitor::Visit(const ShaderNodes::StatementBlock& node)
{
for (auto& statement : node.statements)
Visit(statement);
}
void ShaderAstRecursiveVisitor::Visit(const ShaderNodes::SwizzleOp& node)
{
Visit(node.expression);
}
}

View File

@ -2,9 +2,9 @@
// This file is part of the "Nazara Engine - Renderer module"
// For conditions of distribution and use, see copyright notice in Config.hpp
#include <Nazara/Renderer/ShaderSerializer.hpp>
#include <Nazara/Renderer/ShaderAstSerializer.hpp>
#include <Nazara/Renderer/ShaderVarVisitor.hpp>
#include <Nazara/Renderer/ShaderVisitor.hpp>
#include <Nazara/Renderer/ShaderAstVisitor.hpp>
#include <Nazara/Renderer/Debug.hpp>
namespace Nz
@ -14,10 +14,10 @@ namespace Nz
constexpr UInt32 s_magicNumber = 0x4E534852;
constexpr UInt32 s_currentVersion = 1;
class ShaderSerializerVisitor : public ShaderVisitor, public ShaderVarVisitor
class ShaderSerializerVisitor : public ShaderAstVisitor, public ShaderVarVisitor
{
public:
ShaderSerializerVisitor(ShaderSerializerBase& serializer) :
ShaderSerializerVisitor(ShaderAstSerializerBase& serializer) :
m_serializer(serializer)
{
}
@ -126,32 +126,32 @@ namespace Nz
m_serializer.Serialize(const_cast<T&>(node));
}
ShaderSerializerBase& m_serializer;
ShaderAstSerializerBase& m_serializer;
};
}
void ShaderSerializerBase::Serialize(ShaderNodes::AccessMember& node)
void ShaderAstSerializerBase::Serialize(ShaderNodes::AccessMember& node)
{
Value(node.memberIndex);
Node(node.structExpr);
Type(node.exprType);
}
void ShaderSerializerBase::Serialize(ShaderNodes::AssignOp& node)
void ShaderAstSerializerBase::Serialize(ShaderNodes::AssignOp& node)
{
Enum(node.op);
Node(node.left);
Node(node.right);
}
void ShaderSerializerBase::Serialize(ShaderNodes::BinaryOp& node)
void ShaderAstSerializerBase::Serialize(ShaderNodes::BinaryOp& node)
{
Enum(node.op);
Node(node.left);
Node(node.right);
}
void ShaderSerializerBase::Serialize(ShaderNodes::Branch& node)
void ShaderAstSerializerBase::Serialize(ShaderNodes::Branch& node)
{
Container(node.condStatements);
for (auto& condStatement : node.condStatements)
@ -163,20 +163,20 @@ namespace Nz
Node(node.elseStatement);
}
void ShaderSerializerBase::Serialize(ShaderNodes::BuiltinVariable& node)
void ShaderAstSerializerBase::Serialize(ShaderNodes::BuiltinVariable& node)
{
Enum(node.entry);
Type(node.type);
}
void ShaderSerializerBase::Serialize(ShaderNodes::Cast& node)
void ShaderAstSerializerBase::Serialize(ShaderNodes::Cast& node)
{
Enum(node.exprType);
for (auto& expr : node.expressions)
Node(expr);
}
void ShaderSerializerBase::Serialize(ShaderNodes::Constant& node)
void ShaderAstSerializerBase::Serialize(ShaderNodes::Constant& node)
{
UInt32 typeIndex;
if (IsWriting())
@ -205,23 +205,23 @@ namespace Nz
}
}
void ShaderSerializerBase::Serialize(ShaderNodes::DeclareVariable& node)
void ShaderAstSerializerBase::Serialize(ShaderNodes::DeclareVariable& node)
{
Variable(node.variable);
Node(node.expression);
}
void ShaderSerializerBase::Serialize(ShaderNodes::ExpressionStatement& node)
void ShaderAstSerializerBase::Serialize(ShaderNodes::ExpressionStatement& node)
{
Node(node.expression);
}
void ShaderSerializerBase::Serialize(ShaderNodes::Identifier& node)
void ShaderAstSerializerBase::Serialize(ShaderNodes::Identifier& node)
{
Variable(node.var);
}
void ShaderSerializerBase::Serialize(ShaderNodes::IntrinsicCall& node)
void ShaderAstSerializerBase::Serialize(ShaderNodes::IntrinsicCall& node)
{
Enum(node.intrinsic);
Container(node.parameters);
@ -229,26 +229,26 @@ namespace Nz
Node(param);
}
void ShaderSerializerBase::Serialize(ShaderNodes::NamedVariable& node)
void ShaderAstSerializerBase::Serialize(ShaderNodes::NamedVariable& node)
{
Value(node.name);
Type(node.type);
}
void ShaderSerializerBase::Serialize(ShaderNodes::Sample2D& node)
void ShaderAstSerializerBase::Serialize(ShaderNodes::Sample2D& node)
{
Node(node.sampler);
Node(node.coordinates);
}
void ShaderSerializerBase::Serialize(ShaderNodes::StatementBlock& node)
void ShaderAstSerializerBase::Serialize(ShaderNodes::StatementBlock& node)
{
Container(node.statements);
for (auto& statement : node.statements)
Node(statement);
}
void ShaderSerializerBase::Serialize(ShaderNodes::SwizzleOp& node)
void ShaderAstSerializerBase::Serialize(ShaderNodes::SwizzleOp& node)
{
Value(node.componentCount);
Node(node.expression);
@ -258,7 +258,7 @@ namespace Nz
}
void ShaderSerializer::Serialize(const ShaderAst& shader)
void ShaderAstSerializer::Serialize(const ShaderAst& shader)
{
m_stream << s_magicNumber << s_currentVersion;
@ -346,12 +346,12 @@ namespace Nz
m_stream.FlushBits();
}
bool ShaderSerializer::IsWriting() const
bool ShaderAstSerializer::IsWriting() const
{
return true;
}
void ShaderSerializer::Node(ShaderNodes::NodePtr& node)
void ShaderAstSerializer::Node(ShaderNodes::NodePtr& node)
{
ShaderNodes::NodeType nodeType = (node) ? node->GetType() : ShaderNodes::NodeType::None;
m_stream << static_cast<Int32>(nodeType);
@ -363,7 +363,7 @@ namespace Nz
}
}
void ShaderSerializer::Type(ShaderExpressionType& type)
void ShaderAstSerializer::Type(ShaderExpressionType& type)
{
std::visit([&](auto&& arg)
{
@ -383,57 +383,57 @@ namespace Nz
}, type);
}
void ShaderSerializer::Node(const ShaderNodes::NodePtr& node)
void ShaderAstSerializer::Node(const ShaderNodes::NodePtr& node)
{
Node(const_cast<ShaderNodes::NodePtr&>(node)); //< Yes const_cast is ugly but it won't be used for writing
}
void ShaderSerializer::Value(bool& val)
void ShaderAstSerializer::Value(bool& val)
{
m_stream << val;
}
void ShaderSerializer::Value(float& val)
void ShaderAstSerializer::Value(float& val)
{
m_stream << val;
}
void ShaderSerializer::Value(std::string& val)
void ShaderAstSerializer::Value(std::string& val)
{
m_stream << val;
}
void ShaderSerializer::Value(Vector2f& val)
void ShaderAstSerializer::Value(Vector2f& val)
{
m_stream << val;
}
void ShaderSerializer::Value(Vector3f& val)
void ShaderAstSerializer::Value(Vector3f& val)
{
m_stream << val;
}
void ShaderSerializer::Value(Vector4f& val)
void ShaderAstSerializer::Value(Vector4f& val)
{
m_stream << val;
}
void ShaderSerializer::Value(UInt8& val)
void ShaderAstSerializer::Value(UInt8& val)
{
m_stream << val;
}
void ShaderSerializer::Value(UInt16& val)
void ShaderAstSerializer::Value(UInt16& val)
{
m_stream << val;
}
void ShaderSerializer::Value(UInt32& val)
void ShaderAstSerializer::Value(UInt32& val)
{
m_stream << val;
}
void ShaderSerializer::Variable(ShaderNodes::VariablePtr& var)
void ShaderAstSerializer::Variable(ShaderNodes::VariablePtr& var)
{
ShaderNodes::VariableType nodeType = (var) ? var->GetType() : ShaderNodes::VariableType::None;
m_stream << static_cast<Int32>(nodeType);
@ -445,7 +445,7 @@ namespace Nz
}
}
ShaderAst ShaderUnserializer::Unserialize()
ShaderAst ShaderAstUnserializer::Unserialize()
{
UInt32 magicNumber;
UInt32 version;
@ -558,12 +558,12 @@ namespace Nz
return shader;
}
bool ShaderUnserializer::IsWriting() const
bool ShaderAstUnserializer::IsWriting() const
{
return false;
}
void ShaderUnserializer::Node(ShaderNodes::NodePtr& node)
void ShaderAstUnserializer::Node(ShaderNodes::NodePtr& node)
{
Int32 nodeTypeInt;
m_stream >> nodeTypeInt;
@ -599,7 +599,7 @@ namespace Nz
}
}
void ShaderUnserializer::Type(ShaderExpressionType& type)
void ShaderAstUnserializer::Type(ShaderExpressionType& type)
{
UInt8 typeIndex;
Value(typeIndex);
@ -629,52 +629,52 @@ namespace Nz
}
}
void ShaderUnserializer::Value(bool& val)
void ShaderAstUnserializer::Value(bool& val)
{
m_stream >> val;
}
void ShaderUnserializer::Value(float& val)
void ShaderAstUnserializer::Value(float& val)
{
m_stream >> val;
}
void ShaderUnserializer::Value(std::string& val)
void ShaderAstUnserializer::Value(std::string& val)
{
m_stream >> val;
}
void ShaderUnserializer::Value(Vector2f& val)
void ShaderAstUnserializer::Value(Vector2f& val)
{
m_stream >> val;
}
void ShaderUnserializer::Value(Vector3f& val)
void ShaderAstUnserializer::Value(Vector3f& val)
{
m_stream >> val;
}
void ShaderUnserializer::Value(Vector4f& val)
void ShaderAstUnserializer::Value(Vector4f& val)
{
m_stream >> val;
}
void ShaderUnserializer::Value(UInt8& val)
void ShaderAstUnserializer::Value(UInt8& val)
{
m_stream >> val;
}
void ShaderUnserializer::Value(UInt16& val)
void ShaderAstUnserializer::Value(UInt16& val)
{
m_stream >> val;
}
void ShaderUnserializer::Value(UInt32& val)
void ShaderAstUnserializer::Value(UInt32& val)
{
m_stream >> val;
}
void ShaderUnserializer::Variable(ShaderNodes::VariablePtr& var)
void ShaderAstUnserializer::Variable(ShaderNodes::VariablePtr& var)
{
Int32 nodeTypeInt;
m_stream >> nodeTypeInt;
@ -707,7 +707,7 @@ namespace Nz
ByteArray byteArray;
ByteStream stream(&byteArray, OpenModeFlags(OpenMode_WriteOnly));
ShaderSerializer serializer(stream);
ShaderAstSerializer serializer(stream);
serializer.Serialize(shader);
return byteArray;
@ -715,7 +715,7 @@ namespace Nz
ShaderAst UnserializeShader(ByteStream& stream)
{
ShaderUnserializer unserializer(stream);
ShaderAstUnserializer unserializer(stream);
return unserializer.Unserialize();
}
}

View File

@ -2,7 +2,7 @@
// This file is part of the "Nazara Engine - Renderer module"
// For conditions of distribution and use, see copyright notice in Config.hpp
#include <Nazara/Renderer/ShaderValidator.hpp>
#include <Nazara/Renderer/ShaderAstValidator.hpp>
#include <Nazara/Core/CallOnExit.hpp>
#include <Nazara/Renderer/ShaderAst.hpp>
#include <Nazara/Renderer/ShaderVariables.hpp>
@ -16,7 +16,7 @@ namespace Nz
std::string errMsg;
};
struct ShaderValidator::Context
struct ShaderAstValidator::Context
{
struct Local
{
@ -29,7 +29,7 @@ namespace Nz
std::vector<std::size_t> blockLocalIndex;
};
bool ShaderValidator::Validate(std::string* error)
bool ShaderAstValidator::Validate(std::string* error)
{
try
{
@ -57,14 +57,14 @@ namespace Nz
}
}
const ShaderNodes::ExpressionPtr& ShaderValidator::MandatoryExpr(const ShaderNodes::ExpressionPtr& node)
const ShaderNodes::ExpressionPtr& ShaderAstValidator::MandatoryExpr(const ShaderNodes::ExpressionPtr& node)
{
MandatoryNode(node);
return node;
}
const ShaderNodes::NodePtr& ShaderValidator::MandatoryNode(const ShaderNodes::NodePtr& node)
const ShaderNodes::NodePtr& ShaderAstValidator::MandatoryNode(const ShaderNodes::NodePtr& node)
{
if (!node)
throw AstError{ "Invalid node" };
@ -72,18 +72,18 @@ namespace Nz
return node;
}
void ShaderValidator::TypeMustMatch(const ShaderNodes::ExpressionPtr& left, const ShaderNodes::ExpressionPtr& right)
void ShaderAstValidator::TypeMustMatch(const ShaderNodes::ExpressionPtr& left, const ShaderNodes::ExpressionPtr& right)
{
return TypeMustMatch(left->GetExpressionType(), right->GetExpressionType());
}
void ShaderValidator::TypeMustMatch(const ShaderExpressionType& left, const ShaderExpressionType& right)
void ShaderAstValidator::TypeMustMatch(const ShaderExpressionType& left, const ShaderExpressionType& right)
{
if (left != right)
throw AstError{ "Left expression type must match right expression type" };
}
void ShaderValidator::Visit(const ShaderNodes::AccessMember& node)
void ShaderAstValidator::Visit(const ShaderNodes::AccessMember& node)
{
const ShaderExpressionType& exprType = MandatoryExpr(node.structExpr)->GetExpressionType();
if (!std::holds_alternative<std::string>(exprType))
@ -105,7 +105,7 @@ namespace Nz
throw AstError{ "member type does not match node type" };
}
void ShaderValidator::Visit(const ShaderNodes::AssignOp& node)
void ShaderAstValidator::Visit(const ShaderNodes::AssignOp& node)
{
MandatoryNode(node.left);
MandatoryNode(node.right);
@ -114,10 +114,10 @@ namespace Nz
if (node.left->GetExpressionCategory() != ShaderNodes::ExpressionCategory::LValue)
throw AstError { "Assignation is only possible with a l-value" };
ShaderRecursiveVisitor::Visit(node);
ShaderAstRecursiveVisitor::Visit(node);
}
void ShaderValidator::Visit(const ShaderNodes::BinaryOp& node)
void ShaderAstValidator::Visit(const ShaderNodes::BinaryOp& node)
{
MandatoryNode(node.left);
MandatoryNode(node.right);
@ -186,10 +186,10 @@ namespace Nz
}
}
ShaderRecursiveVisitor::Visit(node);
ShaderAstRecursiveVisitor::Visit(node);
}
void ShaderValidator::Visit(const ShaderNodes::Branch& node)
void ShaderAstValidator::Visit(const ShaderNodes::Branch& node)
{
for (const auto& condStatement : node.condStatements)
{
@ -197,10 +197,10 @@ namespace Nz
MandatoryNode(condStatement.statement);
}
ShaderRecursiveVisitor::Visit(node);
ShaderAstRecursiveVisitor::Visit(node);
}
void ShaderValidator::Visit(const ShaderNodes::Cast& node)
void ShaderAstValidator::Visit(const ShaderNodes::Cast& node)
{
unsigned int componentCount = 0;
unsigned int requiredComponents = node.GetComponentCount(node.exprType);
@ -219,14 +219,14 @@ namespace Nz
if (componentCount != requiredComponents)
throw AstError{ "Component count doesn't match required component count" };
ShaderRecursiveVisitor::Visit(node);
ShaderAstRecursiveVisitor::Visit(node);
}
void ShaderValidator::Visit(const ShaderNodes::Constant& /*node*/)
void ShaderAstValidator::Visit(const ShaderNodes::Constant& /*node*/)
{
}
void ShaderValidator::Visit(const ShaderNodes::DeclareVariable& node)
void ShaderAstValidator::Visit(const ShaderNodes::DeclareVariable& node)
{
assert(m_context);
@ -234,17 +234,17 @@ namespace Nz
local.name = node.variable->name;
local.type = node.variable->type;
ShaderRecursiveVisitor::Visit(node);
ShaderAstRecursiveVisitor::Visit(node);
}
void ShaderValidator::Visit(const ShaderNodes::ExpressionStatement& node)
void ShaderAstValidator::Visit(const ShaderNodes::ExpressionStatement& node)
{
MandatoryNode(node.expression);
ShaderRecursiveVisitor::Visit(node);
ShaderAstRecursiveVisitor::Visit(node);
}
void ShaderValidator::Visit(const ShaderNodes::Identifier& node)
void ShaderAstValidator::Visit(const ShaderNodes::Identifier& node)
{
assert(m_context);
@ -254,7 +254,7 @@ namespace Nz
Visit(node.var);
}
void ShaderValidator::Visit(const ShaderNodes::IntrinsicCall& node)
void ShaderAstValidator::Visit(const ShaderNodes::IntrinsicCall& node)
{
switch (node.intrinsic)
{
@ -292,10 +292,10 @@ namespace Nz
break;
}
ShaderRecursiveVisitor::Visit(node);
ShaderAstRecursiveVisitor::Visit(node);
}
void ShaderValidator::Visit(const ShaderNodes::Sample2D& node)
void ShaderAstValidator::Visit(const ShaderNodes::Sample2D& node)
{
if (MandatoryExpr(node.sampler)->GetExpressionType() != ShaderExpressionType{ ShaderNodes::BasicType::Sampler2D })
throw AstError{ "Sampler must be a Sampler2D" };
@ -303,10 +303,10 @@ namespace Nz
if (MandatoryExpr(node.coordinates)->GetExpressionType() != ShaderExpressionType{ ShaderNodes::BasicType::Float2 })
throw AstError{ "Coordinates must be a Float2" };
ShaderRecursiveVisitor::Visit(node);
ShaderAstRecursiveVisitor::Visit(node);
}
void ShaderValidator::Visit(const ShaderNodes::StatementBlock& node)
void ShaderAstValidator::Visit(const ShaderNodes::StatementBlock& node)
{
assert(m_context);
@ -319,10 +319,10 @@ namespace Nz
m_context->declaredLocals.resize(m_context->blockLocalIndex.back());
m_context->blockLocalIndex.pop_back();
ShaderRecursiveVisitor::Visit(node);
ShaderAstRecursiveVisitor::Visit(node);
}
void ShaderValidator::Visit(const ShaderNodes::SwizzleOp& node)
void ShaderAstValidator::Visit(const ShaderNodes::SwizzleOp& node)
{
if (node.componentCount > 4)
throw AstError{ "Cannot swizzle more than four elements" };
@ -343,15 +343,15 @@ namespace Nz
throw AstError{ "Cannot swizzle this type" };
}
ShaderRecursiveVisitor::Visit(node);
ShaderAstRecursiveVisitor::Visit(node);
}
void ShaderValidator::Visit(const ShaderNodes::BuiltinVariable& /*var*/)
void ShaderAstValidator::Visit(const ShaderNodes::BuiltinVariable& /*var*/)
{
/* Nothing to do */
}
void ShaderValidator::Visit(const ShaderNodes::InputVariable& var)
void ShaderAstValidator::Visit(const ShaderNodes::InputVariable& var)
{
for (std::size_t i = 0; i < m_shader.GetInputCount(); ++i)
{
@ -366,7 +366,7 @@ namespace Nz
throw AstError{ "Input not found" };
}
void ShaderValidator::Visit(const ShaderNodes::LocalVariable& var)
void ShaderAstValidator::Visit(const ShaderNodes::LocalVariable& var)
{
const auto& vars = m_context->declaredLocals;
@ -377,7 +377,7 @@ namespace Nz
TypeMustMatch(it->type, var.type);
}
void ShaderValidator::Visit(const ShaderNodes::OutputVariable& var)
void ShaderAstValidator::Visit(const ShaderNodes::OutputVariable& var)
{
for (std::size_t i = 0; i < m_shader.GetOutputCount(); ++i)
{
@ -392,7 +392,7 @@ namespace Nz
throw AstError{ "Output not found" };
}
void ShaderValidator::Visit(const ShaderNodes::ParameterVariable& var)
void ShaderAstValidator::Visit(const ShaderNodes::ParameterVariable& var)
{
assert(m_context->currentFunction);
@ -405,7 +405,7 @@ namespace Nz
TypeMustMatch(it->type, var.type);
}
void ShaderValidator::Visit(const ShaderNodes::UniformVariable& var)
void ShaderAstValidator::Visit(const ShaderNodes::UniformVariable& var)
{
for (std::size_t i = 0; i < m_shader.GetUniformCount(); ++i)
{
@ -422,7 +422,7 @@ namespace Nz
bool ValidateShader(const ShaderAst& shader, std::string* error)
{
ShaderValidator validator(shader);
ShaderAstValidator validator(shader);
return validator.Validate(error);
}
}

View File

@ -2,14 +2,14 @@
// This file is part of the "Nazara Engine - Renderer module"
// For conditions of distribution and use, see copyright notice in Config.hpp
#include <Nazara/Renderer/ShaderVisitor.hpp>
#include <Nazara/Renderer/ShaderAstVisitor.hpp>
#include <Nazara/Renderer/Debug.hpp>
namespace Nz
{
ShaderVisitor::~ShaderVisitor() = default;
ShaderAstVisitor::~ShaderAstVisitor() = default;
void ShaderVisitor::EnableCondition(const std::string& name, bool cond)
void ShaderAstVisitor::EnableCondition(const std::string& name, bool cond)
{
if (cond)
m_conditions.insert(name);
@ -17,12 +17,12 @@ namespace Nz
m_conditions.erase(name);
}
bool ShaderVisitor::IsConditionEnabled(const std::string& name) const
bool ShaderAstVisitor::IsConditionEnabled(const std::string& name) const
{
return m_conditions.count(name) != 0;
}
void ShaderVisitor::Visit(const ShaderNodes::NodePtr& node)
void ShaderAstVisitor::Visit(const ShaderNodes::NodePtr& node)
{
node->Visit(*this);
}

View File

@ -4,8 +4,8 @@
#include <Nazara/Renderer/ShaderNodes.hpp>
#include <Nazara/Core/Algorithm.hpp>
#include <Nazara/Renderer/ShaderSerializer.hpp>
#include <Nazara/Renderer/ShaderVisitor.hpp>
#include <Nazara/Renderer/ShaderAstSerializer.hpp>
#include <Nazara/Renderer/ShaderAstVisitor.hpp>
#include <Nazara/Renderer/ShaderWriter.hpp>
#include <Nazara/Renderer/Debug.hpp>
@ -18,26 +18,26 @@ namespace Nz::ShaderNodes
return ExpressionCategory::RValue;
}
void ExpressionStatement::Visit(ShaderVisitor& visitor)
void ExpressionStatement::Visit(ShaderAstVisitor& visitor)
{
visitor.Visit(*this);
}
void ConditionalStatement::Visit(ShaderVisitor& visitor)
void ConditionalStatement::Visit(ShaderAstVisitor& visitor)
{
if (visitor.IsConditionEnabled(conditionName))
statement->Visit(visitor);
}
void StatementBlock::Visit(ShaderVisitor& visitor)
void StatementBlock::Visit(ShaderAstVisitor& visitor)
{
visitor.Visit(*this);
}
void DeclareVariable::Visit(ShaderVisitor& visitor)
void DeclareVariable::Visit(ShaderAstVisitor& visitor)
{
visitor.Visit(*this);
}
@ -54,7 +54,7 @@ namespace Nz::ShaderNodes
return var->type;
}
void Identifier::Visit(ShaderVisitor& visitor)
void Identifier::Visit(ShaderAstVisitor& visitor)
{
visitor.Visit(*this);
}
@ -69,7 +69,7 @@ namespace Nz::ShaderNodes
return exprType;
}
void AccessMember::Visit(ShaderVisitor& visitor)
void AccessMember::Visit(ShaderAstVisitor& visitor)
{
visitor.Visit(*this);
}
@ -79,7 +79,7 @@ namespace Nz::ShaderNodes
return left->GetExpressionType();
}
void AssignOp::Visit(ShaderVisitor& visitor)
void AssignOp::Visit(ShaderAstVisitor& visitor)
{
visitor.Visit(*this);
}
@ -137,13 +137,13 @@ namespace Nz::ShaderNodes
return *exprType;
}
void BinaryOp::Visit(ShaderVisitor& visitor)
void BinaryOp::Visit(ShaderAstVisitor& visitor)
{
visitor.Visit(*this);
}
void Branch::Visit(ShaderVisitor& visitor)
void Branch::Visit(ShaderAstVisitor& visitor)
{
visitor.Visit(*this);
}
@ -170,7 +170,7 @@ namespace Nz::ShaderNodes
}, value);
}
void Constant::Visit(ShaderVisitor& visitor)
void Constant::Visit(ShaderAstVisitor& visitor)
{
visitor.Visit(*this);
}
@ -180,7 +180,7 @@ namespace Nz::ShaderNodes
return exprType;
}
void Cast::Visit(ShaderVisitor& visitor)
void Cast::Visit(ShaderAstVisitor& visitor)
{
visitor.Visit(*this);
}
@ -199,7 +199,7 @@ namespace Nz::ShaderNodes
return static_cast<BasicType>(UnderlyingCast(GetComponentType(std::get<BasicType>(exprType))) + componentCount - 1);
}
void SwizzleOp::Visit(ShaderVisitor& visitor)
void SwizzleOp::Visit(ShaderAstVisitor& visitor)
{
visitor.Visit(*this);
}
@ -210,7 +210,7 @@ namespace Nz::ShaderNodes
return BasicType::Float4;
}
void Sample2D::Visit(ShaderVisitor& visitor)
void Sample2D::Visit(ShaderAstVisitor& visitor)
{
visitor.Visit(*this);
}
@ -231,7 +231,7 @@ namespace Nz::ShaderNodes
return BasicType::Void;
}
void IntrinsicCall::Visit(ShaderVisitor& visitor)
void IntrinsicCall::Visit(ShaderAstVisitor& visitor)
{
visitor.Visit(*this);
}

View File

@ -1,93 +0,0 @@
// Copyright (C) 2015 Jérôme Leclercq
// This file is part of the "Nazara Engine - Renderer module"
// For conditions of distribution and use, see copyright notice in Config.hpp
#include <Nazara/Renderer/ShaderRecursiveVisitor.hpp>
#include <Nazara/Renderer/Debug.hpp>
namespace Nz
{
void ShaderRecursiveVisitor::Visit(const ShaderNodes::AccessMember& node)
{
Visit(node.structExpr);
}
void ShaderRecursiveVisitor::Visit(const ShaderNodes::AssignOp& node)
{
Visit(node.left);
Visit(node.right);
}
void ShaderRecursiveVisitor::Visit(const ShaderNodes::BinaryOp& node)
{
Visit(node.left);
Visit(node.right);
}
void ShaderRecursiveVisitor::Visit(const ShaderNodes::Branch& node)
{
for (auto& cond : node.condStatements)
{
Visit(cond.condition);
Visit(cond.statement);
}
if (node.elseStatement)
Visit(node.elseStatement);
}
void ShaderRecursiveVisitor::Visit(const ShaderNodes::Cast& node)
{
for (auto& expr : node.expressions)
{
if (!expr)
break;
Visit(expr);
}
}
void ShaderRecursiveVisitor::Visit(const ShaderNodes::Constant& /*node*/)
{
/* Nothing to do */
}
void ShaderRecursiveVisitor::Visit(const ShaderNodes::DeclareVariable& node)
{
if (node.expression)
Visit(node.expression);
}
void ShaderRecursiveVisitor::Visit(const ShaderNodes::ExpressionStatement& node)
{
Visit(node.expression);
}
void ShaderRecursiveVisitor::Visit(const ShaderNodes::Identifier& /*node*/)
{
/* Nothing to do */
}
void ShaderRecursiveVisitor::Visit(const ShaderNodes::IntrinsicCall& node)
{
for (auto& param : node.parameters)
Visit(param);
}
void ShaderRecursiveVisitor::Visit(const ShaderNodes::Sample2D& node)
{
Visit(node.sampler);
Visit(node.coordinates);
}
void ShaderRecursiveVisitor::Visit(const ShaderNodes::StatementBlock& node)
{
for (auto& statement : node.statements)
Visit(statement);
}
void ShaderRecursiveVisitor::Visit(const ShaderNodes::SwizzleOp& node)
{
Visit(node.expression);
}
}

View File

@ -5,7 +5,7 @@
#include <Nazara/Renderer/SpirvWriter.hpp>
#include <Nazara/Core/CallOnExit.hpp>
#include <Nazara/Core/Endianness.hpp>
#include <Nazara/Renderer/ShaderValidator.hpp>
#include <Nazara/Renderer/ShaderAstValidator.hpp>
#include <tsl/ordered_map.h>
#include <tsl/ordered_set.h>
#include <SpirV/spirv.h>
@ -22,7 +22,7 @@ namespace Nz
{
using ConstantVariant = ShaderNodes::Constant::Variant;
class PreVisitor : public ShaderRecursiveVisitor, public ShaderVarVisitor
class PreVisitor : public ShaderAstRecursiveVisitor, public ShaderVarVisitor
{
public:
using BuiltinContainer = std::unordered_set<std::shared_ptr<const ShaderNodes::BuiltinVariable>>;
@ -31,7 +31,7 @@ namespace Nz
using LocalContainer = std::unordered_set<std::shared_ptr<const ShaderNodes::LocalVariable>>;
using ParameterContainer = std::unordered_set< std::shared_ptr<const ShaderNodes::ParameterVariable>>;
using ShaderRecursiveVisitor::Visit;
using ShaderAstRecursiveVisitor::Visit;
using ShaderVarVisitor::Visit;
void Visit(const ShaderNodes::Constant& node) override
@ -68,26 +68,26 @@ namespace Nz
},
node.value);
ShaderRecursiveVisitor::Visit(node);
ShaderAstRecursiveVisitor::Visit(node);
}
void Visit(const ShaderNodes::DeclareVariable& node) override
{
Visit(node.variable);
ShaderRecursiveVisitor::Visit(node);
ShaderAstRecursiveVisitor::Visit(node);
}
void Visit(const ShaderNodes::Identifier& node) override
{
Visit(node.var);
ShaderRecursiveVisitor::Visit(node);
ShaderAstRecursiveVisitor::Visit(node);
}
void Visit(const ShaderNodes::IntrinsicCall& node) override
{
ShaderRecursiveVisitor::Visit(node);
ShaderAstRecursiveVisitor::Visit(node);
switch (node.intrinsic)
{

View File

@ -1,7 +1,7 @@
#include <ShaderNode/Widgets/MainWindow.hpp>
#include <Nazara/Core/File.hpp>
#include <Nazara/Renderer/GlslWriter.hpp>
#include <Nazara/Renderer/ShaderSerializer.hpp>
#include <Nazara/Renderer/ShaderAstSerializer.hpp>
#include <ShaderNode/ShaderGraph.hpp>
#include <ShaderNode/Widgets/BufferEditor.hpp>
#include <ShaderNode/Widgets/InputEditor.hpp>