首页 火币中国文章正文

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

火币中国 2022年07月08日 17:58 188 Connor

(映维网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)。

展开全文

现在配置工具:

现在启动《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速度运行,请执行以下操作:

要在自己的应用程序中切换相同的渲染设置,可以使用等效的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收集渲染阶段跟踪数据,需要修改默认配置。

"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。你需要在这里添加其他需要跟踪的应用程序。

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

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》中使用的众多其他优化,并描述如何以及何时使用它们。

标签: 实战 Showdown 研发 性能 通过

发表评论

火币交易所-火币pro-火币中国大陆官方网站 备案号:川ICP备66666666号