暴雪《争霸艾泽拉斯》*采用自适应 SSAO

在实时渲染过程中,屏幕空间环境光遮蔽 (SSAO) 常用于打造小范围环境光效果和接触阴影效果。它用于许多现代游戏,通常占用 5% 到 10% 的帧时间。

2018 年《争霸艾泽拉斯》* 发布前,由于主流平台的计算能力不足,《魔兽世界》* (WoW*) 在所有主流平台设置(低于 7 的显卡质量)上默认禁用 SSAO。在游戏开发过程中,暴雪娱乐* 和英特尔共同实施各种低级图形优化,提供了额外的性能扩展空间。这有助于探索改进游戏的视觉质量,同时维持相同的帧速率。为此,他们研发了全新的可扩展 SSAO 效果:自适应屏幕空间环境光遮蔽(或 ASSAO)。本文的重点是将 ASSAO 集成至 WoW 引擎。

《GPU Zen:高级渲染技术》一书提供了详细介绍实施的一篇文章。完整的实施由 GitHub* 上易于集成的软件包根据 MIT 许可证提供。有关该技术的更多详情,请参阅自适应屏幕空间环境光遮蔽

Left side shows A S S A O turned off, right the highest setting
图 1.图像左侧显示 ASSAO 关闭,右侧显示 ASSAO 设置为最高值。底部红框和橙色框显示 WoW* 游戏中提供的各种设置的环境光遮蔽 (AO) 可视化。从左到右显示的设置为:低,良好,高,超高。

追求更卓越的视觉体验

设计 ASSAO 之初便考虑了适应性和定制。目标是在广泛的 GPU 平台上提供出色的显卡质量,包括集成 GPU。ASSAO 具有许多按钮,可帮助平衡显卡质量和性能,以实现可扩展性。包括深度纹理示例的数量、深度纹理 MIP 层的存在和边缘感知型模糊操作的存在与质量。可扩展性是 WoW 团队决定使用该技术的原因之一,旨在有效地针对广泛的支持平台。

将原始原型集成至 WoW 以及调试效果在大约一天时间内完成。暴雪和英特尔工程师从 GitHub 中获取示例代码,只需示例项目中的 3 个文件:

Projects\ASSAO\ASSAO\ASSAO.h
Projects\ASSAO\ASSAO\ASSAODX11.cpp
Projects\ASSAO\ASSAO\ASSAO.hlsl

完全独立的效果支持团队通过以下步骤获得正确的渲染:

  • 在初始化时间调用 SSAO_Effect::CreateInstance(..) 函数。
  • 在管道中每帧调用一次 ASSAO_Effect::Draw(..) 函数和之前的环境光遮蔽 (AO) 效果。这需要传输 DirectX 3D* 设备上下文、深度和法线缓冲区资源视图和输出渲染目标视图。

在这里,WoW 团队致力于实现修改的产品化,将效果移植到多个平台并确保为尽可能多的用户带来技术。合并技术的着色器和显卡代码时,暴雪能强化它们的内部代码,为 MIP 层的渲染提供更强劲的支持,以满足 ASSAO 更高级设置的需求。他们还需要处理各种支持的图形 API 之间基于着色器的限制。例如,DirectX* Shader Model 4.0 及更早版本不支持无序访问视图,为收集操作提供了有限的支持。原始 ASSAO 示例代码中使用的某些缓冲区类型无法直接兼容其他着色器语言,如 Metal*。WoW 开发人员能使用各种方法处理这些问题,如对算法进行细微调整或限制某些平台上的技术。

下表展示暴雪如何将 ASSAO 设置映射至他们的游戏设置。设置越高,效果质量越好。本文不讨论每个设置的性能,因为设置旨在映射至不同的图形硬件类别。每个设置旨在使 ASSAO 满足 AO 的固定帧预算,这可以通过技术的可扩展性实现。

表 1.映射到 WoW 游戏设置的 ASSAO 性能设置

WoW* AO 质量ASSAO 质量级别
(来自示例)
示例数量深度 MIP边缘感知型模糊
最低 (-1)
 
3
良好低 (0)10
(仅深度)
中 (1)24是+
(深度 + 法线)
超高非常高 (3)自适应
(10-64)
是+
(深度 + 法线)

Shows AO effect as applied to the scene
图 2.该图显示了不同设置的效果(左侧为关闭,右侧为最高设置)和最终的内容将如何呈现。在组图中,上排显示应用于场景的 AO 效果,下排只显示 AO。

ASSAO 获得图形设计师的批准

如果没有图形设计师的批准,与图形相关的游戏特性无法发布。但是在本示例中,暴雪图形设计师非常相信 ASSAO。算法支持他们使用不影响性能的因素(如效果半径、强度和威力)轻松调整效果,此外还可以出色地处理渗出等极端情况。

图 3.WoW 中自适应 SSAO 的各种游戏设置。设置每高一个等级,AO 效果将不断锐化和清晰。

游戏开发人员的重要胜利

通过合作,暴雪帮助提升了用户游戏体验的可扩展性,英特尔为更大的行业改进并展示了实用的解决方案。为了在您的项目中实施该技术,请参阅 自适应屏幕空间环境光遮蔽

参考文献

Filip Strugar,“ 可扩展自适应 SAO",《GPU Zen:高级渲染技术》,Wolfgang Engel 编辑,Black Cat Publishing,2017 年,pp. 183-200。

有关编译器优化的更完整信息,请参阅优化通知