From fa62d7f7ab5b70f7d901869bea85de2b807ae7d8 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Fri, 18 Dec 2020 16:14:36 +0800 Subject: [PATCH] added BindSSBO function at MaterialInstance --- inc/hgl/graph/VKMaterialInstance.h | 1 + src/SceneGraph/Vulkan/VKMaterialInstance.cpp | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/inc/hgl/graph/VKMaterialInstance.h b/inc/hgl/graph/VKMaterialInstance.h index b2474f98..1734c209 100644 --- a/inc/hgl/graph/VKMaterialInstance.h +++ b/inc/hgl/graph/VKMaterialInstance.h @@ -26,6 +26,7 @@ public: ~MaterialInstance(); bool BindUBO(const AnsiString &name,GPUBuffer *ubo,bool dynamic=false); + bool BindSSBO(const AnsiString &name,GPUBuffer *ubo,bool dynamic=false); bool BindSampler(const AnsiString &name,Texture *tex,Sampler *sampler); void Update(); diff --git a/src/SceneGraph/Vulkan/VKMaterialInstance.cpp b/src/SceneGraph/Vulkan/VKMaterialInstance.cpp index 13650674..0fc6522f 100644 --- a/src/SceneGraph/Vulkan/VKMaterialInstance.cpp +++ b/src/SceneGraph/Vulkan/VKMaterialInstance.cpp @@ -31,6 +31,22 @@ bool MaterialInstance::BindUBO(const AnsiString &name,GPUBuffer *ubo,bool dynami return(true); } +bool MaterialInstance::BindSSBO(const AnsiString &name,GPUBuffer *ssbo,bool dynamic) +{ + if(name.IsEmpty()||!ssbo) + return(false); + + const int index=material->GetSSBO(name); + + if(index<0) + return(false); + + if(!descriptor_sets->BindSSBO(index,ssbo,dynamic)) + return(false); + + return(true); +} + bool MaterialInstance::BindSampler(const AnsiString &name,Texture *tex,Sampler *sampler) { if(name.IsEmpty()||!tex||!sampler)