项目中后期大量Niagara资产存在下修改shaderversion.ush导致pre compile问题

所在项目2W+粒子,修改shaderversion.ush之后,这些粒子里存的CachedVMScriptId会和计算的对不上,从而走pre-compile过程从DDC中获取数据,只有Resave之后才会回复正常。虽然每个粒子0.xx秒耗时很少,但是加载地图粒子数量多了之后还是有不可忽视的开销。Resave ALL粒子对于多分支开发模式不仅耗时也会有冲突。有没有什么好的解决办法?目前Niagara依赖的shader 文件如下:

/Engine/Plugins/FX/Niagara/Shaders/Private/NiagaraEmitterInstanceShader.usf
/Engine/Shaders/Public/Platform.ush
/Engine/Shaders/Public/FP16Math.ush
/Engine/Shaders/Public/Platform/D3D/D3DCommon.ush
/Engine/Shaders/Public/ShaderVersion.ush
/Engine/Plugins/FX/Niagara/Shaders/Private/NiagaraShaderVersion.ush
/Engine/Shaders/Private/Common.ush
/Engine/Shaders/Private/CommonViewUniformBuffer.ush
/Engine/Shaders/Private/InstancedStereo.ush
/Engine/Shaders/Private/Definitions.usf
/Engine/Shaders/Private/FastMath.ush
/Engine/Shaders/Private/Random.ush
/Engine/Shaders/Private/LandscapeMaterialId.ush
/Engine/Shaders/Private/GlobalDistanceFieldShared.ush
/Engine/Shaders/Private/SceneTexturesCommon.ush
/Engine/Plugins/FX/Niagara/Shaders/Private/NiagaraPhysicsCommon.ush

Hi,

我已经把问题转达给开发的同学了,不过他们最近可能是在休假,等明天我再追问一下。(反正CachedVMScriptId和CachedVMScript被序列化下来确实有点莫名,如果开发版不序列化下来,而是从DDC读取,cooked版序列化下来,应该就不会有这个问题了)

Hi,

同事的意思是,目前的情况,不要save all,虽然每次启动会做compile,但是实际上应该只会造成第一次的DDC生成,但是只要生成过DDC,下一次就会从里面读取,所以影响不大。