Asynchronous Timewarp ATW原理

来源:互联网 发布:java系统监控框架 编辑:程序博客网 时间:2024/06/05 15:51


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相比, 明显较少了画面的抖动。

原创粉丝点击