Mesh and Material Serializations

This commit is contained in:
Dynamitos
2023-11-01 13:38:49 +01:00
parent 4e7f4a56b8
commit 5a9cb13e74
20 changed files with 233 additions and 111 deletions
+16 -5
View File
@@ -5,6 +5,9 @@
using namespace Seele;
Material::Material()
{
}
Material::Material(Gfx::PGraphics graphics,
Array<PShaderParameter> parameter,
@@ -37,11 +40,15 @@ PMaterialInstance Seele::Material::instantiate()
void Material::save(ArchiveBuffer& buffer) const
{
MaterialInterface::save(buffer);
Serialization::save(buffer, brdfName);
Serialization::save(buffer, uniformDataSize);
Serialization::save(buffer, uniformBinding);
Serialization::save(buffer, instanceId);
Serialization::save(buffer, materialName);
Serialization::save(buffer, layout->getSetIndex());
Serialization::save(buffer, codeExpressions);
Serialization::save(buffer, parameters);
Serialization::save(buffer, brdf);
Serialization::save(buffer, layout->getSetIndex());
const auto& bindings = layout->getBindings();
Serialization::save(buffer, bindings.size());
for (const auto& binding : bindings)
@@ -57,12 +64,16 @@ void Material::save(ArchiveBuffer& buffer) const
void Material::load(ArchiveBuffer& buffer)
{
graphics = buffer.getGraphics();
MaterialInterface::load(buffer);
Serialization::load(buffer, brdfName);
Serialization::load(buffer, uniformDataSize);
Serialization::load(buffer, uniformBinding);
Serialization::load(buffer, instanceId);
Serialization::load(buffer, materialName);
Serialization::load(buffer, codeExpressions);
Serialization::load(buffer, parameters);
Serialization::load(buffer, brdf);
uint32 setIndex;
Serialization::load(buffer, setIndex);
Serialization::load(buffer, codeExpressions);
Serialization::load(buffer, brdf);
uint64 numBindings;
Serialization::load(buffer, numBindings);
layout = graphics->createDescriptorLayout();
+1
View File
@@ -8,6 +8,7 @@ DECLARE_REF(MaterialInstance)
class Material
{
public:
Material();
Material(Gfx::PGraphics graphics,
Array<PShaderParameter> parameter,
Gfx::PDescriptorLayout layout,
+36 -1
View File
@@ -22,6 +22,41 @@ MaterialInstance::~MaterialInstance()
}
void Seele::MaterialInstance::updateDescriptor()
void MaterialInstance::updateDescriptor()
{
descriptor = layout->allocateDescriptorSet();
for (auto param : parameters)
{
param->updateDescriptorSet(descriptor, uniformData.data());
}
descriptor->writeChanges();
}
Gfx::PDescriptorSet Seele::MaterialInstance::getDescriptorSet() const
{
return descriptor;
}
void MaterialInstance::save(ArchiveBuffer& buffer) const
{
Serialization::save(buffer, uniformData);
Serialization::save(buffer, uniformBinding);
Serialization::save(buffer, uniformBuffer);
Serialization::save(buffer, parameters);
Serialization::save(buffer, layout);
Serialization::save(buffer, descriptor);
Serialization::save(buffer, baseMaterial);
Serialization::save(buffer, id);
}
void MaterialInstance::load(ArchiveBuffer& buffer)
{
Serialization::load(buffer, uniformData);
Serialization::load(buffer, uniformBinding);
Serialization::load(buffer, uniformBuffer);
Serialization::load(buffer, parameters);
Serialization::load(buffer, layout);
Serialization::load(buffer, descriptor);
Serialization::load(buffer, baseMaterial);
Serialization::load(buffer, id);
}
+4
View File
@@ -13,6 +13,10 @@ public:
Gfx::PDescriptorSet getDescriptorSet() const;
PMaterial getBaseMaterial() const { return baseMaterial; }
uint64 getId() const { return id; }
void save(ArchiveBuffer& buffer) const;
void load(ArchiveBuffer& buffer);
private:
Gfx::PGraphics graphics;
Array<uint8> uniformData;