Oculus SDK 0.6 发布

0

下载在文章末尾。

这次升级的主要重点:

  • 增加了分层组件(Compositor)服务以及纹理集合(Texture Atlas)。
  • 增加了对于层级(Layer)的支持。
  • 移除了对应用本身的一些渲染支持。
  • 大幅精简 API。
  • 扩展模式支持镜像了,而之前仅在直连模式下支持。
  • Unity 4.6.3p2 及以后版本将无需 DirectToRift.exe
  • 移除了对 Oculus runtime 的依赖性。现在应用可以被打开,直接以无跟踪的普通平面状态进行渲染。

这是自 Oculus 引入直连模式以来,对 SDK 改动最大的一次。API 有很大改变,同时有了很多的新特性和对漏洞的修正。大部分功能调用都被改变了,因此多数和 Oculus SDK 进行交互的代码都需要被重写。

其 中,最引人注意的一点就是引入了分层组件服务和对层级的支持。这是什么意思呢?简单来说,由于每个层级都是相互独立的,你就可以有不同的分辨率和渲染模 式。在游戏中,最实际的地方就是文字部分你可以用高分辨率的层级,而其它部分用低分辨率的层级来渲染,极大增加了效率。此外,这也为无延迟的“无缝切换” 打下了基础,你可以在某个层级里先载入另外一个应用而无需终止当前应用,然后以适当的过场切换过去。这在 XBox 等游戏主机上已有先例。总之,屏幕上的每一部分分辨率都变成了可以随时改变的。

而应用本身/客户端的渲染支持被移除,之前这部分工作是应用程序来解决的,现在放到了 SDK 的进程里,意味着配置畸变渲染等流程不需要了,也让整个过程更加流水规范化。

注:貌似是因为其中一些未被剥离的二进制文件,目前 SDK 已下架,再次上线时间未知。

以下为官方发布说明:

Oculus PC SDK 0.6.0.0 Beta 14. Mai 2015

Oculus SDK 0.6 最大的改变是带来了分层组件(compositor),和整个画面可以在驱动层面完全分开,可以单独渲染包括畸变等一切元素。

Oculus SDK 0.6 的四大改变:

  • 增加了分层排序服务和纹理集合。
  • 增加了对层级(Layer)的支持。
  • 移除了基于客户端的渲染。
  • API 大幅度精简。

分层排序服务将畸变从应用自身流程移动到了 OVRServer 流程,使用了共享的纹理集合。纹理集合基本上就是一个交换链,其缓存能让在当前帧被畸变、显示的同时进行游戏本身的渲染工作。

对层级的支持使得多个互相独立的应用可被同时渲染,发送到头显中。比方说,你可以分开渲染一个 HUD,一个背景,和一个空间,它们都可被分配在不同层级上,而所有的层级最后会被分层组件服务(而非应用本身)在进行畸变和显示之前整合到一起。每个层级都可以拥有不同的大小,分辨率,以及刷新率。

对 API 的精简是往最终 API 形态的一大跨越,目前主要在于移除了应用本身进行畸变渲染的支持。

新特性

以下为 Oculus SDK 和 runtime 的主要新特性:

  • 增加了分层排序服务,意味着对应用之间切换更好的兼容和支持。
  • 增加了对层级的支持,也就让开发者能基于每个层级的特性和需求来调整设定。
  • 极大改进了错误处理方式和报告方式。
  • 增加了一些新的样品演示工程来展示新的技术和 SDK 特性。
  • 在应用端移除了 DirectX 和 OpenGL 旧 API 兼容库,提升了 runtime 的兼容性和可靠性。
  • 精简了 API
  • 将扩展模式改成了使用分层排序的流程。扩展和直连模式的渲染设定已经很相似了,应用本身无需知道哪种模式被采用。
  • 扩展模式支持镜像了,而之前仅在直连模式下支持。
  • 简化了计时界面,通过精简成单一功能: ovrHmd_GetFrameTiming 来让其更加健壮。
  • 修正了一些漏洞和可靠性问题。以下为针对 Unity 的新特性:
  • 当使用延迟渲染(Deferred Rendering)时将禁止眼部纹理抗锯齿。这修复了黑屏的问题。
  • Unity 4.6.3p2 及以后版本将无需 DirectToRift.exe
  • 移除了对 Oculus runtime 的依赖性。现在应用可以被打开,直接以无跟踪的普通平面状态渲染。

API 改进

这次的 SDK 发布有针对 API 的主要改进。这些改进在保持核心功能的前提下极大精简了 API。改进包括:

  • 移除了应用本身进行畸变渲染的支持。移除的功能包括 ovrHmd_CreateDistortionMesh, ovrHmd_GetRenderScaleAndOffset 等等。如果你觉得你需要基于应用本身的畸变渲染,请联系 Oculus 的开发者关系部门。
  • 引进了 ovrSwapTextureSets,让纹理能在 OVRServer 进程和应用进程中进行共享。应用现在必须对 ovrSwapTextureSet textures 来渲染 VR 场景以及层级,而非放到后端缓存里去。纹理集合将通过 ovrHmd_CreateSwapTextureSetD3D11 或者 OpenGL 来创建,并通过 ovrHmd_DestroySwapTextureSet 来销毁。
  • ovrHmd_BeginFrame 被移除,而 ovrHmd_EndFrame 被 ovrHmd_SubmitFrame 替代。
  • 增加了关于层级的 API。关于层级的指针目录已被放置到 ovrHmd_SubmitFrame 里。
  • 改进了错误报告,包括增加了 ovrResult 的种类。某些 API 功能被改变成返回 ovrResult。ovrHmd_GetLastError 被 ovr_GetLastErrorInfo 所替代。
  • 移除了 ovr_InitializeRenderingShim,在目前的基于服务的分层组件下已毫无必要。
  • 移除了一些 ovrHmdCaps 旗帜,包括 ovrHmdCap_Present,ovrHmdCap_Available,ovrHmdCap_Captured,ovrHmdCap_ExtendDesktop,ovrHmdCap_NoMirrorToWindow 以及 ovrHmdCap_DisplayOff。
  • 移除了ovrDistortionCaps,其中某些功能被放到了 ovrLayerFlags 下面。
  • ovrHmdDesc 不再包含显示设备信息,因为现在显示设备由基于服务的分层组件来处理。
  • 精简 ovrFrameTiming,将只会返回 DisplayMidpointSeconds 预测时间值。其它的所有时间信息都可通过安全线程的 ovrHmd_GetFrameTiming 来得知。ovrHmd_BeginFrameTiming 和 EndFrameTiming 功能也被移除。
  • 移除了延迟测试功能 (例如:ovrHmd_GetLatencyTestResult)。
  • 移除了 PerfLog 功能调用(例如:ovrHmd_StartPerfLog),目前它们被替换成了 ovrLogCallback (此项功能在 SDK 0.5 里被引入).
  • 移除了所有的安全警告相关功能调用(例如:ovrHmd_GetHSWDisplayState)。目前这些功能将自动进行处理。
  • 移除了对 HMD 自动镜像功能的支持。应用目前能创建一个镜像纹理(例如:with ovrHmd_CreateMirrorTextureD3D11 / ovrHmd_DestroyMirrorTexture) 然后手动显示在桌面窗口上。这将给开发者更大的灵活性,应用窗口可以依自己需求来定义。这也移除了之前 SDK 导致的 OpenGL 问题,因为应用的后端缓存限制了头显渲染大小。
  • 增加了 ovrInitParams::ConnectionTimeoutMS,允许让 ovr_Initialize 成功完成的特殊超时。
  • 移除了 ovrHmd_GetHmdPosePerEye 然后增加了 ovr_CalcEyePoses.

漏洞修正

以下为基于 0.5 之后的漏洞修正:

  • HmdToEyeViewOffset 提供了和预期相反的结构;目前已经回复正常,现在将返回正确的从中间到每只眼睛位置的矢量。
  • 如果左右视野都渲染成同样的材质,造成的“出血”会减少。应用还是得在这两个区域之间保持一定的缓冲区域来避免纹理过滤拾取错误的信息,但这个缓冲区已经可以比之前小很多了。我们推荐8个像素,而非之前的100像素。但由于各个系统的差异性较大,欢迎反馈。
  • 修正了在直连和扩展模式之间切换导致的崩溃。
  • 修正了扩展模式下的表现和卡顿问题。以下为已知问题:
  • 在运行 Oculus 世界演示时从扩展模式切换到直连模式会导致渲染方向(屏幕)错误。
  • 在 Windows 7 下的 Oculus Room Tiny Open GL 范例卡顿。
  • Oculus Configuration Utility 在重复运行自带演示场景时可能会崩溃。
  • 应用使用 CreateDXGIFactory 的话可能会降低性能表现;应用应该调用 CreateDXGIFactory1。我们不建议继续使用 CreateDXGIFactory,在之后的版本中将会移除对其支持。
  • 在 Windows 7 的扩展模式下,所有和电脑连接的显示器在头显启动时会黑屏,只有当头显被移除时才会恢复正常。
  • 在 Windows 7 的扩展模式下,如果头显被放置到显示器之上(桌面显示器屏幕分辨率设置中)了,所有的显示可能黑屏。解决方式是将其放在显示器左边或者右边。
  • OVR 服务如果没有运行的话,PC SDK 应用可能崩溃。

点我下载


Via:Oculus

LEAVE A REPLY

Please enter your comment!
Please enter your name here