关于VR延迟你所需要知道的那些事儿
站建设,网站策划、网页设计,商城建设,微商城开发,手机网站制作,微官网 可可西里网
关于VR延迟你所需要知道的那些事儿
呕吐、眩晕、眼镜不适是现在VR设备给人们带来的主要问题,它不仅极大破坏了VR的沉浸感,也造成了人们不可能长时间使用VR的问题。如果不能找出画面延时的解决方法,虚拟现实的发展必将受到极大的限制。
经过试验,人们发现整个系统的延迟控制在 50ms 就会感觉相对不错,但还是能感觉到。当延迟低于 20ms,人就无法感知出来了,这可以说是 VR 最佳体验的标准。那么,到底是什么造成了VR的延迟呢?
信号传递有延迟
预测传感器数据可以被用于减缓一些系统延迟,但即使是最精准的人类头部移动模型,在用户实际使用的时候,还是会有预测不准的时候。
滤波和通讯所带来的延迟是持续存在的,但大多数传感器不同步的刷新会引入了一个可变延迟,或者说当渲染的帧率与传感器的刷新率不同的时候,也会造成延迟的不规律波动。
屏幕刷新有延迟
早期的 LCD 屏幕在画面滚动和变化的时候,因会有几十毫秒的残影而饱受诟病,但在过去二十年里,这一技术有了长足的进步。LCD 每一个像素点的转换时间取决于色彩变化的程度,一块优秀的面板的转换时间能控制在大约 10ms 之内,而为 3D 显示和游戏而优化过的显示器能减少一半左右的切换时间。
一些不常见的显示技术比 LCD 面板的刷新速度更高;OLED 子像素的刷新时间低于 1ms,而激光显示屏和 CRT 反应一样及时。
另一个不易察觉的延迟是:大多数显示器是逐行显示图像的,而显示器的图像是从计算机里读取的,但由于计算机自身的原因,会导致帧率为 60fps 显示器上,屏幕底部的画面要比顶部的刷新时间慢 16ms 左右。
在静止的屏幕上,这根本算不上问题。然而在 HMD 里,因为源图像是即时渲染出的,但不同的部分显示在屏幕上的时间是不同的,所以它可能造成图像的左边或右边被裁剪掉;或转动头部时,图像出现晃动。这个效应在使用 LCD 屏幕的 HMD 上不易察觉,但在刷新更快的 OLED 屏幕的 HMD 上却更容易显现出来。
如何降低延迟?
双 GPU 立体渲染可降延迟
立体渲染降低延迟的一个诱人的解决方案是:将图形处理系统分拆成两个,并分别配备一个 GPU,每个 GPU 只需单独渲染一只眼睛的图像,这样可以达到最佳的性能表现和最低的延迟,其代价是要求设备能够管理两个相互独立的渲染内容的缓存。
但它的问题是如果设备无法维持两个 GPU 的缓存,设备的数据吞吐性能会下降,在缓存过载的情况下,还会导致帧率更严重地下降。
合理安排数据采样
大多数模拟输入的任务不直接依赖于用户的输入数据,换而言之,这一数据的输入对一帧的延迟并不敏感。如果在需要用户输入的数据时采样,而不是在一开始就离线缓存输入数据,则能减少总体的延迟。(这种方法被称之为 late frame scheduling,延迟帧调度)
late frame scheduling 也是一种解决方案,但其缺点在于它使得调度需求非常紧凑——通常情况下,late frame scheduling 需要一定的时间,并会造成电力浪费。不过如果你的帧率是由视频回扫决定的,而不是随机读取视频片段,那么通过图片驱动辅助确定目前需要扫描输出的准确位置,也会有助于降低延迟。
避免渲染全部重新编码
另一个与 late frame scheduling 一样,可以降低延迟的方法是:允许渲染编码根据底层的游戏编码,以及用户输入的最新样本,修正输入到渲染编码中的参数(这种方法称之为 View bypass)。对比用户前后输入样本,设备可以确定出哪一个是用户输入的变量。而变量可以被用于修正游戏提交给渲染编码的视觉矩阵。
这种变量处理的方式可以最小化处理的复杂程度,不过游戏中也经常会有无需用户输入的渲染场景,比如经典镜头的剪辑或者玩家死亡的情形。一个为 VR 而生的游戏应该是否应该避免这样的情形尚有争议,因为在 HMD 里一个无法响应的视角是会让人感到迷惑或者不快,但在传统游戏设定里会有很多这样的场景,这样的场景很常见。
合理安排每一帧的渲染时间
如果我们能知道渲染一帧具体需要花费多长时间,那么一些额外的延迟可以通过整个渲染任务的 late frame scheduling 来节省下来,但这显然不实际,因为渲染时间难以预估。但渲染好的图像后是可以往后安排处理任务的,并且能争取到一段可预测的时间,从而使得 late fram scheduling 更容易。(这一方法被称之为 time warp)
绘制出一副高质量的图像之后(使用过 View bypass),这幅图像不是直接呈现出来,而是让开发者继续抓取用户输入的最新的数据,生成更新的视觉参数,然后计算出与输入数据相匹配的已渲染图像需要变形成什么样,放置在什么位置。经过这一次转换之后,渲染变形后的图像能与与用户实际操作后应该看到的图像更相符。
三种方案合体,突破【最低延迟】
「view bypass」和「time warping」是两种互补的技术,它们既可以单独使用,也能够共同使用。time warping 可以将源图像的任意时间和位置变形成另一个,但是由于尽可能使用最新渲染出的图像,内部视差和屏幕边缘的细节会丢失,而 view bypass 渲染则可以帮助提供这部分细节。
动作状态改变的操作,比如按下开关或者扣动扳机,通过线缆传输信号,延迟依然只能控制到大概在 32-48ms 之间,但不可能低于使用过 view bypass 技术的 16-32ms 延迟。
通过 bypass 的优化,关键的头部转动反馈在 60hz 的屏幕刷新率下,延迟能够保证控制在 2-18ms 之间。如果结合低延时传感器和屏幕,人们甚至觉察不到延时。连续不断的 time warp 有可能将延迟降到 3ms 以下,这可能踏入人类和计算机都未曾探索过的领域。
延迟技术的其他应用
传统的电脑交互界面大体上都没有 VR 所需的那么低的延迟,但是敏感的用户能够感觉出 20ms 或更低延迟之间的差异,这使得这项技术还能被用于 VR 之外的领域。
一个比较有趣的应用场景是云游戏——用户通过简单的客服端或者应用发送至远程服务器,然后服务器持续不断地回传游戏的视频流。这能给予用户难以想象的便利——但是由于受到网络和压缩延迟的限制,这也降低了游戏的体验。
View bypass 和 time warping 两者也能在服务器中起到作用,帮助减少由网络造成的很大一部分延迟。如果云端游戏客户端能设计的足够精巧,那么 time warping 完全可以储存在本地客户端里,但是它可能会明智地将减少的总延迟时间控制在 30-40ms 之间,避免与源图像之间差异过大。
一个比较有趣的应用场景是云游戏——用户通过简单的客服端或者应用发送至远程服务器,然后服务器持续不断地回传游戏的视频流。这能给予用户难以想象的便利——但是由于受到网络和压缩延迟的限制,这也降低了游戏的体验。
View bypass 和 time warping 两者也能在服务器中起到作用,帮助减少由网络造成的很大一部分延迟。如果云端游戏客户端能设计的足够精巧,那么 time warping 完全可以储存在本地客户端里,但是它可能会明智地将减少的总延迟时间控制在 30-40ms 之间,避免与源图像之间差异过大。