ShaderAst: Big refactor + add binding/location support

This commit is contained in:
Lynix
2020-06-17 16:00:03 +02:00
parent 463b540739
commit f38bfdde8a
63 changed files with 2380 additions and 1603 deletions

View File

@@ -5,7 +5,7 @@
#include <Nazara/Renderer/ShaderSerializer.hpp>
#include <Nazara/Renderer/Debug.hpp>
namespace Nz::ShaderAst
namespace Nz::ShaderNodes
{
template<typename T>
void ShaderSerializerBase::Container(T& container)
@@ -37,7 +37,7 @@ namespace Nz::ShaderAst
}
template<typename T>
inline void ShaderSerializerBase::Node(std::shared_ptr<T>& node)
void ShaderSerializerBase::Node(std::shared_ptr<T>& node)
{
bool isWriting = IsWriting();
@@ -50,6 +50,20 @@ namespace Nz::ShaderAst
node = std::static_pointer_cast<T>(value);
}
template<typename T>
void ShaderSerializerBase::Variable(std::shared_ptr<T>& var)
{
bool isWriting = IsWriting();
VariablePtr value;
if (isWriting)
value = var;
Variable(value);
if (!isWriting)
var = std::static_pointer_cast<T>(value);
}
inline void ShaderSerializerBase::Value(std::size_t& val)
{
bool isWriting = IsWriting();