一些特定的情况,出生或者Teleport时,观察到split0 cache了 高lod的投射阴影,在本体stream完成低lod后,csm shadow 没有触发更新,看了下代码貌似没有类似的机制。vsm有类似的 开关[Image Removed], 问下这种情况有没有比较合适的处理方法
这个问题应该也存在于local light 的shadow cache。提供了一个复现demo (ver5.5.4)
Hi,
你好,这个问题不太好解决,理论上只要渲染的Mesh LOD发生变化,CachedShadowMap就需要InvalidateCachedShadow,如果场景里很多物件都有LOD,并且相机一直在移动,就可能导致Cache始终失效。这种情况还包括地形的LOD发生变化的情况,这些目前都没有很好的办法直接解决。
如果场景中LOD切换是常态的话,可以考虑修改Shadow Cache的逻辑(bIsValidCachedViewDependentWholeSceneShadow),只有相机在位置不太改变的情况下再Cache,如果发生改变(超过一定距离)就Invalidate。
感谢。让staticmesh本身的request LOD 和实际load 的lod 的差值去决定单体能否被shadow cache,这个可行么? 感觉全量不cache可能性价比不太划算
我感觉没法做到单体的Cache,因为如果一旦这个mesh被Cache到ShadowMap,就没法只针对这个物体去重新Cache了,只能整体重新Cache。
好的,了解了。感谢回复