雨果·巴拉:行业北极星Vision Pro过度设计不适合产品市场

高通分享:骁龙XR2平台用同步空间扭曲提升VR性能

查看引用/信息源请点击:映维网Nweon

同步空间扭曲

映维网Nweon 2022年10月10日)VR渲染要求硬件和应用程序保持非常高的帧速率。典型的PCVR设置包括头显,PC和一对必须实时工作的手持式控制器。这一设置必须支持流畅的控制器和游戏移动、六自由度动画、头部移动和两个90到120 FPS的渲染过程。将所述设置切换到无线模式,通信信道同样必须能够进行实时数据传输。

高通在2021年与《Virtual Desktop》的开发团队Guy Godin合作,为Adreno Motion Engine添加了空间扭曲功能,从而提高PCVR渲染性能。

空间扭曲功能可以及时生成丢失帧,无需PC开销,从而减少PC到头显的带宽和编码器压力。这令可用的PC渲染时间和有效编码器比特率加倍。

日前,高通XR业务的战略和合作伙伴负责人布莱恩·福格尔桑(Brian Vogelsang)通过一篇博文介绍了同步空间扭曲是如何提升VR体验的性能。下面是映维网的具体整理:

XR帧外推

当应用的渲染速率与显示器的硬件显示刷新速率匹配时,高性能渲染就会出现。实现这一点的方法包括异步时间扭曲(Asynchronous Time Warp;ATW),它可以纠正渲染和当前姿态之间头部旋转的细微差异。它同时可以确保低延迟的头部运动反映在显示屏,这对于防止晕动症非常重要。然而,传统的ATW只能纠正头部旋转,无法应对游戏动画、控制器运动、六自由度运动或游戏动画。当渲染速率与显示速率不匹配时,帧抖动可能表现为双图像、重影或模糊。

用空间扭曲克服抖动

抖动可以通过空间扭曲技术来解决,这是一种填充缺失帧的技术。空间扭曲存在数种变体:

  • 异步空间扭曲(Asynchronous Space Warp)

  • 应用空间扭曲(Application Space Warp)

  • 运动平滑(Motion Smoothing)

  • 同步空间扭曲(Synchronous Space Warp;SSW)

所述技术可以生成一个新的帧并防止渲染重复的帧。视频帧插值在过去帧和未来帧之间生成一个中间帧。与之类似,VR生成一个从先前渲染的帧推断出的未来帧。

帧外推

当XR设备的显示速率为90 FPS时,应用渲染完成的剩余时间不到11毫秒。在120 FPS时,应用渲染必须在8毫秒内完成。有关渲染速率和显示速率匹配的理想场景,请参见下面的GIF动图:

在无线PCVR的渲染设置中,游戏的需求可能超出范围,并导致渲染和显示速率不匹配。在这种情况下,空间扭曲可以帮助用户开玩更高刷新率的游戏。

例如,在120 FPS的显示速率下,空间扭曲可以允许游戏以60 FPS的速度渲染,亦即PC完成帧的可用时间加倍。空间扭曲通过外推显示帧速率来填充每一个丢失帧,从而消除抖动并提供120 FPS的感知。以半速率渲染同时可以发送较少但较大的帧,从而减轻视频编码器和网络的压力,并在相同带宽下为头显提供两倍的可用比特率。这一外推过程如下所示:

在《Virtual Desktop》中启用同步空间扭曲

在《Virtual Desktop》中启用同步空间扭曲需要在Adreno Motion Engine中创建一个新界面,利用两个颜色输入帧,渲染的姿态,和目标姿态来生成一个新的外推帧。结果如下所示:

以下是PCVR到头显渲染的工作原理概述:

  1. 《Virtual Desktop》客户端应用读取姿态并将其发送到PC以生成帧。

  2. PC渲染请求的帧,然后对其进行编码并通过Wi-Fi发送至头显。

  3. 头显客户端应用对帧进行解码,并将其提交给OpenXR运行时,OpenXR会在用户的显示器合成帧。

注:当头显以120 FPS的速度运行时,PC渲染应用帧的时间少于8毫秒。

所有步骤必须以尽可能低的延迟执行,以最小化运动到光子延迟。

同步空间扭曲可防止《Virtual Desktop》出现抖动:

  • 当《Virtual Desktop》检测到未接收新帧时,它会将最后两个真实渲染帧,及其各自的姿态和目标输出姿态提供给Adreno Motion Engine。

  • Adreno Motion Engine使用最后两帧、渲染姿态和目标姿态来生成外推帧。

  • 《Virtual Desktop》客户端应用将所述帧传递给OpenXR以避免抖动。在这里,由于Adreno Motion Engine每隔一帧生成一次帧,因此PC只需以半速率渲染。然而,即使PC现在可以以半速率运行,《Virtual Desktop》客户端应用和Adreno Motion Engine依然必须以原始目标帧速率完成整个外推过程。在120 FPS的速度下,Adreno Motion Engine必须生成两个新帧,每只眼睛一个帧,所有时间都在7毫秒以下,同时要为时间扭曲留出运行空间。

Adreno Motion与同步空间扭曲

为支持同步空间扭曲,Adreno Motion Engine需要执行五项操作:

  • Reprojection重投影:在PC使用不同的头部姿态渲染两个帧。为了准确确定应用运动,删除头部姿态增量,并考虑渲染帧的视场。Adreno Motion Engine将两个输入帧重投影到目标输出姿态,类似于时间扭曲。

  • Scene Change Detection场景变动检测:当输入帧不相交时进行检测,因此计算运动时找不到任何相关性,从而导致外推帧较差。这可能发生在各种场景中。Scene Change Detection同时检测渐变过渡以及菜单和UI,它们都是不应该外推的场景。

  • Sub Pixel Motion Estimation亚像素运动估计:一旦两个输入帧处于相同的目标头部方向,就会执行运动估计以识别帧之间的动画增量。运动矢量以X和Y中的16位浮点值返回。子像素分辨率有助于在渐变曲面提供平滑过渡。

  • Filtering and Smoothing过滤和平滑:在将原始运动矢量用于外推之前,执行空间过滤和平滑。这有助于减少异常值并提供平滑度。这可以避免丢失边缘细节,特别是双手和控制器周围的细节。

  • Extrapolation外推:最后渲染的帧和生成的运动矢量用于外推并在未来半步生成新帧。这个步骤同时应用目标头部姿态扭曲(在生成运动矢量时提取)。

根据exposed的OpenXR HMD功能,可以选择将最后的外推步骤卸载到OpenXR合成器,从而进一步释放头显资源。

结论

要在短时间内达到所需的高帧速率,需要做的事情有很多。尽管理想情况下PC和Wi-Fi可以满足,但依然会出现无法满足需求的时刻,所以诸如同步空间扭曲等技术非常有必要。

Adreno Motion Engine的低延迟、实时帧外推功能可以支持采用同步空间扭曲功能的《Virtual Desktop》够减少视频编码器和网络压力,同时将每帧可用的PC渲染时间加倍。由于整个工作负载都发生在采用高通骁龙XR2的头显之中,因此不需要额外的PC,从而进一步方便用户享受《Virtual Desktop》体验。

本文链接https://news.nweon.com/101364
转载须知:转载摘编需注明来源映维网并保留本文链接
素材版权:除额外说明,文章所用图片、视频均来自文章关联个人、企业实体等提供
QQ交流群苹果Vision  |  Meta Quest  |  微软HoloLens  |  AR/VR开发者  |  映维粉丝读者

您可能还喜欢...

资讯