2023-02-22 21:50:18 +08:00
|
|
|
|
#ifndef HGL_GRAPH_VULKAN_MATERIAL_INSTANCE_INCLUDE
|
2021-06-16 21:03:52 +08:00
|
|
|
|
#define HGL_GRAPH_VULKAN_MATERIAL_INSTANCE_INCLUDE
|
|
|
|
|
|
2023-02-22 21:50:18 +08:00
|
|
|
|
#include<hgl/graph/VKMaterial.h>
|
2021-06-16 21:03:52 +08:00
|
|
|
|
|
|
|
|
|
VK_NAMESPACE_BEGIN
|
|
|
|
|
class MaterialInstance
|
|
|
|
|
{
|
|
|
|
|
Material *material;
|
|
|
|
|
|
2022-10-11 19:16:06 +08:00
|
|
|
|
VIL *vil;
|
2021-11-29 20:12:10 +08:00
|
|
|
|
|
2023-02-22 21:50:18 +08:00
|
|
|
|
MaterialParameters *mp_per_mi; ///<材质实例独有参数,对应PerMaterial合集
|
2021-06-16 21:03:52 +08:00
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
2021-09-14 20:31:15 +08:00
|
|
|
|
friend class GPUDevice;
|
2021-06-16 21:03:52 +08:00
|
|
|
|
|
2023-02-22 21:50:18 +08:00
|
|
|
|
MaterialInstance(Material *,VIL *);
|
2021-06-16 21:03:52 +08:00
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
2023-02-22 21:50:18 +08:00
|
|
|
|
virtual ~MaterialInstance()=default;
|
2021-06-16 21:03:52 +08:00
|
|
|
|
|
|
|
|
|
Material *GetMaterial(){return material;}
|
|
|
|
|
|
2022-10-11 19:16:06 +08:00
|
|
|
|
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
|
|
|
|
|
2023-02-22 21:53:51 +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);
|
2021-06-16 21:03:52 +08:00
|
|
|
|
};//class MaterialInstance
|
|
|
|
|
VK_NAMESPACE_END
|
|
|
|
|
#endif//HGL_GRAPH_VULKAN_MATERIAL_INSTANCE_INCLUDE
|