VR设计:如何实现GPU和显示器高度集成
VR产业日新月异,现在看来,VR设备实现大规模量产也不过是个时间问题。当然在发展初期,VR会主要以高端游戏设备的形式登场。但其应用领域一定会迅速扩展。在VR变得人尽皆知之前,让我们放慢脚步,探讨一下它目前面临着哪些问题。
首先,我们要清楚延迟的定义:它指的是系统将头部实际运动转换成你在VR头盔的屏幕上看到图像的这段时间。这两个事件的发生必须相当接近,你才能像现实世界一样感知不到时间差;如果延迟时间太长或者变幻不定,那么沉浸式体验就会显得很不自然,大脑也会启动对抗机制,让你产生恶心或晕眩——这种感觉绝不好受。行业研究显示,“运动到画面”的延迟时间必须持续低于20毫秒(ms),否则就无法营造流畅且自然的VR体验。由于标准刷新频率是60Hz,也就意味着延迟应该为16ms。虽然这一目标不易达成,但只要用对方法,实现并非不可能。
降低延迟,你需要这几招
将一些特定技术组合在一起的时候,的确可以成功打造出低延迟的VR系统。首先,我们来讨论一下前段缓冲渲染。包括安卓设备在内,图像应用通常采用双重缓冲或三重缓冲技术,让GPU可以向离屏拷贝的旋转缓冲区映射像素,并在显示屏每次刷新结束时与随屏缓冲区交换,从而实现流畅体验。这一过程可以使相邻帧的时间差更加均匀,但同时也会让延迟增加——与VR希望实现的目标截然相反。前端缓冲渲染过程中,GPU可以绕过离屏缓冲区,直接对随屏缓冲区进行渲染,从而减少延迟。前端缓冲渲染需要与显示屏精准同步,才能保证GPU的写入始终在显示器读取之前。Mali GPU的环境优先扩展功能可以实现GPU任务的迅捷调度,从而使前端缓冲渲染流程的优先级高于紧急程度更低的任务,起到改善用户体验的效果。
消除额外的缓冲渲染以降低延迟
第二个重要秘诀便是为您的VR设备选配合适的显示屏类型。有机发光二极管(OLED)显示屏是改善VR体验的一大利器,它的工作原理和人们熟悉且技术成熟的LCD显示器大相径庭。利用背端的薄膜晶体管阵列,OLED显示器上的每个像素都可充当光源,而LCD采用的是白色LED背光源。OLED显示器的亮度由流经薄膜的电流强度决定,颜色的管理则是通过对屏幕后方的红、绿、蓝LED小灯进行独立调整而实现,因此OLED可以呈现出高亮度、高对比度、高饱和度的色彩。此外,只要熄灭屏幕上的几个部分,你就可以看到比阻隔背光的LCD屏更深邃的黑色。尽管这通常是OLED屏的卖点,但对VR来说也很关键,因为部分照明能够更容易地实现较低的余晖(persistence)。全余晖显示屏意味着屏幕持续点亮,视景只是短暂正确,但很快就过期了;而低余晖显示屏只在视景正确的时候点亮图像,随即熄灭。这个过程在极高的刷新率下很难察觉,从而产生连续图像的错觉。
这一原理对降低图像模糊度至关重要。低余晖可以允许更高的灵活性,也就是说显示器可以在一次刷新中显示多张部分图像,并根据头盔传感器采集到的变化数据对中间帧进行调整,因此当用户的视景扫过屏幕时,系统中的头部位置也发生改变;而全景背光的LCD屏是无法做到这一点的。因此,实现低延迟VR体验的关键就是利用类似时间扭曲的进程,以分块或分条的形式渲染前端缓冲区并驱动OLED屏。采用这种方法,屏幕上看到的图像可以极快地适应头部转动,没有任何其他方法可与之相媲美。
异步时间扭曲技术
接下来要讨论的关键技术是异步时间扭曲技术。由于沉浸式VR应用的场景变化相对平缓,因此视景间的图像变化量较小,也相对更容易预测。时间扭曲(Warping)指的是,将之前头部位置渲染的图像进行位移以匹配新的头部位置。这个过程可以一定程度上分离应用帧率与刷新率之间的联系,实现系统低延迟,满足特定的应用场景。这种位移只对头部转动做出反应,而对头部位置或场景动画的变化无动于衷。尽管时间扭曲也是一种权宜之计,但不失为一个有效的安全保障,而且可以令以30FPS帧率运行的设备(至少是部分)呈现以60FPS以上帧率追踪用户头部运动的体验。
VR技术的秘密武器
本文中,我们探讨了如何实现GPU和显示器之间的深度集成,但这只是问题的冰山一角。如果我们想播放视频(可能是受DRM保护的视频),并集成系统通知,那么问题就变得复杂多了。高质量的VR支持需要多媒体产品具备强大的同步能力和高效利用带宽通信的能力,不仅是为了给最终用户营造最佳体验,同时也为了最大程度提高电源效率和性能。借助ARM帧缓冲器压缩(AFBC)和ARM TrustZone等高效工具,ARM Mali多媒体套装(MMS)可以实现GPU、视频和显示器处理器的深度集成,是目前VR设备开发的领先工具。