Renderer/ShaderSerialize: Use ByteStream instead of ByteArray
This commit is contained in:
parent
bc490a2fe5
commit
691de5b5c4
|
|
@ -67,7 +67,7 @@ namespace Nz
|
||||||
class NAZARA_RENDERER_API ShaderSerializer final : public ShaderSerializerBase
|
class NAZARA_RENDERER_API ShaderSerializer final : public ShaderSerializerBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
inline ShaderSerializer(ByteArray& byteArray);
|
inline ShaderSerializer(ByteStream& stream);
|
||||||
~ShaderSerializer() = default;
|
~ShaderSerializer() = default;
|
||||||
|
|
||||||
void Serialize(const ShaderAst& shader);
|
void Serialize(const ShaderAst& shader);
|
||||||
|
|
@ -85,14 +85,13 @@ namespace Nz
|
||||||
void Value(UInt32& val) override;
|
void Value(UInt32& val) override;
|
||||||
void Variable(ShaderNodes::VariablePtr& var) override;
|
void Variable(ShaderNodes::VariablePtr& var) override;
|
||||||
|
|
||||||
ByteArray& m_byteArray;
|
ByteStream& m_stream;
|
||||||
ByteStream m_stream;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class NAZARA_RENDERER_API ShaderUnserializer final : public ShaderSerializerBase
|
class NAZARA_RENDERER_API ShaderUnserializer final : public ShaderSerializerBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ShaderUnserializer(const ByteArray& byteArray);
|
ShaderUnserializer(ByteStream& stream);
|
||||||
~ShaderUnserializer() = default;
|
~ShaderUnserializer() = default;
|
||||||
|
|
||||||
ShaderAst Unserialize();
|
ShaderAst Unserialize();
|
||||||
|
|
@ -109,12 +108,11 @@ namespace Nz
|
||||||
void Value(UInt32& val) override;
|
void Value(UInt32& val) override;
|
||||||
void Variable(ShaderNodes::VariablePtr& var) override;
|
void Variable(ShaderNodes::VariablePtr& var) override;
|
||||||
|
|
||||||
const ByteArray& m_byteArray;
|
ByteStream& m_stream;
|
||||||
ByteStream m_stream;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
NAZARA_RENDERER_API ByteArray SerializeShader(const ShaderAst& shader);
|
NAZARA_RENDERER_API ByteArray SerializeShader(const ShaderAst& shader);
|
||||||
NAZARA_RENDERER_API ShaderAst UnserializeShader(const ByteArray& data);
|
NAZARA_RENDERER_API ShaderAst UnserializeShader(ByteStream& stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <Nazara/Renderer/ShaderSerializer.inl>
|
#include <Nazara/Renderer/ShaderSerializer.inl>
|
||||||
|
|
|
||||||
|
|
@ -95,15 +95,13 @@ namespace Nz
|
||||||
val = static_cast<std::size_t>(value);
|
val = static_cast<std::size_t>(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline ShaderSerializer::ShaderSerializer(ByteArray& byteArray) :
|
inline ShaderSerializer::ShaderSerializer(ByteStream& stream) :
|
||||||
m_byteArray(byteArray),
|
m_stream(stream)
|
||||||
m_stream(&m_byteArray, OpenModeFlags(OpenMode_WriteOnly))
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
inline ShaderUnserializer::ShaderUnserializer(const ByteArray& byteArray) :
|
inline ShaderUnserializer::ShaderUnserializer(ByteStream& stream) :
|
||||||
m_byteArray(byteArray),
|
m_stream(stream)
|
||||||
m_stream(const_cast<ByteArray*>(&m_byteArray), OpenModeFlags(OpenMode_ReadOnly))
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -248,9 +248,6 @@ namespace Nz
|
||||||
|
|
||||||
void ShaderSerializer::Serialize(const ShaderAst& shader)
|
void ShaderSerializer::Serialize(const ShaderAst& shader)
|
||||||
{
|
{
|
||||||
UInt32 magicNumber = s_magicNumber;
|
|
||||||
UInt32 version = s_currentVersion;
|
|
||||||
|
|
||||||
m_stream << s_magicNumber << s_currentVersion;
|
m_stream << s_magicNumber << s_currentVersion;
|
||||||
|
|
||||||
auto SerializeInputOutput = [&](auto& inout)
|
auto SerializeInputOutput = [&](auto& inout)
|
||||||
|
|
@ -558,15 +555,17 @@ namespace Nz
|
||||||
ByteArray SerializeShader(const ShaderAst& shader)
|
ByteArray SerializeShader(const ShaderAst& shader)
|
||||||
{
|
{
|
||||||
ByteArray byteArray;
|
ByteArray byteArray;
|
||||||
ShaderSerializer serializer(byteArray);
|
ByteStream stream(&byteArray, OpenModeFlags(OpenMode_WriteOnly));
|
||||||
|
|
||||||
|
ShaderSerializer serializer(stream);
|
||||||
serializer.Serialize(shader);
|
serializer.Serialize(shader);
|
||||||
|
|
||||||
return byteArray;
|
return byteArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
ShaderAst UnserializeShader(const ByteArray& data)
|
ShaderAst UnserializeShader(ByteStream& stream)
|
||||||
{
|
{
|
||||||
ShaderUnserializer unserializer(data);
|
ShaderUnserializer unserializer(stream);
|
||||||
return unserializer.Unserialize();
|
return unserializer.Unserialize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue