研发实战:《Showdown》如何通过AppSW技术提高性能

查看引用/信息源请点击:映维网Nweon

撰文介绍了AppSW是如何提升应用性能

映维网Nweon 2022年05月09日)Meta最初在2021年发布了Application SpaceWarp(AppSW)。这是一种面向开发者的优化技术,允许应用以实际显示刷新率的一半进行渲染(例如72 FPS的一半36 FPS),从而为合适的内容释放额外的计算能力。在Meta的初始测试中,AppSW为应用提供了高达70%的额外计算,而且几乎没有可感知的瑕疵。

日前,软件工程师扎科·德雷克(Zac Drake)撰文介绍了AppSW是如何提升应用性能。值得一提的是,这属于系列博文,而本文是Part 1。下面是映维网的具体整理:

《Showdown》是Epic利用UE4开发的PC VR演示内容,并在2014年首次在Connect大会亮相。团队将这个作品移植到Quest 2,并希望尽可能保持PC版本的视觉逼真度,同时以一致的90 FPS运行。为了达到这个目标,你必须为移动渲染器显著优化CPU和GPU性能。

本文介绍了AppSW是如何提高《Showdown》的性能,并演示如何自行分析AppSW和其他渲染设置的影响。

要遵循本文中的步骤,请通过App Lab下载安装Quest版《Showdown》,而项目源代码请访问GitHub

1. AppSW

AppSW能够帮助你轻松提高性能。它允许应用以半速率渲染,而系统则以全速率合成显示,从而能够每帧为CPU和GPU留出余量。在《Showdown》中,AppSW给了团队足够的空间来处理更多的PC版效果,同时依然达到90 FPS。所述效果包括颜色LUT和更多用于子弹碰撞和爆炸的粒子。

延伸阅读Meta(Facebook)分享:什么是Application SpaceWarp

下面我们来看看AppSW和其他渲染设置是如何影响性能:

2. OVR Metrics

在启动《Showdown》之前,请安装OVR Metrics。获取这个工具和其他工具的最简单方法是通过Oculus Developer Hub(ODH)。

  1. 打开ODH

  2. 选择Downloads下载>Applications应用>OVR Metrics Tool

  3. 点击Downloads下载

现在配置工具:

  1. 在ODH中,转到Device Manager设备管理器

  2. 在Device Actions设备操作界面启用Metrics HUD

  3. 单击Metrics HUD设置

  4. 在这里,我们可以选择需要显示的数据和图表。如下配置:

现在启动《Showdown》。

团队加入了一个名为“头部锁定模式”的功能。它提供的静态camera在分析不同的渲染设置时非常有用。你可以点击右拇指摇杆进入这一模式。它将暂停场景并锁定camera位置和方向,以便渲染的每个帧都相同。要解锁camera并取消暂停时,请再次单击右拇指摇杆。

锁定要剖析的帧后,按B键打开渲染设置菜单。通过右扳机键(向上)和右握把键(向下)选择菜单项。按A键切换所选菜单选项。这包括:

  • AppSW(开/关)

  • CPU/GPU level(1/2/3/4)

  • FFR(关闭/低/中/高/最高)

  • 帧率(72/80/90)

  • 像素密度(1.0/0.9/0.2)

  • Tonemap Subpass(开/关)

  • MSAA(1/2/4/8)

渲染设置菜单

再次按B键隐藏渲染设置菜单。

OVR Metrics HUD

在这个屏幕截图中,你可以看到在关闭和再次打开AppSW时FPS和GPU利用率的变化。请注意,启用AppSW时,OVR Metrics将报告一半的目标帧率。

你可以仔细观察菜单中的每个选项是如何影响CPU和GPU的利用率。你同时可以尝试120 FPS的支持,看看它如何影响各种渲染设置的性能。

要在头显中以120 FPS速度运行,请执行以下操作:

  1. 点击Quest系统菜单的时钟以打开Quick Settings快速设置

  2. 单击右上角的Setting设置按钮

  3. 选择Experimental实验性功能

  4. 打开“120 Hz Refresh Rate/120 Hz刷新率”

要在自己的应用程序中切换相同的渲染设置,可以使用等效的adb命令:

ASW:

  • adb shell “am broadcast -a android.intent.action.RUN -e cmd ‘r.Mobile.Oculus.SpaceWarp.Enable 1’

CPU/GPU level:

  • adb shell setprop debug.oculus.gpuLevel 3

  • adb shell setprop debug.oculus.cpuLevel 3

FFR:

  • adb shell setprop debug.oculus.foveation.dynamic 0

  • adb shell setprop debug.oculus.foveation.level 2

帧率:

  • adb shell setprop debug.oculus.refreshRate 90

像素密度:

  • adb shell “am broadcast -a android.intent.action.RUN -e cmd ‘vr.PixelDensity 1.0’”

Tonemap subpass:

  • adb shell “am broadcast -a android.intent.action.RUN -e cmd ‘r.Mobile.TonemapSubpass 0’”

MSAA:

  • adb shell “am broadcast -a android.intent.action.RUN -e cmd ‘r.MobileMSAA 1’”

注意:所述命令可以添加到ODH的自定义命令部分。

有关Oculus系统属性的更多信息,请访问这一页面

3. Perfetto

通过OVR Metrics,我们能够看到AppSW的性能优势。接下来,我们可以通过Perfetto看看渲染阶段。

要使用Perfetto收集渲染阶段跟踪数据,需要修改默认配置。

  1. 在ODH打开Performance Analyzer性能分析器

  2. 点击右上角Record 录制按钮旁边的“…”,并选择“Perfetto Settings”。

  3. 选择Custom自定义

  4. 用下面字符替换现有的linux.ftrace block :

{
      "config": {
        "name": "linux.ftrace",
        "ftraceConfig": {
          "ftraceEvents": [
            "sched/sched_switch",
            "power/suspend_resume",
            "sched/sched_wakeup",
            "sched/sched_wakeup_new",
            "sched/sched_waking",
            "sched/sched_process_exit",
            "sched/sched_process_free",
            "task/task_newtask",
            "task/task_rename",
            "ftrace/print"
            ],
            "atraceCategories": [
            "gfx",
            "view",
            "webview",
            "camera",
            "dalvik",
            "power"
            ],
            "atraceApps": [
            "com.oculus.samples.ShowdownQuest"
          ]
        }
      }
  },

请注意atraceApps部分中的package identifier。你需要在这里添加其他需要跟踪的应用程序。

  1. 单击保存

  2. 在设备上启动应用程序

  3. 单击Performance Analyzer性能分析器中的Record记录按钮

  4. 在游戏中执行你想要设定的任何动作(例如关闭/打开AppSW)

  5. 点击Stop停止按钮

  6. 一旦Perfetto浏览器窗口打开,你将需要开始关注一定的trace。

    • 注意,其中一些已列出两次。选彩色的,不要选绿色的。

    • com.oculus.samples.ShowdownQuest

    • RenderThread

    • RHIThread

    • GameThread

    • FenceChecker

    • com.oculus.vrruntimeservice

    • OVR::TimeWarp

下面是在AppSW关闭和打开时Perfetto跟踪数据的两个屏幕截图。请注意,启用AppSW后,帧间时间增加了一倍。尽管我们由于一定的开销而不能使用所有这些时间,但它确实为CPU和GPU处理提供了更多的时间。

AppSW关闭

AppSW开启

以上就是Application SpaceWarp对《Showdown》的影响。在下一篇博文中,我们将介绍Quest版《Showdown》中使用的众多其他优化,并描述如何以及何时使用它们。

本文链接https://news.nweon.com/96880
转载须知:转载摘编需注明来源映维网并保留本文链接
素材版权:除额外说明,文章所用图片、视频均来自文章关联个人、企业实体等提供
QQ交流群苹果Vision  |  Meta Quest  |  微软HoloLens  |  AR/VR开发者  |  映维粉丝读者

更多阅读推荐......

资讯