使命召唤:战区手机版 是热门使命召唤系列中的第一人称动作游戏。这款广受欢迎的主机和 PC 游戏的手机版本利用了移动低级 API,为玩家带来了出色的体验。
从技术角度来看,手机版本的目标是在支持各种 Android 手机设备的同时,尽可能保持与主机版本的实现一致,并确保图形管道和工具链与当前的主机和 PC 游戏以及内容保持兼容。
使命召唤引擎使用名为 任务图渲染器 的系统来实现渲染提交管理的同步、内存分配和调度,该系统确定要在 GPU 上执行的工作,并指定所需资源。更具体地说,该系统是一个渲染图,其中任务、资源和依赖项在加载时处理的高级脚本中定义,以生成要在 GPU 上执行的最佳工作顺序,并在帧提交时提供使用的资源。
Vulkan 是现代的跨平台 3D 图形 API,已选为 Android 上任务图渲染器的后端渲染接口。
Vulkan API 的优势
为了保持使命召唤的独特视觉风格,并更好地支持使命召唤:战区手机版及其主机和 PC 版本之间的共享进度,该游戏使用与现有主机和 PC 版本类似的渲染 API。在 Android 上,Vulkan 使动视能够在其现有的工具、管道和着色器上构建,并支持艺术家创建的内容,而无需彻底改造整个软件堆栈。
尝试使用完全不同的渲染器来实现这一点将是极其昂贵的,而尝试为使命召唤管道支持老一代图形 API 将对功能集产生过大的影响。动视确定 Vulkan 是将完整功能引入 Android 的最佳选择,同时最大程度地减少对整体开发开销的影响。Vulkan 已获得 Android 设备制造商的 广泛支持,使其成为未来开发的良好选择。
缺少支持 Vulkan 的硬件或驱动程序的设备通常较旧,而且性能不足以运行游戏。因此,除了 Vulkan 符合引擎和内容管道的技术要求外,Vulkan 支持作为硬件要求还可以充当性能过滤器。
与现有平台 API 的兼容性
Vulkan 在概念上与现有的用于《使命召唤:战区》的 API 类似,都具有显式资源管理、内存别名、类似的计算管线和无绑定资源访问。这些相似性使动视能够保持渲染器与主机和 PC 渲染器在结构上的一致性,只需对后端进行更改以与 Vulkan 接口。
使用 DXC 将现有的基于 HLSL 的着色器编译成 SPIR-V,可以支持完整的特性集,从而使 Android 可以集成到动视现有的构建管线中。这个过程并非没有挑战,但仍然比重写以及维护多个版本或语言所带来的开销更有利。
《使命召唤:战区手机版》中使用的 Vulkan 功能
- 资源别名 和显式 屏障 控制 使渲染任务图能够显著减少渲染目标的内存需求,与静态分配相比。
- 具有大量基于计算的剔除的完整 GPU 管线 可以显著提高场景复杂度。
- 平衡剔除粒度以考虑针对 基于瓦片的延迟渲染器。
- 瓶颈是复杂的计算工作量,而不是三角形数量。
- GPU 管线的设计考虑了不同的场景。
- 更改剔除粒度的选项。
- 非常 大的描述符集 允许在兼容的硬件上进行完整的无绑定渲染,这反过来又可以大幅降低 CPU 绘制调用创建成本,并带来相应的性能、功耗和热量方面的优势。
- 硬件配置器 允许根据特定设备型号调整保真度设置,以获得最佳用户体验。
- 用户配置模式:最佳性能、最佳质量或节能。
- 特定于设备的 着色器集设计 为不同的 GPU 预设(质量和保真度设置)提供不同的着色器集。硬件配置器帮助游戏为设备选择最佳着色器集。
- 有助于减少高度可配置的着色器的组合爆炸,并满足创建 管线对象 的要求。
- 包括备用非无绑定着色器集,以针对不支持过多着色器资源的旧手机和驱动程序。
- 明智地使用 专门化常量 来解决驱动程序差异。
- 大多数驱动程序中的着色器编译器错误都可以通过使用专门化常量来解决。
- 平衡特定于设备的着色器集的数量。
分析和调试
在开发的早期,动视发现 Vulkan 分析和调试工具在稳定性和功能方面存在许多差距。从那时起,针对特定供应商的分析器和供应商无关的工具(如 RenderDoc)有了稳步的改进。现在,开发人员可以更加自信地缩小渲染问题和优化机会的范围。
使用 Vulkan 实现高保真
《使命召唤:战区手机版》运行在广泛的 Vulkan 支持的 Android 设备上,并使用与主机和 PC 游戏共享的渲染技术。Vulkan 减少了开发开销和摩擦,使 Android 玩家能够体验到真实的、高保真的《使命召唤》内容和游戏玩法。