RenderResource缓存材质增加HashString以解决同名不同配置冲突问题

This commit is contained in:
hyzboy 2025-06-11 01:11:54 +08:00
parent 0fbe85290b
commit 660d8fff6d
4 changed files with 15 additions and 5 deletions

View File

@ -13,7 +13,7 @@ class PrimitiveCreater
{
protected:
VulkanDevice * device;
VulkanDevice * device;
VertexDataManager * vdm;
const VIL * vil;

View File

@ -11,6 +11,9 @@
#include<hgl/shadergen/ShaderDescriptorInfo.h>
#include<hgl/type/ActiveMemoryBlockManager.h>
#include<hgl/graph/mtl/Material2DCreateConfig.h>
#include<hgl/graph/mtl/Material3DCreateConfig.h>
#ifdef _DEBUG
#include"VKPipelineLayoutData.h"
#endif//_DEBUG
@ -187,7 +190,10 @@ Material *RenderResource::LoadMaterial(const AnsiString &mtl_name,mtl::Material2
AutoDelete<mtl::MaterialCreateInfo> 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<mtl::MaterialCreateInfo> 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

View File

@ -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)

View File

@ -1,4 +1,4 @@
#include<hgl/graph/mtl/MaterialConfig.h>
#include<hgl/graph/mtl/MaterialCreateConfig.h>
#include<hgl/graph/mtl/Material2DCreateConfig.h>
#include<hgl/graph/mtl/Material3DCreateConfig.h>
#include<hgl/graph/VKShaderStage.h>