30class ShaderResourceTable :
public GraphicsPluginObject
33 ShaderResourceTable();
34 ~ShaderResourceTable()
override;
38 SetsIndex_ModelMatrices = 0,
40 SetsIndex_Textures = 2,
41 SetsIndex_LightIndividual = 3,
42 SetsIndex_Material = 4,
44 SetsIndex_Panorama = 6,
49#define DSETS_INDEX_MODEL_MATRICES venom::common::ShaderResourceTable::SetsIndex::SetsIndex_ModelMatrices
50#define DSETS_INDEX_CAMERA venom::common::ShaderResourceTable::SetsIndex::SetsIndex_Camera
51#define DSETS_INDEX_TEXTURES venom::common::ShaderResourceTable::SetsIndex::SetsIndex_Textures
52#define DSETS_INDEX_SAMPLER venom::common::ShaderResourceTable::SetsIndex::SetsIndex_Sampler
53#define DSETS_INDEX_MATERIAL venom::common::ShaderResourceTable::SetsIndex::SetsIndex_Material
54#define DSETS_INDEX_SCENE venom::common::ShaderResourceTable::SetsIndex::SetsIndex_Scene
55#define DSETS_INDEX_PANORAMA venom::common::ShaderResourceTable::SetsIndex::SetsIndex_Panorama
56#define DSETS_INDEX_LIGHT venom::common::ShaderResourceTable::SetsIndex::SetsIndex_Light
57#define DSETS_INDEX_LIGHT_INDIVIDUAL venom::common::ShaderResourceTable::SetsIndex::SetsIndex_LightIndividual
66 static void UpdateDescriptor(
const SetsIndex index,
const int binding,
const void * data,
const size_t size,
const size_t offset = 0);
67 static void UpdateDescriptor(
const SetsIndex index,
const int binding,
vc::Texture * texture);
69#ifdef VENOM_EXTERNAL_PACKED_MODEL_MATRIX
70 static vcm::Mat4 * GetAllModelMatrixBuffer();
71 static vcm::Mat4 * GetModelMatrixBuffer();
72 static inline size_t GetAllModelMatrixBytesSize() {
return VENOM_MAX_ENTITIES *
sizeof(vcm::Mat4); }
73 static void ReleaseModelMatrixBuffer(
const vcm::Mat4 * mat);
74 static int GetModelMatrixBufferId(
const vcm::Mat4 * mat);
77 static int BindTexture();
78 static void UnbindTexture(
int id);
79 static void SetMaxTextures(uint32_t maxTextures);
80 static inline int GetMaxTextures() {
return __maxTextures; }
81 static bool UsingLargeBindlessTextures() {
return __maxTextures == VENOM_MAX_BINDLESS_TEXTURES; }
84 virtual void __UpdateDescriptor(
const SetsIndex index,
const int binding,
const void * data,
const size_t size,
const size_t offset = 0) = 0;
85 virtual void __UpdateDescriptor(
const SetsIndex index,
const int binding,
vc::Texture * texture) = 0;
88 static int __maxTextures;