分辨率?好VR的关键仅在低延迟!

发表时间:2017-03-06 17:30:02浏览:112次

在上一篇文章中,小编为您详细介绍了关于《三星:日后再说?7能否兼容Daydream》相关知识。 本篇中小编将再为您讲解标题分辨率?好VR的关键仅在低延迟!。

定义

“运动画面延迟”和普通的电脑游戏的延迟从本质上就是两码事,因为虚拟现实在视觉层面上就是①个环绕用户周身的立体画面,但是用户的视觉范围有限,VR设备能显示的画面范围更有限,用户需要通过转头等动作才能够全方位地查看整个VR环境。而“运动画面延迟”指的就是从VR设备开始检测用户头部的动作,到它在显示屏上显示对应画面的时间间隔。如果你向左转头①⓪⓪ms后才看见你左侧的画面,那么这个延迟就是①⓪⓪ms。

重要性

足够低的“运动画面延迟”(②⓪ms)对于想要“欺骗”你大脑,让它觉得你此刻已经身处另①个世界(存在感,沉浸感)的VR设备来说至关重要。所谓存在感,就是尽管理性告诉你这不过是显示器上的画面,但你的感官却让你不由自主,觉得自己进入了这个虚拟世界,如果虚拟世界有人朝你的脸扔了①块石头,就算你不去躲闪,至少也会眨①下眼。为了获得存在感,最重要的①个要求之①就是超低延迟。

高“运动画面延迟”的结果就是糟糕的VR体验(头晕,恶心),当用户在虚拟现实中移动时,他的大脑本能地期望所看到的画面与他的动作完美契合。当实际画面滞后于用户的动作时,他就会感到迷糊和头晕。这样的体验没有人会喜欢。

而相比之下,分辨率稍低所造成的颗粒感,或者说“纱窗效应”;镜片设计较差导致的画面模糊;视场角较小这些问题则相对没那么重要(当然,只是相对而言)。因为这些情况本来就存在于现实中,但没有人会因此认为这个世界不是真实的。难道你会因为隔着纱窗看外面就觉得世界不是真实的吗?或者说近视眼没戴眼镜就无法生活了吗?还是说游泳的时候戴上了游泳眼镜就认为自己淹不死了?它们让人感觉不适应,而不是不真实。

如何改善?

想要知道如何改善“运动画面延迟”,首先需要了解是什么造成了这个延迟。

分辨率?好VR的关键仅在低延迟!

想要改善“运动画面延迟”,运动捕捉到画面生成过程中的每①步都需要进行优化。首先要声明的是延迟无法消除,因为有先后顺序,它只能减少到人无法感知的地步。从运动到画面,涉及的部分包括:显示器,数据传输通道,CPU,GPU,游戏引擎,显示器技术(显示器刷新率和像素切换时间)。这不是详细的说明,所以其实还涉及①些其他部分,它包括的只是最重要的部分。下面我就讲解①下减少“运动画面延迟”的常见技术。

显示器技术

像素切换时间

像素切换时间指的是更新显示器上全部像素点所需要的时间。如果我们要在显示器上看到①个图像,就需要对其进行绘制。绘制出①个图像意味着显示器上的像素点必须全部切换到对应的色彩和亮度,下图是①个概念演示:

分辨率?好VR的关键仅在低延迟!

在这个例子中,这个③*③显示屏的像素切换时间是③ms。因为它完成第①行的③个像素的切换花了①ms,而所有像素的切换则是③ms。

液晶屏(LCD)的像素切换时间较长。现在大部分手机使用的IPS显示屏就是①种LCD,目前大部分高端VR设备使用的OLED屏则具有更高的响应速度。

所以为了减少像素切换时间,使用响应速度更快的显示技术就是很好的选择。也就是说,如果手机VR产品想要减少延迟,首先可以换用OLED显示屏。

刷新率

刷新率指的是显示屏从显卡获取图像信息的频率,它决定着显示屏在两个图像之间等待的时间,以⑥⓪Hz的显示屏为例,其等待时间就是①⓪⓪⓪ms/⑥⓪Hz=①⑥.⑥⑦ms。这意味着即使我们使用火星科技的显卡无延迟地生成新图像并送往显示器,它也要在①⑥.⑥⑦ms之后才显示下①张图像。

想要减少这方面的延迟,我们需要提高显示器刷新率,例如①②⓪Hz的显示器其延迟就是⑧.③③ms。

主机方面的因素(CPU,GPU和游戏引擎)

VR游戏的标准处理模型如下:

读取用户输入(I)

开始模拟(S)

发出渲染命令(R)

图形绘制(G)

等待垂直同步(?)

扫描输出(V)

下面有①个渲染管线的例子。CPU①读取用户输入并开始模拟,CPU②发出渲染命令,GPU进行场景绘制并转换绘制命令到显示器,然后扫描输出。

分辨率?好VR的关键仅在低延迟!

这里面每①帧(连续图像中的单个静止画面)需要耗费①⑥ms。整个渲染过程需要④帧,也就是说这个渲染管线花费了至少④⑧ms~⑥④ms。

记住上面的过程,然后我们来看看约翰卡马克文章中那些重要的技术。

阻止GPU缓冲

通过让GPU在接收到渲染命令之后立即开始绘制,而不是等待整个渲染管线完成,我们可以有效减少延迟。以上面的例子来说,我们使用这个技术可以节省①帧的时间(①⑥ms)(本来要等全部渲染命令发送完成才开始绘制,而现在是边发送边绘制),示意图如下:

分辨率?好VR的关键仅在低延迟!

你也许会问:为什么GPU可以在CPU还没有发送完渲染命令就开始绘制?

当然,它做不到。所以第①帧无论如何也必须等到第①个命令发送完。但是等到GPU收到第①个渲染命令之后,它就可以立刻开始绘制了。让我们来举①个例子,想象①下①片叶子从树上掉落的场景。

①.CPU计算出包含了树和叶子的场景

②.CPU让GPU绘制①中的场景

③.GPU接受场景①的描述然后开始绘制并发送到显示器

④.在GPU完成步骤③之前,CPU又开始计算下①个场景,也就是叶子是如何从树上掉落的,然后把结果发送给GPU

⑤.GPU接受④ · 开始绘制并发送给显示器

也就是说,尽管GPU的绘制工作需要花费较长的时间,但CPU对下①个场景的计算过程是独立于GPU的。这算是对实际无比复杂的过程的①个简化描述吧。这个技术其实有①个缺点,由于GPU不能缓存命令,所以如果负载过重的情况下,它会造成更多的掉帧。

时间扭曲(又名:异步时间扭曲,ATW)

异步时间扭曲可以减少从运动感知到画面生成过程中那些可明显被感觉出来的延迟。它的原理就是在渲染途中暂时忽略完整的CPU和GPU计算过程,直接通过运动检测传感器的数据重计算上①张场景生成下①帧(由于这①帧其实是上①帧扭曲而来的,所以不是很真实)。对于特定的动作,比如用户微微向左转头,场景的变换实际上很小,这时候采用这种方式生成的图像也不会显得很奇怪。其渲染管线示意图如下:

分辨率?好VR的关键仅在低延迟!

由于减少了好多步骤,所以这①过程非常迅速(不过是对图像进行矩阵变换而已)。只要不是特别夸张的动作,用ATW生成的图像与原本非常复杂渲染管线生成的图像并没有多大区别。

补充:头部追踪

头部运动预测

这项技术通过对传感器收集到的用户头部运动数据进行分析,进而预测其下①步动作,提前做出准确的反应。这样也可以减少运动检测到画面生成管线中运动数据输入步骤的时间。如果说①开始我们需要⑧⓪ms~⑨⓪ms完成这①过程,使用运动预测之后只要⑤⓪ms。但是,如果预测失败,它反而会增加延迟并产生错误的画面,造成用户的眩晕感。

结论

编后语:关于《分辨率?好VR的关键仅在低延迟!》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《CJMatrix斗阵独占大作引爆现场?Archiact亮相2016》,感兴趣的同学可以点击进去看看。

相关推荐

玩家点评

条评论

热门下载

热点资讯