(原标题:【我跟你说】请冷静 VR并没有想象中那么近在咫尺)
PlayStation VR的399美元容索匪甚至路人变得激动不已,与HTC Vive、Oculus Rift初步形成三足鼎立,再加上谷歌、三星、微软,一大波廉价或者借用VR概念的设备已经在路上,场面十分热闹。随着消费版的Oculus Rift开卖,兴许下半年我们就能看到大叔在路边愉快的自High,但VR时代是否已经到来,这里仍然需要打一个巨大的问号。
跑遛VR,需要彪悍的硬件和算法
在各式高分辨率屏幕和高清游戏、视频的狂轰滥炸下,人们对Virtual Reality虚拟现实的期待已经达到了更高的水准。即使是在上个世纪80年代被提出之时,VR本身就被寄予能够在视觉和操作上达到沉浸性Immersion、交互性Interaction和构想性Imagination。但在即使是3D游戏都还在萌芽阶段的年代,让一块2D的屏幕显示出3D效果的本身就是一个很大的问题。
将屏幕贴近双眼同样也意味着分辨率还要相对现在再升一个级别,在Android手机厂商和Windows硬件联盟的大规模攻势下,曾经被苹果大卖特卖的Retina高分辨率早已变得不值一提。但这仍然远远不够,早期的Oculus Rift dk1版本单屏分辨率只有640x800,两个屏幕分辨率加起来也仍然只有1280x800,在就连集显时尚超薄笔记本分辨率都已经达到3K的当下,这个参数相当不够看。
所幸后来无论是Oculus还是HTC都意识到了这一点,在零售版本中,双屏幕分辨率被提升到了2160x1200@90Hz,PlayStation VR的5.7英寸OLED分辨率也达到了1920x1080@120Hz。
仔细的你一定会发现,无论哪家VR产品,屏幕刷新率都被当成了重要参数。电影需要24Hz以上的刷新率保证流畅性,游戏需要60Hz刷新率的概念类似,如果需要在更近距离的情况下对身体动作保持更高的响应速度,更高的刷新在所难免。以主流的1920x1080@60Hz游戏规格为例,这要求显卡每秒需要1.24亿的像素着色,遇到画面较为复杂的场景,至少需要NVIDIA GTX级别以上的显卡来保证流畅性。
这仅仅是开始,对于2160x1200@90Hz的Oculus Rift和HTC Vive而言,GPU的渲染成本要提高到每秒4亿以上。这是一个相当恐怖的数字,也以至于Oculus Rift在推荐入门级VR PC的时候,GeForce GTX 970不过是敲门砖,3倍以上的性能需求需要GTX 980,GTX 980 Ti、TiTan乃至SLI的支持。
(看到售价,怕了吗?)
人类双眼的要求还不止刷新率和分辨率,事实上双眼看到同一个物体的位置和角度是有细微区别的,并且每个眼睛视角的转动与头部的顺时针、逆时针转动而感受到的速度也不尽相同。也就是说,即使屏幕刷新率达到了90Hz甚至120Hz,你仍然有可能头晕,因为在VR显示器中感受到场景切换速度与大脑所想象的有所不同。这也是为什么即使分割成两个屏幕,GPU仍然要计算两遍看起来相似的场景,也许对于人类而言场景非常相似,但对于GPU而言左右屏幕所显示的其实是完全两种不同的场景。
不过我们仍要相信工程师的手段,在早期的Oculus Rift DK1上就已经内置了IMU惯性测量单元来实现四向视角追踪来确保计算机能第一时间获知你的眼睛位置。同时Oculus Rift还通过两片凸透镜增加屏幕的放大倍数,以此弥补视觉不足,让视野达到110度。生活经验告诉我们,放大视野的同时也会带来视野畸变,因此Oculus Rift的解决方案是还要对画面进行预先畸变进行校正。如果在无透镜下观察Oculus Rift放出的视频,就会发现屏幕显示的内容实际上是变形的。
画面变形的同时也意味着这些非中心视觉部分的像素密度要求并非视觉中心那么高,这也让工程师为性能优化带来了可乘之机。NVIDIA GameWorks VR平台中,就提供了一个名为多分辨率阴影技术Multi-Res Shading,它将屏幕分割成数个区域,每个区域根据扭曲图像的像素密度被分配相应的分辨率渲染,以此节省GPU的运算量,以此达到提高VR游戏性能的目的。同时NVIDIA针对降低响应延迟,会将画面外的图像进行前置缓冲区渲染Front Buffer Rendering,而不是在用户转头的时候才开始渲染新的帧数。如果有数个GPU同时运行,则会合理分配每个GPU的负责工作。