日报标题:想要 VR 实现「视网膜」效果,先得有一台更强的电脑
结论前置:
对于当前主流的头戴式 VR 设备,需要双目 12450*6840 或更高的分辨率(介于 8k 和 16k 之间)才能达到“视网膜”效果。
对于所有 VR 设备,需要达到 150-240fps 的刷新率才能让一般人觉得足够真实。
如此高的分辨率和刷新率需要数十倍于当前 PC 的硬件性能才能驱动。
“视网膜”效果是一个没有清晰定义的概念。根据 Steve Jobs 在发布 iPhone 4 时的定义,它是指在 10-12 英寸的距离上,设备的像素密度达到 300ppi(每英寸 300 像素)的水平时的显示效果[1]。然而实际上人眼在 12 英寸的距离上的分辨率可以超过 900ppi[2]。我们在这里采用 Jobs 的标准来讨论。
12 英寸距离上 300ppi 的像素密度,通常用一个单位为 ppd(每度像素数)的参数来表示:
想象一个顶角为 1° 的细长的等腰三角形,其高度 d 为眼睛与屏幕的距离,r 即为其底边覆盖的像素数量。根据 Jobs 的定义,要获得视网膜显示效果,需要至少 57ppd。
对于主流 VR 头显如 HTC Vive 来说,其单眼横向 FOV 为 110°,纵向约 120°。据此计算,它需要 的单眼分辨率才能达到视网膜水平,也就是需要一块至少 12540*6840 的屏幕输出双目画面。按照类似流行的 4k、5k、8k 的说法,这样一块屏幕差不多是 13k;如果维持 Vive 显示面板大小不变的话,其像素密度约为 2567 ppi(作为对比,Vive 的像素密度约为 447 ppi)。至于有的朋友提出这样高的像素密度能否实现,我觉得应该是没什么问题的,毕竟 Sony 早在 2013 年就造出了 2098 ppi 的 OLED 屏幕[3]。
如上图。目前的主流 VR 头显的像素密度只达到了这一标准的 1/6。我们在主流显示设备的像素密度上翻的前一个 6 倍,花了二十多年(从 DOS 时代的 320*200 到目前主流的 1920*1080)。
提高 VR 设备的像素密度,并不是单纯地把高密度显示面板造出来然后放进头显这么简单。从 2k 到 4k、4k 到 8k,每次升级看上去都只是数字翻了一倍,然而像素数量却是呈平方级上升的,4k 是 2k 的 4 倍,8k 是 2k 的 16 倍。视网膜 VR 级别的分辨率,其像素数量是目前 Vive 的 33 倍。
为了满足 VR 游戏的需求,目前最顶级的 PC 的性能都可以被轻易榨干。3D 游戏的性能是与分辨率密切相关的,这意味着如果要提供相匹配视网膜 VR 的 3D 游戏内容,计算机的性能也要相应地提升几十倍。以摩尔定律计算,这个过程需要近 10 年。
视频信号的传输也是一个大问题。上图每个方块右上角给出了在该分辨率下以 90 Hz 的频率发送未压缩的每像素 24 bit 的视频信号所需要的带宽(不含音频)。作为参考,目前最新的 HDMI 2.0 标准可以传输最大 18 Gbps 的带宽——连视网膜 VR 所需求带宽的 1/10 都达不到。为此,我们必须使用更先进的传输方式,例如光纤传输。尚在襁褓之中的无线传输则会面临更大的挑战(开个脑洞,近场激光传输?)。
很多朋友提到,由于人眼只能清晰地看到聚焦点周围很小的范围(2°)[4],利用这一特性,我们可以通过降低周围的分辨率来降低对像素数量的需求,以及计算机和传输性能的要求。
上图是人类左眼的分辨率曲线(CC-BY-SA 3.0 授权)。可见只有眼球中央凹(Fovea centralis)附近的区域有较高的分辨率,周围的分辨率急转直下,甚至不及中央十一。
要利用这一特性,我们需要在 VR 头显中植入眼球追踪设备。它可以通过追踪眼球中央凹的移动来获知用户的眼睛正看向哪个点,然后在这一点周围使用全清晰度渲染,其他地方使用低清晰度渲染。目前眼球追踪技术已经非常成熟,但相关产品都还是以头显插件的方式存在,比如我们这里有一只样机,可以插入 Vive 头显使用;但由于设备太大,戴眼镜的用户就无法使用了;这个设备需要使用 USB 线连接,走线上也很繁冗。不过相信下一代的 VR 头显就会开始集成此类设备,也就不存在这些问题了。根据 nVidia 的说法,应用这一技术可以将渲染性能提高 2 到 3 倍[5][6]。
不过眼球跟踪并不能实际降低对头显像素数量的需求。有的朋友在此基础上设想了一种机构,使得显示面板可以快速根据眼球的位置来移动,这样就只需要极低的分辨率了。我不能否认这种技术在未来出现的可能性,但人眼的转动速度可以达到 900°/s[7],很难想像有何种设备既能够提供足够的扭矩来低延时地跟踪这样高速的移动,又能小到能放进头显里(开个脑洞,也许使用类似 Olympus 微单防抖系统那样的磁悬浮面板?)。
换一种思路,由于目前的 VR 头显都是通过一块(菲涅尔)透镜来将矩形(接近正方形)的显示面板矫正为符合人眼的视野,面板上的某些像素实际上是被浪费掉的。譬如面板上只有内接的近圆形区域里的内容才会被看到,四个角上的像素实际上是完全用不到的,所以根本不需要去渲染。再比如由于透镜的特性,边缘的可视像素密度比中心要低,因此也没有必要使用全分辨率渲染。nVidia 的 Multi-res Shading 技术就利用了这一特性,使得渲染性能可以提高 33%-50%[8]。
nVidia Multi-res Shading 示意图,边缘的部分像素密度较低,因此以较低的精度渲染。
尽管这些技术看上去能有效地节约像素数量,但需要注意的是,因为生产难度和成本问题,实际情况下基本上不可能去生产像素密度不均匀的显示面板。因此这些技术只能用于缓解对计算机性能的要求。
刷新率方面,尽管我们知道 24 fps 已经能提供连续的画面、60 fps 的游戏对于绝大多数人来说已经足够流畅;对于 VR 来说,为了提供足够的沉浸感,这些刷新率都远远不够。理论上人眼最大可以感知到 1000 fps 的画面(维基百科说的,我也没有查到引用来源);对于未经训练的人来说,150-240 fps 的画面已经显得足够真实[9]。因此 Vive、Oculus 的 90 Hz,以及 PSVR 的 120 Hz 都还太低。而如果要达到理想的刷新率,VR 对机器性能的需求和传输带宽的压力还会进一步提升一到两倍。
[1]:Retina Display - Wikipedia
[2]:Why Retina Isn't Enough [Feature] | Cult of Mac
[3]:Insanely high 2098PPI OLED display from Sony makes your 1080p smartphone weep at night
[4]:Fovea centralis - Wikipedia
[5]:https://research.nvidia.com/sites/default/files/publications/foveated-sig16-etech.pdf
[6]:NVIDIA Says New Foveated Rendering Technique is More Efficient, Virtually Unnoticeable
[8]:NVIDIA VRWorks™