使用 Android XR 擴充功能設定,提高影格速率、降低 GPU 負載,以及縮短算繪延遲時間

Unity 提供一些 Android XR 專屬的效能相關功能,需要使用 Android XR Extensions 套件。啟用這些功能,即可透過空間扭曲和 Vulkan 子取樣技術提高影格速率、降低 GPU 負載,並使用延遲鎖定技術縮短追蹤的轉譯延遲時間。

必要條件

按照本指南操作之前,請務必先驗證並完成下列必要條件:

啟用 Spacewarp

URP 應用程式 SpaceWarp 是一種 OpenXR 最佳化功能,可合成每隔一個影格,有助於維持高影格速率。這項技術會使用前一影格的動作向量和深度資料,預測像素的移動位置,藉此減少運算能力和能源消耗。

優點

  • 合成替代影格,減少 GPU 轉譯工作負載。
  • 大幅降低運算能力和能源消耗。
  • 使用重新投影技術,縮短使用者動作和畫面更新之間的延遲時間。

啟用這項功能

  1. 在 Unity 主選單中,依序點選「Edit」>「Project Settings」
  2. 展開「XR Plug-in Management」(XR 外掛程式管理) 區段。
  3. 選取目前 XR 裝置對應的分頁標籤。
  4. 前往「OpenXR 功能群組」部分。
  5. 在「所有功能」區段中,啟用「應用程式 SpaceWarp」

    spacewarp 的 Unity 設定

啟用 Vulkan 子取樣

Vulkan Subsampling 可讓您使用片段密度地圖,以可變密度建立及取樣圖像。這項 Vulkan 功能可讓螢幕的不同區域以不同解析度算繪並傳輸至記憶體,特別適用於凹凸透鏡算繪,因為周邊區域可使用較低的解析度。

優點

  • 與凹凸透鏡成像技術搭配使用時,可提供不同程度的改善,具體視板型規格而定。
  • 透過雙線性篩選,減少周邊區域的鋸齒狀效果。
  • 在不同螢幕區域啟用有效率的可變速率算繪。

啟用這項功能

  1. 在 Unity 主選單中,依序點選「Edit」>「Project Settings」
  2. 展開「XR Plug-in Management」(XR 外掛程式管理) 部分,然後點選「OpenXR」
  3. 按一下「Android XR (Extensions): Session Management」旁邊的齒輪圖示。
  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);
    }
}