diff --git a/inc/hgl/graph/VKDevice.h b/inc/hgl/graph/VKDevice.h index dedac110..29ca26b4 100644 --- a/inc/hgl/graph/VKDevice.h +++ b/inc/hgl/graph/VKDevice.h @@ -187,9 +187,9 @@ public: //shader & material ShaderModule *CreateShaderModule(ShaderResource *); - Material *CreateMaterial(ShaderModuleMap *shader_maps); - Material *CreateMaterial(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,ShaderModuleMap *shader_maps); + Material *CreateMaterial(const UTF8String &mtl_name,const VertexShaderModule *vertex_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 相关 diff --git a/inc/hgl/graph/VKMaterial.h b/inc/hgl/graph/VKMaterial.h index c73bd8d9..af2798a1 100644 --- a/inc/hgl/graph/VKMaterial.h +++ b/inc/hgl/graph/VKMaterial.h @@ -15,6 +15,8 @@ class DescriptorSetLayoutCreater; */ class Material { + UTF8String mtl_name; + ShaderModuleMap *shader_maps; VertexShaderModule *vertex_sm; List *shader_stage_list; @@ -25,12 +27,14 @@ class Material public: - Material(ShaderModuleMap *smm,List *,DescriptorSetLayoutCreater *dslc); + Material(const UTF8String &name,ShaderModuleMap *smm,List *,DescriptorSetLayoutCreater *dslc); ~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);} // GET_BO_BINDING(Sampler, SAMPLER) diff --git a/inc/hgl/graph/VKRenderResource.h b/inc/hgl/graph/VKRenderResource.h index 6ca5193d..360fdbc6 100644 --- a/inc/hgl/graph/VKRenderResource.h +++ b/inc/hgl/graph/VKRenderResource.h @@ -89,8 +89,8 @@ public: //Material const ShaderModule *CreateShaderModule(const OSString &filename,ShaderResource *shader_resource); const ShaderModule *CreateShaderModule(const OSString &filename); - Material * CreateMaterial(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 &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 &); MaterialInstance * CreateMaterialInstance(Material *); diff --git a/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp b/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp index 115ff673..e95cb0aa 100644 --- a/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp +++ b/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp @@ -44,7 +44,7 @@ const ShaderModule *RenderResource::CreateShaderModule(const OSString &filename) 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); @@ -56,10 +56,10 @@ Material *RenderResource::CreateMaterial(const OSString &vertex_shader_filename, if(!fs) 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); @@ -76,7 +76,7 @@ Material *RenderResource::CreateMaterial(const OSString &vertex_shader_filename, if(!fs) return(nullptr); - return(device->CreateMaterial((VertexShaderModule *)vs,gs,fs)); + return(device->CreateMaterial(mtl_name,(VertexShaderModule *)vs,gs,fs)); } Material *RenderResource::CreateMaterial(const OSString &filename) @@ -163,7 +163,7 @@ Material *RenderResource::CreateMaterial(const OSString &filename) if(result) { - mtl=device->CreateMaterial(smm); + mtl=device->CreateMaterial(ToUTF8String(filename),smm); Add(mtl); } else