diff --git a/inc/hgl/graph/VKRenderableInstance.h b/inc/hgl/graph/VKRenderableInstance.h index 71309b21..811dd2b5 100644 --- a/inc/hgl/graph/VKRenderableInstance.h +++ b/inc/hgl/graph/VKRenderableInstance.h @@ -22,6 +22,8 @@ class RenderableInstance VkBuffer * buffer_list; VkDeviceSize * buffer_size; + uint32_t buffer_hash; + private: friend RenderableInstance *CreateRenderableInstance(Renderable *,MaterialInstance *,Pipeline *); @@ -44,6 +46,8 @@ public: const uint32_t GetIndexBufferOffset()const{return render_obj->GetIndexBufferOffset();} const uint32_t GetDrawCount ()const{return render_obj->GetDrawCount();} + const uint32_t GetBufferHash ()const{return buffer_hash;} + DescriptorSets * GetMIDescSets ()const{return mat_inst->GetDescriptorSets();} DescriptorSets * GetRIDescSets ()const{return descriptor_sets;} diff --git a/src/SceneGraph/Vulkan/VKRenderableInstance.cpp b/src/SceneGraph/Vulkan/VKRenderableInstance.cpp index 7c611677..59a8c52b 100644 --- a/src/SceneGraph/Vulkan/VKRenderableInstance.cpp +++ b/src/SceneGraph/Vulkan/VKRenderableInstance.cpp @@ -2,8 +2,12 @@ #include #include #include +#include VK_NAMESPACE_BEGIN + +using namespace util; + RenderableInstance::RenderableInstance(Renderable *r,MaterialInstance *mi,Pipeline *p,const uint32_t count,VkBuffer *bl,VkDeviceSize *bs) { render_obj=r; @@ -15,8 +19,13 @@ RenderableInstance::RenderableInstance(Renderable *r,MaterialInstance *mi,Pipeli buffer_count=count; buffer_list=bl; buffer_size=bs; -} + if(buffer_count>0) + CountHash(buffer_list,buffer_count*sizeof(VkBuffer),(void *)&buffer_hash); + else + buffer_hash=0; +} + RenderableInstance::~RenderableInstance() { SAFE_CLEAR(descriptor_sets);