目前VR设备基于处理能力和体验效果可以分为Premium VR、Mainstream VR 以及 Entry-Lever VR. Premium VR 代表的是高端 VR,这类产品以高配置、性能非常好的 PC 或者游戏主机为基础,目前市场上支持此类型VR的外设主要提供商是HTC Vive,Oculus Rift和Sony PS VR。Mainstream VR代表是性能达不到高端VR的硬件处理能力,但是还是PC处理器为计算能力的VR设备。入门级的VR是包括所有的移动VR设备,例如 Gear VR,也S包括利用手机芯片作为计算设备的VR眼镜和一体机。
本文主要讲基于PC的Vive和Rift的游戏测试和分析方法。VR游戏相对传统PC游戏主要有三个方面的不同:玩法设计,输入方式,性能要求。因为玩法和输入不在本文考虑的范围内,所以来看看性能要求方面和传统游戏的区别,为了防止VR游戏带来的不适感,头盔厂商都要求帧率稳定达到90FPS。因为目前HTC VIVE和Oculus Rift CV1的分辨率都是2160*1200,除了账面分辨率之外,实际渲染时为抵消透镜畸变带来的分辨率损失需要超采样,Oculus Rift CV1和HTC Vive都为140%,所以VR的每秒像素处理量达到惊人的457millions。因此,要达到如此之高的要求,性能测试和分析是VR游戏不得不考虑的一个环节,以保证充分利用所有的CPU和GPU的处理能力。那么一般是如何测试和分析VR游戏的呢?
在测试之前,Oculus需要关闭Asynchronous Spacewarp,SteamVR需要关闭reprojection,以免VR Runtime补偿介入影响到后面的性能分析。
打开Oculus SDK Program Files\Oculus\Support\oculus-diagnostics\OculusDebugTool.exe 可以disable ASW。
图 1.ASP配置
SteamVR可以在setting/performance 里disable reprojection功能。
图 2.Steam VR 配置
工欲善其事必先利其器,工具在VR游戏的测试分析中能起到至关重要的作用。在测试和分析过程中主要用的工具有:Fraps, 游戏加加,UE console command, Windows Assessment Development Kit (ADK),Steam VR Frame Timing,GPA 等.
Fraps是个传统的测试FPS/frametime的工具,可以用这个工具测试一段时间的最大帧率,最小帧率和平均帧率,并且很方便地导入到excel文件生成图形,如下图所示,从图形中可以大致看出游戏整个过程的帧率变化是否平滑。而且,这个工具也很方便截图,将有问题的画面保存下来以方便汇报给ISV确认。
图 3.FPS显示一段时间内游戏的帧率变化
表 1.Fraps生成的一段时间内游戏的帧率变化的最大帧率,最小帧率和平均帧率
上面的数据来看,此游戏在此段场景下大部分时间帧率比较低,只有大概45FPS,完全达不到HTC的要求,在这种性能下,玩家也会感觉到头晕症状。这个时候我们可以用Windows Assessment Development Kit (ADK) 里面的GPUVIEW 来分析下是GPU还是CPU方面的问题。
Fraps是一个国外的小而美共享软件,但是目前很久没有更新,国内也有一个类似的benchmark软件游戏加加。运行时这个工具窗口会自动的吸附在游戏窗口上面,可以实时显示帧数FPS、CPU温度、CPU占用率、显卡温度、显存使用情况、显卡占用率等,如下图所示。另外fraps也不能测试dx12的游戏,不过可以用另外一个工具PresentMon来统计FPS数据。
图 4.游戏加加的实时数据显示界面
通过贴在游戏上面的框可以实时地了解到游戏的更具体运行情况,但是不管是Frasp还是游戏加加都是为传统游戏而设计的工具,只能在显示器上显示,而VR游戏玩家都是戴着头盔,并不能实时看到显示器上游戏的数据变化,所以也不能定位到具体哪个场景需要优化,如果要在头盔里看实时的性能数据怎么办呢?有两个方法可以看到,一是如果此游戏是基于Unreal Engine的话可以用console command “stat FPS”。另外一个方法是通过Steam VR frame timing方法,可以在头盔和显示器均看到实时性能数据。
Steam VR frame timing的设置方式可参考链接:https://developer.valvesoftware.com/wiki/SteamVR/Frame_Timing 。
下图显示的是Steam VR frame timing的数据:
图 5.HDM中显示掉帧的情况
当游戏的场景帧率出现掉帧的时候,在HDM上就会显示Missed Frames框,出现红色的竖条,上面这个场景就出现了掉帧的情况,而且红色竖条密度越高,掉帧的频率就越高。
图 6.PC上显示CPU和GPU的运行情况
上面是在PC显示器上显示的更详细数据,当然也可以点击上面show in headset来显示在HDM中,这个图里蓝色部分显示的是GPU的渲染时间,other的棕色部分是GPU的空闲时间,上图可以看出,有些帧的GPU的渲染超过11.11毫秒,会错过Vsync的时间导致掉帧,所以这些帧达不到90FPS。从这个工具我们可以初略地认识GPU bound,但是并不能确定是否是CPU render 线程没有及时给渲染命令导致GPU有Bubble还是GPU渲染的时间过长。
通过UE 的console command 工具也可以查看实时的游戏性能数据,不过前提条件是游戏必须是用UE引擎开发,同时是开发版本,而不是release版本。在游戏运行中按~键可以调出命令行。几个常用的命令如下:
…
查看全文
了解更多相关内容,请关注CSDN英特尔开发专区!