Reworking VertexData

This commit is contained in:
Dynamitos
2023-10-24 15:01:09 +02:00
parent a47f17481b
commit 28e5c9ff01
61 changed files with 1157 additions and 1144 deletions
+11 -43
View File
@@ -4,52 +4,20 @@
using namespace Seele;
MaterialInstance::MaterialInstance(Gfx::PGraphics graphics, PMaterial baseMaterial)
: MaterialInterface(graphics, baseMaterial->parameters, baseMaterial->uniformDataSize, baseMaterial->uniformBinding)
, baseMaterial(baseMaterial)
MaterialInstance::MaterialInstance(uint64 id, Gfx::PGraphics graphics, PMaterial baseMaterial, Gfx::PDescriptorSet descriptor, Array<PShaderParameter> params, uint32 uniformBinding, uint32 uniformSize)
: id(id), graphics(graphics), baseMaterial(baseMaterial), descriptor(descriptor), parameters(params), uniformBinding(uniformBinding)
{
uniformBuffer = graphics->createUniformBuffer(UniformBufferCreateInfo{
.resourceData = {
.size = uniformSize,
},
.bDynamic = true,
}
);
uniformData.resize(uniformSize);
}
MaterialInstance::~MaterialInstance()
{
}
Gfx::PDescriptorSet MaterialInstance::createDescriptorSet()
{
Gfx::PDescriptorSet descriptorSet = baseMaterial->layout->allocateDescriptorSet();
BulkResourceData uniformUpdate;
uniformUpdate.size = uniformDataSize;
uniformUpdate.data = (uint8*)uniformData.data();
for(auto param : parameters)
{
param->updateDescriptorSet(descriptorSet, uniformData.data());
}
if(uniformUpdate.size != 0)
{
uniformBuffer->updateContents(uniformUpdate);
descriptorSet->updateBuffer(uniformBinding, uniformBuffer);
}
descriptorSet->writeChanges();
return descriptorSet;
}
Gfx::PDescriptorLayout MaterialInstance::getDescriptorLayout() const
{
return baseMaterial->getDescriptorLayout();
}
const std::string& MaterialInstance::getName()
{
return baseMaterial->getName();
}
const Gfx::ShaderCollection* Seele::MaterialInstance::getShaders(Gfx::RenderPassType renderPass, VertexInputType* vertexInput) const
{
return baseMaterial->getShaders(renderPass, vertexInput);
}
Gfx::ShaderCollection& Seele::MaterialInstance::createShaders(Gfx::PGraphics graphics, Gfx::RenderPassType renderPass, VertexInputType* vertexInput)
{
return baseMaterial->createShaders(graphics, renderPass, vertexInput);
}
}