Mesh and Material Serializations
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -8,6 +8,7 @@ DECLARE_REF(MaterialInstance)
|
||||
class Material
|
||||
{
|
||||
public:
|
||||
Material();
|
||||
Material(Gfx::PGraphics graphics,
|
||||
Array<PShaderParameter> parameter,
|
||||
Gfx::PDescriptorLayout layout,
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user