周三(1月13日),几波科技记者陆续来到国贸附近的一间酒店,体验最新的 Oculus Rift 和 HTC Vive 设备。活动组织者并非这两家公司,而是图形芯片巨头 Nvidia。熟悉VR的人都知道,这项跨时代的技术,对于图形计算力的需求也提升了一个量级。处于产业链上游的图形芯片厂商,在VR技术上做了什么?
首先,根据 Nvidia 提供的数据,“沉浸式VR体验对性能的要求是普通游戏PC的7陪。”PC游戏以1080p分辨率和30FPS刷新率为技术数据,而VR游戏的实际渲染分辨率为1512×1680×2,刷新率需要达到90FPS,才能带来良好的体验。否则,无法保证画面的清晰度和画面移动时的细节。其次,沉浸式的VR体验必须保证延迟时间,也就是用户做出头部运动到看到相应反馈时间,不得超过20ms。否则,人的大脑就会因无力计算而发生错乱,临床表现就是头晕、头晕、头晕。
Nvidia 推出的 Gameworks VR 开发平台,提供了 5 种图形渲染方面的技术,分别是:Multi-res shading(多分辨率着色)、VR SLI(多显卡渲染)、Context priority(上下文优先级)、Direct mode(直接模式)和Front buffer rendering(前缓冲渲染)。接下来,容我用通俗的语言科普下,等你下次再谈论VR的时候,也能看起来懂得更深一些。
这项技术的基本原理是,将图形渲染与VR头盔的光学变形情况结合起来。VR头盔贴近眼球,所以需要一组镜片帮助用户对焦。因为镜片的存在,会导致画面发生畸变,所以需要对画面进行畸变补偿。
畸变补偿的画面所需信息,比GPU渲染出的画面要少很多(镜片光路损失一部分,同时人眼对视觉中心比边缘看得更清楚)。所以 GPU 本质上做了很多无用功。Multi-res shading 要做的事情就是,把每一帧的画面分成多个部分,中间保留更多细节,而边缘保留较少细节。换个角度就是压缩画面,从而提升渲染速度。
多显卡渲染技术原理很简单,就是支持两个GPU同时渲染左眼和右眼画面。
上下文优先级不太好理解。举个例子,如果转头过快的话,新位置的画面还没渲染出来,或者出现的是前一个位置的画面,就会引起不适。怎么解决这个问题呢?技术专家想到一种方法,即人为插入一个根据位置计算出来的帧来占位。GPU 需要一个独立的线程来做这件事,强在下一帧出现之前占位,从而减少画面的延迟(或因为掉帧而引起的抖动)。
直接模式需要 Windows 操作系统的配合。它的意思是,之前将VR头盔连接到电脑上的时候,电脑将其识别为一台扩展显示器;而 Direct mode 可以让电脑将 VR 头盔识别成一种新型的专用显示设备。好处见下。
前缓冲渲染技术原理跟直接模式是相关的。如果电脑把 VR 头盔当做普通的显示器的话,就需要通过标准的两级缓冲模式进行渲染;识别成 VR 头盔的话,就可以越过 Back Buffer 直接进入 Front Buffer,减少延迟。
另一家GPU大厂AMD的同类方案叫做 LiquidVR,同样拥有上述技术,不过在高端GPU市场份额上,最近几年 Nvidia 领先。