Refactoring graphics

This commit is contained in:
Dynamitos
2023-10-26 18:37:29 +02:00
parent 28e5c9ff01
commit 1ca861459c
113 changed files with 3131 additions and 3221 deletions
+2 -17
View File
@@ -30,24 +30,9 @@ Material::~Material()
{
}
Gfx::PDescriptorSet Material::createDescriptorSet()
PMaterialInstance Seele::Material::instantiate()
{
Gfx::PDescriptorSet descriptorSet = layout->allocateDescriptorSet();
BulkResourceData uniformUpdate = {
.size = uniformDataSize,
.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;
return new MaterialInstance(instanceId++, graphics, this, layout, parameters, uniformBinding, uniformDataSize);
}
void Material::save(ArchiveBuffer& buffer) const
+1 -1
View File
@@ -1,6 +1,6 @@
#pragma once
#include "ShaderExpression.h"
#include "Graphics/GraphicsResources.h"
#include "Graphics/Descriptor.h"
namespace Seele
{
+7 -3
View File
@@ -4,8 +4,8 @@
using namespace Seele;
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)
MaterialInstance::MaterialInstance(uint64 id, Gfx::PGraphics graphics, PMaterial baseMaterial, Gfx::PDescriptorLayout descriptor, Array<PShaderParameter> params, uint32 uniformBinding, uint32 uniformSize)
: id(id), graphics(graphics), baseMaterial(baseMaterial), layout(layout), parameters(params), uniformBinding(uniformBinding)
{
uniformBuffer = graphics->createUniformBuffer(UniformBufferCreateInfo{
.resourceData = {
@@ -20,4 +20,8 @@ MaterialInstance::MaterialInstance(uint64 id, Gfx::PGraphics graphics, PMaterial
MaterialInstance::~MaterialInstance()
{
}
}
void Seele::MaterialInstance::updateDescriptor()
{
}
+3 -1
View File
@@ -1,12 +1,13 @@
#pragma once
#include "Material.h"
#include "Graphics/Buffer.h"
namespace Seele
{
class MaterialInstance
{
public:
MaterialInstance(uint64 id, Gfx::PGraphics graphics, PMaterial baseMaterial, Gfx::PDescriptorSet descriptor, Array<PShaderParameter> params, uint32 uniformBinding, uint32 uniformSize);
MaterialInstance(uint64 id, Gfx::PGraphics graphics, PMaterial baseMaterial, Gfx::PDescriptorLayout descriptor, Array<PShaderParameter> params, uint32 uniformBinding, uint32 uniformSize);
~MaterialInstance();
void updateDescriptor();
Gfx::PDescriptorSet getDescriptorSet() const;
@@ -18,6 +19,7 @@ private:
uint32 uniformBinding;
Gfx::PUniformBuffer uniformBuffer;
Array<PShaderParameter> parameters;
Gfx::PDescriptorLayout layout;
Gfx::PDescriptorSet descriptor;
PMaterial baseMaterial;
uint64 id;
+2 -1
View File
@@ -1,8 +1,9 @@
#include "ShaderExpression.h"
#include "Graphics/GraphicsResources.h"
#include "Graphics/Resources.h"
#include "Asset/TextureAsset.h"
#include "Asset/AssetRegistry.h"
#include "Graphics/Graphics.h"
#include "Graphics/Descriptor.h"
using namespace Seele;