五年资深VR玩家,教你PCVR串流质量怎么优化?
VR的使用成本挺高的,我接触VR将近5年了,从一个VR小白到大概搞懂VR走了不少弯路。应朋友的邀约,将我这5年来捣腾出来的一些经验分享给大家。
VR涉及很多概念,像串流、分辨率、运行时环境、补帧、超分、固定注视点渲染等等。先计划按如下框架说,争取能说明白。本专题的中心思想,从PC到PCVR需要消耗成倍的电脑性能,但我们可以通过各种“黑科技”再找回来!
- PCVR入门:从PC到PCVR一定要知道的3点基础知识
- PCVR的分辨率:屏幕分辨率、渲染分辨率与串流分辨率,相互之间是啥关系?
- PCVR的运行时环境——Runtime:SteamVR、OculusVR和OpenXR,该选谁?
- PCVR的帧数翻倍技术——补帧:SteamVR的运动平滑、OculusVR的ASW及VD的SSW等
- PCVR的画质翻倍技术——超分:PC机上用的DLSS、NIS、FSR、CAS及VR一体机上用的SGSR等
- PCVR的性能提升工具——OpenXR Toolkit:性能再提升20%,仅适用于OpenXR运行时环境
- 待补充
一、PCVR入门:从PC到PCVR一定要知道的3点基础知识
从PC游戏到PCVR游戏,它要额外处理三个东东:一是加大视场角,类似相机的超广角镜头,并用一个接近1:1的纵横比去取景,要让玩家目之所及全是画面,画面要把玩家全包围,所以FOV值要达到100度以上。二是左右眼两个屏幕上的画面是不一样的,要实现立体感,要让游戏场景里的东西有远近距离。三是要串流,也就是把PC机上的游戏画面实时地传输到VR头显里显示。
1.重新取景。要用超广角且接近1:1的纵横比去取景
视场角要变大,图像纵横比要接近1:1,体现在具体参数上就是分辨率变啦,原来的1920*1080的桌面屏幕玩的分辨率,换到VR里玩,比如用PICO4玩,单眼分辨率变成了2160*2160,同时所能看到的视野范围也更广啦,包括左右视角和上下视角,而且画面也变大啦,玩家视野范围内全是游戏场景画面,就不会有黑边,因为玩家是被画面包围住的,当然现在VR头显大约100度的FOV值还不够大,还没有超过人双眼的FOV值,所以有的VR玩家觉得画面周围会有框。
2.左右眼独立成片。左眼和右眼的画面是不同的,电脑需要同时且独立处理。
现实中,人的每只眼睛看到的视图是不同的,大脑将二者结合起来,形成一个3D立体图像,这就是立体视觉。左眼看到的景象与右眼看到的景象不同,形成了双眼差异,人才能感知到现实世界的远近高低,也就是能感知物体的距离、位置。
现实世界中,人的左右眼用不同视角观看景物会形成立体视觉感知,同样的,人的左右眼观看两张具有一定差异的平面图像,也会形成立体感知。这个原理被运用到VR里啦,VR头显显示的两张图像,这两张图像由两个有一定间隔的虚拟摄像机拍摄而成,每张图像对应用户的一只眼睛,玩家在虚拟世界看景物就和现实世界中看景物的感觉一摸一样啦。
当然,正因为左右眼的画面是不同的,计算机处理图像的时候,就需要独立渲染两个画面。原来的1920*1080的桌面屏幕玩的游戏,只是一个屏幕,电脑只需要实时渲染207万像素。到VR里后,比如分辨率为2000*2000的两个屏幕,电脑需要实时渲染800万像素。所以说,VR玩,相比端游玩,需要双倍的PC性能消耗。
3.VR串流PC。PCVR游戏是安装并运行在PC上的,需要把画面传给VR。
VR串流PC,就是把PC机上的游戏画面实时地传输到VR头显里显示,有两种方式:有线PCVR和无线PCVR,我的第一台就是有线PCVR,有线PCVR厂家都自带有线串流PC的软件的,我玩PCVR的头一年就是有线连PC的,但我受不了那根线,后来就换为VR一体机,并一直用无线串流PC。现在各大VR一体机头显厂商都开发了自己的串流软件,如Oculus的AirLink、PICO的游戏串流助手等等,还有steam都针对quest出了steam link,还有开源的ALVR等,但众多VR玩家还是喜欢用VD,我也一直用它。原因有好多:
一是VD能旁路掉steamvr、Oculusvr。电脑不运行steam和Oculus会节省不少性能。
二是VD的稳定性及低延迟。
三是VD有SSW、SGSR等帧数翻倍、画质翻倍的强大功能,且使用的是VR一体机的性能。
四是VD支持运行时环境openXR(关于运行时环境后面讲),也就是VDXR,性能有提升。
五是VD的兼容性。VD里设置着大量的自定义配置,可以灵活调整画质、刷新率、码率等参数,同时,由于VR硬件和软件的差异性,官方的串流软件可能无法支持所有的VR头戴设备和游戏。而VD可以兼容多平台设备,这对于像我有几个头显的玩家是个不错的选择。
无论你使用哪一款串流软件,都需要一定的电脑配置、需要高速稳定的网络环境和路由器性能,否则会出现卡顿、掉帧、延迟等问题。
开篇的内容有点偏理论,但这是接下来进行相关参数调整的基础。
二、PCVR的分辨率:屏幕分辨率、渲染分辨率与串流分辨率,相互之间是啥关系?
不说晦涩的概念,直接上我最近正在玩的《幻兽帕鲁》的截图。下图是电脑显示屏的截图,分辨率是1920*1080,就是我的电脑屏幕的最大分辨率。
下午VR头显PICO4里面的截图,分辨率是4320*2160,这是双眼合起来的分辨率,实际是两幅看似相同其实并不一样的两幅图,左眼一幅,右眼一幅。单眼分辨率是2160*2160。
VR模式玩PC游戏《幻兽帕鲁》的时候,会同时有三个屏幕:电脑屏幕、VR左眼屏幕、VR右眼屏幕。这三个屏幕可和你一台电脑主机同时外接多个显示器不一样,这三个屏幕的画面是独立运算的,这就是解释了,为什么同一台电脑,用电脑屏幕玩的时候很流畅,但用VR玩的时候却可能会出现卡顿。
我以VR玩《幻兽帕鲁》作示例,关于分辨率的选项,小伙伴们可能会在三个地方看到:
1.游戏本体分辨率,如下图。这个分辨率只影响电脑屏幕的画面清晰度,以及VR头显屏幕的UI的清晰度,不影响VR头显游戏画面的清晰度。(只说结论,不讲原理,下同)
2.VR串流PC时的串流分辨率,如下图是串流工具VD的截图,VD软件为了降低使用门槛,相关分辨率选项直接标识为对应显卡型号,由上到下大约是1500*1500至3000*3000,其是对应VR头显单眼物理分辨率的一定比例来的,不一定是1:1,比如若用QUEST,并选Medium,则分辨率是2016*2112。这项参数影响VR头显画面清晰度非常明显直接,调整此项参数后,需要重启游戏。(不同的串流软件,对串流分辨率的表述是不同的,但都有相关参数选项的)
3.VR转化工具的渲染分辨率,如下图VR转化工具UEVR的截图。调整该参数的效果和串流工具VD里画质参数项是一样的,默认是1,对应的渲染分辨率就是VD里选定的,2016*2112,一摸一样的分辨率数据,同样的,该参数影响VR头显画面的清晰度非常明显直接,与VD的不一样的地方是,调整UEVR参数,游戏清晰度会实时变化,不需要重启游戏。
以上就是VR关于分辨率的相关东东,不知道原理没关系,只要知道在哪里调,不断地试就可以啦。
当然也有好学的小伙伴会问:为什么VR头显里左右眼的画面是桶形的,看着多别捏!为什么不和电脑的的平面屏幕那样四四方方的多好啊!呵呵,我双眼截图出来是桶形的左右两幅图,戴上VR头盔看到的就没有这种桶形边边的啦。这里涉及到VR里特有的画面畸变调整的问题,而且正因为有画面畸变调整,导致渲染分辨率与VR头显的物理分辨率设置存在微妙的关系。有时间,下次再讲。
这节的最后,还是要把相关概念描述补充在这里:
1.分辨率
分辨率,指的是图像在水平方向和垂直方向上的像素数量。通常,分辨率的表示形式为“宽度x高度”,比如1920×1080。分辨率越高,意味着图像的像素数量越多,能够展现的细节也就越多,图像也会更加清晰,当然消耗的电脑性能也就越高。
2.屏幕分辨率
什么是屏幕?这个不用解释啦吧!
什么是屏幕分辨率?就是电脑显示器、VR头显的物理分辨率,它们一生产出来,分辨率就被固定了,比如我的台式机电脑显示器是AOC的27B2,27英寸的,最大屏幕分辨率是1920*1080;我的AMD6850外星人笔记本,最大屏幕分辨率是3840*2160,也就是4K;我的几台VR设备,都是两个屏幕,左眼一个,右眼一个,PICO4的单眼分辨率2160*2160,QUEST3的单眼分辨率是2064*2208。
3.串流分辨率
什么是串流?常说的pcvr串流,就是把PC机上的游戏画面实时地传输到VR头显里显示。
什么是串流分辨率?就是PC的游戏画面往VR头显上传输时,其中一帧图像的分辨率。串流分辨率受电脑性能的影响,还受你的网络连接环境的影响,有线PCVR的话,你的那根线质量一定要好,别用普通的手机充电线 。无线PCVR的话,你的WIFI一定要好。
4.渲染分辨率
什么是渲染?渲染,就是要把游戏场景中的模型按照设定的环境、灯光、阴影、材质及渲染参数进行展示。玩游戏时,需要电脑高帧实时计算,计算量受图像分辨率、帧数、以及灯光、阴影等参数的影响,所以很考验显卡。可以这么理解,我们对游戏进行图像优化设置,就是围绕渲染这个核心,调整三个内容:每一帧图像的尺寸大小,每秒钟的帧数,以及每一帧图像的特效。
什么是渲染分辨率?就是要渲染的每一帧图像的大小。
三、PCVR的运行时环境——Runtime:SteamVR、OculusVR和OpenXR,该选谁?
1.玩PCVR就一定要知道PCVR的运行时环境,就如同装手机APP一定要先知道APP是安卓的还是苹果的!
运行时环境,英文名runtime,就是头显和游戏软件之间的翻译官,因为不同的VR头显采用的透镜度数、屏幕分辨率、定位方法等都是不同的,游戏运行时必须先搞清楚到底要渲染多大的画面,画面畸变的程度如何调整,玩家的空间位置如何设置等,这些都是游戏软件调用运行时环境完成的。
作为PCVR玩家,碰到得最多的运行时环境有三个:OculusVR、SteamVR和OpenXR。STEAM平台的VR游戏用steamVR,Oculus平台的VR游戏用OculusVR,不同平台的VR游戏都可用OpenXR。OpenXR是独立、开放和免费的,其目的就是代替steamVR、OculusVR这些臃肿的,还夹带私货的运行时环境,用一种简单高效的方式让VR应用与头显进行沟通,在方便开发的同时也带来性能提升。可惜目前好多VR游戏并不支持OpenXR,但可以装上免费的第三方插件工具,比如Open Composite,让VR游戏支持OpenXR。当然,大多数玩家可以不用管这些,只要游戏能运行起来就行。简单的解决方案就是试,如果一个不工作,就试试另一个。
所以,如果你想玩目前主流的PCVR游戏,你的电脑里需要预装steam、Oculus和Open Composite,并根据不同的游戏按需选择。
2.串流软件VD让我能在这三大运行时环境中自由切换
不同的游戏是基于不同的运行时环境开发 ,要根据游戏需要,运行前对应的SteamVR、OculusVR或OpenXR。我现在的PC机上,只装了steam和steamVR,因为我在steam上买了很多PC游戏和PCVR游戏。至于Oculus,曾经装过,又被我卸载了,因为软件很大,且网速很慢。还有就是装了Open Composite,用于SteamVR与OpenXR切换时用。遇到OculusVR的游戏时,我就用VD替代了。
这又回到串流软件VD了。这个软件就像是一个神奇的魔法棒,能够让我们在三个运行时环境间自由切换。只需要轻轻一挥,咱们就可以随意切换到SteamVR、OculusVR或OpenXR中,就像换衣服一样简单。
VD串流上PC后,采用不同的PCVR游戏打开方式,就能让PCVR游戏在不同的运行时环境启动,非常简单神奇。
(1)关于开启SteamVR的正确姿势。默认设置下,在VD菜单中点launch steamVR,就会启动Steam和SteamVR。或者直接运行SteamVR游戏,也会自动启动启动Steam和SteamVR,等待Steam和SteamVR加载完成后,进入游戏。
(2)关于开启OpenXR的正确姿势。这里要用到前面提到的OpenComposite软件啦,打开这个软件,并选择切换至OpenXR,点击游戏,进入游戏。
(3)关于开启OculusVR的正确姿势。这次不需要OpenComposite,直接VR手柄B键点击VD桌面窗口右下角的VD运行图标,弹出菜单,选择菜单中的Launch Game,弹出一个选择游戏的窗口,同时会出现一个弹窗,确定一下,然后在文件选择窗口中切换目录,找到你的游戏文件,点击确认后进入游戏。
仅仅是文字描述比较难准确完整地描述这个操作过程,可以移步B站看我就这个问题录制的操作视频,一定能帮助到你的。
四、PCVR的帧数翻倍技术——补帧:SteamVR的运动平滑、OculusVR的ASW及VD的SSW等
在VR游戏,帧数特别重要,为了提高帧数,各大VR平台软件都加入了补帧功能,根据不同的平台,我主要使用了如下三种:
1.SteamVR的运动平滑,补帧算法运行在PC端,需要耗用电脑的性能。
在SteamVR里,补帧功能叫做「动态平滑」,英文名Motion Smoothing。依次选择“设置>视频”或“设置>应用程序”,然后就可以控制何时启用这项功能。
2.Oclulus的异步空间扭曲,算法也是靠PC端处理,需要消耗PC的性能
而在Oculus系统,补帧功能称为「异步空间扭曲」,英文名Asynchronous Spacewarp,简称ASW。它也是在VR 游戏画面的绘制速度不足时,提供一个可以拉高更新率的方案。算法是运行在PC端,也是需要耗用电脑的性能的。
Oculus要关闭ASW则比较麻烦…他在主介面上并没有相关选项可以调整,如果要用图形界面修改,会需要使用Oculus Debug Tool(简称ODT、官方文件,程式位置在「C:Program FilesOculusSupportoculus-diagnosticsOculusDebugTool .exe」)才能修改。
在开启之后,可以看到「Asynchronous Spacewarp」的选项,把它改成「Disable」就可以了。
不过在这边修改后,应该只要重开后、就又会跳回预设设定了。所以变成是每次都得重新设定,非常麻烦。ASW我只测试的时候用过一次,然后我就一直没有用过了,这两年,我连Oculus都卸载啦。因为有了第三个补帧工具可用。
3.串流PC的软件VD的SSW补帧,超越大厂的存在!
VD串流,因无线串流VR一体机而出名,其推出了利用VR一体机算力完成补帧的SSW功能,翻译为:「同步空间扭曲」,开启VD的SSW后玩PCVR游戏,一体机头显和电脑两边同时发力,就像100斤重的东西,原来是一个人扛,很吃力,现在变成两个人抬,轻松很多。
VD的SSW工作原理与上述ASW等是类似的,不同的是SSW运算是在VR头显本身,而ASW则是以前PC VR的技术,运算在PC端。
VD的SSW开启非常简单,而且可以在游戏过程中实时进行开启或关闭。打开VD设置菜单,点一下就完成。
总之,对中配电脑玩家,玩PCVR,硬件肯定不够,但我们可以通过软件来凑。如果你是VR一体机的VR玩家,家里还有一台一般性能的电脑,开启SSW补帧,一般中低配电脑一样可以流畅地玩起配置要求较高的游戏了。
五、PCVR的画质翻倍技术——超分:PC机上用的DLSS、NIS、FSR、CAS及VR一体机上用的SGSR等
普通中配电脑想玩大型PCVR游戏,如果采取VR一体机串流方式,有两大技术提升流畅度和画质,一是补帧(见上一讲),二是超分。以目前市面上最最强大的无线串流工具VD为例,其之前推出的SSW补帧,以及最近推出的SGSR超级分辨率,使用了VR一体机的算力,分担了PC机的性能消耗,让普通电脑也能流畅高画质地玩耍大型PCVR游戏。
1.什么是超分
超分,英文简称SR,简单地说就是超级分辨率,一个把1K画面变2K的技术。如果你的电脑有点差,无法带动4K游戏,甚至2K游戏都带不动,没关系,用SR。
2.怎么用超分
VR一体机通过VD玩PCVR,可以同时两个超分:
(1)在电脑上运行的DLSS、NIS、FSR或CAS等,很多游戏本体会自带超分,大家常看到的是DLSS(针对N卡)和FSR(针对A卡),对于PCVR游戏,若使用OpenXR运行时环境,还可以通过安装OpenXR toolkit工具,开启NIS、FSR或CAS。
(2)在VR头显上运行的SGSR(目前VD串流工具自带的功能),VD里的SR叫SGSR,英文名Snapdragon Game Super Resolution ,翻译过来就是骁龙游戏超级分辨率,骁龙是VR一体机的处理芯片,VD作者牛逼的地方就在于,当高通骁龙芯片一发布超分技术,他的VD马上就提供并发布了SGSR,VD应用软件与底层芯片处理的结合,产生了基于骁龙芯片的超分技术,非常有价值,效果也非常好,我一直在用。
给大家一个直观的数据,VD串流玩游戏时,比如选低画质的渲染分辨率是1728*1824,或者选中画质渲染分辨率是2016*2112,但是只要你开启SGSR,就会用这些较低的分辨率进行渲染,但是输出2688*2816的高分辨率画面。
3.我是如何进行二次超分的
因为我的电脑比较差,对我喜欢的且配置要求比较高的PCVR游戏,包括UEVR转化后的PCVR游戏,我使用VD串流PC,会对游戏超分2次。
(1)先在电脑上超分一次。若游戏本体带超分,就用游戏自带的,若游戏本体没有超分,则我会用OpenXR toolkit工具,在NIS、FSR或CAS中选一个。比如让电脑只渲染1K的画面,经过超分变成2K画面。
(2)再在VD软件中开启SGSR进行第二次超分。因为VD的超分计算在是利用VR头显的高通骁龙芯片进行的,会把VR头显串流接收到的2K画面超分为3K画面。
经过上述2次超分,我的电脑实际只渲染1K画面,在电脑上超分为2K画面后,串流到VR头显,VR头显再用VD的SGSR超分为3K,这里的3K是单眼的,双眼就是6K,若没有超分,中上配置电脑是根本带不动的。
六、PCVR的性能提升工具——OpenXR Toolkit:性能再提升20%,仅适用于OpenXR运行时环境
如果你的PCVR使用的是OpenXR运行时环境,那么你一定要安装OpenXR toolkit工具软件。
OpenXR toolkit,这是一个微软开发人员为了优化《微软模拟飞行VR》的画质,开发的一款免费开源软件。它只适用于OpenXR运行时环境,能提供PCVR应用本身不支持的新功能,比如低分辨率图像AI放大,也就是超分,还有手势追踪、静态和动态注视点渲染等等。一般openXR运行时环境的VR应用,它基本都能支持,包括UEVR。如果你的VR头显支持眼球追踪和动态注视点功能,还能进一步提升性能。
使用OpenXR toolkit,了解如下几个参数可以让你快速了解并根据自己的情况灵活设置。
1.Overlay(覆盖层)
启用右上角视图的FPS显示或高级计时显示。
2.Upscaling/Sharpening(超分辨率/锐化)
启用NIS或FSR等上采样器,以较低的分辨率进行渲染,并进行超分辨率和/或锐化图像。
3.Foveated rendering(固定)注视渲染(仅适用于受支持的GPU)
这些设置调整注视渲染参数,以便平衡渲染性能与周边视觉细节。
这个参数里面是设置注视点渲染的,也就是让画面或注视点的中心区域以高分辨率渲染,而外围区域以低分辨率渲染,如果你的VR头显支持眼动追踪,那么一定值得尝试开启注视点渲染;如果你的VR头显不支持眼动追踪,也可以开启固定注视渲染,若显卡档次较低的,也无法开启此功能的。
4.Turbo模式
开启可以使游戏完全忽略OpenXR运行时所规定的任何帧计时或节流。换句话说,Turbo模式强制游戏以尽可能快的速度绘制和提交帧。
(未完,待续)
-
更新了,六、PCVR的性能提升工具——OpenXR Toolkit:性能再提升20%,仅适用于OpenXR运行时环境
9个月前 -
更新了:五、PCVR的画质翻倍技术——超分:PC机上用的DLSS、NIS、FSR、CAS及VR一体机上用的SGSR等
9个月前 -
收藏了大佬
9个月前 -
更新了“四、PCVR的帧数翻倍技术——补帧:SteamVR的运动平滑、OculusVR的ASW及VD的SSW”
9个月前 -
更新了“三、PCVR的运行时环境——Runtime:SteamVR、OculusVR和OpenXR,该选谁?”,并链接了对应的发布在B站的教程视频。
9个月前 -
增补提纲内容:6.PCVR的性能提升工具——OpenXR Toolkit,性能再提升20%,仅适用于OpenXR运行时环境。
同时,确定了本专题的中心思想是,从PC到PCVR需要消耗成倍的电脑性能,但我们可以通过各种“黑科技”再找回来!
9个月前 -
好文章,顶!
9个月前 -
已更新,补充了一讲《从PC到PCVR一定要知道的3点基础知识》,且放在最前面了,由此基础,后续的内容才好理解。
9个月前 -
欢迎大佬分享VR经验,大佬是B站玩PCVR大牛,https://space.bilibili.com/531516665?spm_id_from=333.337.0.0。
小伙伴们可以B站关注大佬,玩vr疑问随时留言
9个月前
谢谢:),不算大佬,接触VR后,边玩边研究,慢慢地积累了一点经验。