32 lines
939 B
C++
32 lines
939 B
C++
#pragma once
|
|
#include "Material.h"
|
|
#include "Graphics/Buffer.h"
|
|
|
|
namespace Seele
|
|
{
|
|
class MaterialInstance
|
|
{
|
|
public:
|
|
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;
|
|
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;
|
|
uint32 uniformBinding;
|
|
Gfx::PUniformBuffer uniformBuffer;
|
|
Array<PShaderParameter> parameters;
|
|
Gfx::PDescriptorLayout layout;
|
|
Gfx::PDescriptorSet descriptor;
|
|
PMaterial baseMaterial;
|
|
uint64 id;
|
|
};
|
|
DEFINE_REF(MaterialInstance)
|
|
} // namespace Seele
|