丢帧、卡顿、插值,如何用英伟达FCAT VR详细测试VR系统性能


Qualcomm & Pico XR创新应用大赛获奖作品

文章相关引用及参考:geforce

FCAT VR用户指南

映维网 2018年11月19日英伟达于2013年推出的FCAT改变了图形显卡基准测试,这款免费的工具不仅能支持游戏玩家和测评者测试FPS,同时还可以测试游戏在不同显卡上的流畅度和质量。借助FCAT,用户可以首次以复杂的细节来衡量性能,判断卡顿,丢帧,以及不正确的多GPU帧间距等等。现在,最佳的显卡是快速且流畅,并允许游戏玩家在每次游戏中都能享受到更加愉悦体验的产品。

英伟达于2017年3月正式推出了FCAT VR,从而帮助游戏开发者,硬件厂商和VR爱好者能够可靠地测试VR游戏的性能。对于VR体验,快速和流畅的性能表现可以防止糟糕的晕动症影响,而后者有可能导致眼睛疲劳和不适。

在这之前,虚拟现实测试依赖于通用基准测试工具,综合测试和零件拼装解决方案,而它们难以说明显卡的真实性能。借助FCAT VR,我们可以读取一系列的数据,如英伟达驱动程序,Oculus Rift的Event Tracing for Windows (ETW),以及HTC ViveSteamVR性能API数据,从而为所有显卡生成精确的VR性能数据。

使用相关的数据,FCAT VR用户可以创建图表并分析帧时间,丢帧,运行时扭曲丢帧和异步空间扭曲合成帧的数据,判断卡顿,插值,以及任意显卡在运行虚拟现实游戏时的体验。

如果你希望使用FCAT VR来对系统进行基准测试,我可以告诉你测试本身十分简单,但设置基准数据分析确实需要经过数个步骤。下面由映维网整理的具体操作指南和额外信息可帮助你更深入了解FCAT VR测试。

1. FCAT VR测试详细介绍

今天领先的高端VR头显Oculus Rift和HTC Vive都以90Hz的固定间隔刷新屏幕,相当于每隔约11.1毫秒刷新一次屏幕。VSYNC需要启动以防止图像撕裂,因为头显画面的撕裂会对用户造成严重不适。

用于传输帧的VR软件可以分成两部分:VR Game和VR Runtime。当满足了时序要求,而且流程正确进行,你将能观察到下面的顺序事件:

  1. VR Game对当前头显位置传感器进行采样,并更新游戏中的camera位置以正确追踪用户的头部。
  2. 游戏将建立一个图形帧,而GPU则将新帧渲染到纹理(非最终显示)。
  3. VR Runtime读取新纹理,进行修改,并生成显示在头显显示屏上的最终图像。其中两个有趣的修改包括色彩校正和镜头校正,但VR Runtime完成的工作可以更精细。

下面显示了时序图表中的内容:

1.1 理想的VR管道

如果生成帧的时间超过刷新间隔,运行时的工作将变得非常复杂。在这种情况下,VR Game 和VR Runtime的总耗用时间太长,而且帧将无法在下一次扫描开始时显示。

在这种情况下,头显通常会重新显示来自运行时的先前渲染帧,但对于VR而言,这种体验不可接受,因为在VR头显显示器上重复旧帧忽略了头部运动,并将导致糟糕的用户体验。

运行时采用各种技术来改善这种情况,包括合成新帧而不是重复旧帧的算法。大多数技术都集中在二次投影的概念上:二次投影使用最新的头部传感器位置输入来调整旧帧,从而匹配当前的头部位置。这并没有改善嵌入在帧中的动画(受到较低帧速率和卡顿的影响),但能够在头显中显示有着更佳头部运动追踪的更加流畅的视觉体验。

FCAT VR Capture为Rift和Vive捕捉了四个关键性能指标:

  1. 丢帧(也称为App Miss或App Drop)
  2. 未扭曲
  3. 帧时间数据
  4. 异步空间扭曲合成帧

1.1.1 丢帧

每当VR Game渲染的帧到达时间太晚而无法在当前刷新间隔中显示时,丢帧将会出现并导致游戏卡顿。理解丢帧情况并进行测量可以深入判断VR性能。

1.1.2 合成帧

合成帧:异步空间扭曲是一种应用先前渲染帧的动画检测以合成新的预测帧的过程。

请参见下面的异步空间扭曲一节以进一步了解具体的工作原理。

1.1.3 未扭曲

未扭曲对VR体验来说是一个更重要的问题。只要运行时无法在当前刷新间隔中生成新帧(或重新投影的帧),未扭曲就会发生。在上图中,GPU重新显示了先前扭曲的帧。VR用户将此冻结时间视为严重的卡顿。

1.1.4 帧时间

由于FCAT VR提供详细的时序,因此它可以准确地测量任何内容的无限定FPS。通过检测系统渲染每帧所需的时间,我们可以看到系统在非90Hz刷新节奏的情况下显示该帧的速度有多快。利用这个信息,FCAT VR Capture可查看帧内部以计算估计的余量,并能够在固定刷新率的VR生态系统中真正测量VR内容的相对GPU性能。

1.2 使用FCAT VR对Oculus Rift进行测试

FCAT VR Capture直接访问Oculus运行时记录到ETW的性能信息。按下热键后,FCAT VR Capture会动态捕捉所需的事件,并将其转换为可读的时间戳,然后记录到CSV文件中。

今天Oculus生成以下时间戳:

  1. App Render Begin(应用渲染开始)
  2. App Render Completion(应用渲染完成)
  3. App Miss(丢帧)
  4. Warp Render Begin(扭曲渲染开始)
  5. Warp Render Completion(扭曲渲染完成)
  6. Warp Miss(未扭曲)

当前的SDK版本支持<= 1.11。 1.2.1 Oculus:FCAT VR Capture各栏解释

下表显示了FCAT VR Capture各栏和相应的Oculus事件。(注:N/A表示“不可用”,某些ETW事件没有字段)

1.2.2 异步空间扭曲(ASW)

异步空间扭曲是Oculus开发的一项技术,旨在提高主流GPU的流畅度。在这种情况,默认在1.10 BETA公共运行时中启用ASW。

为了理解ASW,我们首先要了解异步时间扭曲(ATW)。ATW是一个独立于主渲染线程的进程,在Oculus运行时内运行,而这里的头显位置采样非常接近VSYNC间隔,接下来系统计算与先前位置的差值,根据位置差异转换最近完成的帧被转换,并且将新的转换帧显示在头显上。

异步空间扭曲是一种应用先前渲染帧的动画检测以合成新的预测帧的过程。通俗地说,我们可以将其称为ASW合成帧。

如果应用程序能够以90Hz的频率一致地渲染,则合成帧永远不会出现在头显中。当帧无法按常规时间按时渲染时,ASW将被“激活”。与渲染新帧相比,基于先前渲染帧的运动检测来预测合成帧要求更低。

如果ASW被禁用且应用程序无法以90Hz的频率向Oculus Runtime提交帧,运行时将选择最近完成的帧并对其应用ATW。

如果ASW已启用且应用程序无法以90 Hz的频率向Oculus Runtime提交帧,运行时将以45 FPS渲染应用程序,并将ATW应用于常规渲染帧和ASW合成帧。这些ASW合成帧将充当定期渲染帧之间的中间帧。最终结果是用户看到更流畅的动画,以45 FPS渲染,但以90 FPS呈现。

1.2.3 输出图形

FCAT VR Analyzer生成的图表清楚地显示了在头显中看到的这种行为。最上面的图表代表渲染帧所花费的时间。最下面的两个图表(绿色矩形)则显示了丢帧,合成帧和未扭曲(显示为丢帧)情况。

仔细观察帧时间图(下图),我们可以看到Oculus Rift游戏《Everest》中的LMS设置比较。请注意,LMS设置为0(关闭)的高亮绿色线通常保持在11.1 ms,这与90 FPS相关。但是,存在超过11ms的小峰值。

对于帧时间图(绿色矩形)下面的颜色,其代表90 FPS内任何给定秒数内帧类型的瞬时百分比。这些数据回答了以下问题:

  1. 在前一秒,有多少帧是真实的并以90 FPS完全渲染?
  2. 有多少帧是合成而来而非完全渲染?
  3. 丢帧有多少?

请继续观察《Everest》数据,我们看到11ms以上的峰值导致了几次丢帧;在大约38-39秒处出现了相当大的尖峰;以及由于大尖峰的影响,系统在大约5秒内合成了几个帧。但是,使用NVIDIA LMS可以解决大多数问题。

这些图表说明了FCAT VR Capture可以帮助你更准确地了解幕后所发生的事情。

我们可以通过在图中看到多少绿色程度来完成对图表的粗略分析。图表越绿,呈现的帧越真实,体验越好。

1.3 使用FCAT VR对HTC Vive进行测试

HTC Vive测试使用基于SteamVR的OpenVR SDK。FCAT VR Capture使用SteamVR公开的性能API,然后生成格式与Oculus的时间戳。按下热键后,FCAT VR Capture会动态记录这些事件,并将其转换为可读的时间戳,然后再记录到CSV文件中。支持0.5-0.19的OpenVR SDK版本(均包括在内)。

1.3.1 OpenVR:FCAT VR Capture各栏解释

下表显示了FCAT VR Capture各栏和相应的HTC事件。

1.3.2 二次投影

SteamVR采用两种二次投影模式:

  1. 交错二次投影
  2. 异步二次投影

英伟达显卡支持这两种模式,而它们在默认情况下处于启用状态。二次投影只能校正旋转,就像Oculus的异步时间扭曲一样。由于AMD的显卡不支持异步二次投影,我们建议你在英伟达上禁用它,从而确保与AMD显卡进行一对一的公平测试。

对于二次投影,更详细的解释请参考Valve的Alex Vlachos的说明

2. 安装FCAT VR

可在GeForce.com下载FCAT VR.zip

2.1 解压“FCAT VR Capture”

将下载的文件解压缩到安装HMD的VR捕捉站。这款软件可以在任何地方运行。

但是,我们建议你将文件放在C:\ FCAT中名为FCAT VR Capture的文件夹中,如下所示。

2.2 为HTC Vive安装FCAT VR Capture

当你为HTC Vive使用FCAT VR Capture时,请遵循以下说明:

  1. 确保正确安装了所有图形驱动程序。
  2. 启动SteamVR,单击“文件”菜单,然后单击“设置”。
  3. 单击“性能”,然后禁用“允许异步二次投影”,从而确保与AMD显卡进行一对一的公平测试。启用“允许交错二次投影”。

  1. 关闭SteamVR。
  2. 在FCAT VR Capture文件目录中打开具有管理员权限的命令窗口。

  1. 在管理员命令行执行Install.cmd。

  1. 重启系统

注:每次安装新显卡或新图形驱动程序时,你都必须重复步骤4-6。

2.3 为Oculus Rift安装FCAT VR Capture

当你为Oculus Rift使用FCAT VR Capture时,请遵循以下说明:

  1. 确保正确安装了所有图形驱动程序。
  2. 在FCAT VR Capture文件目录中打开具有管理员权限的命令窗口。

  1. 在管理员命令行执行Install.cmd。

  1. 重启系统。

注:每次安装新显卡或新的图形驱动程序时,你都必须重复步骤2-4。

2.4 解压“FCAT VR Analyzer”

相同的Zip文件包含FCAT VR Analyzer。请在你计划使用的系统上解压缩文件以分析所捕捉的VR数据。这可以是相同的或单独的设备。

和以前一样,我们建议你在C:\ FCAT中创建一个名为FCAT VR Analyzer的文件夹,如下所示。

2.4.1 为FCAT VR Analyzer安装Anaconda & pyqtgraph

FCAT VR是用Python编写。因此,你需要下面数款应用程序。

2.4.1.1 Anaconda

FCAT VR所需的第一个独立软件是Python软件Anaconda。请前往这里下载

在安装过程中,确保选择“Add Anaconda to the PATH environment variable”,并选择“Register Anaconda as the default Python 3.6”(如下所示)。

2.4.2 pyqtgraph

脚本用于生成图表和绘图的第二个独立软件是pyqtgraph。

要安装pyqtgraph:

  1. 安装Anaconda后,在任意位置打开具有管理员权限的命令窗口。

  1. 在管理员命令行键入以下内容: python -m pip install pyqtgraph==0.10.0

注:如果Python在安装后无法运行,你可能需要重新启动。

3. 如何使用FCAT VR Capture

FCAT VR Capture适用于所有版本的Windows,所有DirectX API,所有GPU,以及Oculus Rift和HTC Vive。但是,它目前尚不支持OpenGL。

  1. 双击FCAT_Capture.exe启动FCAT VR Capture。(注:请确保在启动FCAT VR Capture之前关闭FRAPS。作为附加步骤,建议你禁用其他应用程序的叠加,从而确保它们不会遮盖FCAT VR Capture。)

  1. 在Benchmark文件夹位置选择BROWSE按钮,选择将存储基准测试结果的首选目录。
  2. 指定捕捉延迟和持续时间:捕捉延迟:捕捉将在“延迟”秒数后开始。将此值设置为0会立即开始捕捉。捕捉持续时间:经过“持续时间”秒数后,捕捉将自动停止。将此值设置为0将禁用捕捉。
  3. 启动VR应用程序。头显右侧将出现一个红条,表示FCAT VR Capture当前正在运行。指示灯颜色图例:绿色=捕捉正在进行中闪烁绿色和红色=延迟启动

    红色=捕捉停止。

  4. 按下SCROLL LOCK开始基准测试。红条将变为绿色,表示基准测试正在进行中。注意:此时FCAT VR Capture仅支持SCROLL LOCK作为基准热键。在任何时间点,如果计划或正在运行捕捉(指示灯闪烁或绿色),按下SCROLL LOCK将停止捕捉。要再次开始捕捉,请按下SCROLL LOCK。
  5. 再次按下SCROLL LOCK停止基准测试。
  6. 退出VR应用程序并返回FCAT VR Capture。单击“OPEN FOLDER”以查看基准测试结果。
  7. FCAT VR Capture生成的结果将保存为带有时间戳名称的目录。你可以重命名目录以反映测试的GPU,游戏和设置。注意:我们强烈建议你使用下一节中列出的目录结构来获取数据
  8. 在结果目录中,你需要使用文件名中包含单词“Merged”的文件以生成数据。

3.1排序捕捉的数据

FCAT VR Capture创建三个文件。始终在Analyzer中使用包含“Merged”名字的文件。

建议你将通过FCAT VR Capture捕捉的数据放在下面的目录结构中。

将C:\ FCAT目录作为你的基础目录,然后创建一个\ DATA文件夹以存放你捕捉的VR数据信息。

为你捕捉的VR数据使用上文所提到的文件夹命名方法: C:\FCAT\DATA\< GPU>\< GAME>\< SETTINGS>\< OTHER>

注:在这个示例中用于< OTHER>的文件夹是面向LMS和MRS捕捉。

这是基于上面示例的文件夹结构:

C:\FCAT\DATA\GTX 1060\Everest\Medium Settings\LMS 0

注:你可以在文件夹名称中使用短划线,下划线或空格。

使用这样的文件夹结构可以帮助FCAT VR Analyzer软件更轻松捕捉你希望包含在图表中的GPU,游戏,设置和其他信息。

4. 如何分析捕捉的FCAT VR数据

流畅度对VR游戏而言非常重要,用户可以通过几种不同的方式来评估可能影响游戏流畅度的卡顿。最重要的方法是简单地体验VR并评估具体的感受。是否有抖动呢?有卡顿吗?平移头部以感受场景变化,感受它在运动过程中的流畅程度。

FCAT VR适用于FRAPS和新的FCAT VR Capture帧时间数据。本节介绍如何使用FCAT VR。

4.1 运行FCAT VR Analyzer

安装上述软件后,你应该能够通过双击(打开)FCAT.py并运行FCAT VR Analyzer,如下所示。

4.1.1 文件关联

如果FCAT.py与Python无法正确关联,你将需要手动设置关联。请按照以下说明执行此操作:

  1. 在Windows文件资源管理器中右键单击FCAT.py,然后选择打开方式…
  2. 选择始终使用此应用程序打开.py文件,然后单击“More apps”。

  1. 这时你将看到一堆应用程序。单击“Look for another app on this PC”。

  1. 你现在需要转到Anaconda3文件夹中Python.exe的位置。
  2. 选择Python.exe并单击“Open”按钮。

  1. FCAT.py现在应该与Python.exe成功关联。所有.py文件现在都有与之关联的Anaconda图标(如下所示)。

4.1.2 启动FCAT VR Analyzer

在启动后,FCAT VR Analyzer看起来将如下所示:

要获取数据,请从Windows资源管理器中选择\ data文件夹,然后用鼠标将其拖到FCAT Analyzer程序中。始终从\ data文件夹拖动。这是包含上述子文件夹的文件夹。请参阅以下示例:

C:\FCAT\DATA\< GPU>\< GAME>\< SETTINGS>\< OTHER>

注:你可以将多个GPU文件夹拖进FCAT VR Analyzer。事实上,数量没有任何限制。

将文件夹拖到左上角区域,如下所示:

你的数据应该看起来像是这样:

4.2 应用区域与元素

FCAT VR Analyzer应用程序包含三个区域,你可以根据需要使用鼠标调整每个区域的大小。

4.2.1 输入文件或目录区域

主要部分允许你组织和操作所捕捉的VR数据。你可以在这里对数据进行筛选,排序和重命名。

4.2.1.1 过滤器

使用过滤器是分类大量数据的好方法。有些过滤器可以包含和排除任何数据列中的数据。下拉菜单允许过滤最多四列数据。你可以通过选择下拉菜单,并选择要过滤的另一个列标题来更改这些列标题(如下所示)。

4.2.2 数据区域

单击数据行以选择,然后再次单击它以取消选择。通过在数据上单击并向下拖动鼠标可以选择多行,按Ctrl + A可以选择所有数据。

单击“Clear Selection”将清除已选定的任何数据,单击“Clear Files”将从数据窗口中删除所有数据。单击“Hide Unselected”将隐藏当前未选中的数据。

4.2.3 保存选定的数据

单击“Save Selected Stats”将打开一个窗口,其中所选数据可以保存为.CSV文件(如下所示)。

4.2.4 日志区域

日志窗口将在出错时提供相关的信息。这些数据可以保存并发送到英伟达以帮助进行故障排除。

4.2.5 绘图区域

单击“Plot”按钮将为所有已选择的数据创建图表。单击“Save”按钮则将绘图保存为.PNG文件。(注意:目前最多支持八个数据集。)

4.3 制作和操作图表

4.3.1 使用鼠标

你可以使用鼠标轻松移动绘图线。这允许图表根据需要居中和缩放。

使用中间的鼠标滑轮来进行缩放:

选择一条线会将其变为白色,这表明它已被选中:

注意:蓝色垂直线是使用鼠标选择图表线的位置,黄色垂直线将随着鼠标在图上移动而一直跟随鼠标。

4.3.2 Plot Menu

右键单击绘图将显示绘图菜单。这允许你操作所选择的绘图线。

4.3.3 Set Color

你可以使用这个选项来更改绘图线条颜色。首先,单击以选择图表线(将其变为白色),然后右键单击绘图并选择“Set Color”。

在此示例中,我们选择绿色来作为新线条的颜色。

4.3.4 Set Region

使用此选项可裁剪图表线。当数据位于基准区域之外(如菜单)时,这非常有用。这些额外数据不仅在图表上看起来不正确,而且还会对FPS数据产生负面影响(以及其他数据,包括一系列的丢帧和合成帧)。

使用蓝色线和黄色线设置区域。首先,选择要裁剪图表线的起点(左键单击),然后右键单击选择结束点。

当选定后,选择“Set Region”。

注意:FPS和其他数据将受你设置的新区域影响。

4.3.5 Set Region (all)

你可以同时裁剪多条线。

我们决定将区域设置在2秒到12秒之间。

4.3.6 Move to 0.0 (all)

这个设置允许所有线图重新排列到图表上的0秒开始时间。使用蓝色和黄色垂直线设置这些区域后,右键单击绘图并选择“Move to 0.0(all)”。

一旦完成,所有的线条应该将从X轴上的0秒点开始。

4.3.7 Clear Times

请注意上面示例中使用的图表线是如何正确对齐。你最好首先移动线条,然后通过设置区域来裁剪它们。

要撤消裁剪,请选择图表线,单击鼠标右键,然后选择“Clear Times”。

注:你需要单独为每条线执行这个操作。

4.3.8 Clear Times (all)

原理与Clear Times一样,但将对所有线条产生影响。

4.3.9 Move Dataset

要移动图表线,请使用鼠标左键选择要移动的新区域。这将放置一条蓝色垂直线。然后使用鼠标右键单击绘图,将黄色垂直线放在要移动图表的位置。

单击“Move Dataset”后,图表线将移动到该区域。如果你不小心移动到了错误的位置,你只需选择这条线,右键单击绘图,然后选择“Clear Times”以重置图表线。

4.3.10 Move Dataset to 0.0

这将重新对准所有的图表线,回到X轴的0秒位置。

4.3.11 Add to Interval Plot

Interval Plot显示新帧,合成帧和丢帧数据。要创建Interval Plot,请选择图表线,右键单击绘图,然后选择“Add to Interval Plot”。

Interval Plot可清晰显示在SW捕捉期间VR应用程序出现的合成帧和丢帧。对于设置为MRS 0的《Everest》,我们可以看到在2.5至6秒之间显示了合成帧,其中图表线偏离于11.1 ms的上方。

要添加另一个Interval Plot,只需选择另一条图表线,右键绘图区域,然后选择“Add to Interval Plot”即可。

这次我们选择MRS 3图表线,我们可以看到没有合成帧或掉帧的情况出现。

通过以下步骤,你现在可以显示性能,帧时间,二次投影和丢帧的综合概述,立即说明VR游戏体验的质量。通过组合几个图表,你可以直接比较不同设置的性能,进一步改善结果的呈现方式。

5. 初次FCAT VR基准测试的推荐游戏

英伟达的技术营销团队与媒体机构,硬件厂商和游戏开发商进行了密切合作,以确定易于获得一致结果且易于访问的游戏和基准测试场景,从而帮助你试水FCAT VR基准测试。

其中一些游戏还包括NVIDIA VRWorks增强功能,可提高性能和图像质量。借助FCAT VR,你可以首次正确测量和显示这些技术的优势。

6. NVIDIA VRWorks综述

NVIDIA VRWorks软件是包含API,示例代码和VR开发者库的完整套件。无论是开发突破性VR应用还是设计下一代头显,NVIDIA VRWorks都能帮助开发者带来最高性能,最低延迟和即插即用的兼容性。VRWorks包括以下功能:

6.1 面向头显开发者的NVIDIA VRWorks

  1. 对于Direct Mode,NVIDIA驱动将VR头显视为只能通过VR应用访问你的头戴式显示器,而非常规的Windows显示器,从而为VR头显提供更好的即插即用支持和兼容性。
  2. Context Priority可帮助头显开发者更好地控制GPU排程以支持先进的VR功能,如异步时间扭曲(可减少延迟和快速调整图像,无需重新渲染新帧。
  3. Front Buffer Rendering可直接渲染至front buffer,从而减少延迟。

6.2 面向应用开发者NVIDIA VRWorks

  1. Multi-Res Shading是一种面向VR的全新渲染技术,其中图像的每个部分都以更匹配扭曲图像像素密度的分辨率进行渲染。Multi-Res Shading采用了Maxwell的多重投影架构来在单通道中渲染多个视口,从而实现显著的性能提升。
  2. Lens Matched Shading采用了帕斯卡显卡的全新同步多重投影架构来在像素着色方面实现显著的性能提升。这项功能在Multi-Res Shading的基础上进行了优化,渲染至更接近镜头校正图像的表面。这避免了渲染将在最终视图中丢弃的像素。
  3. 传统而言,VR应用程序需要绘制两次几何图形,一次左眼,一次右眼。单通道立体视觉采用了帕斯卡显卡的全新同步多重投影架构,只需绘制一次几何图形,然后同时向左眼和右眼视图投影几何体。这允许开发者有效将VR应用的几何复杂度加倍,进一步丰富虚拟世界的细节。
  4. VR SLI为虚拟现实应用程序提供了更高的性能,可将多枚GPU分配给特定的眼睛(为每只眼睛分配相同数量的GPU,从而显著加速立体渲染。借助GPU affinity API,VR SLI支持搭载两枚以上GPU的系统进行扩展。

另外,NVIDIA VRWorks还包括满足专业VR环境的组件,如Cave Automatic Virtual Environments (CAVEs),沉浸式显示和群集解决方案。

我们将详细介绍Multi-res Shading和VR SLI。更多关于NVIDIA VRWorks的信息,请访问这个页面

6.2.1 Multi-Res Shading (MRS)

Multi-Res Shading这种渲染技术可以在不影响感知图像质量的情况下帮助减少渲染成本。屏幕分成多个视口,通过使用Maxwell和Pascal GPU基于硬件的多重投影功能,其可以将整个场景几何体广播至每个视口,并且快速剔除(抛弃)不触及特定视口的几何体。外部视口图像以较低分辨率渲染,而中心视口则以全分辨率渲染。整体性能可以得到改善,同时不降低感知图像质量。

6.2.1.1 镜头畸变与扭曲图像的问题

虚拟现实头显上的图像必须进行扭曲以抵消透镜的光学效果。

图像看起来不是四方四正,而是有点扭曲和失真,但当通过合适的透镜进行观看时,图像将正确显示。

GPU本身不会渲染这种扭曲的视图。相反,当前的VR平台采用两步过程:首先渲染正常图像(左),然后第二次执行后处理过程,重新采样并将图像预扭曲成失真视图(右)。尽管这种解决方案有效,但效率低,因为边缘处出现过采样。

在上图中,中心位置(绿色)几乎不受影响,但侧面(红色)被压扁。结果是,在创建最终的扭曲图像时,将丢弃沿边缘的许多渲染像素。生成稍后将被丢弃的像素低效且浪费。

6.2.1.2 细分和缩放

Multi-Res Shading的工作原理是将图像细分为单独的视口。如上所述,Maxwell和Pascal多重投影硬件功能可以将场景几何体发送到每个视口,无需额外处理(除了剔除不触及视口区域的几何体)。

每个随后都会被扭曲,而且图像该部分内所需的最大采样分辨率更接近最终显示的像素。中心视口也会扭曲并几乎保持相同。这可以更好地近似扭曲图像,但不会出现过度着色。另外因为着色像素更少,渲染速度就越快。根据Multi-Res Shading的设置,节省的像素可以达到像素的25%到50%,这转化为1.3倍到2倍的像素着色加速。

Multi-res Shading现已集成到Epic的UE4引擎中。基于UE4的VR应用程序,例如Sólfar Studios的《Everest VR》和Thunderbird:InnerVision Games的《Legend Begins》也已经集成了这项技术,而且更多的应用将紧跟其后。

Multi-Res Shading与Unity和Max Play引擎的集成的正在进行中,届时将能帮助更多的VR开发者轻松将其集成至应用程序之中。

6.2.1.3 智能超级采样

在某些情况下,MRS Level(MRS 1)将通过对中心视口进行超级采样来提高质量。质量的提高可能会导致性能下降。在当前的Unreal 4引擎中,MRS Level 1是相对于镜头参数定义,这将提高视觉质量,同时不会因典型的采样方法而导致性能下降。

6.2.1.4 MRS的好处

由于MRS降低了VR游戏的渲染成本,因此可以提高质量设置。例如,当使用Multi-Res Level 2时,GeForce GTX 1060可以将《Raw Data》中预设的图形质量从Low增加到Medium。

当禁用VRWorks的时候,你必须使用更低质量的设定,这部包括抗锯齿或阴影。

VRWorks和MRS可以支持更高质量的设定。Medium Preset和更高质量的阴影令控制面板看起来更逼真和更细腻。

6.2.2 Lens Matched Shading (LMS)

由于市场对VR应用的兴趣出现了爆炸性的增长,这增加了支持渲染非共面投影显示器的重要性。VR显示器在用户和显示器之间设有透镜,而后者会令图像看起来扭曲和失真。为了令图像看起来是正确显示,我们必须采用特殊的投影技术来进行渲染,从而反转透镜失真。接下来,当用户通过透镜观看图像时,它看起来将不会失真。

传统的GPU不支持这种类型的投影。相反,它们仅支持具有均匀采样率的标准“共面”投影。使用传统GPU生成正确的最终图像需要两个步骤:首先,GPU必须使用标准投影渲染,生成比所需更多的像素;第二,对于输出显示表面中的每个像素位置,需要从第一步的渲染结果中查找像素值以应用于显示表面。

如果没有Lens Matched Shading,VR头显将渲染一个矩形,然后再将其挤压成显示器和透镜的尺寸。

单通道图像

正确观影所需的最终图像

这个过程渲染的像素比所需多出86%,而Lens Matched Shading可以修复这种性能损失。为实现这一目标,Pascal的同步多重投影(Simultaneous Multi-Projection)技术将原始矩形输出分为四个象限,并将它们调整为最终图像的近似形状。

开启Lens Matched Shading的单通道图像

最终图像

在技术方面,头显中显示的最终图像是单眼110万像素,没有开启Lens Matched Shading的单通道图像是单眼210万像素,而Lens Matched Shading仅为单眼140万像素。这可以将像素着色的吞吐量提高50%,相比于Multi-Res Shading,这意味着性能提升了15%,而且外围图像质量没有任何降低。

确定Lens Matched Shading参数的一个步骤是,检查相较于最终图像所需采样率的采样率。Lens Matched Shading的默认“保守”设置是始终匹配或超过最终图像的采样率。下图比较了Lens Matched Shading图像:

相较于最终图像的单通道图像采样率

蓝色表示以高于所需采样速率采样的像素,灰色表示匹配的速率,而红色像素则表示初始采样低于最终图像中的速率。没有红色像素则表明设置与目标匹配。

另外,开发者可以选择不同的设置。例如,你可以使用中心分辨率更高而外围欠采样的设置,从而在不会显著降低视觉质量的情况下最大化帧速率。

6.2.3 单通道立体视觉(Single Pass Stereo)

传统上,VR应用程序必须绘制两次几何图形,左眼一次,右眼一次。单通道立体视觉采用基于英伟达帕斯卡GPU的同步多重投影架构,只需绘制一次几何图形,然后再同时投影几何图形的右眼和左眼视图。这可以帮助开发者有效将VR应用程序的几何复杂度加倍,从而进一步丰富虚拟世界的细节。

6.2.4 VR SLI

借助VR SLI,你可以为多枚GPU分配给特定的眼睛,从而显著加速立体渲染。对于包含两枚以上GPU的PC,VR SLI甚至可以进一步扩展。

VR SLI为虚拟现实应用程序提供了更高的性能,可将多枚GPU分配给特定的眼睛(为每只眼睛分配相同数量的GPU),从而显著加速立体渲染。借助GPU affinity API,VR SLI支持搭载2枚以上GPU的系统进行扩展。DirectX和OpenGL支持VR SLI。

6.2.5 AFR SLI:不适合VR

交替帧渲染(Alternate-frame rendering,AFR)是在传统显示器使用SLI的方法。使用AFR SLI的GPU在整个帧上进行权衡。在两枚GPU的情况下,第一枚GPU渲染偶数帧,第二枚GPU渲染奇数帧。GPU启动时间错开半帧以维持向显示器定期传输帧。

相对于单GPU系统,AFR SLI可以很好地提高帧速率,但它对延迟没有帮助。所以这种方法不是VR的最佳模型。

6.2.6 VRI SLI工作原理

使用两枚GPU进行VR渲染的更好方法是,分开两枚GPU绘制单个帧的工作。对于VR SLI,这意味着在各自的GPU上渲染单眼帧。

左眼帧由第一枚GPU渲染,右眼帧同时由第二枚GPU渲染。

通过两枚显卡并行化渲染左眼帧和右眼帧可以大大提高性能,相对于单GPU系统,VR SLI可以提高帧速率和降低延迟。

请注意,与使用NVIDIA驱动程序中的配置文件的传统AFR SLI不同,VR SLI需要应用程序端集成才能实现性能扩展。VR SLI现已集成到Valve的《The Lab》,工业光魔的《Trials on Tatooine》和Croteam的《Serious Sam VR:The Last Hope》等应用程序中,更多的集成正在进行中,包括UE4,Unity和Max Play引擎集成。

7. NVIDIA VRWorks基准测试

如果你使用的是GeForce GTX 10系列显卡,你可以利用所有的VRWorks技术来提高性能和优化图像质量。下面是可以说明Multi-Res Shading, Lens Matched Shading和VR SLI优势的基准测试。

7.1 Everest VR | MRS和LMS

要访问《Everest VR》中的MRS设置,请按下Vive控制器上的菜单按钮,然后选择图形设置。这时你将看到“图形设置”菜单,而第一个设置选项为Multires。请通过“-”或“+”按钮在不同的MRS设置之间进行切换。

注意:为更容易进行区分,下面设置提供了命名。

推荐采用以下NVIDIA GeForce GTX显卡:

  1. “Medium Settings”: GeForce 1060
  2. “High Settings”: GeForce GTX 1080 或以上

7.1.1 Everest VR | LMS 硬件要求

要访问《Everest VR》中的LMS设置,请按下Vive控制器上的菜单按钮,然后选择图形设置。这时你将看到“图形设置”菜单,而第一个设置选项为Multires。请通过“-”或“+”按钮在不同的LMS设置之间进行切换。

注意:为更容易进行区分,下面设置提供了命名。

7.1.2 设置解释

  1. Lens Matched Shading (LMS):英伟达特有的优化,这项功能可以避免渲染在最终视图中丢弃的像素,从而提高像素着色性能。MRS支持Maxwell和Pascal架构显卡。
  2. Weather Effects:它控制整个体验中用于模拟天气的粒子效果量。默认值为0.4,而0.0则将其关闭。值越高,效果越明显。
  3. SuperSampling:默认情况下,Unreal渲染到比Vive显示高40%的屏幕缓冲区,并将结果缩小到原始分辨率。这可以带来更清晰的纹理。默认设置显示为140。增加屏幕百分比将令图像越来越清晰,但代价是性能。高端GPU应该拥有更多的空间来显著提升这方面。
  4. LOD Distance:根据离用户的距离,几何体呈现一系列越来越高的细节层次。这个乘数会影响更高密度几何体的激活距离。越低越好。

7.1.3 Everest | FCAT VR MRS图表

下面比较了GTX 1060,GTX 1080和GTX 1080 Ti GPU的MRS设置。这些数据是使用FCAT VR Software Capture Tool所进行捕捉(可以捕获并分析VR游戏中的丢帧和未扭曲)。FCAT VR Data Analyzer则用于生成图表。

Everest MRS+GTX 1060 | “Medium Settings”

Everest MRS+GTX 1080 | “High Settings”

Everest MRS+GTX 1080 Ti | “High Settings”

7.1.4 Everest | FCAT VR LMS图表

下面比较了GTX 1060,GTX 1080和GTX 1080 Ti GPU的LMS设置。这些数据是使用FCAT VR Software Capture Tool所进行捕捉(可以捕获并分析VR游戏中的丢帧和未扭曲)。FCAT VR Data Analyzer则用于生成图表。

Everest LMS+GTX 1060 | “Medium Settings”

Everest LMS+GTX 1080 | “High Settings”

Everest LMS+GTX 1080 Ti | “High Settings”

7.2 NVIDIA VR Funhouse | MRS

《VR Funhouse》采用了最热门的模拟与渲染技术,从而带来了一款十分引人入胜的VR游戏。《VR Funhouse》基于Unreal引擎开发,并采用了以下用于3A游戏开发的技术:

  1. Destruction:摧毁刚性身体
  2. HairWorks: 业内最佳的毛发
  3. Flow: 体三维火焰与烟雾
  4. FleX: 基于粒子的物理液体与固体
  5. VRWorks: 用于实现更快性能的先进VR渲染技术

7.2.1 VR Funhouse | MRS 硬件要求

注意:选择这些设置是为了最好地显示MRS扩展。

7.2.2 获取合适的《VR Funhouse》版本

为修改《VR Funhouse》中的MRS设置,你必须使用特定的《VR Funhouse》版本。请遵循以下步骤:

  1. 在Steam上订阅《NVIDIA VR Funhouse》
  2. 在Steam右键单击《NVIDIA VR Funhouse》并选择“属性”
  3. 选择Betas选项卡
  4. 选择beta列表下拉箭头。
  5. 选择“1.3.3-1157350-vrworks-mrs”。
  6. Steam将自动下载包含改动MRS Level的小键盘的beta版本。

在《VR Funhouse》中改动MRS设置。当获取了1.3.3-1157350-vrworks-mrs版本的《VR Funhouse》后,你就可以使用以下数字键在游戏中更改MRS Level。为每个MRS Level键入以下内容:

  1. MRS 0: Num0
  2. MRS 1: Num1
  3. MRS 2: Num2
  4. MRS 3: Num3

重点注意:每次启动新Level时,设置都会重置。确保在测试前再次设置MRS Level。

7.2.3 Benchmark VR Funhouse

每次更改场景(迷你游戏)时,MRS设置都会自动更改。因此,请确保在每个场景的开头选择适当的MRS Level。

在VR中运行基准测试时,运行间差异可能会带来严重问题,特别是对于涉及机会的场景。出于这个原因,我们建议使用Clown Painter场景来对《VR Funhouse》进行基准测试。请遵循以下步骤:

  1. 在Steam启动《NVIDIA VR Funhouse》。
  2. 从开始场景中选择右侧的“设置”按钮。
  3. 选择适当的设置级别。
  4. 按下键盘上的数字1按钮以加载Clown Painter场景。
  5. 按下小键盘上的相应数字来选择适当的MRS Level。
  6. 使用FCAT VR Software Capture进行基准测试。
  7. 用一只手持枪射击小丑的嘴,直到气球破裂或枪支耗尽弹药。
  8. 该手停止射击,让枪支充电。
  9. 用另一只手继续朝小丑的嘴射击。
  10. 交替重复30-60秒。目标是始终进行射击,并与场景中的几何体进行交互。
  11. 停止基准测试。

7.2.4 VR Funhouse | FCAT VR MRS图表

下面比较了GTX 1060,GTX 1080和GTX 1080 Ti GPU的MRS设置。这些数据是使用FCAT VR Software Capture Tool所进行捕捉(可以捕获并分析VR游戏中的丢帧和未扭曲)。FCAT VR Data Analyzer则用于生成图表。

VR Funhouse MRS+GTX 1060 | Low Settings

VR Funhouse MRS+GTX 1080 | High Settings

VR Funhouse MRS+GTX 1080 Ti | High Settings

7.3 Sports Bar VR | MRS

《Sports Bar VR》不仅只是展示了如何在VR空间体验桌球物理。玩家将能够与各种对象交互,使用任意盘子,瓶子和其他物品来实现花式击球,开玩虚拟飞镖,并将空啤酒瓶扔到墙上。

凭借最先进的专有物理引擎,《Sports Bar VR》旨在通过最酷炫的VR空间来提供最具交互性的VR桌球体验。

7.3.1 Sports Bar VR | MRS 硬件要求

选择预设后,请考虑以下超级采样和锐化设置。

MRS设置可减少GTX 1080上丢帧和未扭曲的情况。MRS2设置则可以完全消除丢帧和未扭曲。

7.3.2 在《Sports Bar VR》中调整MRS Level

可以通过按下CTRL + 0,1,2,3来调整《Sports Bar VR》中的MRS Level。MRS Level 0是“禁用”。MRS Level与GPU渲染时间和丢帧相反:随着MRS Level的增加,GPU渲染时间和丢帧数量减少,从而提供更好的用户体验。

  1. MRS 0: CTRL + 0 (MRS off)
  2. MRS 1: CTRL + 1 (MRS Level 1)
  3. MRS 2: CTRL + 2 (MRS Level 2)
  4. MRS 3: CTRL + 3 (MRS Level 3)

注意:更改MRS Level时请勿使用小键盘。这可能会导致Oculus Rift更改ASW模式,从而令测试结果无效。

注意:默认情况下《Sports Bar VR》启用MRS。如果你计划测试MRS的效果,请为每次测试显式选择MRS Level。

7.3.3 Sports Bar VR | FCAT VR MRS表格

下面比较了GTX 1060,GTX 1070和GTX 1080 GPU的MRS设置。这些数据是使用FCAT VR Software Capture Tool所进行捕捉(可以捕获并分析VR游戏中的丢帧和未扭曲)。FCAT VR Data Analyzer则用于生成图表。

Sports Bar VR MRS+GTX 1060 | Medium Settings

Sports Bar VR MRS+GTX 1080 | Ultra Settings

Sports Bar VR MRS+GTX 1080 Ti | Ultra Settings

7.4 Raw Data | MRS

2271年日本新宿,看似正义的伊甸集团正统治着世界。精英黑客抵抗运动SyndiK8揭开了伊甸集团最新机器人产品背后的阴险现实。作为SyndiK8的顶级特工之一,你的任务很简单:渗透伊甸园大厦,窃取特定的数据,并活着离开。

这是一款从零为虚拟现实开发的作品,《Raw Data》的动作战斗玩法,直观的控制,凶恶的敌人,以及科幻氛围可以将完全沉浸在虚拟现实世界之中。游戏支持单人模式或多人合作模式,而你将成为一名英雄并踏上刺激的冒险之旅,测试自己的智慧,勇气和耐力。

这款VR动作游戏为你提供了先进的武器库和尖端的纳米技术。支持运动追踪的共享空间鼓励玩家通过肢体语言和环境交互来进行物理通信。

7.4.1 Raw Data | MRS硬件要求

请前往《Raw Data》的主菜单,选择“Options”,然后是“Graphics”。“Graphics”设置的最后一个条目是Multi-Res Level,然后你可以自行选择:off,1,2和3。

7.4.2 Raw Data | FCAT VR MRS表格

下面比较了GTX 1060,GTX 1080和GTX 1080 Ti GPU的MRS设置。这些数据是使用FCAT VR Software Capture Tool所进行捕捉(可以捕获并分析VR游戏中的丢帧和未扭曲)。FCAT VR Data Analyzer则用于生成图表。

Raw Data+GTX 1060 | Low Settings

Raw Data+GTX 1080 | Epic Settings

Raw Data+GTX 1080 Ti| Epic Settings

7.5 VR SLI游戏

VR SLI为VR应用程序提供了更高的性能,可以为特定的眼睛分配GPU,从而显著加速立体渲染。借助借助GPU affinity API,VR SLI支持搭载2枚以上GPU的系统进行扩展。

7.5.1 Serious Sam VR: The Last Hope | VR SLI

模拟物理需要非常高的处理能力,我们通过应用NVIDIA VRWorks技术(包括Multi-Res Shading和VR SLI)来提高渲染性能。

7.5.2 VR SLI硬件要求

在《Serious Sam VR:The Last Hope》主菜单中选择“Options”,然后是“Performance”。

注意:选择这些设置是为了最好地显示VR SLI扩展。

7.5.3 Serious Sam VR: The Last Hope | FCAT VR SLI表格

下面比较了GTX 1080和GTX 1080 Ti GPU的MRS设置。这些数据是使用FCAT VR Software Capture Tool所进行捕捉(可以捕获并分析VR游戏中的丢帧和未扭曲)。FCAT VR Data Analyzer则用于生成图表。

Serious Sam VR Single vs. SLI GTX 1080 | Ultra Settings

Serious Sam VR Single vs. SLI GTX 1080 Ti | Ultra Settings

7.6 Trials on Tatooine | VR SLI

模拟物理需要非常高的处理能力,我们通过应用NVIDIA VRWorks技术(包括Multi-Res Shading和VR SLI)来提高渲染性能。

7.6.1 Trials on Tatooine | VR SLI硬件要求

在主菜单选择所需的预设,然后再选择开始。

注意:选择这些设置是为了最好地显示VR SLI扩展。

7.6.2 Trials on Tatooine | FCAT VR SLI表格

下面比较了单枚显卡 vs(双)SLI GPU。这些数据是使用FCAT VR Software Capture Tool所进行捕捉(可以捕获并分析VR游戏中的丢帧和未扭曲)。FCAT VR Data Analyzer则用于生成图表。

Trials on Tatooine with Single vs. SLI GTX 1080 | Ultra Settings

Trials on Tatooine Single vs. SLI GTX 1080 Ti | Ultra Settings

8. 总结

在这之前,虚拟现实测试依赖于通用基准测试工具,综合测试和零件拼装解决方案,而它们难以说明显卡的真实性能。借助FCAT VR,我们可以读取一系列的数据,如英伟达驱动程序,Oculus Rift的Event Tracing for Windows (ETW),以及HTC Vive的SteamVR性能API数据,从而为所有显卡生成精确的VR性能数据。

换句话说,我们现在可以看到所有GPU在运行VR游戏时的真实性能,为消费者的购买决策提供准确的信息。对于测评者,他们可以首次准确衡量GPU,令他们的深入评估更加有用和更加权威。

原文链接https://yivian.com/news/52908.html
转载须知:转载摘编需注明来源映维网并保留本文链接
英文阅读:点击前往映维网合作伙伴 RoadtoVR 阅读专业英文报道
入行必读:AR/VR,下一个计算机浪潮,下一个三十年科技文明!

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

发表评论(仅展示精选评论)

首页