相信对于玩过cs的人来说,valve并不陌生,他于去年推出一个全新的steamvr beta版来回应oculus的“异步时间扭曲”技术。说到这,可能很多朋友对oculus的atw异步时间扭曲技术感到陌生,但如果你经常听国内一些技术流的vr创业公司的演讲,那么你对“异步时间扭曲”这个词肯定不会陌生。例如自称国内第一家掌握atw技术的焰火工坊,在他们的第一次发布会上cto王明杨就提到了这项技术。当时他尝试了进行解释,但后来放弃了,只说“你们知道这很牛逼就行了”。此后ceo娄池也在各种场合提起atw,包括微信朋友圈。另外一家公司乐相也是。
焰火工坊ceo娄池和乐相ceo陈朝阳的朋友圈
atw到底牛逼在哪?
异步时间扭曲英文是asynchronous timewarp,简称atw。简单来说,这是一种生成中间帧的技术。当游戏画面无法保持足够的帧率时,它能产生中间帧进行弥补,从而维持较高的画面刷新率。这项技术的提出者john carmack目前是oculus的cto。
在采访中,王明杨解释atw,他是这样说的:
正常情况下,我们的手机大部分是60hz刷新,也就是说,在理想情况下我们的手机大概要处理有60帧/秒。那么,从数据到渲染就有 1000 /60 ~= 16.6666ms的时延。
那么,如何抵消这个时延呢?卡马克(john carmack)提出一种方法,通过大量采集陀螺仪数据,在样本足够多的情况下,就可以预测出16.66ms后你头部应有的旋转和位置,按照这个预测的数据来渲染,他管这个技术叫timewarp。
然而问题又来了,一般vr场景很复杂,我们很难保证每次都在16.66ms内完成一次渲染,也就是我们很难保证每个应用都是60fps。那么卡神又提出一个atw,就是异步的timewarp。
他把vr应用的渲染管线设计成两个线程,渲染线程(生产者)和timewarp线程(消费者),两者异步工作,生产者生产足够多的framebuffer,消费者把生产者生产的东西做timewarp之后贴在屏幕上。也就是说,无论你当前游戏的fps是多少,timewarp始终被设计成保持在60fps(视刷新率而定)。
这就是atw的核心细节,把timewarp和产生framebuffer分离,用高刷新率的timewarp来换取低时延。
atw技术在vr中应用的先驱是oculus,早在两年多以前他们就在gear vr上应用了这项技术,直到去年3月25日宣布在pc端的sdk上加入atw的支持。
具体怎么做?
图片来源:oculus博客(下同)
oculus在博客里对atw做了详细的解释。如上图所示,gpu给左右眼的画面分别进行渲染,然后在画面显示出来之前插入一个atw的处理过程。在左边这帧的处理中,画面渲染及时完成,此时直接显示就行了;中间的第二帧渲染未能及时完成,此时如果什么都不做就会出现画面抖动,而有了atw的话,它会将前面一帧调用出来重新显示,同时加上头盔运动变化,从而保持帧率。
这技术很难吗?
据王明杨表示,atw技术很简单,核心代码仅5行。但如果要达到最好的效果,还需要以下几点:
1. gpu必须支持抢占式上下文(gpu preemption)。这个还好,大部分mobile gpu都支持,但是桌面gpu大部分还不支持;
2. 系统最好支持主表面写入,这个跟gpu有一定关系,但是跟操作系统关系比较大;
3. gpu必须有较高的性能,这个很好理解,timewarp线程实际上加重了渲染负担。
oculus先在gear vr上实现atw,原因就是上面的第1点。他们将atw带到pc平台上,是在微软、英伟达和amd支持的情况下实现的。英伟达开发了vrworks,amd则有liquid vr。
国内厂商中,乐相陈朝阳表示arm对大朋vr提供了front buffer和context priority的支持,用以在移动vr上实现atw。
没有定制硬件的焰火工坊则在oculus的基础上修改了一部分timewarp的实现。“我们在渲染线程那里会监控timewarp线程的工作情况,动态的平衡gpu附载,保证timewarp线程工作在比较高的帧率下。”王明杨说。
有什么难点和局限?
听起来atw是项很棒的技术,但它也不是完美的。根据oculus的博文,atw的一个难点是位置抖动(positional judder)。
位置抖动是基于方向的timewarp带来明显瑕疵之一。在使用vr设备时,当头部移动了, 如果在atw产生图像帧时只考虑了旋转,而平移却被忽略了。这意味着当你的头从一边移动到另一边时,你看见的离你很近的物体会有多个图像的抖动,这种效果在临近场空间中是非常明显的,比如下面的这个潜艇截图。
gear vr比较容易用上atw,是因为它不支持位置追踪,而pc平台的oculus rift支持。oculus最近宣布rift支持atw,应该是解决了位置抖动的问题。
另外一点是运动的物体和动画。使用atw时,动画或者移动的物体会引起另外一个瑕疵, 因为它产生的新图像只是根据前一帧图像生成的,缺少了物体的运动信息,所有的中间帧都好像是被冻结了一样,因而对于运动的物体容易产生抖动,见下图。
不过王明杨倒是认为虽然近处物体是个局限,但影响并没想像的那么大。
总结
总体来说atw确实是一项很棒的技术,如果没有它的话,开发者在游戏开发中为了保持画面帧率只能非常保守地使用cpu和gpu性能,而atw可以游戏更容易保持帧率稳定,从而让开发者在画面设计上更加大胆。
实际运行中oculus发现,没有使用atw的app在运行中丢失了约5%的帧。atw可以将大部分丢失的帧补上,从而大幅减少画面抖动。而这一切对app来说不需要消耗更多性能或更改代码就能实现。oculus还表示这一切只是开始,他们正与合作伙伴尝试提高atw的运行效率。为了产生一个舒适,令人信服的虚拟现实,开发人员仍然需要保持帧率在90赫兹,如果达到90赫兹,将使vr具有很好的舒适性,这是vr存在的真正魅力。
超声波驱蚊虫器
智能照明高管培训沟通会2021(第一期)18-19日在涂鸦成功举办
人工智能辅助医生 助力提升心血管病的诊断效率
人工智能从大脑“读出”语言
技领全球 星耀未来|星恒电源问鼎,隐藏冠军终于不再低调
VR领域常谈的异步时间扭曲技术到底是什么?
一种可以利用太阳能和空气生产煤油和甲醇的技术
尚德太阳能组件在第三方的PID测试中表现优异
西井科技无人驾驶商用车Q-Truckt达到欧盟标准
欢欢喜喜迎元旦!vivo推出钜惠活动,众多爆款机型任意pick
成为一位成功的人工智能工程师并不意味着需要精通编码
有了华为云大数据BI,企业数字化转型该如何做?
直流电源稳压电路
第6代柔性AMOLED生产线进展良好,京东方与三星、华为合作稳定
OPPO采用Super VOOC闪充技术,重新定义快充
Microchip推出首款集成16位ADC、10 Msps ADC、 DAC、USB和LCD的PIC单片机
如何使用代码发布导航需要的传感器信息
Mophie、Belkin和Anker无线充电器对比评测
魅蓝Note5:4GB高运存+手机快充,解决手机卡顿持久流畅度堪比华为荣耀V9,售价还不足千元!
区块链技术有望改变商业的四个方面