diff --git a/inc/hgl/graph/PrimitiveCreater.h b/inc/hgl/graph/PrimitiveCreater.h index c1486fbc..9601bd59 100644 --- a/inc/hgl/graph/PrimitiveCreater.h +++ b/inc/hgl/graph/PrimitiveCreater.h @@ -13,7 +13,7 @@ class PrimitiveCreater { protected: - VulkanDevice * device; + VulkanDevice * device; VertexDataManager * vdm; const VIL * vil; diff --git a/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp b/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp index 4003ddd4..0d44df55 100644 --- a/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp +++ b/src/SceneGraph/Vulkan/VKRenderResourceMaterial.cpp @@ -11,6 +11,9 @@ #include #include +#include +#include + #ifdef _DEBUG #include"VKPipelineLayoutData.h" #endif//_DEBUG @@ -187,7 +190,10 @@ Material *RenderResource::LoadMaterial(const AnsiString &mtl_name,mtl::Material2 AutoDelete mci=mtl::LoadMaterialFromFile(device->GetDevAttr(),mtl_name,cfg); //这里直接用这个mtl_name有些不太对,因为同一个材质,也有可能因为不同的cfg会有不同的版本,所以这里不能直接使用mtl_name.目前只是做一个暂时方案 - return this->CreateMaterial(mtl_name,mci); + + AnsiString hash_name=mtl_name+"?"+cfg->ToHashString(); + + return this->CreateMaterial(hash_name,mci); } Material *RenderResource::LoadMaterial(const AnsiString &mtl_name,mtl::Material3DCreateConfig *cfg) @@ -195,6 +201,9 @@ Material *RenderResource::LoadMaterial(const AnsiString &mtl_name,mtl::Material3 AutoDelete mci=mtl::LoadMaterialFromFile(device->GetDevAttr(),mtl_name,cfg); //这里直接用这个mtl_name有些不太对,因为同一个材质,也有可能因为不同的cfg会有不同的版本,所以这里不能直接使用mtl_name.目前只是做一个暂时方案 - return this->CreateMaterial(mtl_name,mci); + + AnsiString hash_name=mtl_name+"?"+cfg->ToHashString(); + + return this->CreateMaterial(hash_name,mci); } VK_NAMESPACE_END diff --git a/src/ShaderGen/CMakeLists.txt b/src/ShaderGen/CMakeLists.txt index 4c159183..027302d6 100644 --- a/src/ShaderGen/CMakeLists.txt +++ b/src/ShaderGen/CMakeLists.txt @@ -76,9 +76,10 @@ SET(STD_MTL_3D_SOURCE_FILES ${STD_MTL_HEADER_PATH}/Material3DCreateConfig.h 3d/M_Gizmo3D.cpp ) -SET(STD_MTL_SOURCE ${STD_MTL_HEADER_PATH}/MaterialConfig.h +SET(STD_MTL_SOURCE ${STD_MTL_HEADER_PATH}/MaterialCreateConfig.h ${STD_MTL_HEADER_PATH}/StdMaterial.h ${STD_MTL_HEADER_PATH}/ShaderBufferSource.h + MaterialCreateConfig.cpp StandardMaterial.cpp MaterialFileData.h MaterialFileLoader.cpp) diff --git a/src/ShaderGen/MaterialFileLoader.cpp b/src/ShaderGen/MaterialFileLoader.cpp index 4946096d..ca951c33 100644 --- a/src/ShaderGen/MaterialFileLoader.cpp +++ b/src/ShaderGen/MaterialFileLoader.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include #include