咨询下目前的可见性剔除优化方面的问题,特别是关于Nanite和遮挡剔除之间的

目前的关卡在运行中会在VisibilityCommands卡住了大量时间,由于现在场景中大量使用了Nanite几何体,所以想咨询几个事情。

1.Nanite几何体有自己的剔除逻辑,NaniteVisBuffer之后再进行OcclusionCull,所以一个几乎全是Nanite几何体的场景,遮挡剔除的消耗应该很低,是这样吗?

2.目前根据Insights来看,是不是OcclusionCullPipe必须等到GPU的NaniteVisBuffer后才能结束。

3.对于一个已经完全是Nanite几何体的场景,遮挡剔除还能有多大的效果,因为大多数的剔除在NaniteVisBuffer阶段其实已经完成了。

4.预烘焙可见性剔除还有没有用,或者说能不能在NaniteVisBuffer之前能不能预先剔除掉一部分东西。

5.非Nanite几何体的WPO对于遮挡剔除的影响大不大

<br/>

[Attachment Removed]

Steps to Reproduce[Attachment Removed]

Hi,

你好,nanite的物体应该不会做OcclusionCulling的(NaniteSceneProxy的CanBeOccluded是false),但是Occlusion Culling的确需要等待上一帧的GPU结束才能拿到结果,所以GPU工作比较重的情况,会看到Occlusion Culling的等待时间比较长。

对于你们的情况,可以试试用HZB Culling替代HW Occlusion Culling,看看是否有性能方面的改善。

非Nanite有没有WPO应该都不影响遮挡剔除,物体的Bound应该不会受WPO影响。

[Attachment Removed]

感谢解答,HZBCulling测试了一下,结果上一样,大概因为GPU的压力比较大,所以对RenderThread去做优化并没有太大的作用。

还是想问一下,目前对于NaniteVisBuffer的优化,除了通过设置ISM的剔除距离,是不是没有别的能做的剔除优化了

[Attachment Removed]

关于nanite的性能优化,跟实际资产的用法有比较大的关系,因为没看到你们的实际场景,只能给一点大致的方向,Nanite对于Masked,WPO,PixelDepthOffset,Tessellation,以及材质里用了ddx/ddy(有个预览模式,non Derivative),都会造成性能问题,所以要看你们的用法是怎样的。

最理想的情况,就是只用Opaque材质的模型,如果场景里有用到植被或者草,最好要用新的Nanite Foliage的方式来生成,这样可以尽可能的让Nanite用Fixed Function渲染。

当然Nanite Foliage在5.7还不算完善,有很多相关的问题需要进一步处理,如果这部分有问题,我们可以再进一步交流一下。

[Attachment Removed]