2021-06-16 21:03:52 +08:00
|
|
|
#ifndef HGL_GRAPH_VULKAN_MATERIAL_INSTANCE_INCLUDE
|
|
|
|
#define HGL_GRAPH_VULKAN_MATERIAL_INSTANCE_INCLUDE
|
|
|
|
|
|
|
|
#include<hgl/graph/VK.h>
|
|
|
|
|
|
|
|
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
|
|
|
|
2021-06-16 21:03:52 +08:00
|
|
|
MaterialParameters *mp_value;
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
2021-09-14 20:31:15 +08:00
|
|
|
friend class GPUDevice;
|
2021-06-16 21:03:52 +08:00
|
|
|
|
2022-10-11 19:16:06 +08:00
|
|
|
MaterialInstance(Material *,VIL *,MaterialParameters *);
|
2021-06-16 21:03:52 +08:00
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
virtual ~MaterialInstance();
|
|
|
|
|
|
|
|
Material *GetMaterial(){return material;}
|
|
|
|
|
2022-10-11 19:16:06 +08:00
|
|
|
const VIL *GetVIL()const{return vil;}
|
2021-06-16 21:03:52 +08:00
|
|
|
MaterialParameters *GetMP(){return mp_value;}
|
2021-09-27 21:20:22 +08:00
|
|
|
MaterialParameters *GetMP(const DescriptorSetsType &type);
|
2022-03-09 20:33:26 +08:00
|
|
|
|
2022-10-14 17:52:35 +08:00
|
|
|
bool BindUBO(const DescriptorSetsType &type,const AnsiString &name,DeviceBuffer *ubo,bool dynamic=false);
|
|
|
|
bool BindSSBO(const DescriptorSetsType &type,const AnsiString &name,DeviceBuffer *ubo,bool dynamic=false);
|
2022-03-09 20:33:26 +08:00
|
|
|
bool BindSampler(const DescriptorSetsType &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
|
2022-01-05 11:26:24 +08:00
|
|
|
|