关于 Oculus SDK 0.6.0.0 新特性的具体说明

0

在0.6.0.0 中,Oculus 首次引入了分层组件(Compositor),可以让你将一组图像置于另外一组图像之上,而每个层级都可以设置成不同的帧率和分辨率。在使用方面能带来的直接便利之处就是,你可以让游戏的文字部分以高分辨率显示,其它部分以低分辨率显示,这样既保证了可玩性,又保持了帧率。

和上面一样,但展示了不同层可以用不同帧率来渲染。

和上面一样,但展示了层套层的样子。

新引入的时间穿越 – 基于位置的时间穿越(Positional Timewarp)。众所周知,时间穿越是在 PC 和移动端都有的,能在卡顿(即 GPU 在垂直同步前还没来得及渲染出下一帧,于是当前帧被显示了两次或更多)时通过扭曲当前帧来得到下一帧画面,有效解决了卡顿导致的头晕问题。但,在扭曲当前帧这个环节,如果只包含方向,那还好说,把图像往头转的相反方向移动就好了;但一旦涉及到位置,麻烦就大了,因为会有新的像素生成,之前被遮挡的像素现在可能就能看见了(但没有渲染出来!)。而 Oculus 终于把位置也搞定,但问题是,那些被遮挡的像素是如何得到的呢?据说是在通过读取深度缓存(depth buffer),在扭曲的网格(mesh)上扭曲纹理(texture)的坐标来得到的,类似于平行映射(parallax mapping),因此那些被遮挡的地方就自动有了像素。但是作者称 PTP 并不解决任何遮挡的问题,可能这是通过 SDK 的其它部分来完成的?

如果暂停 GPU 的渲染,就是这个效果……

不过要注意的是,目前 PC 端还不支持异步时间穿越,即单开一个线程来进行时间穿越。这需要显卡厂商的支持,我们期待在 Liquid VR 和 VR Direct(似乎要基于异步引擎!nV 好像没有!!)中见到他们。异步时间穿越作为底层支持,方向时间穿越和位置时间穿越在方法论上就位,这样大一统的流畅 VR 体验就有了保障了。

ff_oculusrift-2


Source:GFYCat

LEAVE A REPLY

Please enter your comment!
Please enter your name here