新 STATE Mobile 利用 Android GPU 检查器将 GPU 使用量降低了 22%

背景

NEW STATE Mobile 是 Krafton 的一款大逃杀游戏于 2021 年 11 月面向全球发布,在发布后的第一个月便获得了超过 4500 万次下载。KRAFTON, Inc. 是一个由多个独立的游戏开发工作室组成的联合公司,旨在为全球游戏玩家打造富有吸引力的创新娱乐体验。该公司包括 PUBG Studio、Bluehole Studio、Striking Distance Studio、RisingWings、Dreamotion 和 Unknown Worlds,并且每个都有自己独特的专业知识。新 STATE Mobile 是使用 Unreal Engine 4 构建的,我们已尝试过利用其独特的游戏功能来减少因 GPU 使用率过高而导致的热量和耗电量。

玩家可以参加远距离战斗,因此游戏引擎需要能够渲染远距离的场景。此外,战场中存在大量植被,导致这些植被过度绘制,从而对效果下降产生重大影响。这促使该团队使用 Android GPU 检查器 (AGI) 帮助优化游戏的 GPU 使用情况并消除瓶颈。

来自 NEW STATE Mobile 的屏幕截图

图 1:NEW STATE Mobile 的屏幕截图

策略

NEW STATE Mobile 使用 AGI 获取大量 GPU 计数器信息,并相应地优化其 GPU 使用率。他们借助 AGI 提供的 GPU 活动分析数据发现了不必要的渲染通道。在确定哪些细分占用了 GPU 使用量和内存带宽后,他们持续使用 GPU 计数器和 GPU 活动来检查优化进度,以检查它们是否正朝着正确的方向前进。

来自 NEW STATE Mobile 的屏幕截图

图 2:NEW STATE Mobile 的屏幕截图

以下是他们利用 AGI 了解到的有关游戏性能的一些信息:

  • 基础传递优化:深度预传递这项技术可提高 Early-z 的使用率,有助于减少 Fragment 着色的使用。深度预传递专门用于 LOD0,该 LOD0 会占据大部分屏幕空间,从而最大限度地减少了可能由其他绘制调用产生的负担。此外,使用 32 位场景颜色格式可以提高整个渲染通道的性能。UnrealEngine4 的默认 SceneColor 格式为 FloatRGBA,即 64 位。如果使用 32 位格式,内存带宽可以减少一半。

  • 测量影响:应用深度预传递后,GPU 利用率降低了 7.5%。由于深度预传递,更多 Fragment 可能处于 Early-Z。fragment 着色所需的时间缩短了 2%。采用 32 位场景颜色格式后,GPU 利用率降低了 5.3%。着色器繁忙度降低了 2%,并且 GPU 总读取速度减少了 330 MB/秒。GPU 写入系统内存的数据量减少了 78 MB/秒,纹理内存读取量也减少了 43 MB/秒。

  • 阴影传递优化:将网格用作阴影投射器时,使用高多边形 LOD 并不会对质量产生实际影响。最好使用低多边形 LOD,这有助于减少三角形的数量。在 Unreal Engine 4 中,可通过控制台命令“ForceLODShadow”使用低多边形 LOD。

  • 测量影响:用于阴影的三角形数量减少了约 120,000 个。AGI 中的 GPU 计数器数据显示,GPU 用量减少了约 2%,从系统内存读取的 GPU 内存量减少了 130 MB/秒,从 GPU 写入系统内存量减少了约 23 MB。

  • 自动实例:自动实例可同时应用于阴影传递和基本传递优化,让您可以在运行时合并相同的渲染命令,然后一次性渲染所有这些命令。这使得 NEWSTATE Mobile 能够对单个对象应用全局光照,而不会降低性能。自动实例是 UnrealEngine4 提供的一项基本功能。

  • 衡量影响:绘制调用次数减少了 500 次。减少了约 48% 的绘制调用。GPU 利用率降低了约 3.5%。这些测量是使用 OpenGL 进行的。

显示 GPU 使用量减少情况的内部数据

图 3:显示 GPU 使用量减少情况的内部数据

成果

通过使用 AGI,NEW STATE Mobile 将 GPU 使用量降低了 22%。与深度预传递和阴影传递优化相比,GPU 使用率分别下降了 19% 和 3%。绘制调用以及 GPU 从系统内存读取和写入的总内存也大幅减少了。

开始使用

了解如何使用 Android GPU 检查器 (AGI) 找出性能问题和有待优化的方面,从而分析游戏对 Android 设备的影响。