使用 Android XR 扩展程序设置提高帧速率、降低 GPU 负载并缩短渲染延迟时间

适用的 XR 设备
本指南可帮助您为这些类型的 XR 设备打造体验。
XR 头戴设备
有线 XR 眼镜

Unity 提供了一些与性能相关的 Android XR 特有功能,这些功能需要 Android XR Extensions 软件包。启用这些功能可提高帧速率,并通过空间扭曲和 Vulkan 子采样来降低 GPU 负载,以及通过后期锁定来缩短跟踪的渲染延迟时间。

前提条件

在遵循本指南中的说明之前,请确保您已验证并完成以下前提条件:

启用 spacewarp

URP 应用 Spacewarp 是一种 OpenXR 优化,可通过合成每隔一帧来帮助保持高帧速率。该技术使用前几帧的运动矢量和深度数据来预测像素应移动到的位置,从而减少计算能力和能耗。

优势

  • 通过合成替代帧来减少 GPU 渲染工作负载。
  • 可大幅降低计算能力和能耗。
  • 使用重投影来减少用户移动与显示更新之间的延迟。

启用此功能

  1. 在 Unity 主菜单中,依次点击 Edit > Project Settings
  2. 展开 XR 插件管理部分。
  3. 选择与您当前的 XR 设备对应的标签页。
  4. 前往 OpenXR 功能组部分。
  5. 所有功能部分中,启用应用 SpaceWarp

    spacewarp 的 Unity 设置

启用 Vulkan 子采样

Vulkan 子采样允许使用片段密度图以可变密度创建和采样图像。此 Vulkan 功能可让屏幕的不同区域以不同的分辨率进行渲染并传输到内存,这对于凹凸透镜渲染尤其有用,因为外围区域可以使用较低的分辨率。

优势

  • 与凹凸透镜渲染相结合时,可提供不同程度的改进,具体取决于设备类型。
  • 通过双线性过滤减少外围区域的锯齿。
  • 可在不同屏幕区域实现高效的变速率渲染。

启用此功能

  1. 在 Unity 主菜单中,依次点击 Edit > Project Settings
  2. 展开 XR 插件管理部分,然后点击 OpenXR
  3. 点击 Android XR(扩展程序):会话管理旁边的齿轮图标。
  4. 启用子采样 (Vulkan)

    Vulkan 子采样的 Unity 设置

启用后期锁定

后期锁定是一种可最大限度缩短用户身体动作与显示屏上相应视觉变化之间延迟的技术。它允许在帧生成流水线的后期更新头部姿势,从而提高 XR 应用的舒适度和感知帧速率。为此,它将输入延迟缩短了接近一帧的时间。

优势

  • 显著缩短了运动到光子 (MTP) 延迟时间。
  • 提高用户舒适度并减少晕动症。
  • 提升了稳定性和精确度。

启用此功能

如需启用后期锁定,请在运行时为您的应用开启此功能:

private XRDisplaySubsystem xrDisplay;

private XRDisplaySubsystem.LateLatchNode lateLatchNode = XRDisplaySubsystem.LateLatchNode.Head;

void Start()
{
    List<XRDisplaySubsystem> xrDisplaySubsystems = new();

    SubsystemManager.GetSubsystems(xrDisplaySubsystems);

    if (xrDisplaySubsystems.Count >= 1)
    {
        xrDisplay = xrDisplaySubsystems[0];
    }
}

void Update()
{
    if (xrDisplay != null)
    {
        transform.position += new Vector3(Mathf.Epsilon, 0, 0);

        Quaternion rot = transform.rotation;

        rot.x += Mathf.Epsilon;

        transform.rotation = rot;

        xrDisplay.MarkTransformLateLatched(transform, lateLatchNode);
    }
}