本文来源:O3DF
作者:Sidharth Moudgil
O3DE 24.09.0[1] 终于发布了,包含数百个 bug 修复,移动平台的性能提升令人震惊,iOS 和 Android 设备的性能提升高达 400%。这些变化得益于社区的宝贵反馈。我们优化了性能,提高了渲染质量,优化了内存使用,并改善了整体开发者体验。我们在 AR/VR 实现方面也取得了重大进展。
在接下来的几周里,我们将对一些关键功能进行技术深度解析。首先,我们将详细介绍这些改进背后的渲染更新。
渲染有什么新变化?
渲染质量是影响游戏视觉效果和性能的关键因素,尤其是在资源有限的移动平台上。在本次发布中,我们的团队专注于两个主要目标:为移动平台创建一个全新的高性能渲染流水线,同时添加新特性和改进,极大地支持 VR 内容。最终结果是提高了 2D 和 3D 游戏的视觉体验。
我们的渲染贡献者 Sidharth Moudgil 进行了关于 24.09.0 渲染更新的精彩讲解[2],演示了本次发布中包含的改进和增强。会上展示了许多变化的现场演示,突出了显著提升引擎性能和视觉质量的优化和新特性。
移动渲染流水线
为切片 GPU 构建一个极具性能的移动渲染流水线。
1. 为移动设备优化了 BRDF,增加了分析环境光照的支持。
2. 为简单聚光灯添加了纹理投影支持。
3. 为贴花添加了 CPU 剔除。
4. 为简单聚光灯添加了阴影支持。
5. 新增参数:贴花颜色和贴花颜色因子。这些参数帮助调节最终计算的贴花颜色。
6. 为简单点光源、简单聚光灯和贴花添加了着色器选项。
7. 为简单点光源和简单光源添加了 CPU 剔除支持。
8. 在移动流水线中增加了延迟雾支持。
9. 添加了指数和指数平方雾模式的支持。
10. 在方向光阴影的 PCF 过滤中添加了着色器选项支持。
11. 为移动渲染流水线添加了轮廓支持。有关轮廓特性的更多细节,请参见渲染新增部分。
12. 为移动渲染流水线添加了粒子支持。
13. 在移动流水线中添加了后期效果支持。
14. 对移动渲染流水线进行了各种半浮点优化。
15. 添加了渲染缩放支持,并为各种移动设备修复了相关问题。
渲染新增/改进
对所有渲染流水线和一般 Atom 的改进。
1. 为 RHI 和 RPI 层的多 GPU 支持奠定了初步框架。这项工作包括多 GPU 对象的初步设置,以及在设备之间转移资源时的基本 GPU-GPU 同步支持。
2. 轮廓特性 – 增加对轮廓材质类型的支持,应用于网格时以多种模式绘制轮廓和填充轮廓:始终、XRay、可见和从不。
3. 为 BasePBR、StandardPBR、EnhancedPBR 材质类型及材质画布添加了顶点颜色支持。
4. 添加了三个新的色调映射模式:AcesFitted、AcesFilmic 和 Filmic。移动渲染流水线默认使用 Filmic 模式。
5. 为 Android 和 iOS 添加了四个图形质量等级(低、中、高、非常高)的注册设置。
6. 在 DX12 和 Vulkan RHI 后端增加了几何着色器支持。
7. 在 DX12 和 Vulkan RHI 后端增加了交集着色器支持。
8. 视锥外阴影剔除 – 通过跳过不可见阴影的处理来提高性能。这是通过 CPU 剔除光源来限制需要处理的光源数量实现的。
9. r_antiAliasing – 添加支持通过 CVar r_antiAliasing 切换抗锯齿模式。
10. 添加光照通道支持 – 此功能为每种光源和可照亮对象引入 3 个通道。相同通道中的对象和光源分组,组内光源影响组内对象。默认情况下,所有光源和对象在通道 0,因此不会改变当前光照工作方式,但为艺术家提供了进一步控制的灵活性。
11. 启用和禁用对比度自适应锐化处理,以及时间抗锯齿(即 TAA)。
12. 添加支持允许向纹理采样函数传递自定义导数。
13. 添加 GPU 模型的设备属性。这使我们能够为图形质量等级提供更好的设备过滤。
14. 在启用网格实例时添加每个网格的着色器选项支持。这使我们能够为使用网格实例的场景构建优化的着色器变体。
15. 在 Vulkan RHI 中增加时间线信号量支持,以帮助低级同步。
16. 添加不为游戏启动器创建原生窗口的能力,适用于空渲染器。
VR/OpenXR 改进
1. 对 OpenXR 兼容设备的输入/输出进行了全面改造,采用新的数据驱动 API(Lua 和 C++)来管理动作(I/O)和空间(世界转换锚点)。
2. [Android + OpenXR] 新的 Android 项目生成器 UI,集成于项目管理器中。简化了编译和部署项目所需的所有文件的生成。可选地,Android 项目可以为 Meta Quest 设备系列生成。开发者在设备上的迭代时间从约 1 分 30 秒缩短到不到 10 秒。
Atom 内存优化
1. 添加了支持转储加载资产的信息。
2. 各种与 Metal RHI 相关的内存优化。
3. 添加支持释放由 ModelAssets 拥有的 BufferAssets。这使我们能够在将网格传输到 GPU 后释放 CPU 上的内存。
4. 为光线追踪缓冲区添加环形缓冲区支持。
请随时在我们的Discord General Support 频道[3]分享您的想法、建议或遇到的问题。
如果您对 24.09.0 的所有更新感兴趣,请查看发布说明[4]!
参考资料
[1]24.09.0: https://o3de.org/download/
[2]精彩讲解: https://www.youtube.com/watch?v=slF7ALmI1mE
[3]Discord General Support 频道: https://discord.com/channels/805939474655346758/869974333009854464
[4]发布说明: https://www.docs.o3de.org/docs/release-notes/2409-release-notes/