add mtl_name value in Material class,It's name of material.

This commit is contained in:
2021-05-10 15:19:16 +08:00
parent 7f0a786122
commit b86742109b
4 changed files with 17 additions and 13 deletions

View File

@@ -187,9 +187,9 @@ public: //shader & material
ShaderModule *CreateShaderModule(ShaderResource *); ShaderModule *CreateShaderModule(ShaderResource *);
Material *CreateMaterial(ShaderModuleMap *shader_maps); Material *CreateMaterial(const UTF8String &mtl_name,ShaderModuleMap *shader_maps);
Material *CreateMaterial(const VertexShaderModule *vertex_shader_module,const ShaderModule *fragment_shader_module); Material *CreateMaterial(const UTF8String &mtl_name,const VertexShaderModule *vertex_shader_module,const ShaderModule *fragment_shader_module);
Material *CreateMaterial(const VertexShaderModule *vertex_shader_module,const ShaderModule *geometry_shader_module,const ShaderModule *fragment_shader_module); Material *CreateMaterial(const UTF8String &mtl_name,const VertexShaderModule *vertex_shader_module,const ShaderModule *geometry_shader_module,const ShaderModule *fragment_shader_module);
public: //Command Buffer 相关 public: //Command Buffer 相关

View File

@@ -15,6 +15,8 @@ class DescriptorSetLayoutCreater;
*/ */
class Material class Material
{ {
UTF8String mtl_name;
ShaderModuleMap *shader_maps; ShaderModuleMap *shader_maps;
VertexShaderModule *vertex_sm; VertexShaderModule *vertex_sm;
List<VkPipelineShaderStageCreateInfo> *shader_stage_list; List<VkPipelineShaderStageCreateInfo> *shader_stage_list;
@@ -25,12 +27,14 @@ class Material
public: public:
Material(ShaderModuleMap *smm,List<VkPipelineShaderStageCreateInfo> *,DescriptorSetLayoutCreater *dslc); Material(const UTF8String &name,ShaderModuleMap *smm,List<VkPipelineShaderStageCreateInfo> *,DescriptorSetLayoutCreater *dslc);
~Material(); ~Material();
const VertexShaderModule *GetVertexShaderModule()const{return vertex_sm;} const UTF8String & GetName()const{return mtl_name;}
const int GetBinding(VkDescriptorType,const AnsiString &)const; const VertexShaderModule * GetVertexShaderModule()const{return vertex_sm;}
const int GetBinding(VkDescriptorType,const AnsiString &)const;
#define GET_BO_BINDING(name,vk_name) const int Get##name(const AnsiString &obj_name)const{return GetBinding(VK_DESCRIPTOR_TYPE_##vk_name,obj_name);} #define GET_BO_BINDING(name,vk_name) const int Get##name(const AnsiString &obj_name)const{return GetBinding(VK_DESCRIPTOR_TYPE_##vk_name,obj_name);}
// GET_BO_BINDING(Sampler, SAMPLER) // GET_BO_BINDING(Sampler, SAMPLER)

View File

@@ -89,8 +89,8 @@ public: //Material
const ShaderModule *CreateShaderModule(const OSString &filename,ShaderResource *shader_resource); const ShaderModule *CreateShaderModule(const OSString &filename,ShaderResource *shader_resource);
const ShaderModule *CreateShaderModule(const OSString &filename); const ShaderModule *CreateShaderModule(const OSString &filename);
Material * CreateMaterial(const OSString &vertex_shader_filename,const OSString &fragment_shader_filename); Material * CreateMaterial(const UTF8String &mtl_name,const OSString &vertex_shader_filename,const OSString &fragment_shader_filename);
Material * CreateMaterial(const OSString &vertex_shader_filename,const OSString &geometry_shader_filename,const OSString &fragment_shader_filename); Material * CreateMaterial(const UTF8String &mtl_name,const OSString &vertex_shader_filename,const OSString &geometry_shader_filename,const OSString &fragment_shader_filename);
Material * CreateMaterial(const OSString &); Material * CreateMaterial(const OSString &);
MaterialInstance * CreateMaterialInstance(Material *); MaterialInstance * CreateMaterialInstance(Material *);

View File

@@ -44,7 +44,7 @@ const ShaderModule *RenderResource::CreateShaderModule(const OSString &filename)
return sm; return sm;
} }
Material *RenderResource::CreateMaterial(const OSString &vertex_shader_filename,const OSString &fragment_shader_filename) Material *RenderResource::CreateMaterial(const UTF8String &mtl_name,const OSString &vertex_shader_filename,const OSString &fragment_shader_filename)
{ {
const ShaderModule *vs=CreateShaderModule(vertex_shader_filename); const ShaderModule *vs=CreateShaderModule(vertex_shader_filename);
@@ -56,10 +56,10 @@ Material *RenderResource::CreateMaterial(const OSString &vertex_shader_filename,
if(!fs) if(!fs)
return(nullptr); return(nullptr);
return(device->CreateMaterial((VertexShaderModule *)vs,fs)); return(device->CreateMaterial(mtl_name,(VertexShaderModule *)vs,fs));
} }
Material *RenderResource::CreateMaterial(const OSString &vertex_shader_filename,const OSString &geometry_shader_filename,const OSString &fragment_shader_filename) Material *RenderResource::CreateMaterial(const UTF8String &mtl_name,const OSString &vertex_shader_filename,const OSString &geometry_shader_filename,const OSString &fragment_shader_filename)
{ {
const ShaderModule *vs=CreateShaderModule(vertex_shader_filename); const ShaderModule *vs=CreateShaderModule(vertex_shader_filename);
@@ -76,7 +76,7 @@ Material *RenderResource::CreateMaterial(const OSString &vertex_shader_filename,
if(!fs) if(!fs)
return(nullptr); return(nullptr);
return(device->CreateMaterial((VertexShaderModule *)vs,gs,fs)); return(device->CreateMaterial(mtl_name,(VertexShaderModule *)vs,gs,fs));
} }
Material *RenderResource::CreateMaterial(const OSString &filename) Material *RenderResource::CreateMaterial(const OSString &filename)
@@ -163,7 +163,7 @@ Material *RenderResource::CreateMaterial(const OSString &filename)
if(result) if(result)
{ {
mtl=device->CreateMaterial(smm); mtl=device->CreateMaterial(ToUTF8String(filename),smm);
Add(mtl); Add(mtl);
} }
else else