29

极术小姐姐 · 11月18日

如何运用 ADPF 技术在手机上以更省电的方式享受卓越图形效果?

image.png

什么是 ADPF?

安卓动态性能框架 (Android Dynamic Performance Framework, ADPF) 技术可为开发者提供更多的设备信息,使其能够在应用的整个生命周期内把控性能稳定性与资源使用。移动设备的热信息至关重要,此前开发者需通过每秒帧数 (FPS) 与电池耗电来推断设备的发热情况。有了实时的热信息细节,开发者在电池过热且系统开始被动地节制性能前,就能主动调整应用内容来减缓热量积聚。今年稍早,Google 在 GitHub 上发布了 ADPF 的虚幻引擎插件,开发者可以立即启用 ADPF 提供的功能。一经成功安装,应用在预设情况下会依据热量指标调用虚幻引擎中的 SetQualityLevels() 函数来切换可扩展层级,并且动态改变应用的图形设定,以便在运行阶段配合开发者设定的各种层级。

《Mori 林间鼯语》演示

《Mori 林间鼯语》是一款 Arm 内部演示,通过一只在森林中四处奔跑与滑翔的西伯利亚飞鼠,展现最新 Arm Immortalis GPU 的性能与特性。这项计划运用虚幻引擎 5.3 进行开发。游戏开始时飞鼠在树洞里休息,而 Lumen 则模拟全局照明以渲染真实的光线与阴影变化。点击开始之后,飞鼠会进入树叶与地形细节丰富呈现的针叶林中,而玩家的目的则是寻找隐藏的宝藏。森林场景透过 Vulkan 着色器模型5 (Vulkan Shader Model 5),在移动设备上显示出基于物理表现的渲染 (PBR) 材质与数百万个三角形,而高质量的动态模糊则强化了图形,达到游戏主机级别的品质。

image.png
图:Mori 演示的树洞内部场景与森林户外场景

这款游戏有四个级别的图形质量可选:顶级、高级、中级与低级。游戏会根据选定的级别设定各种图形参数,例如树叶、视距、阴影、后期与纹理。以下的示意图则显示在每个设定下对应的视觉表现。

image.png
图:Mori 演示中四种图形质量的扩展性

你可以观察到在“顶级”设定中,有着显而易见的景深效果。把设定降至“高级”时,右边的灌木在细节程度有些调整。设成“中级”时,阴影会比较粗略,而屏幕的百分比也会引起锯齿现象。“低级”的设定会导致光线、树叶效果与清晰度大幅下降。整体来说,最好是把图形质量设定保持在“中级”及以上,玩家方可充分享受游戏,且不牺牲视觉体验。

在 vivo X90S 与 X100 手机上进行 30 分钟的游戏测试期间,玩家并未调整图形设定,全程以“顶级”质量体验游戏。如同下图所示,Headroom 快速累积,而帧率则大幅波动。手机在五分钟后会过热,并自动节制运行频率,导致帧率下降。十分钟之后,Headroom 累积至超过 90%,并引发另一波频率与帧率下降。

image.png
图:应用 ADPF 前的性能与设备状态图

扩展性方面的配置

在安装并启用 ADPF 后,游戏会根据预设的 Headroom 尺度切换图形设定。在“顶级”设定中,阴影纹理的尺寸、距离尺度与质量都会设在最高值,后处理的屏幕百分比与光晕质量也一样在最高等级。在“高级”与“中级”配置文件中,阴影纹理的尺寸会减半,质量会相继降低,后处理的屏幕百分比则分别降至 80 与 60,光晕质量也会相应下降。“低级”则把一切设定都降至最低,此时阴影的最大分辨率变成 512,而距离尺度则会减半。后处理的屏幕百分比降为 50,光晕质量变成 1,至于其它所有参数则维持在虚幻引擎预设的设定值。

image.png

如下图显示,在自动调整图形设定后,游戏的 Headroom 显著地稳定下来,而 X100 与 X90S 手机分别维持每秒 60 与约 55 的帧数。经过更仔细地检视后,我们发现游戏为了维持每秒帧数并管理发热情况,会快速切换至最低级别的质量设定。尽管这能维持不错的性能,但长期使用低质量的设定并不理想。

image.png
图:应用 ADPF 后的性能与设备状态图

开发者在扩展性方面的更多尝试

我们留意到当插件中的默认 Headroom 尺度值超出或降至阈值以下时,它会立即切换图形设置。当图形质量降低,并成功降温后,图形质量可能快速提升,而导致影像出现闪烁。因此,我们把切换逻辑移到游戏层旁边的控制单元,让尺度值变成可以调整,并确保升温与降温不会共享同样的数值,以便使图形质量降级有足够的时间反应对温度造成的影响。

image.png
图:Mori 演示中集成 ADPF 的用户界面

除了上述提到的调整,开发者不仅可以修改 AndroidScalability.ini 文件中的参数,还可以在游戏层为图形设定的切换增加回调。如此一来,我们可以通过调整如 foliage.MinLOD、剔除距离、最大绘制距离、每秒帧数锁定等控制台指令,允许额外的控制选项。

image.png
表:推荐的各图形等级的高级设定

image.png
图:Blueprint 中每个图形等级的高级设定实例

如下图显示,有了更多详细的控制选项来维持可见的视觉质量,图形设定的降幅最大不会超过“中级”。性能与温度也稳定下来,“顶级”设定的帧率固定在每秒 60 帧,“高级”设定的帧率固定在每秒 45 帧,而“中级”与更低设定的帧率则为每秒 30 帧。

image.png
图:应用带有额外配置的 ADPF 后的性能与设备状态图

总结

ADPF 让开发者可以依据手机的情况精细调整并控制图形质量,有效协助保持更佳的游戏体验。它可以预防手机过热,并应对耗电问题,确保整个游戏过程的视觉效果令人满意,同时也不致于让玩家的电池快速耗用完毕。启用了 ADPF 后,我们从 vivo X90S 与 vivo X100 的最后电池放电曲线看到较为缓和的降幅,这代表能耗有所改善。我们建议开发者亲身尝试这个简易且快速的整合流程,仅需少量时间就能显著提升游戏质量。

推荐资源:

[1]https://developer.android.com...
[2]https://developer.android.com...

  • 本文为 Arm 原创文章,转载请留言联系获得授权并注明出处。

END

作者:Arm 战略与生态部游戏内容开发工程师 Patrick Wang
文章来源:Arm社区

推荐阅读

欢迎大家点赞留言,更多Arm技术文章动态请关注极术社区Arm技术专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
23582
内容数
1033
Arm相关的技术博客,提供最新Arm技术干货,欢迎关注
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息