我们在5.6.1引擎下,尝试调用FShaderLibraryCooker::CreatePatchLibrary时会产生崩溃:
ShaderCodeLibrary.cpp中,FEditorShaderCodeArchive::AddShaderCode内部:
[Image Removed]
可以看到此时OtherArchive(新的ShaderLibrary中)的ShaderTypes成员是空的,但是尝试访问它的某个Index(产生变化的这个ShaderCode)。
原因看起来好像是ShaderTypes成员没有在序列化里保存(FSerializedShaderArchive::Serialize中没有序列化该成员),但是在生成ShaderLibraryPatch的过程中读取并使用了该成员。
Liu.Wei
(Liu.Wei)
3
Hi,
你好,我可以复现这个问题,我们应该没有人继续维护ShaderCodeLibraryToolsCommandlet了,所以我自己稍微改了一下,看起来是能工作的,本质上就是用AddShaderCodeLibraryFromDirectory替换LoadExistingShaderCodeLibrary,因为看起来LoadExistingShaderCodeLibrary功能不全。 [Image Removed]
感谢,我本地试了一下这样的改动也是OK的,ShaderPatch的生成和使用似乎都没问题。官方在后续会修复这个问题吗?
Liu.Wei
(Liu.Wei)
5
Hi,
我已经提了一个Jira UE-353448, 希望后续能在引擎中修复这个问题。