Oculus Integration for Unity的最新版本v23为Quest和Quest 2应用开发增加了实验性的OpenXR支持。新添加了一种减少位置延迟的技术,称为“Phase Sync”,在Unity和Unreal Engine 4的集成中都有添加。Oculus建议所有Quest开发者考虑使用它。
Oculus Unity集成的OpenXR支持
OpenXR是一个旨在简化XR应用开发的行业支持的标准,今年已经迈出了几个重要的步伐,朝着成为生产就绪的标准迈进。今天,Oculus发布了新的开发工具,为使用Unity构建的Quest和Quest 2应用添加了实验性的OpenXR支持。
OpenXR旨在允许开发者构建一个与任何OpenXR头戴显示器兼容的单一应用,而不需要为每个头戴显示器运行时构建不同版本的应用。
虽然Unity正在开发自己的OpenXR支持,但新发布的v23 Oculus Unity集成为“Oculus Quest和Oculus Quest 2的OpenXR实验性插件”提供了支持。这将允许基于Oculus Unity集成所提供的功能开发基于OpenXR的应用。
今年早些时候,Oculus还发布了支持构建原生Quest和Rift应用的OpenXR支持。
Unity和Unreal Engine中的相位同步减少延迟
v23 Oculus Unity集成和Unreal Engine 4集成还引入了一种名为“Phase Sync”的新延迟减少技术,据Oculus称,它可以通过“无性能开销”降低位置跟踪延迟。该公司建议“每个正在开发中的应用都启用[Phase Sync],尤其是如果你的应用对延迟敏感(例如使用了手部跟踪)。”
虽然Quest长期以来一直使用异步时间扭曲来通过在送往显示器之前将渲染的帧弯曲到最新旋转数据来减少头部旋转延迟,但位置跟踪并不受此技术的影响。
减少位置跟踪延迟的一种方法是尽量减少一个帧开始渲染和它实际达到显示器之间的时间。理想情况下,帧将在送往显示器之前完成渲染;如果它提前完成,由帧完成到送往显示器之间的所有时间都会增加位置延迟。
Phase Sync引入了动态帧定时,根据需要即时调整,以确保以最佳方式完成帧来减少延迟。
与Oculus PC SDK不同,Oculus Mobile SDK自从推出以来就一直使用固定延迟模式来管理帧定时。固定延迟模式的理念是尽早完成所有工作,以避免过时的帧。它能够很好地实现这个目标,但是随着我们发布的拥有比原始Quest更强大CPU和GPU计算能力的Quest 2,许多应用程序可以比计划提前完成帧的渲染。因此,我们往往会看到更多的“提前帧”[…]
与固定延迟模式相比,相位同步根据应用工作负载自适应地处理帧定时。其目标是在我们的合成器需要完成的帧要在其之前完成渲染,以便尽可能地节省延迟,同时不丢失任何帧。相位同步和固定延迟模式的不同之处可以在典型的多线程VR应用程序的以下图表中说明。
图片提供:Oculus
幸运的是,通过Oculus的v23 Unity和Unreal Engine集成,启用相位同步就像勾选一个方框一样简单(详细信息请看这里)。
0