Asynchronous Timewarp
原文: https://developer.oculus.com/blog/asynchronous-timewarp-examined/
ATW是一种中间帧生成技术,在游戏等场景中,保持帧率, 帮助减少画面颤抖。
但是该技术并不是万能的, 还是存在一定的局限性。
介绍:
该技术已经在三星Gear VR上有一定的经验基础, 本篇文章将简单介绍ATW的帮助及缺陷。
时间扭曲, 异步时间扭曲, Judder
时间扭曲是一种在一帧图片显示到屏幕上之前将其扭曲的技术, 目的是为了减少因头部转动引起场景变化产生画面绘制延迟。
在时间扭曲中最基本把握的就是头部的旋转 “方向”, 所以在2D上有较好的优势, 在做扭曲的过程中不会,消耗太多的性能。
Asynchronous timewarp异步时间扭曲是指平行于渲染操作的另一个线程上(即,异步)。在每一个Vsync之前,ATW线程根据渲染线程最新的帧来算出一个新的”扭曲帧“ 。
VR为产生更好的用户体验, 图像的更新必须要与Vsync同步, 但是, 如果某一帧渲染时间过长,下一帧就会被丢掉, 引起画面抖动。这是由于一个新的帧还未被渲染完成,即还没有推送到视频显示器, 此时显示设备就会扫描到与上一帧相同的image
如下图,到连续显示两帧的位置图:
这里,眼睛转动到左侧。当再次显示相同的图像时,它的光线落在视网膜上的不同部分,导致双图像抖动。
此时ATW就会用来解决该问题:
如果被渲染的帧没有在下一个Vsync到来之前提交, time warp就会截获并扭曲最新一帧来代替未被渲染完成的帧, 虽然新的image不是完全正确的帧, 但是与没有ATW相比, 明显较少了画面的抖动。