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

时间:2020-01-10 21:45:02   浏览:次   点击:次   作者:   来源:   立即下载

      于2013年推出的FCAT改变了图形显卡基准测试,这款免费的工具不仅能支持游戏玩家和测评者测试FPS,同时还可以测试游戏在不同显卡上的流畅度和质量。借助FCAT,用户可以首次以复杂的细节来衡量性能,判断卡顿,丢帧,以及不正确的多GPU帧间距等等。现在,最佳的显卡是快速且流畅,并允许游戏玩家在每次游戏中都能享受到更加愉悦体验的产品。    英伟达于2017年3月正式推出了FCATVR,从而帮助游戏开发者,硬件厂商和VR爱好者能够可靠地测试VR游戏的性能。对于VR体验,快速和流畅的性能表现可以防止糟糕的晕动症影响,而后者有可能导致眼睛疲劳和不适。    在这之前,虚拟现实测试依赖于通用基准测试工具,综合测试和零件拼装解决方案,而它们难以说明显卡的真实性能。借助FCATVR,我们可以读取一系列的数据,如英伟达驱动程序,OculusRift的EventTracingforWindows(ETW),以及Vive的SteamVR性能API数据,从而为所有显卡生成精确的VR性能数据。    使用相关的数据,FCATVR用户可以创建图表并分析帧时间,丢帧,运行时扭曲丢帧和异步空间扭曲合成帧的数据,判断卡顿,插值,以及任意显卡在运行虚拟现实游戏时的体验。    如果你希望使用FCATVR来对系统进行基准测试,我可以告诉你测试本身十分简单,但设置基准数据分析确实需要经过数个步骤。下面由映维网整理的具体操作指南和额外信息可帮助你更深入了解FCATVR测试。    1.FCATVR测试详细介绍    今天领先的高端VR头显Oculus Rift和HTC Vive都以90Hz的固定间隔刷新屏幕,相当于每隔约11.1毫秒刷新一次屏幕。VSYNC需要启动以防止图像撕裂,因为头显画面的撕裂会对用户造成严重不适。    用于传输帧的VR软件可以分成两部分:VRGame和VRRuntime。当满足了时序要求,而且流程正确进行,你将能观察到下面的顺序事件:    VRGame对当前头显位置传感器进行采样,并更新游戏中的camera位置以正确追踪用户的头部。    游戏将建立一个图形帧,而GPU则将新帧渲染到纹理(非最终显示)。    VRRuntime读取新纹理,进行修改,并生成显示在头显显示屏上的最终图像。其中两个有趣的修改包括色彩校正和镜头校正,但VRRuntime完成的工作可以更精细。    下面显示了时序图表中的内容:    1.1理想的VR管道    如果生成帧的时间超过刷新间隔,运行时的工作将变得非常复杂。在这种情况下,VRGame和VRRuntime的总耗用时间太长,而且帧将无法在下一次扫描开始时显示。    在这种情况下,头显通常会重新显示来自运行时的先前渲染帧,但对于VR而言,这种体验不可接受,因为在VR头显显示器上重复旧帧忽略了头部运动,并将导致糟糕的用户体验。    运行时采用各种技术来改善这种情况,包括合成新帧而不是重复旧帧的算法。大多数技术都集中在二次投影的概念上:二次投影使用最新的头部传感器位置输入来调整旧帧,从而匹配当前的头部位置。这并没有改善嵌入在帧中的动画(受到较低帧速率和卡顿的影响),但能够在头显中显示有着更佳头部运动追踪的更加流畅的视觉体验。    FCATVRCapture为Rift和Vive捕捉了四个关键性能指标:    丢帧(也称为AppMiss或AppDrop)    未扭曲    帧时间数据    异步空间扭曲合成帧    1.1.1丢帧    每当VRGame渲染的帧到达时间太晚而无法在当前刷新间隔中显示时,丢帧将会出现并导致游戏卡顿。理解丢帧情况并进行测量可以深入判断VR性能。    1.1.2合成帧    合成帧:异步空间扭曲是一种应用先前渲染帧的动画检测以合成新的预测帧的过程。    请参见下面的异步空间扭曲一节以进一步了解具体的工作原理。    1.1.3未扭曲    未扭曲对VR体验来说是一个更重要的问题。只要运行时无法在当前刷新间隔中生成新帧(或重新投影的帧),未扭曲就会发生。在上图中,GPU重新显示了先前扭曲的帧。VR用户将此冻结时间视为严重的卡顿。    1.1.4帧时间    由于FCATVR提供详细的时序,因此它可以准确地测量任何内容的无限定FPS。通过检测系统渲染每帧所需的时间,我们可以看到系统在非90Hz刷新节奏的情况下显示该帧的速度有多快。利用这个信息,FCATVRCapture可查看帧内部以计算估计的余量,并能够在固定刷新率的VR生态系统中真正测量VR内容的相对GPU性能。    1.2使用FCATVR对OculusRift进行测试    FCATVRCapture直接访问Oculus运行时记录到ETW的性能信息。按下热键后,FCATVRCapture会动态捕捉所需的事件,并将其转换为可读的时间戳,然后记录到CSV文件中。    今天Oculus生成以下时间戳:    AppRenderBegin(应用渲染开始)    AppRenderCompletion(应用渲染完成)    AppMiss(丢帧)    WarpRenderBegin(扭曲渲染开始)    WarpRenderCompletion(扭曲渲染完成)    WarpMiss(未扭曲)    当前的SDK版本支持<=1.11。 1.2.1Oculus:FCATVRCapture各栏解释    下表显示了FCATVRCapture各栏和相应的Oculus事件。(注:N/A表示“不可用”,某些ETW事件没有字段)    1.2.2异步空间扭曲(ASW)    异步空间扭曲是Oculus开发的一项技术,旨在提高主流GPU的流畅度。在这种情况,默认在1.10BETA公共运行时中启用ASW。    为了理解ASW,我们首先要了解异步时间扭曲(ATW)。ATW是一个独立于主渲染线程的进程,在Oculus运行时内运行,而这里的头显位置采样非常接近VSYNC间隔,接下来系统计算与先前位置的差值,根据位置差异转换最近完成的帧被转换,并且将新的转换帧显示在头显上。    异步空间扭曲是一种应用先前渲染帧的动画检测以合成新的预测帧的过程。通俗地说,我们可以将其称为ASW合成帧。    如果应用程序能够以90Hz的频率一致地渲染,则合成帧永远不会出现在头显中。当帧无法按常规时间按时渲染时,ASW将被“激活”。与渲染新帧相比,基于先前渲染帧的运动检测来预测合成帧要求更低。    如果ASW被禁用且应用程序无法以90Hz的频率向OculusRuntime提交帧,运行时将选择最近完成的帧并对其应用ATW。    如果ASW已启用且应用程序无法以90Hz的频率向OculusRuntime提交帧,运行时将以45FPS渲染应用程序,并将ATW应用于常规渲染帧和ASW合成帧。这些ASW合成帧将充当定期渲染帧之间的中间帧。最终结果是用户看到更流畅的动画,以45FPS渲染,但以90FPS呈现。    1.2.3输出图形    FCATVRAnalyzer生成的图表清楚地显示了在头显中看到的这种行为。最上面的图表代表渲染帧所花费的时间。最下面的两个图表(绿色矩形)则显示了丢帧,合成帧和未扭曲(显示为丢帧)情况。    仔细观察帧时间图(下图),我们可以看到OculusRift游戏《Everest》中的LMS设置比较。请注意,LMS设置为0(关闭)的高亮绿色线通常保持在11.1ms,这与90FPS相关。但是,存在超过11ms的小峰值。    对于帧时间图(绿色矩形)下面的颜色,其代表90FPS内任何给定秒数内帧类型的瞬时百分比。这些数据回答了以下问题:    在前一秒,有多少帧是真实的并以90FPS完全渲染?    有多少帧是合成而来而非完全渲染?    丢帧有多少?    请继续观察《Everest》数据,我们看到11ms以上的峰值导致了几次丢帧;在大约38-39秒处出现了相当大的尖峰;以及由于大尖峰的影响,系统在大约5秒内合成了几个帧。但是,使用NVIDIALMS可以解决大多数问题。    这些图表说明了FCATVRCapture可以帮助你更准确地了解幕后所发生的事情。    我们可以通过在图中看到多少绿色程度来完成对图表的粗略分析。图表越绿,呈现的帧越真实,体验越好。    1.3使用FCATVR对HTCVive进行测试    HTCVive测试使用基于SteamVR的OpenVRSDK。FCATVRCapture使用SteamVR公开的性能API,然后生成格式与Oculus的时间戳。按下热键后,FCATVRCapture会动态记录这些事件,并将其转换为可读的时间戳,然后再记录到CSV文件中。支持0.5-0.19的OpenVRSDK版本(均包括在内)。    1.3.1OpenVR:FCATVRCapture各栏解释    下表显示了FCATVRCapture各栏和相应的HTC事件。    1.3.2二次投影    SteamVR采用两种二次投影模式:    交错二次投影    异步二次投影    英伟达显卡支持这两种模式,而它们在默认情况下处于启用状态。二次投影只能校正旋转,就像Oculus的异步时间扭曲一样。由于的显卡不支持异步二次投影,我们建议你在英伟达上禁用它,从而确保与AMD显卡进行一对一的公平测试。    对于二次投影,更详细的解释请参考Valve的AlexVlachos的说明。    2.安装FCATVR    可在GeForce.com下载FCATVR.zip    2.1解压“FCATVRCapture”    将下载的文件解压缩到安装HMD的VR捕捉站。这款软件可以在任何地方运行。    但是,我们建议你将文件放在C:\FCAT中名为FCATVRCapture的文件夹中,如下所示。    2.2为HTCVive安装FCATVRCapture    当你为HTCVive使用FCATVRCapture时,请遵循以下说明:    确保正确安装了所有图形驱动程序。    启动SteamVR,单击“文件”菜单,然后单击“设置”。    单击“性能”,然后禁用“允许异步二次投影”,从而确保与AMD显卡进行一对一的公平测试。启用“允许交错二次投影”。  

      关闭SteamVR。    在FCATVRCapture文件目录中打开具有管理员权限的命令窗口。    在管理员命令行执行Install.cmd。    重启系统    注:每次安装新显卡或新图形驱动程序时,你都必须重复步骤4-6。    2.3为OculusRift安装FCATVRCapture    当你为OculusRift使用FCATVRCapture时,请遵循以下说明:    确保正确安装了所有图形驱动程序。    在FCATVRCapture文件目录中打开具有管理员权限的命令窗口。    在管理员命令行执行Install.cmd。    重启系统。    注:每次安装新显卡或新的图形驱动程序时,你都必须重复步骤2-4。    2.4解压“FCATVRAnalyzer”    相同的Zip文件包含FCATVRAnalyzer。请在你计划使用的系统上解压缩文件以分析所捕捉的VR数据。这可以是相同的或单独的设备。    和以前一样,我们建议你在C:\FCAT中创建一个名为FCATVRAnalyzer的文件夹,如下所示。    2.4.1为FCATVRAnalyzer安装Anaconda&pyqtgraph    FCATVR是用Python编写。因此,你需要下面数款应用程序。    2.4.1.1Anaconda    FCATVR所需的第一个独立软件是Python软件Anaconda。请前往这里下载:    在安装过程中,确保选择“AddAnacondatothePATHenvironmentvariable”,并选择“RegisterAnacondaasthedefaultPython3.6”(如下所示)。    2.4.2pyqtgraph    脚本用于生成图表和绘图的第二个独立软件是pyqtgraph。    要安装pyqtgraph:    安装Anaconda后,在任意位置打开具有管理员权限的命令窗口。    在管理员命令行键入以下内容:python-mpipinstallpyqtgraph==0.10.0    注:如果Python在安装后无法运行,你可能需要重新启动。    3.如何使用FCATVRCapture    FCATVRCapture适用于所有版本的Windows,所有DirectXAPI,所有GPU,以及OculusRift和HTCVive。但是,它目前尚不支持OpenGL。    双击FCAT_Capture.exe启动FCATVRCapture。(注:请确保在启动FCATVRCapture之前关闭FRAPS。作为附加步骤,建议你禁用其他应用程序的叠加,从而确保它们不会遮盖FCATVRCapture。)    在Benchmark文件夹位置选择BROWSE按钮,选择将存储基准测试结果的首选目录。    指定捕捉延迟和持续时间:捕捉延迟:捕捉将在“延迟”秒数后开始。将此值设置为0会立即开始捕捉。捕捉持续时间:经过“持续时间”秒数后,捕捉将自动停止。将此值设置为0将禁用捕捉。    启动VR应用程序。头显右侧将出现一个红条,表示FCATVRCapture当前正在运行。指示灯颜色图例:绿色=捕捉正在进行中闪烁绿色和红色=延迟启动    红色=捕捉停止。    按下SCROLLLOCK开始基准测试。红条将变为绿色,表示基准测试正在进行中。注意:此时FCATVRCapture仅支持SCROLLLOCK作为基准热键。在任何时间点,如果计划或正在运行捕捉(指示灯闪烁或绿色),按下SCROLLLOCK将停止捕捉。要再次开始捕捉,请按下SCROLLLOCK。    再次按下SCROLLLOCK停止基准测试。    退出VR应用程序并返回FCATVRCapture。单击“OPENFOLDER”以查看基准测试结果。    FCATVRCapture生成的结果将保存为带有时间戳名称的目录。你可以重命名目录以反映测试的GPU,游戏和设置。注意:我们强烈建议你使用下一节中列出的目录结构来获取数据    在结果目录中,你需要使用文件名中包含单词“Merged”的文件以生成数据。    3.1排序捕捉的数据    FCATVRCapture创建三个文件。始终在Analyzer中使用包含“Merged”名字的文件。    建议你将通过FCATVRCapture捕捉的数据放在下面的目录结构中。    将C:\FCAT目录作为你的基础目录,然后创建一个\DATA文件夹以存放你捕捉的VR数据信息。    为你捕捉的VR数据使用上文所提到的文件夹命名方法:C:\FCAT\DATA\\\\    注:在这个示例中用于的文件夹是面向LMS和MRS捕捉。    这是基于上面示例的文件夹结构:    C:\FCAT\DATA\GTX1060\Everest\MediumSettings\LMS0    注:你可以在文件夹名称中使用短划线,下划线或空格。    使用这样的文件夹结构可以帮助FCATVRAnalyzer软件更轻松捕捉你希望包含在图表中的GPU,游戏,设置和其他信息。    4.如何分析捕捉的FCATVR数据    流畅度对VR游戏而言非常重要,用户可以通过几种不同的方式来评估可能影响游戏流畅度的卡顿。最重要的方法是简单地体验VR并评估具体的感受。是否有抖动呢?有卡顿吗?平移头部以感受场景变化,感受它在运动过程中的流畅程度。    FCATVR适用于FRAPS和新的FCATVRCapture帧时间数据。本节介绍如何使用FCATVR。    4.1运行FCATVRAnalyzer    安装上述软件后,你应该能够通过双击(打开)FCAT.py并运行FCATVRAnalyzer,如下所示。    4.1.1文件关联    如果FCAT.py与Python无法正确关联,你将需要手动设置关联。请按照以下说明执行此操作:    在Windows文件资源管理器中右键单击FCAT.py,然后选择打开方式…    选择始终使用此应用程序打开.py文件,然后单击“Moreapps”。    这时你将看到一堆应用程序。单击“LookforanotherapponthisPC”。    你现在需要转到Anaconda3文件夹中Python.exe的位置。    选择Python.exe并单击“Open”按钮。    FCAT.py现在应该与Python.exe成功关联。所有.py文件现在都有与之关联的Anaconda图标(如下所示)。    4.1.2启动FCATVRAnalyzer    在启动后,FCATVRAnalyzer看起来将如下所示:    要获取数据,请从Windows资源管理器中选择\data文件夹,然后用鼠标将其拖到FCATAnalyzer程序中。始终从\data文件夹拖动。这是包含上述子文件夹的文件夹。请参阅以下示例:    C:\FCAT\DATA\\\\    注:你可以将多个GPU文件夹拖进FCATVRAnalyzer。事实上,数量没有任何限制。    将文件夹拖到左上角区域,如下所示:    你的数据应该看起来像是这样:    4.2应用区域与元素    FCATVRAnalyzer应用程序包含三个区域,你可以根据需要使用鼠标调整每个区域的大小。    4.2.1输入文件或目录区域    主要部分允许你组织和操作所捕捉的VR数据。你可以在这里对数据进行筛选,排序和重命名。    4.2.1.1过滤器    使用过滤器是分类大量数据的好方法。有些过滤器可以包含和排除任何数据列中的数据。下拉菜单允许过滤最多四列数据。你可以通过选择下拉菜单,并选择要过滤的另一个列标题来更改这些列标题(如下所示)。    4.2.2数据区域    单击数据行以选择,然后再次单击它以取消选择。通过在数据上单击并向下拖动鼠标可以选择多行,按Ctrl+A可以选择所有数据。  

      单击“ClearSelection”将清除已选定的任何数据,单击“ClearFiles”将从数据窗口中删除所有数据。单击“HideUnselected”将隐藏当前未选中的数据。    4.2.3保存选定的数据    单击“SaveSelectedStats”将打开一个窗口,其中所选数据可以保存为.CSV文件(如下所示)。    4.2.4日志区域    日志窗口将在出错时提供相关的信息。这些数据可以保存并发送到英伟达以帮助进行故障排除。    4.2.5绘图区域    单击“Plot”按钮将为所有已选择的数据创建图表。单击“Save”按钮则将绘图保存为.PNG文件。(注意:目前最多支持八个数据集。)    4.3制作和操作图表    4.3.1使用鼠标    你可以使用鼠标轻松移动绘图线。这允许图表根据需要居中和缩放。    使用中间的鼠标滑轮来进行缩放:    选择一条线会将其变为白色,这表明它已被选中:    注意:蓝色垂直线是使用鼠标选择图表线的位置,黄色垂直线将随着鼠标在图上移动而一直跟随鼠标。    4.3.2PlotMenu    右键单击绘图将显示绘图菜单。这允许你操作所选择的绘图线。    4.3.3SetColor    你可以使用这个选项来更改绘图线条颜色。首先,单击以选择图表线(将其变为白色),然后右键单击绘图并选择“SetColor”。    在此示例中,我们选择绿色来作为新线条的颜色。    4.3.4SetRegion    使用此选项可裁剪图表线。当数据位于基准区域之外(如菜单)时,这非常有用。这些额外数据不仅在图表上看起来不正确,而且还会对FPS数据产生负面影响(以及其他数据,包括一系列的丢帧和合成帧)。    使用蓝色线和黄色线设置区域。首先,选择要裁剪图表线的起点(左键单击),然后右键单击选择结束点。    当选定后,选择“SetRegion”。    注意:FPS和其他数据将受你设置的新区域影响。    4.3.5SetRegion(all)    你可以同时裁剪多条线。    我们决定将区域设置在2秒到12秒之间。    4.3.6Moveto0.0(all)    这个设置允许所有线图重新排列到图表上的0秒开始时间。使用蓝色和黄色垂直线设置这些区域后,右键单击绘图并选择“Moveto0.0(all)”。    一旦完成,所有的线条应该将从X轴上的0秒点开始。    4.3.7ClearTimes    请注意上面示例中使用的图表线是如何正确对齐。你最好首先移动线条,然后通过设置区域来裁剪它们。    要撤消裁剪,请选择图表线,单击鼠标右键,然后选择“ClearTimes”。    注:你需要单独为每条线执行这个操作。    4.3.8ClearTimes(all)    原理与ClearTimes一样,但将对所有线条产生影响。    4.3.9MoveDataset    要移动图表线,请使用鼠标左键选择要移动的新区域。这将放置一条蓝色垂直线。然后使用鼠标右键单击绘图,将黄色垂直线放在要移动图表的位置。    单击“MoveDataset”后,图表线将移动到该区域。如果你不小心移动到了错误的位置,你只需选择这条线,右键单击绘图,然后选择“ClearTimes”以重置图表线。    4.3.10MoveDatasetto0.0    这将重新对准所有的图表线,回到X轴的0秒位置。    4.3.11AddtoIntervalPlot    IntervalPlot显示新帧,合成帧和丢帧数据。要创建IntervalPlot,请选择图表线,右键单击绘图,然后选择“AddtoIntervalPlot”。    IntervalPlot可清晰显示在SW捕捉期间VR应用程序出现的合成帧和丢帧。对于设置为MRS0的《Everest》,我们可以看到在2.5至6秒之间显示了合成帧,其中图表线偏离于11.1ms的上方。    要添加另一个IntervalPlot,只需选择另一条图表线,右键绘图区域,然后选择“AddtoIntervalPlot”即可。    这次我们选择MRS3图表线,我们可以看到没有合成帧或掉帧的情况出现。    通过以下步骤,你现在可以显示性能,帧时间,二次投影和丢帧的综合概述,立即说明VR游戏体验的质量。通过组合几个图表,你可以直接比较不同设置的性能,进一步改善结果的呈现方式。    5.初次FCATVR基准测试的推荐游戏    英伟达的技术营销团队与媒体机构,硬件厂商和游戏开发商进行了密切合作,以确定易于获得一致结果且易于访问的游戏和基准测试场景,从而帮助你试水FCATVR基准测试。    其中一些游戏还包括NVIDIAVRWorks增强功能,可提高性能和图像质量。借助FCATVR,你可以首次正确测量和显示这些技术的优势。    6.NVIDIAVRWorks综述    NVIDIAVRWorks软件是包含API,示例代码和VR开发者库的完整套件。无论是开发突破性VR应用还是设计下一代头显,NVIDIAVRWorks都能帮助开发者带来最高性能,最低延迟和即插即用的兼容性。VRWorks包括以下功能:    6.1面向头显开发者的NVIDIAVRWorks    对于DirectMode,NVIDIA驱动将VR头显视为只能通过VR应用访问你的头戴式显示器,而非常规的Windows显示器,从而为VR头显提供更好的即插即用支持和兼容性。    ContextPriority可帮助头显开发者更好地控制GPU排程以支持先进的VR功能,如异步时间扭曲(可减少延迟和快速调整图像,无需重新渲染新帧。    FrontBufferRendering可直接渲染至frontbuffer,从而减少延迟。    6.2面向应用开发者NVIDIAVRWorks    Multi-ResShading是一种面向VR的全新渲染技术,其中图像的每个部分都以更匹配扭曲图像像素密度的分辨率进行渲染。Multi-ResShading采用了Maxwell的多重投影架构来在单通道中渲染多个视口,从而实现显著的性能提升。    LensMatchedShading采用了帕斯卡显卡的全新同步多重投影架构来在像素着色方面实现显著的性能提升。这项功能在Multi-ResShading的基础上进行了优化,渲染至更接近镜头校正图像的表面。这避免了渲染将在最终视图中丢弃的像素。    传统而言,VR应用程序需要绘制两次几何图形,一次左眼,一次右眼。单通道立体视觉采用了帕斯卡显卡的全新同步多重投影架构,只需绘制一次几何图形,然后同时向左眼和右眼视图投影几何体。这允许开发者有效将VR应用的几何复杂度加倍,进一步丰富虚拟世界的细节。    VRSLI为虚拟现实应用程序提供了更高的性能,可将多枚GPU分配给特定的眼睛(为每只眼睛分配相同数量的GPU,从而显著加速立体渲染。借助GPUaffinityAPI,VRSLI支持搭载两枚以上GPU的系统进行扩展。    另外,NVIDIAVRWorks还包括满足专业VR环境的组件,如CaveAutomaticVirtualEnvironments(CAVEs),沉浸式显示和群集解决方案。    我们将详细介绍Multi-resShading和VRSLI。更多关于NVIDIAVRWorks的信息,请访问这个页面 。    6.2.1Multi-ResShading(MRS)    Multi-ResShading这种渲染技术可以在不影响感知图像质量的情况下帮助减少渲染成本。屏幕分成多个视口,通过使用Maxwell和PascalGPU基于硬件的多重投影功能,其可以将整个场景几何体广播至每个视口,并且快速剔除(抛弃)不触及特定视口的几何体。外部视口图像以较低分辨率渲染,而中心视口则以全分辨率渲染。整体性能可以得到改善,同时不降低感知图像质量。    6.2.1.1镜头畸变与扭曲图像的问题    虚拟现实头显上的图像必须进行扭曲以抵消透镜的光学效果。    图像看起来不是四方四正,而是有点扭曲和失真,但当通过合适的透镜进行观看时,图像将正确显示。    GPU本身不会渲染这种扭曲的视图。相反,当前的VR平台采用两步过程:首先渲染正常图像(左),然后第二次执行后处理过程,重新采样并将图像预扭曲成失真视图(右)。尽管这种解决方案有效,但效率低,因为边缘处出现过采样。    在上图中,中心位置(绿色)几乎不受影响,但侧面(红色)被压扁。结果是,在创建最终的扭曲图像时,将丢弃沿边缘的许多渲染像素。  

  生成稍后将被丢弃的像素低效且浪费。    6.2.1.2细分和缩放    Multi-ResShading的工作原理是将图像细分为单独的视口。如上所述,Maxwell和Pascal多重投影硬件功能可以将场景几何体发送到每个视口,无需额外处理(除了剔除不触及视口区域的几何体)。    每个随后都会被扭曲,而且图像该部分内所需的最大采样分辨率更接近最终显示的像素。中心视口也会扭曲并几乎保持相同。这可以更好地近似扭曲图像,但不会出现过度着色。另外因为着色像素更少,渲染速度就越快。根据Multi-ResShading的设置,节省的像素可以达到像素的25%到50%,这转化为1.3倍到2倍的像素着色加速。    Multi-resShading现已集成到Epic的UE4引擎中。基于UE4的VR应用程序,例如SólfarStudios的《EverestVR》和Thunderbird:InnerVisionGames的《LegendBegins》也已经集成了这项技术,而且更多的应用将紧跟其后。    Multi-ResShading与Unity和MaxPlay引擎的集成的正在进行中,届时将能帮助更多的VR开发者轻松将其集成至应用程序之中。    6.2.1.3智能超级采样    在某些情况下,MRSLevel(MRS1)将通过对中心视口进行超级采样来提高质量。质量的提高可能会导致性能下降。在当前的Unreal4引擎中,MRSLevel1是相对于镜头参数定义,这将提高视觉质量,同时不会因典型的采样方法而导致性能下降。    6.2.1.4MRS的好处    由于MRS降低了VR游戏的渲染成本,因此可以提高质量设置。例如,当使用Multi-ResLevel2时,GeForceGTX1060可以将《RawData》中预设的图形质量从Low增加到Medium。    当禁用VRWorks的时候,你必须使用更低质量的设定,这部包括抗锯齿或阴影。    VRWorks和MRS可以支持更高质量的设定。MediumPreset和更高质量的阴影令控制面板看起来更逼真和更细腻。    6.2.2LensMatchedShading(LMS)    由于市场对VR应用的兴趣出现了爆炸性的增长,这增加了支持渲染非共面投影显示器的重要性。VR显示器在用户和显示器之间设有透镜,而后者会令图像看起来扭曲和失真。为了令图像看起来是正确显示,我们必须采用特殊的投影技术来进行渲染,从而反转透镜失真。接下来,当用户通过透镜观看图像时,它看起来将不会失真。    传统的GPU不支持这种类型的投影。相反,它们仅支持具有均匀采样率的标准“共面”投影。使用传统GPU生成正确的最终图像需要两个步骤:首先,GPU必须使用标准投影渲染,生成比所需更多的像素;第二,对于输出显示表面中的每个像素位置,需要从第一步的渲染结果中查找像素值以应用于显示表面。    如果没有LensMatchedShading,VR头显将渲染一个矩形,然后再将其挤压成显示器和透镜的尺寸。    单通道图像    正确观影所需的最终图像    这个过程渲染的像素比所需多出86%,而LensMatchedShading可以修复这种性能损失。为实现这一目标,Pascal的同步多重投影(SimultaneousMulti-Projection)技术将原始矩形输出分为四个象限,并将它们调整为最终图像的近似形状。    开启LensMatchedShading的单通道图像    最终图像    在技术方面,头显中显示的最终图像是单眼110万像素,没有开启LensMatchedShading的单通道图像是单眼210万像素,而LensMatchedShading仅为单眼140万像素。这可以将像素着色的吞吐量提高50%,相比于Multi-ResShading,这意味着性能提升了15%,而且外围图像质量没有任何降低。    确定LensMatchedShading参数的一个步骤是,检查相较于最终图像所需采样率的采样率。LensMatchedShading的默认“保守”设置是始终匹配或超过最终图像的采样率。下图比较了LensMatchedShading图像:    相较于最终图像的单通道图像采样率    蓝色表示以高于所需采样速率采样的像素,灰色表示匹配的速率,而红色像素则表示初始采样低于最终图像中的速率。没有红色像素则表明设置与目标匹配。    另外,开发者可以选择不同的设置。例如,你可以使用中心分辨率更高而外围欠采样的设置,从而在不会显著降低视觉质量的情况下最大化帧速率。    6.2.3单通道立体视觉(SinglePassStereo)    传统上,VR应用程序必须绘制两次几何图形,左眼一次,右眼一次。单通道立体视觉采用基于英伟达帕斯卡GPU的同步多重投影架构,只需绘制一次几何图形,然后再同时投影几何图形的右眼和左眼视图。这可以帮助开发者有效将VR应用程序的几何复杂度加倍,从而进一步丰富虚拟世界的细节。    6.2.4VRSLI    借助VRSLI,你可以为多枚GPU分配给特定的眼睛,从而显著加速立体渲染。对于包含两枚以上GPU的PC,VRSLI甚至可以进一步扩展。    VRSLI为虚拟现实应用程序提供了更高的性能,可将多枚GPU分配给特定的眼睛(为每只眼睛分配相同数量的GPU),从而显著加速立体渲染。借助GPUaffinityAPI,VRSLI支持搭载2枚以上GPU的系统进行扩展。DirectX和OpenGL支持VRSLI。    6.2.5AFRSLI:不适合VR    交替帧渲染(Alternate-framerendering,AFR)是在传统显示器使用SLI的方法。使用AFRSLI的GPU在整个帧上进行权衡。在两枚GPU的情况下,第一枚GPU渲染偶数帧,第二枚GPU渲染奇数帧。GPU启动时间错开半帧以维持向显示器定期传输帧。    相对于单GPU系统,AFRSLI可以很好地提高帧速率,但它对延迟没有帮助。所以这种方法不是VR的最佳模型。    6.2.6VRISLI工作原理    使用两枚GPU进行VR渲染的更好方法是,分开两枚GPU绘制单个帧的工作。对于VRSLI,这意味着在各自的GPU上渲染单眼帧。    左眼帧由第一枚GPU渲染,右眼帧同时由第二枚GPU渲染。    通过两枚显卡并行化渲染左眼帧和右眼帧可以大大提高性能,相对于单GPU系统,VRSLI可以提高帧速率和降低延迟。    请注意,与使用NVIDIA驱动程序中的配置文件的传统AFRSLI不同,VRSLI需要应用程序端集成才能实现性能扩展。VRSLI现已集成到Valve的《TheLab》,工业光魔的《TrialsonTatooine》和Croteam的《SeriousSamVR:TheLastHope》等应用程序中,更多的集成正在进行中,包括UE4,Unity和MaxPlay引擎集成。    7.NVIDIAVRWorks基准测试    如果你使用的是GeForceGTX10系列显卡,你可以利用所有的VRWorks技术来提高性能和优化图像质量。下面是可以说明Multi-ResShading,LensMatchedShading和VRSLI优势的基准测试。    7.1EverestVR|MRS和LMS    要访问《EverestVR》中的MRS设置,请按下Vive控制器上的菜单按钮,然后选择图形设置。这时你将看到“图形设置”菜单,而第一个设置选项为Multires。请通过“-”或“+”按钮在不同的MRS设置之间进行切换。    注意:为更容易进行区分,下面设置提供了命名。    推荐采用以下NVIDIAGeForceGTX显卡:    “MediumSettings”:GeForce1060    “HighSettings”:GeForceGTX1080或以上    7.1.1EverestVR|LMS硬件要求    要访问《EverestVR》中的LMS设置,请按下Vive控制器上的菜单按钮,然后选择图形设置。这时你将看到“图形设置”菜单,而第一个设置选项为Multires。请通过“-”或“+”按钮在不同的LMS设置之间进行切换。    注意:为更容易进行区分,下面设置提供了命名。    7.1.2设置解释    LensMatchedShading(LMS):英伟达特有的优化,这项功能可以避免渲染在最终视图中丢弃的像素,从而提高像素着色性能。MRS支持Maxwell和Pascal架构显卡。    WeatherEffects:它控制整个体验中用于模拟天气的粒子效果量。默认值为0.4,而0.0则将其关闭。值越高,效果越明显。    SuperSampling:默认情况下,Unreal渲染到比Vive显示高40%的屏幕缓冲区,并将结果缩小到原始分辨率。这可以带来更清晰的纹理。默认设置显示为140。增加屏幕百分比将令图像越来越清晰,但代价是性能。高端GPU应该拥有更多的空间来显著提升这方面。    LODDistance:根据离用户的距离,几何体呈现一系列越来越高的细节层次。这个乘数会影响更高密度几何体的激活距离。  

  越低越好。    7.1.3Everest|FCATVRMRS图表    下面比较了GTX1060,GTX1080和GTX1080TiGPU的MRS设置。这些数据是使用FCATVRSoftwareCaptureTool所进行捕捉(可以捕获并分析VR游戏中的丢帧和未扭曲)。FCATVRDataAnalyzer则用于生成图表。    EverestMRS+GTX1060|“MediumSettings”    EverestMRS+GTX1080|“HighSettings”    EverestMRS+GTX1080Ti|“HighSettings”    7.1.4Everest|FCATVRLMS图表    下面比较了GTX1060,GTX1080和GTX1080TiGPU的LMS设置。这些数据是使用FCATVRSoftwareCaptureTool所进行捕捉(可以捕获并分析VR游戏中的丢帧和未扭曲)。FCATVRDataAnalyzer则用于生成图表。    EverestLMS+GTX1060|“MediumSettings”    EverestLMS+GTX1080|“HighSettings”    EverestLMS+GTX1080Ti|“HighSettings”    7.2NVIDIAVRFunhouse|MRS    《VRFunhouse》采用了最热门的模拟与渲染技术,从而带来了一款十分引人入胜的VR游戏。《VRFunhouse》基于Unreal引擎开发,并采用了以下用于3A游戏开发的技术:    Destruction:摧毁刚性身体    HairWorks:业内最佳的毛发    Flow:体三维火焰与烟雾    FleX:基于粒子的物理液体与固体    VRWorks:用于实现更快性能的先进VR渲染技术    7.2.1VRFunhouse|MRS硬件要求    注意:选择这些设置是为了最好地显示MRS扩展。    7.2.2获取合适的《VRFunhouse》版本    为修改《VRFunhouse》中的MRS设置,你必须使用特定的《VRFunhouse》版本。请遵循以下步骤:    在Steam上订阅《NVIDIAVRFunhouse》    在Steam右键单击《NVIDIAVRFunhouse》并选择“属性”    选择Betas选项卡    选择beta列表下拉箭头。    选择“1.3.3-1157350-vrworks-mrs”。    Steam将自动下载包含改动MRSLevel的小键盘的beta版本。    在《VRFunhouse》中改动MRS设置。当获取了1.3.3-1157350-vrworks-mrs版本的《VRFunhouse》后,你就可以使用以下数字键在游戏中更改MRSLevel。为每个MRSLevel键入以下内容:    MRS0:Num0    MRS1:Num1    MRS2:Num2    MRS3:Num3    重点注意:每次启动新Level时,设置都会重置。确保在测试前再次设置MRSLevel。    7.2.3BenchmarkVRFunhouse    每次更改场景(迷你游戏)时,MRS设置都会自动更改。因此,请确保在每个场景的开头选择适当的MRSLevel。    在VR中运行基准测试时,运行间差异可能会带来严重问题,特别是对于涉及机会的场景。出于这个原因,我们建议使用ClownPainter场景来对《VRFunhouse》进行基准测试。请遵循以下步骤:    在Steam启动《NVIDIAVRFunhouse》。    从开始场景中选择右侧的“设置”按钮。    选择适当的设置级别。    按下键盘上的数字1按钮以加载ClownPainter场景。    按下小键盘上的相应数字来选择适当的MRSLevel。    使用FCATVRSoftwareCapture进行基准测试。    用一只手持枪射击小丑的嘴,直到气球破裂或枪支耗尽弹药。    该手停止射击,让枪支充电。    用另一只手继续朝小丑的嘴射击。    交替重复30-60秒。目标是始终进行射击,并与场景中的几何体进行交互。    停止基准测试。    7.2.4VRFunhouse|FCATVRMRS图表    下面比较了GTX1060,GTX1080和GTX1080TiGPU的MRS设置。这些数据是使用FCATVRSoftwareCaptureTool所进行捕捉(可以捕获并分析VR游戏中的丢帧和未扭曲)。FCATVRDataAnalyzer则用于生成图表。    VRFunhouseMRS+GTX1060|LowSettings    VRFunhouseMRS+GTX1080|HighSettings    VRFunhouseMRS+GTX1080Ti|HighSettings    7.3SportsBarVR|MRS    《SportsBarVR》不仅只是展示了如何在VR空间体验桌球物理。玩家将能够与各种对象交互,使用任意盘子,瓶子和其他物品来实现花式击球,开玩虚拟飞镖,并将空啤酒瓶扔到墙上。    凭借最先进的专有物理引擎,《SportsBarVR》旨在通过最酷炫的VR空间来提供最具交互性的VR桌球体验。    7.3.1SportsBarVR|MRS硬件要求    选择预设后,请考虑以下超级采样和锐化设置。    MRS设置可减少GTX1080上丢帧和未扭曲的情况。MRS2设置则可以完全消除丢帧和未扭曲。    7.3.2在《SportsBarVR》中调整MRSLevel    可以通过按下CTRL+0,1,2,3来调整《SportsBarVR》中的MRSLevel。MRSLevel0是“禁用”。MRSLevel与GPU渲染时间和丢帧相反:随着MRSLevel的增加,GPU渲染时间和丢帧数量减少,从而提供更好的用户体验。    MRS0:CTRL+0(MRSoff)    MRS1:CTRL+1(MRSLevel1)    MRS2:CTRL+2(MRSLevel2)    MRS3:CTRL+3(MRSLevel3)    注意:更改MRSLevel时请勿使用小键盘。这可能会导致OculusRift更改ASW模式,从而令测试结果无效。    注意:默认情况下《SportsBarVR》启用MRS。如果你计划测试MRS的效果,请为每次测试显式选择MRSLevel。    7.3.3SportsBarVR|FCATVRMRS表格    下面比较了GTX1060,GTX1070和GTX1080GPU的MRS设置。这些数据是使用FCATVRSoftwareCaptureTool所进行捕捉(可以捕获并分析VR游戏中的丢帧和未扭曲)。FCATVRDataAnalyzer则用于生成图表。    SportsBarVRMRS+GTX1060|MediumSettings    SportsBarVRMRS+GTX1080|UltraSettings    SportsBarVRMRS+GTX1080Ti|UltraSettings    7.4RawData|MRS    2271年日本新宿,看似正义的伊甸集团正统治着世界。精英黑客抵抗运动SyndiK8揭开了伊甸集团最新机器人产品背后的阴险现实。作为SyndiK8的顶级特工之一,你的任务很简单:渗透伊甸园大厦,窃取特定的数据,并活着离开。    这是一款从零为虚拟现实开发的作品,《RawData》的动作战斗玩法,直观的控制,凶恶的敌人,以及科幻氛围可以将完全沉浸在虚拟现实世界之中。游戏支持单人模式或多人合作模式,而你将成为一名英雄并踏上刺激的冒险之旅,测试自己的智慧,勇气和耐力。    这款VR动作游戏为你提供了先进的武器库和尖端的纳米技术。支持运动追踪的共享空间鼓励玩家通过肢体语言和环境交互来进行物理通信。    7.4.1RawData|MRS硬件要求    请前往《RawData》的主菜单,选择“Options”,然后是“Graphics”。“Graphics”设置的最后一个条目是Multi-ResLevel,然后你可以自行选择:off,1,2和3。    7.4.2RawData|FCATVRMRS表格    下面比较了GTX1060,GTX1080和GTX1080TiGPU的MRS设置。这些数据是使用FCATVRSoftwareCaptureTool所进行捕捉(可以捕获并分析VR游戏中的丢帧和未扭曲)。FCATVRDataAnalyzer则用于生成图表。    RawData+GTX1060|LowSettings    RawData+GTX1080|EpicSettings    RawData+GTX1080Ti|EpicSettings    7.5VRSLI游戏    VRSLI为VR应用程序提供了更高的性能,可以为特定的眼睛分配GPU,从而显著加速立体渲染。借助借助GPUaffinityAPI,VRSLI支持搭载2枚以上GPU的系统进行扩展。    7.5.1SeriousSamVR:TheLastHope|VRSLI    模拟物理需要非常高的处理能力,我们通过应用NVIDIAVRWorks技术(包括Multi-ResShading和VRSLI)来提高渲染性能。    7.5.2VRSLI硬件要求    在《SeriousSamVR:TheLastHope》主菜单中选择“Options”,然后是“Performance”。    注意:选择这些设置是为了最好地显示VRSLI扩展。    7.5.3SeriousSamVR:TheLastHope|FCATVRSLI表格    下面比较了GTX1080和GTX1080TiGPU的MRS设置。这些数据是使用FCATVRSoftwareCaptureTool所进行捕捉(可以捕获并分析VR游戏中的丢帧和未扭曲)。FCATVRDataAnalyzer则用于生成图表。    SeriousSamVRSinglevs.SLIGTX1080|UltraSettings    SeriousSamVRSinglevs.SLIGTX1080Ti|UltraSettings    7.6TrialsonTatooine|VRSLI    模拟物理需要非常高的处理能力,我们通过应用NVIDIAVRWorks技术(包括Multi-ResShading和VRSLI)来提高渲染性能。    7.6.1TrialsonTatooine|VRSLI硬件要求    在主菜单选择所需的预设,然后再选择开始。    注意:选择这些设置是为了最好地显示VRSLI扩展。    7.6.2TrialsonTatooine|FCATVRSLI表格    下面比较了单枚显卡vs(双)SLIGPU。这些数据是使用FCATVRSoftwareCaptureTool所进行捕捉(可以捕获并分析VR游戏中的丢帧和未扭曲)。FCATVRDataAnalyzer则用于生成图表。    TrialsonTatooinewithSinglevs.SLIGTX1080|UltraSettings    TrialsonTatooineSinglevs.SLIGTX1080Ti|UltraSettings    8.总结    在这之前,虚拟现实测试依赖于通用基准测试工具,综合测试和零件拼装解决方案,而它们难以说明显卡的真实性能。  

  借助FCATVR,我们可以读取一系列的数据,如英伟达驱动程序,OculusRift的EventTracingforWindows(ETW),以及HTCVive的SteamVR性能API数据,从而为所有显卡生成精确的VR性能数据。    换句话说,我们现在可以看到所有GPU在运行VR游戏时的真实性能,为消费者的购买决策提供准确的信息。对于测评者,他们可以首次准确衡量GPU,令他们的深入评估更加有用和更加权威。            文章来源:映维网如转载请标明出处    原文链接:https://yivian.com/news/52908.html...。  

收起

相关推荐

相关应用

平均评分 0人
  • 5星
  • 4星
  • 3星
  • 2星
  • 1星
用户评分:
发表评论

评论

  • 暂无评论信息