From c99934fdf9fffd35e4c82c5b5b3cf27eb9c74b52 Mon Sep 17 00:00:00 2001 From: "HuYingzhuo(hugo/hyzboy)" Date: Wed, 11 Oct 2023 19:02:17 +0800 Subject: [PATCH] added RenderResource::LoadMaterial functions, it can't easy CreateMaterial from file. --- .../Basic/auto_merge_material_instance.cpp | 7 +++---- example/Gizmo/PlaneGrid3D.cpp | 5 +---- example/Gizmo/RayPicking.cpp | 5 +---- example/Texture/texture_quad.cpp | 5 +---- example/Texture/texture_rect.cpp | 4 +--- example/Texture/texture_rect_array.cpp | 5 +---- inc/hgl/graph/VKRenderResource.h | 9 +++++++++ .../Vulkan/VKRenderResourceMaterial.cpp | 20 +++++++++++++++++++ 8 files changed, 37 insertions(+), 23 deletions(-) diff --git a/example/Basic/auto_merge_material_instance.cpp b/example/Basic/auto_merge_material_instance.cpp index 41b088d8..7e638793 100644 --- a/example/Basic/auto_merge_material_instance.cpp +++ b/example/Basic/auto_merge_material_instance.cpp @@ -56,11 +56,10 @@ private: #ifndef USE_MATERIAL_FILE AutoDelete mci=mtl::CreatePureColor2D(&cfg); //走程序内置材质创建函数 - #else - AutoDelete mci=LoadMaterialFromFile("Std2D/PureColor2D",&cfg); //走材质文件加载 - #endif//USE_MATERIAL_FILE - material=db->CreateMaterial(mci); + #else + material=db->LoadMaterial("Std2D/PureColor2D",&cfg); //走材质文件加载 + #endif//USE_MATERIAL_FILE if(!material) return(false); diff --git a/example/Gizmo/PlaneGrid3D.cpp b/example/Gizmo/PlaneGrid3D.cpp index ae238fbb..c7bf8889 100644 --- a/example/Gizmo/PlaneGrid3D.cpp +++ b/example/Gizmo/PlaneGrid3D.cpp @@ -30,10 +30,7 @@ private: cfg.local_to_world=true; - //AutoDelete mci=mtl::CreateVertexLuminance3D(&cfg); - AutoDelete mci=mtl::LoadMaterialFromFile("Std3D/VertexLum3D",&cfg); - - material=db->CreateMaterial(mci); + material=db->LoadMaterial("Std3D/VertexLum3D",&cfg); if(!material)return(false); Color4f GridColor; diff --git a/example/Gizmo/RayPicking.cpp b/example/Gizmo/RayPicking.cpp index 6f044f36..9a24ca76 100644 --- a/example/Gizmo/RayPicking.cpp +++ b/example/Gizmo/RayPicking.cpp @@ -57,10 +57,7 @@ private: cfg.local_to_world=true; - //AutoDelete mci=mtl::CreateVertexLuminance3D(&cfg); - AutoDelete mci=mtl::LoadMaterialFromFile("Std3D/VertexLum3D",&cfg); - - material=db->CreateMaterial(mci); + material=db->LoadMaterial("Std3D/VertexLum3D",&cfg); if(!material)return(false); mi_plane_grid=db->CreateMaterialInstance(material); diff --git a/example/Texture/texture_quad.cpp b/example/Texture/texture_quad.cpp index 53b197d1..3ff2235f 100644 --- a/example/Texture/texture_quad.cpp +++ b/example/Texture/texture_quad.cpp @@ -56,10 +56,7 @@ private: cfg.coordinate_system=CoordinateSystem2D::NDC; cfg.local_to_world=false; - //AutoDelete mci=mtl::CreatePureTexture2D(&cfg); - AutoDelete mci=mtl::LoadMaterialFromFile("Std2D/PureTexture2D",&cfg); - - material=db->CreateMaterial(mci); + material=db->LoadMaterial("Std2D/PureTexture2D",&cfg); if(!material) return(false); diff --git a/example/Texture/texture_rect.cpp b/example/Texture/texture_rect.cpp index 32c6c942..d30615b3 100644 --- a/example/Texture/texture_rect.cpp +++ b/example/Texture/texture_rect.cpp @@ -52,9 +52,7 @@ private: cfg.coordinate_system=CoordinateSystem2D::ZeroToOne; cfg.local_to_world=false; - AutoDelete mci=mtl::CreateRectTexture2D(&cfg); - - material=db->CreateMaterial(mci); + material=db->LoadMaterial("Std2D/RectTexture2D",&cfg); if(!material) return(false); diff --git a/example/Texture/texture_rect_array.cpp b/example/Texture/texture_rect_array.cpp index 3a5be075..6e08df22 100644 --- a/example/Texture/texture_rect_array.cpp +++ b/example/Texture/texture_rect_array.cpp @@ -94,10 +94,7 @@ private: cfg.coordinate_system=CoordinateSystem2D::ZeroToOne; cfg.local_to_world=true; - //AutoDelete mci=mtl::CreateRectTexture2DArray(&cfg); - AutoDelete mci=mtl::LoadMaterialFromFile("Std2D/RectTexture2DArray",&cfg); - - material=db->CreateMaterial(mci); + material=db->LoadMaterial("Std2D/RectTexture2DArray",&cfg); if(!material) return(false); diff --git a/inc/hgl/graph/VKRenderResource.h b/inc/hgl/graph/VKRenderResource.h index 85085d91..13ac3719 100644 --- a/inc/hgl/graph/VKRenderResource.h +++ b/inc/hgl/graph/VKRenderResource.h @@ -18,6 +18,13 @@ #include VK_NAMESPACE_BEGIN + +namespace mtl +{ + struct Material2DCreateConfig; + struct Material3DCreateConfig; +}//namespace mtl + using MaterialID =int; using MaterialInstanceID =int; using BufferID =int; @@ -101,6 +108,8 @@ public: //Material const ShaderModule *CreateShaderModule(const AnsiString &shader_module_name,const ShaderCreateInfo *); Material * CreateMaterial(const mtl::MaterialCreateInfo *); + Material * LoadMaterial(const AnsiString &,mtl::Material2DCreateConfig *); + Material * LoadMaterial(const AnsiString &,mtl::Material3DCreateConfig *); MaterialInstance * CreateMaterialInstance(Material *,const VILConfig *vil_cfg=nullptr); MaterialInstance * CreateMaterialInstance(const mtl::MaterialCreateInfo *,const VILConfig *vil_cfg=nullptr); diff --git a/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp b/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp index b5e11a44..e4c403c7 100644 --- a/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp +++ b/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp @@ -160,4 +160,24 @@ Material *RenderResource::CreateMaterial(const mtl::MaterialCreateInfo *mci) material_by_name.Add(mtl_name,mtl); return mtl.Finish(); } + +namespace mtl +{ + MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &, Material2DCreateConfig *); + MaterialCreateInfo *LoadMaterialFromFile(const AnsiString &, Material3DCreateConfig *); +} + +Material *RenderResource::LoadMaterial(const AnsiString &mtl_name,mtl::Material2DCreateConfig *cfg) +{ + AutoDelete mci=mtl::LoadMaterialFromFile(mtl_name,cfg); + + return this->CreateMaterial(mci); +} + +Material *RenderResource::LoadMaterial(const AnsiString &mtl_name,mtl::Material3DCreateConfig *cfg) +{ + AutoDelete mci=mtl::LoadMaterialFromFile(mtl_name,cfg); + + return this->CreateMaterial(mci); +} VK_NAMESPACE_END