最適なパフォーマンスを得るために OpenXR 機能の設定を調整する

Unity の OpenXR 設定には、パフォーマンスに関連する機能がいくつか用意されています。これらの機能を有効にすると、アプリが Android XR ランタイムと通信し、パフォーマンス通知を受信し、視線追跡レンダリングを使用して GPU パフォーマンスを最適化できるようになります。

前提条件

このガイダンスに沿って操作する前に、次の前提条件を確認して完了していることを確認してください。

OpenXR 機能の設定にアクセスする

Unity の OpenXR 機能設定にアクセスして、以降のセクションで説明するパフォーマンス機能を構成する手順は次のとおりです。

  1. Unity のメインメニューで、[Edit] > [Project Settings] をクリックします。
  2. [XR プラグイン管理] セクションを開き、[OpenXR] をクリックします。
  3. [OpenXR Feature Groups] セクションに移動します。

XR パフォーマンス設定を有効にする

Unity の XR Performance Settings を使用すると、アプリはパフォーマンス要件を Android XR ランタイムに伝達し、パフォーマンス通知を受け取ることができます。

利点

  • アプリは、最適なパフォーマンスを維持するためにシステム通知を受け取ります。
  • OpenXR ランタイムにパフォーマンス ヒントを提供できます。

この機能を有効にする

先ほど移動した [OpenXR Feature Groups] セクションで、[XR Performance Settings] を有効にします。

視線追跡レンダリングを有効にする

フォービエイテッド レンダリングは、GPU パフォーマンスを改善する静的最適化とアイトラッキング最適化の両方を提供します。ただし、アイトラッキングの実装では、ユーザーが見ている領域をレンダリングし、周辺視野の品質を低下させることで、ユーザーに高品質を提供します。これにより、最も重要な視覚品質を維持しながら、GPU のワークロードを大幅に削減できます。

利点

  • 周辺視野のディテールを減らすことで、GPU の負荷を大幅に軽減します。
  • ユーザーが見ている領域を鮮明に保ちます。
  • フレームをドロップせずに、より複雑なシーンを構築できます。

この機能を有効にする

  1. 先ほど移動した [OpenXR Feature Groups] セクションで、[Foveated Rendering] を有効にします。
  2. [Foveated Rendering API] を [SRP Foveation] に設定します。

    視線追跡レンダリングの Unity 設定

  3. [Enabled Interaction Profiles] セクションで、Eye Gaze Interaction Profile を追加します。

    有効なインタラクション プロファイルの Unity 設定

  4. [権限グループ] セクションで、android.permission.EYE_TRACKING_FINE 権限をリクエストするように指定します。

    android.permission.EYE_TRACKING_FINE 権限がリクエストされた Permission Group の Unity 設定

  5. 実行時に機能をオンにして、アプリのフォービエイテッド レンダリング レベルを設定します。

    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.XR;
    
    public class FoveationStarter : MonoBehaviour
    {
      List<XRDisplaySubsystem> xrDisplays = new List<XRDisplaySubsystem>();
    
      void Start()
      {
        SubsystemManager.GetSubsystems(xrDisplays);
        if (xrDisplays.Count == 1)
        {
          xrDisplays[0].foveatedRenderingLevel = 1.0f; // Full strength
          xrDisplays[0].foveatedRenderingFlags
              = XRDisplaySubsystem.FoveatedRenderingFlags.GazeAllowed;
        }
      }
    }
    

詳しくは、Unity の視線追跡レンダリングに関するドキュメントをご覧ください。