Visual Tech Art 的 Youtube 频道公开了一个针对使用 Unreal Engine 5 的 Nanite 时的绘制调用进行验证的视频「1 Frame – 1 DrawCall」。内容非常有趣。
1 Frame – 1 DrawCall
这与其说是平常的教程,不如说是研发总结视频。
因为感到有必要更深入地研究虚拟管线,于是为“现在事物本应如何”的讨论画上了最终句号。也就是说,下面将介绍这件事,以及我所弄清楚的内容。到目前为止我还只是严格地在谈论着色器,但如你所见,着色器只是帧中的一小部分。
因此,其他部分还有很多改进空间。
另外,我的结论之所以会被当作“绝对结论”,我认为也只有在像我这样只聚焦于着色器、而不涉及其他内容时才成立。如果你有更多见解,请一定告诉我! 😀
视频内容
- 绘制调用优化的基础
在游戏开发中,一直建议减少绘制调用。
将其推到极端后,就会得出“1 帧 1 绘制调用”的理论。
视频将验证这是否真的可行。 - 绘制调用的机制与削减手法
每当 CPU 向 GPU 发出一次绘制指令时,就会发生一次绘制调用。
网格实例化以及材质整合(活用纹理图集和 UDIM)是主要的优化手法。 - Nanite 的影响
在 Nanite 中,几何体栅格化与材质渲染是分离的。
使用相同材质的网格会自动合并为 1 次绘制调用。
目标是“仅用 1 个材质渲染整个场景”。 - 利用 UDIM 的纹理整合
需要将所有材质的纹理汇总到一个巨大的 UDIM 中。
并研究使用自定义原始数据,为每个单独网格应用不同参数的方法。 - 材质转换自动化工具开发
由于手动转换所有材质不现实,因此开发了自动化工具。
工具会收集材质参数和纹理,并将其整合到 UDIM 中。 - 自动化中的课题
部分工作(自定义原始数据的转换)需要手动进行。
Unreal Engine 的 UDIM 存在分辨率限制,要整合所有纹理需要一些技巧。 - 性能测试与其结果
通过性能分析进行了性能测量,但没有看到因减少绘制调用而带来的明显改善。
“减少绘制调用就能加速”并不是那么简单的事情,这一点变得明确。 - 进一步实验与改进
尝试用不同手法进行优化,但结果大同小异。
由于 Unreal Engine 的 UDIM 存在预料之外的限制,纹理整合的方法需要调整。 - 结论:在最新的管线中,绘制调用优化并不重要
由于 Unreal Engine 5 的虚拟管线,减少绘制调用的意义正在变弱。
与其固守旧式优化手法,不如优先提升项目整体质量。 - 今后的展开
计划制作介绍更实用优化手法的教程。
并通过 Patreon 招募支持,提供更详细的解说内容。
Nanite 登场后,至今为止的优化常识正在发生变化。看起来既有的经验已经不再适用了。看来又有很多地方必须重新学习。很期待今后的优化视频。
Visual Tech Art 还公开了许多关于 Unreal Engine 的技术性视频,感兴趣的话请务必查看!
链接
Visual Tech Art – YouTube