新华社北京4月27日电 德国和法国国防部长26日在法国首都巴黎签署谅解备忘录,两国同意推动研发“地面主战系统”,旨在升级现役主战坦克。 据德新社报道,...
研发实战:《Showdown》如何通过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)。
展开全文
现在配置工具:
现在启动《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》中使用的众多其他优化,并描述如何以及何时使用它们。
相关文章
发表评论