卡马克揭开VR延迟背后的真相

延迟是OculusVR所面对的最大挑战之一,  它不仅会分散玩家体验游戏时的注意力, 还会导致晕动症, 所以找出它背后的原因并消除它是非常重要的。

整个系统保持在50ms已经很快了, 但是还是可以感觉到延迟

20ms是可接受的最大延迟

传感器数据的推导预测可以缓解部分的系统延迟。但即使有一个非常复杂的人类头部运动模型, 也不能很好地处理开始运动和运动突变时的情况

滤波和传输是固定延迟, 但是离散的传感器数据包也会带来一个可变的延迟, 因为渲染的帧率与传感器的帧率是不一致的

早期的LCD在运动时有拖影, 尽管现在的工艺已经进步了很多, LCD的像素从一个值转变到另一个值大约仍要10ms, 专为3D游戏优化过的可以降低到一半以下

OLED的像素切换时间在1ms以下, 激光显示甚至与CRT一样快

有一个不易察觉的延迟, 多数显示器显示一幅图像时是逐渐出现的, 就像从计算机中扫描出来一样。 这就导致了60Hz刷新率的屏幕底部比顶部晚了16ms

这对于固定的显示器不是什么问题, 但是对于头戴式的显示器,它会引起画面左右割裂或者转头时的晃动。 这是因为原图像是即时生成的, 但不同部分却不是同一时间显示的。 这个现象在LCD头戴显示器上会因切换时间的问题被忽视, 但是在OLED头戴显示器上非常明显

有一个非常有吸引力的立体渲染方向, 就是双眼的画面各由一个GPU渲染, 这样可以带来最好的性能和最小的延迟, 只是需要应用程序管理好两个独立的渲染上下文

阻止GPU缓存的负面影响是会降低吞吐量, 造成高负载时的帧率下降

多数的模拟并不直接依赖用户的输入,可能在一帧的延迟中并不明显。如果输入数据是在使用到时再采样,就会比在帧开始时保存下来延迟要低

延迟帧调度(late frame scheduling)通常需要等待,浪费了一些性能。 如果你的帧率依赖video retrace而不是固定的时间片, 那么从显示驱动中获取当前的扫描输出位置会有帮助

另一个降低延迟的方法是允许渲染层基于最新的采样数据修改游戏层传过来的参数(VIEW BYPASS)。简单地说, 可以计算出本次用户输入与上次采样的差值,用于修改游戏层提交给渲染层的视图矩阵

差值处理是最小程度的侵入, 但也有一些情况是用户输入不能影响渲染的,如玩家死亡时的过场动画。或许VR游戏从设计上就应该避免在头戴显示器中出现不能响应的情况,但是依照传统游戏的惯例这种设计还是有很多的

如果你十分了解渲染一帧所花的时间,那么一些额外的延迟可以通过整个渲染任务的延迟帧调度来节省下来,但这对于频繁变化的帧渲染时间并不是一件容易的事。然而一个后期处理任务(TIME WARPING)可以降低意料之中的一些时间, 这样就可以更加容易地进行延迟调度

从你的角度尽可能使用最好的信息绘制了一帧后(已经应用了view bypass),不要急着直接显示出来, 开发者还可以再次获取最新的用户输入, 生成一个更新过的视图矩阵, 把渲染的画变换到更新过参数的位置上。 使用这个变换, 显示到屏幕上的画面就反映了最新的输入

view bypass和time wraping是互补的技术, 它们既可以独立使用也可以一起使用。time warping可以变换一个源图像的任意时间或位置到另一个, 一些视差和屏幕边缘的瑕疵又可以通过view bypass来弥补

需要模拟状态变更的动作, 如切换开关或武器开火, 仍然需要大约32-48ms的延迟通过整个管线, 显示出对应的画面信息时的延迟并不会低于bypass优化过的16-32ms。而最重要的头部朝向反馈却可以在60Hz的刷新率下延迟控制在2-18ms。结合低延迟的传感器和显示屏, 甚至可以做到不可察觉。连续的time warping让延迟低于3ms成为了可能,为人机交互打开了一片未曾探索过的新天地

传统的计算机交互并没有VR的延迟要求这么高, 但是敏感的人却可以说出20ms级别的鼠标反应差异, 所以这项技术对于非VR的应用也是值得推广的

一个有趣的应用就是云游戏, 客户端发送操作信息给远程服务器, 并返回游戏的视频流。这为玩家提供了极大便利,但网络和压缩的延迟使得动作向的游戏体验比较差。view bypass和time warping都可以在服务器上应用,能够抵消相当大一部分网络延迟。再进一步,time wraping如果可以在客户端本地运行,理论上可以降低到与本地应用程序相同的水平,不过把time wraping限制在30或40ms比较好,避免与源图像的距离差异过大。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,738评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,377评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,774评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,032评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,015评论 5 361
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,239评论 1 278
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,724评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,374评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,508评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,410评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,457评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,132评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,733评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,804评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,022评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,515评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,116评论 2 341

推荐阅读更多精彩内容