ATW(异步时间扭曲) 是一种专为虚拟现实(VR)和增强现实(AR)设备设计的底层渲染优化与中间帧生成技术。它的核心目的是在 GPU 渲染性能不足、无法稳定维持目标帧率(如 90 FPS)时,通过生成"补偿帧"来消除画面抖动(Judder)并降低运动到光子延迟(Motion-to-Photon Latency),从而有效缓解用户的晕动症。
从技术实现机制上,ATW 包含以下三个核心特征:
-
异步双线程架构(Asynchronous) :
ATW 运行在一个独立于主渲染线程的高优先级线程中。主渲染线程(生产者)负责生成场景图像,而 ATW 线程(消费者)在每次垂直同步(VSync)信号到来前异步工作,两者互不阻塞。
-
基于位姿的重投影(Timewarp) :
当主渲染线程未能按时完成新一帧的渲染时,ATW 线程会截取上一帧已渲染完成的图像,并结合设备传感器(如陀螺仪)提供的最新头部旋转位姿(6DoF),对原图像进行像素级的 2D→2D 单应性变换(Homography Reprojection)。这使得画面能够精准匹配用户当前的视线朝向。
-
动态帧率补偿(Frame Interpolation) :
通过这种"旧图+新位姿"的扭曲计算,ATW 能够无缝填补因渲染卡顿而丢失的帧。例如,当游戏渲染掉帧至 45 FPS 时,ATW 能够实时生成中间帧,使最终输出到屏幕的帧率依然保持在 90 FPS,从而维持视觉上的极度连贯性。

1 发送信息给渲染应用
VR采集当前的时间戳ts 和 位置6dof信息,发送给渲染应用
2 本地保存信息
将采集的时间戳ts和位置6dof信息,保存到本地缓冲map,key=ts value=6dof
3 渲染应用生成数据
渲染应用根据6dof生成图像image,并将生成的image和对应的ts回传给VR设备
4 重新组合渲染素材
VR设备将收到的ts+image和第2步保存的map重新合成为素材队列queue。
该队列元素包含:ts+Image+6dof信息。
5 渲染时取素材逻辑
在图形渲染时,从buffer queue中拿取元素。如果队列中不存在元素时,使用上一次拿取的元素。
6 重投影
根据队列素材(ts+Image+6dof)和当前位置信息(current 6dof)对图像进行重投影。
参考我的另一篇文章: VR视频渲染-重映射-CSDN博客