ULRE/inc/hgl/graph/VKMaterialInstance.h

43 lines
1.2 KiB
C
Raw Normal View History

2023-02-22 21:50:18 +08:00
#ifndef HGL_GRAPH_VULKAN_MATERIAL_INSTANCE_INCLUDE
#define HGL_GRAPH_VULKAN_MATERIAL_INSTANCE_INCLUDE
2023-02-22 21:50:18 +08:00
#include<hgl/graph/VKMaterial.h>
VK_NAMESPACE_BEGIN
class MaterialInstance
{
Material *material;
VIL *vil;
2023-02-22 21:50:18 +08:00
MaterialParameters *mp_per_mi; ///<材质实例独有参数对应PerMaterial合集
private:
2021-09-14 20:31:15 +08:00
friend class GPUDevice;
2023-02-22 21:50:18 +08:00
MaterialInstance(Material *,VIL *);
public:
2023-02-22 21:50:18 +08:00
virtual ~MaterialInstance()=default;
Material *GetMaterial(){return material;}
const VIL *GetVIL()const{return vil;}
2023-02-22 21:50:18 +08:00
MaterialParameters *GetMP(){return mp_per_mi;}
2023-03-29 21:34:50 +08:00
MaterialParameters *GetMP(const DescriptorSetType &type)
{
if(type==DescriptorSetType::PerMaterial)
return mp_per_mi;
else
return material->GetMP(type);
}
2022-03-09 20:33:26 +08:00
bool BindUBO(const DescriptorSetType &type,const AnsiString &name,DeviceBuffer *ubo,bool dynamic=false);
bool BindSSBO(const DescriptorSetType &type,const AnsiString &name,DeviceBuffer *ubo,bool dynamic=false);
2023-02-23 13:25:05 +08:00
bool BindImageSampler(const DescriptorSetType &type,const AnsiString &name,Texture *tex,Sampler *sampler);
};//class MaterialInstance
VK_NAMESPACE_END
#endif//HGL_GRAPH_VULKAN_MATERIAL_INSTANCE_INCLUDE