Adding bindless material descriptors

This commit is contained in:
Dynamitos
2024-06-18 19:19:05 +02:00
parent cff14981ff
commit f6ebbc2067
23 changed files with 387 additions and 274 deletions
+19 -6
View File
@@ -3,30 +3,43 @@
#include "Graphics/Buffer.h"
#include "Material.h"
namespace Seele {
struct MaterialOffsets {
uint32 textureOffset;
uint32 samplerOffset;
uint32 floatOffset;
};
class MaterialInstance {
public:
MaterialInstance();
MaterialInstance(uint64 id, Gfx::PGraphics graphics, Array<OShaderExpression>& expressions, Array<std::string> params,
uint32 uniformBinding, uint32 uniformSize);
uint32 numTextures, uint32 numSamplers, uint32 numFloats);
~MaterialInstance();
void updateDescriptor();
Gfx::PDescriptorSet getDescriptorSet() const;
PMaterial getBaseMaterial() const { return baseMaterial->getMaterial(); }
uint64 getId() const { return id; }
void setBaseMaterial(PMaterialAsset asset);
MaterialOffsets getMaterialOffsets() const {
return MaterialOffsets{
.textureOffset = texturesOffset,
.samplerOffset = samplersOffset,
.floatOffset = floatBufferOffset,
};
}
void save(ArchiveBuffer& buffer) const;
void load(ArchiveBuffer& buffer);
private:
Gfx::PGraphics graphics;
Array<uint8> uniformData;
uint32 uniformBinding;
Gfx::OUniformBuffer uniformBuffer;
Array<OShaderParameter> parameters;
uint32 numTextures;
uint32 numSamplers;
uint32 numFloats;
uint32 texturesOffset;
uint32 samplersOffset;
uint32 floatBufferOffset;
Gfx::PDescriptorSet descriptor;
PMaterialAsset baseMaterial;
uint64 id;