Nanite与非Nanite混用的性能问题

场景部分物体使用Nanite,部分物体(主要是Mask、带WPO材质的植被)未非Nanite的情况下,会让BasePass带来很高的耗时​

因此我想询问下是否在使用Nanite的时候,应无论面数多少、是否为Mask材质,将全部物体都设置为Nanite?

​另外我发现在场景里存在大量Instance植被时,且他们的材质为非Mask材质,也设置好了最远的WPO距离的情况下,BVH Node和Visable Buffer耗时过高,会比非Nanite的耗时高了不少,不知道在这种情况下如何优化Nanite情况下的植被?

另外在使用Nanite的时候,是否有些最佳实践的经验可以分享?

抱歉,由于休假原因回复延误了

1、是的,无论如何请尽量使用Nanite,除非是半透等无法使用Nanite的模型。

2、植被的开销来自Mask, WPO,以及大量细小开放边界带来的遮挡剔除低效导致的overdraw;解决方法是比较聪明的关闭或降低这些原因带来的影响。除了WPO根据距离关闭。Mask能不用最好不用,使用模型来表现枝叶,如果需要Mask,模型尽量沿着贴图透贴的边缘卡线,尽量减小透明区域。如果使用了Mask,起效距离可以利用对象上Nanite Pixel Programmable Distance这个参数定义;开放边界多少一个和Nanite的精度有关,比如Nanite模型设置里的Preserve Area会影响,模型如果有复杂的顶点色和多UV的chart也会影响远处的减面优化,从而增加overdraw;很远处利用HLOD合并成impostor或billborder类型的instances来减面在Nanite时代还是有效的老方法。

另一方面注意VSM的开销,它本身会在shadowpass中影响nanite vis的开销;优化VSM的主要方法就是尽量Cache阴影,这块有很多的方式这个视频供参考:https://www.bilibili.com/video/BV1tx4y1v7g7?t=47.1

4、Nanite资产层面的创建和使用注意可参考这个视频: https://www.bilibili.com/video/BV18X4y1k7R1?t=1966.0