网易首页 > 网易号 > 正文 申请入驻

如何测试、分析HTC Vive、Oculus Rift的VR游戏性能

0
分享至

我们将探索VR游戏与传统游戏在性能要求方面的不同点

映维网 2018年05月16日)在处理能力和用户体验方面,虚拟现实系统主要分为三种类型:高质,主流和入门。高质VR表示高端VR,并且包括市场上搭载高配置的产品,高性能PC或游戏主机。支持高质VR的主要VR外设是HTC Vive,Oculus Rift和索尼PSVR。

主流VR的硬件性能可能不及高质VR,但仍然使用PC处理器进行VR运算。入门级VR则包含Gear VR和谷歌Cardboard等移动VR设备,以及把手机芯片作为计算设备的VR眼镜和一体机。

本文描述了通过HTC Vive和Oculus Rift测试与分析VR游戏的方法。与传统PC游戏相比,VR游戏在设计,输入模式和性能要求方面有所不同。本文不涉及游戏玩法和输入。相反,我们将探索VR游戏与传统游戏在性能要求方面的不同点。

每秒处理的像素大小是衡量VR体验的重要指标。目前HTC Vive和Oculus Rift CV1的屏幕分辨率是2160×1200,因此在进行实际渲染时,我们需要更多采样来抵消由镜头畸变引起的分辨率损失。对于HTC Vive和Oculus Rift CV1,这一损失高达140%。VR处理的像素大小达到了惊人的4.57亿每秒。

性能测试与分析是VR游戏的重要组成部分。这些任务有助于实现所需的要求,并且确保充分利用所有的CPU和GPU处理能力。在测试之前,Oculus需要关闭异步空间扭曲(ASW),SteamVR则要关闭异步二次投影,这样VR运行时补偿干预将不会影响背后的性能分析。

如要禁用ASW,请在Oculus SDK中依次打开Program Files\Oculus\Support\oculus-diagnostics\OculusDebugTool.exe,然后运行OculusDebugTool.exe。

图1:异步空间扭曲配置

如要在SteamVR中禁用二次投影功能,请使用Settings/Performance(设置/性能)。

图2:SteamVR配置

1. 工具

软件工具在测试与分析VR游戏中扮演着重要角色。所涉及的主要工具包括Fraps,游戏加加,Unreal的控制台命令,Windows Assessment and Deployment Kit(ADK),SteamVR帧定时,以及英特尔的图形性能分析器。

1.1 Fraps FPS(帧每秒)计数器

Fraps FPS(帧/秒)计数器是一种传统的测试与帧时工具,开发者可以利用它来测试一段时间内的最大帧速率,最小帧速率和平均帧速率。最终结果可以轻松导入至Excel,并且生成相应的图表。如下图所示,我们可以看到帧速率在整个过程中的变化是否平滑。另外,Fraps可支持你方便地截取屏幕截图,然后用于各种报告目的。

图3:(顶部)随时间变化的帧速率;(底部)最大帧速率,最小帧速率和平均帧速率。

图3的底部说明了Fraps随时间推移而产生的最大帧速率,最小帧速率和平均帧速率。

如数据显示,这款VR游戏中的帧率在大部分时间都很低,仅为45FPS,不符合HTC的要求。对于这种性能表现,玩家会遭遇不适,甚至是晕动症(为了防止用户产生不适或晕动症,体验要求达到90 FPS的稳定帧速率)。这时,我们可以使用Windows ADK中的GPUVIEW来确定问题是来自于GPU,还是说CPU。

1.2 游戏加加

虽然Fraps是免费共享软件,但它已经有很长时间没有更新。游戏加加是一款类似的基准工具。在运行该实用程序时,工具窗口会自动显示在游戏窗口的顶部,其信息包括FPS,CPU温度,图形占用率,CPU,显卡和内存使用情况等等。Fraps的另一个缺点是它不能用于测试DirectX 12游戏,但你可以使用另一个工具PresentMon来采集FPS数据。

图4:游戏加加的实时数据显示界面

顶部的工具窗口提供对正在运行的游戏及其性能的实时监控。但Fraps和游戏加加都是为传统游戏设计,只能在显示器上显示数据。

1.3 Unreal引擎工具

佩戴VR头显的玩家无法看到显示器上的信息,如果想看到实时性能数据,我们有两种选择:

1.如果游戏基于Unreal引擎,请使用stat fps控制台命令。

2.使用SteamVR帧定时方法,这可以帮助你在头显和显示器上看到实时性能数据。SteamVR帧时间设置请访问Valve官网(点击前往)

图5显示了SteamVR帧定时数据。

图5:头显显示器中的丢失帧。

如图5所示,当游戏场景帧出现丢帧时,头显将显示一个“Missed Frames(丢帧)”框。红条密度越高,出现丢帧的频率越高。

图6:PC上运行的CPU和GPU。

图6显示了更详细的数据。在数据读出方面,蓝色表示GPU渲染时间,而茶色则代表了GPU空闲时间。

如图6所示,某些帧的GPU渲染时间超过了11.11毫秒,这将错过Vsync(垂直同步)的时间并导致丢帧。这些帧无法达到90 FPS。借助这个SteamVR帧定时工具,我们可以知道更多关于GPU Bound(限制)的信息,但它无法确定CPU渲染线程是否没有及时传递渲染命令,从而导致GPU冒泡(bubble)或者GPU渲染时间过长。

1.4 Unity Engine的控制台命令工具

如果游戏是通过UE4引擎开发,而且属于开发版本(非发行版本),我们就可以使用Unity的控制台命令工具来浏览游戏的实时性能数据。

你可以按下“键(键盘左上角)”来显示命令行窗口。以下是一些常用的控制台命令:

Stat FPS:显示每帧的FPS和帧时间。这个命令很容易在VR中使用,因为帧速率显示在VR头显上,测试人员可以方便地观察游戏的实时性能。

Stat Unit:显示游戏中每帧的总时间,游戏逻辑线程消耗的时间,游戏渲染线程时间消耗,以及GPU时间消耗。一般来说,如果一个帧的时间消耗接近于逻辑线程的时间消耗,瓶颈限制位于逻辑线程;但如果一个帧的时间消耗接近渲染线程时间,则瓶颈限制在于渲染线程。如果两个时间都接近GPU时间,瓶颈限制就与显卡有关。

图7:Stat Unit命令的截图。

Stat SceneRendering:显示游戏渲染线程中的各种参数值(参见图8)。

图8:Stat SceneRendering命令的截图。

Stat Game:游戏逻辑线程上运行的参数值实时视图,如人工智能和内存分配等等(参见图9)。

图9:Stat Game命令的截图。

Stat GPU:实时显示每帧中的GPU主渲染内容的时间参数(参见图10)。

图10:Stat GPU命令截图

Stat InitViews:显示剔除需要的时间和效率数据(参见图11)。

图11:Stat InitViews命令的截图。

Stat LightRendering:显示照明和着色所需的渲染时间(参见图12)。

图12:Stat LightRendering命令的截图。

其他命令(如Stat A和Stat)可以从Unreal官方网页中引用:

  1. 1. https://docs.unrealengine.com/udk/Three/ConsoleCommands.html

  2. 2. https://docs.unrealengine.com/latest/INT/Engine/Performance/StatCommands/

1.5 GPUVIEW工具

我们可以使用Windows ADK中的GPUVIEW和Windows性能分析器(WPA)来执行进一步的分析。

在上述命令中,Stat Unit初步说明了帧是GPU Bound还是CPU Bound。有时结果不够准确,例如当CPU的一个线程造成一个GPU帧中间冒泡(bubble)。如果发生这种情况,在Stat Unit命令中看到的GPU渲染时间实际上属于实时渲染时间和冒泡时间的扩展。在这种情况下,我们需要GPUVIEW和WPA进行分析。

如图13所示,每个帧中间都有一个2毫秒的冒泡,因此GPU不能正常工作。最初的帧渲染时间小于11毫秒,但随着冒泡的渲染时间超过90 FPS所需的11.1毫秒,这导致下一帧丢失Vsync时间。结果则是出现了帧丢失。

图13:GPUVIEW界面:每帧中间出现了一个2毫秒的冒泡

这时,我们可以使用WPA打开相同的Merged.etl文件,并通过时间线找到冒泡的时间窗口,从而确定CPU的哪个线程更繁重,以及此时该线程正在运行的内容(参见图14) 。

图14:Windows性能分析器界面

如果GPUVIEW中GPU帧的渲染时间超过11.11毫秒,则可以确定为GPU Bound,然后我们可以使用英特尔GPA来分析管道中的哪部分出现了过载情况。

1.6 英特尔GPA

英特尔GPA是一款功能强大的免费图形性能分析工具(点击前往)。英特尔GPA包含以下独立工具:

  1. 1. 系统分析器:实时显示游戏性能指标。
  2. 2. 图形帧分析器:帧分析器。
  3. 3. 平台分析器:查找CPU和GPU工作负载。
  4. 4. 图形跟踪分析器:捕获其他分析器分析的详细事件跟踪。

英特尔GPA图形帧分析器可以与GPUVIEW结合使用。我们可以查看游戏中的绘制调用,渲染目标,纹理贴图和特定帧的着色器等等。通过简化着色器,你可以设计一个实验来测试渲染中的哪个部分会影响性能,从而帮助确定需要优化的关键部分(参见图15)。

图15:图形帧分析器的界面。

2. 案例分析

我们用一个例子来说明如何测试和分析VR游戏。

在测试之前,你可以使用dxdiag命令查看系统配置:

首先,我们先运行一段时间Fraps测试,并且绘制帧率变化。如图16所示,在测试的前半部分中有部分场景可以达到90 FPS,但在后半部分里,帧速率在45左右波动,不符合要求标准。所以我们需要进一步分析。

图17:FPS变化

利用Stat FPS命令查找较低帧速率的场景。如果你认为游戏变化太快而无法获取数据,则可以使用控制台命令PAUSE暂停游戏,然后再轻松地打开所需的工具。结合Stat Unit命令的参数,CPU渲染线程和GPU都可能出现瓶颈(参见图17)。

图18:stat unit命令的截图。

我们需要使用GPUVIEW和WPA进行同步分析。

图19:GPU渲染时间

我们从GPUVIEW中看到的第一件事情是,一帧的渲染时间为13.69毫秒,高于11.11毫秒,所以性能不太可能达到90FPS(参见图19)。

接下来,我们看到CPU上只有音频线程运行了大约10毫秒时间(见图20)。其他线程基本上为空间,这意味着音频线程没有充分利用CPU资源,这样我们就有机会将CPU用于特殊效果,例如更多的AI,物理,材质或粒子效果。

图20:CPU空间时间

WPA同样如此,其中游戏和渲染线程基本上为空闲。

图21:Windows性能分析器上显示的CPU运行线程

借助英特尔GPA,你可以看到绘制调用少于1000个,而这是一个合理的数字。

图22:所有的绘制调用

选择所有的Target进行实验,其中我们可以粗略看到帧花费的时间。

2×2 Textures实验在真实场景中使用了简单纹理。实验表明,简单纹理没有显著的性能改进,因此可以忽略纹理优化。

1×1 Scissor Rectangle实验则在渲染管道中移除了像素处理阶段。从这个实验中可以看到,性能表现已经有了显著的提升。

Simple Pixel Shader实验取代了简化像素着色器中的原始着色器,并且我们可以看到性能出现了大幅提升。

从上面的实验我们可以看到,GPU渲染管道中的像素处理任务相当繁重。另一个查看一帧中哪个操作占据最多时间的方法是,在UE4的命令行输入中使用ToggleDrawEvents。

图24:英特尔GPA分析器显示了每个绘制调用的执行函数

以下是几个关于耗时模块的表格。这些信息可以帮助你专注于高时间比率的模块,并且进行选择性的优化。

3. 总结

如果硬件尚未完全能够实现沉浸式VR体验所需的高性能,我们可以通过优化来体验高质量的游戏。在游戏优化期间寻找瓶颈需要利用本文所描述的各种工具和方法。通过各种实验和参数调整来确定游戏的CPU或GPU性能瓶颈,本文同时提供了一定的见解,可以帮助改善游戏体验。

原文链接: https://yivian.com/news/45548.html

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
房产中介被指“吃48万元差价”,乐有家回应

房产中介被指“吃48万元差价”,乐有家回应

界面新闻
2026-07-10 13:43:31
4年2.75亿!浓眉哥寻求顶薪续约奇才 勇士难交易他去追詹姆斯

4年2.75亿!浓眉哥寻求顶薪续约奇才 勇士难交易他去追詹姆斯

醉卧浮生
2026-07-10 06:56:57
全网转发扩散!救护车粤A80ET8载重症患者从广州到济南求医 已进入济广高速山东段 请沿途车辆为生命让行

全网转发扩散!救护车粤A80ET8载重症患者从广州到济南求医 已进入济广高速山东段 请沿途车辆为生命让行

闪电新闻
2026-07-10 07:14:57
俄“崩溃论”抬头,安的什么心?

俄“崩溃论”抬头,安的什么心?

观察者网
2026-07-09 16:25:11
正式签约加盟!你好,火箭!40分神射搭档杜兰特

正式签约加盟!你好,火箭!40分神射搭档杜兰特

篮球实战宝典
2026-07-09 20:01:21
“判我死刑,决不上诉”13岁叛逆女儿晚归,单身父亲暴力将其打死

“判我死刑,决不上诉”13岁叛逆女儿晚归,单身父亲暴力将其打死

易玄
2026-07-09 15:17:50
爸爸打儿子的残酷真相:只需微微出汗,法国的常态是摩洛哥的极限

爸爸打儿子的残酷真相:只需微微出汗,法国的常态是摩洛哥的极限

中国足球的那些事儿
2026-07-10 07:04:36
世界杯黑马门将回佛得角度假,沃齐尼亚骑水上摩托,传有望加盟迈阿密国际

世界杯黑马门将回佛得角度假,沃齐尼亚骑水上摩托,传有望加盟迈阿密国际

红星新闻
2026-07-10 11:23:31
非洲独苗出局!阿根廷若被淘汰 世界杯四强变欧洲杯 姆巴佩创历史

非洲独苗出局!阿根廷若被淘汰 世界杯四强变欧洲杯 姆巴佩创历史

侃球熊弟
2026-07-10 05:32:01
性生活也有最佳时间吗?什么时候发生、每次多久才最好?

性生活也有最佳时间吗?什么时候发生、每次多久才最好?

医学原创故事会
2026-07-08 21:50:22
混血台妹!细枝硕果,不科学啊!

混血台妹!细枝硕果,不科学啊!

云端小院
2026-07-04 07:38:42
不愧是“最强小三”,金熙英和16岁女儿同框,颜值身段比女儿还美

不愧是“最强小三”,金熙英和16岁女儿同框,颜值身段比女儿还美

照见古今
2026-07-08 16:50:02
买桃子别只挑红的!果农:分清圆头尖头,4招买到“儿时味”

买桃子别只挑红的!果农:分清圆头尖头,4招买到“儿时味”

阿龙美食记
2026-07-07 19:54:49
塔利班防长站在铁丝网前眺望中国,四道防线告诉他:此路不通

塔利班防长站在铁丝网前眺望中国,四道防线告诉他:此路不通

小莜读史
2026-07-07 06:13:56
佛得角队门将沃齐尼亚左眼白斑引关注,被传或致失明 眼科医生辟谣:只是翼状胬肉,可能引发散光

佛得角队门将沃齐尼亚左眼白斑引关注,被传或致失明 眼科医生辟谣:只是翼状胬肉,可能引发散光

红星新闻
2026-07-10 12:28:19
小红书挖两年坑,把自己埋进去了

小红书挖两年坑,把自己埋进去了

智识漂流
2026-07-08 19:30:12
“你儿子专注力已经废了”,小学男生躲在被窝听故事,父亲无脑夸

“你儿子专注力已经废了”,小学男生躲在被窝听故事,父亲无脑夸

世界圈
2026-07-09 08:59:43
怪不得王楚钦跟梁靖崑在一起总是笑,因为他啥也敢说,太有梗了!

怪不得王楚钦跟梁靖崑在一起总是笑,因为他啥也敢说,太有梗了!

东方不败然多多
2026-07-10 07:38:05
争议!英格兰后卫禁赛2场立即执行 美国前锋缓刑 网友:FIFA双标

争议!英格兰后卫禁赛2场立即执行 美国前锋缓刑 网友:FIFA双标

念洲
2026-07-10 06:15:06
五小时史诗鏖战让阿利亚西姆读懂德约的伟大,看清自己的成长

五小时史诗鏖战让阿利亚西姆读懂德约的伟大,看清自己的成长

网球之家
2026-07-09 13:54:42
2026-07-10 15:48:49
映维网刘卫华
映维网刘卫华
专注于虚拟现实的发展动向
9804文章数 16595关注度
往期回顾 全部

科技要闻

中国开启可回收火箭时代

头条要闻

中国商人在泰遭绑架 绑匪:老大要杀人 60万美金能买命

头条要闻

中国商人在泰遭绑架 绑匪:老大要杀人 60万美金能买命

体育要闻

法国VS摩洛哥:谁才是臭外地的?

娱乐要闻

S妈回应大S遗产卡余额不足42万

财经要闻

长征十号乙首飞告捷 海上网系回收成功

汽车要闻

悦己更悦人 阿维塔07L加长了更加上了豪华

态度原创

教育
本地
时尚
手机
公开课

教育要闻

多所高校发布,2027年专业停招信息

本地新闻

重庆人有自己的避暑桃花源 | 夏天就去「酉」风的地方!

今年夏天最流行的4条半裙,配“这件衬衫”减龄又好看!

手机要闻

摩托罗拉Edge 70 Max手机渲染图曝光:第五代骁龙8处理器

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版