ULRE/inc/hgl/graph/VKMaterialParameters.h

54 lines
1.7 KiB
C
Raw Normal View History

#ifndef HGL_GRAPH_VULKAN_MATERIAL_PARAMETERS_INCLUDE
#define HGL_GRAPH_VULKAN_MATERIAL_PARAMETERS_INCLUDE
2020-01-20 15:39:39 +08:00
#include<hgl/graph/VK.h>
2020-09-05 17:54:21 +08:00
#include<hgl/type/String.h>
#include<hgl/graph/VKDescriptorSet.h>
2020-01-20 15:39:39 +08:00
VK_NAMESPACE_BEGIN
class MaterialParameters
2020-01-20 15:39:39 +08:00
{
2021-09-13 20:39:25 +08:00
const MaterialDescriptorSets *mds;
2020-01-20 15:39:39 +08:00
DescriptorSetsType ds_type;
DescriptorSet *descriptor_sets;
2020-01-20 15:39:39 +08:00
private:
2021-09-14 20:31:15 +08:00
friend class GPUDevice;
2020-01-20 15:39:39 +08:00
MaterialParameters(const MaterialDescriptorSets *,const DescriptorSetsType &type,DescriptorSet *);
public:
2022-01-05 11:26:24 +08:00
const DescriptorSetsType GetType (){return ds_type;}
2023-02-22 21:50:18 +08:00
DescriptorSet * GetDescriptorSet (){return descriptor_sets;}
const VkDescriptorSet GetVkDescriptorSet ()const{return descriptor_sets->GetDescriptorSet();}
2020-01-20 15:39:39 +08:00
const uint32_t GetCount ()const{return descriptor_sets->GetCount();}
const bool IsReady ()const{return descriptor_sets->IsReady();}
2020-01-20 15:39:39 +08:00
public:
#define MP_TYPE_IS(name) const bool is##name()const{return ds_type==DescriptorSetsType::name;}
2023-02-22 21:50:18 +08:00
MP_TYPE_IS(Skeleton)
MP_TYPE_IS(Instance)
MP_TYPE_IS(PerObject)
MP_TYPE_IS(PerMaterial)
MP_TYPE_IS(PerFrame)
MP_TYPE_IS(Global)
#undef MP_TYPE_IS
2020-01-20 15:39:39 +08:00
public:
virtual ~MaterialParameters();
2020-01-20 15:39:39 +08:00
bool BindUBO(const AnsiString &name,DeviceBuffer *ubo,bool dynamic=false);
bool BindSSBO(const AnsiString &name,DeviceBuffer *ubo,bool dynamic=false);
2020-07-07 19:16:23 +08:00
bool BindSampler(const AnsiString &name,Texture *tex,Sampler *sampler);
bool BindInputAttachment(const AnsiString &name,ImageView *);
2020-01-20 15:39:39 +08:00
void Update();
};//class MaterialParameters
2020-01-20 15:39:39 +08:00
VK_NAMESPACE_END
#endif//HGL_GRAPH_VULKAN_MATERIAL_PARAMETERS_INCLUDE