如何提高Nanite+WPO的渲染效率,是否有最佳实践可以分享?

项目中在使用Nanite+WPO制作植被时,请问如何提高渲染效率,是否有最佳实践可以分享?

[Attachment Removed]

一个是Nanite本身的渲染,另外一个Shadow(VSM)影响很大(灯光角度渲染Nanite)。主要是Mask,WPO等效果,当然还有整体的密度。Nanite foliage(骨骼对象)还非常前期,另外考虑到可能已有资产做法,当前优化方向就是减少WPO和Mask,主视图和阴影视图都如此。最终反映在减少Nanite的Overdraw,和Raster的优化。以下是一个大概的测试结果哪些因素关系有多大(供参考,具体根据实际情况)

测试场景:4种植被不同材质,都包含Mask和WPO平铺,全屏4K(TSR50%)。

[Image Removed]

[Image Removed]PS:5.7 Nanite Foliage相关的Nanite Voxel(目前不支持WPO)对效能优化影响大;另外注意下VSM的Cache视图确认大部分可以被Cache,比如LOD有WPO会影响Cache

[Attachment Removed]

Hi,

​Nanite对于programmable的raster/shading bin性能都不是特别好,大量使用容易造成性能问题,虽然有一些cvar可以在一定距离关闭WPO和Mask,但是当这两者(WPO+Mask)一起使用的时候,根据距离关闭,并不能让raster bin使用 fixed function,从而效率影响有限。

有个优化的想法,供参考:

WPO一种常见的情况是用于模拟树枝或者植被的摆动,通常可以用一个固定的函数来实现,所以可以考虑把这种情况的WPO做成一种fixed function,通过Primitive,或者模型顶点传入一些参数来控制函数的效果。这样在跑raster bin或者 shading bin的时候,可以减少对材质的evaluate造成的消耗。(需要实践后并作测试,目前只是停留在理论阶段)。

同理,Mask也有一种常见用法,就是相机透视,用于避免物体遮挡镜头。这种情况也可以考虑改成一种fixed function,从而避免材质evaluate。​

[Attachment Removed]

感谢提供新的思路,相机透视这类的应用需要用到masked,结合nanite确实比较头疼。

我们也思考下fixed化的定制。

[Attachment Removed]

感谢,这个性能对比图很直观!

[Attachment Removed]