XR パフォーマンス機能

XR 向けのさまざまなパフォーマンス最適化に関する情報

厳しいレンダリング要件が原因で、XR に多くのパフォーマンス最適化が必要になり、Unreal Engine (UE) には XR 専用の新しいレンダリング モデルがいくつか導入されました。このドキュメントでは、これらの機能の概要と、これらを UE XR プロジェクトで使用する方法について説明します。

可変レート シェーディングと 固定中心窩レンダリング

可変レート シェーディング (VRS) とは、レンダリング ターゲット (複数可) におけるピクセルのシェーディング レートを調整するためのさまざまな方法を提供する新型 GPU でサポートされる機能です。あらゆる設定におけるデフォルトのシェーディング レートは「1:1」です。これは、1 つのピクセル シェーダー呼び出しが、画面上の 1 ターゲット ピクセルに適用されることを意味します。VRS を使用すると、他のシェーディング レート、具体的には 1x2、2x1、2x2、2x4、4x2、または 4x4 を指定することができます。たとえば、シェーディング レート「2x2」の場合は 2x2 ピクセルのグループ (つまり 4 ピクセル) に対して単一のピクセル シェーダー呼び出しとなり、「4x4」の場合は 4x4 のグループ (16 ピクセル) に対して単一のピクセル シェーダー呼び出しとなります。

シェーディング レートはマテリアルごとか、シェーディング レート画像アタッチメント (ティア 2 VRS 経由) を介して適用できます。

固定中心窩レンダリング とは、VR ヘッドセットで画像ベースの VRS を活用して、ターゲットに対するシェーディング レートを調整し、ビューの周辺に向けてシェーディング レートを低下させる技法です。光学的なひずみが原因で、結果的に GPU では画像のエッジに向けて大量のピクセル詳細を浪費することになります。画像の中央からエッジに向けてシェーディング レートを低下させる VRS 画像を適用することで、知覚可能な画質の低下を最小限にとどめながらパフォーマンスを向上できます。

固定中心窩レンダリングでは、コンピュート シェーダを介して生成されたアタッチメントを使用します。

FixedFoveation.jpg

両側の中心の領域 (黒色) は、それぞれのステレオ ビューの中心に対応しています。より暗い領域のシェーディング レートはより高く、黒色の領域では完全 (1x1、ピクセルごとに 1 ピクセル シェーダー呼び出し) になり、えんじ色の領域では x と y の両方で半分のレート (2x2、4 ピクセルごとに 1 ピクセル シェーダー呼び出し)、そして明るい赤色の領域では 1/4 のレート (4x4、16 ピクセルごとに 1 ピクセル シェーダー呼び出し) になります。

VRS アタッチメントを含む初期結果はそのベース パスに適用され、透過処理パスでは大幅な向上が見られます。現時点では概念実証の段階ですが、ベース パスと透過処理パス以外にも適用することができます。

プロジェクトの設定

VRS の設定にアクセスするには、まずメインメニューから [Edit (編集)] > [Project Settings (プロジェクト設定)] を選択します。次に、[Project Settings] ウィンドウで [Engine (エンジン)] > [Rendering (レンダリング)] > [VR] に移動します。

vrs-settings.png

コンソール変数

次のコンソール変数をしようできます。

変数

説明

r.vrs.Enable

エンジン全体で VRS を有効/無効にします (マテリアルベースの VRS とアクティブなあらゆる画像ベースの VRS)。

r.VRS.EnableImage

画像ベースの VRS のみを有効/無効にします。マテリアルごとの VRS が有効でサポートされる場合は、これも依然として機能します。

vr.VRS.HMDFixedFoveationLevel

HMD 固定中心窩レンダリングの品質とパフォーマンスの設定です。

vr.VRS.HMDFixedFoveationDynamic

固定中心窩レンダリングを GPU 使用率に基づいて調整するかどうかを有効/無効にします。

既知の制限事項

  • DirectX 12 と VRS Tier 2 のサポートを含む Windows デバイス、Vulkan と VK_KHR_fragment_shading_rate の拡張サポートを含む Windows デバイス、および Oculus Quest のみで使用可能です。

  • NVIDIA の DLSS には対応していません。

  • 視線トラッキングの中心窩レンダリングは現在サポートされていません。

インスタンス化されたステレオ

インスタンス化されたステレオによるレンダリング (Instanced Stereo Rendering) は、UE における XR のパフォーマンス上の影響を軽減する目的で導入されました。この機能を有効にするには、[Edit] > [Project Settings] > [Engine] > [Rendering] > [VR] にある [Instanced Stereo (インスタンス化されたステレオ)] オプションをオンにします。

Instanced Stereo enabled in VR settings

クリックしてフルサイズで表示。

インスタンス化されたステレオ によるレンダリングを有効にした場合は、エンジンを再起動してシェーダーを再コンパイルする必要があります。 この機能を有効にすると (シリアル レンダリング パスとパラレル レンダリング パスの両方)、そのベース パスと早期 Z パスは、スタティック メッシュ、スケルタル メッシュ、スプライト パーティクル、メッシュ パーティクルと機能します。 現時点では、インスタンス化されたステレオ は PC (DirectX) と、他のプラットフォーム向けのサポートを含む、4.11 初期リリースより後の PS4 で機能します。 次は、VR における標準的なステレオ レンダリングと、インスタンス化されたステレオによるレンダリングを比較したビデオです。

モバイル向けのマルチビュー サポート

特定の (サポートする) モバイル デバイスでは VR マルチビューをサポートしています。モバイル マルチビューは、デスクトップ PC で使用可能なインスタンス化されたステレオによるレンダリングに似ており、ステレオ レンダリングの最適化されたパスをモバイル デバイスの CPU に提供することで機能します。この機能を有効にするには、次の手順に従います。

この機能は実験的段階にあるため、最新の Mali ベースの GPU のみで機能します。この機能がより進化し、より多くのモバイル デバイス向けのサポートがオンラインで提供された際には、この警告が取り除かれます。

  1. メイン ツールバーから [Edit] > [Projects Settings] に行き、エディタのプロジェクト設定を開きます。

  2. 次に [Engine] > [Rendering] > [VR] に行き、[Mobile Multi-View (モバイル マルチビュー)] オプションを見つけます。

  3. [Mobile Multi-View] オプションを有効にして、Unreal Engine を再起動してこの変更を反映させます。

    Enable mobile multi-view in the VR settings

これを機能させるには、Android のビルド設定を次のように設定する必要があります。

  • [Android] > [Build (ビルド)] セクションで [Support OpenGL ES2 (OpenGL ES2 をサポート)] が有効になっていることを確認します。

  • [Mobile HDR (モバイル HDR)][Instanced Stereo Rendering (インスタンス化されたステレオによるレンダリング)] の両方が無効になっていることを確認します。

  • 現時点では、モバイル マルチビューは最新の Mali ベースの GPU のみで機能します。

  • 互換性のない GPU で、この機能をオンにしてプロジェクトをパッケージ化した場合、ランタイム時にはこの機能が無効になります。

フォワード レンダリング

ForwardRenderingBanner.png

Unreal Engine はディファード レンダラを使用するデフォルト設定なので、多様性を高め、より多くのレンダラ機能へのアクセスが保証されます。 ただし、ディファード レンダラにはトレードオフもあります。すべての VR 体験に適しているというわけではありません。 フォワード レンダリング は、レンダリング パスが速くなることで基準値も上がるので、VR プラットフォーム上でのパフォーマンスが良くなる場合があります。 また、速くなるだけではなく、提供されているアンチ エイリアシング オプションを使うとビジュアルも一層きれいになります。

この機能の詳細については、「フォワード シェーダー レンダリング」ドキュメントを参照してください。

パフォーマンスのプロファイリング

VR には負荷が高すぎるアセットをトラックするには、プロジェクトの存続期間にわたって、CPU と GPU でのプロジェクトの動作を可能な限りプロファイリングする必要があります。

  • GPU プロファイリング - GPU プロファイラを有効にするには、プロジェクトの実行時に Ctrl + Shift + , (カンマ) キーを押すだけです。このショートカット キーを押すと、次の画像のようなウィンドウが新しく表示されます。

    GPU Visualizer

  • CPU プロファイラ - CPU でのプロジェクトの動作のプロファイリングは GPU のプロファイリングよりも複雑です。この方法に関する詳細については、「パフォーマンス プロファイラ」ドキュメントを参照してください。

ポストプロセス設定

VR の厳しいレンダリング要件のため、デフォルトで有効になっているポストプロセス詳細機能の多くを無効にする必要があります。そうしないと、プロジェクトで パフォーマンスに関する問題が生じる可能性があります。プロジェクトでこれらの機能を無効にするには、次を実行する必要があります。

  1. 存在しない場合は、ポストプロセス (PP) ボリュームをレベル内に加えます。 1.その PP ボリュームを選択し、[Post Process Volume (ポストプロセス ボリューム)] セクションで [Infinite Extent (Unbound) 無制限に適用 (アンバウンド)] オプションを有効にして、PP ボリュームの設定がレベル全体に適用されるようにします。

    ![Enable unbound option for the post process volume(enable-unbound-post-process-volume.png)

  2. [Post Process Volume] セクションの [Settings (設定)] を展開して各セクションを確認し、有効なあらゆる PP 設定のプロパティを無効にします。無効にするには、当該の機能のプロパティをクリックして、その値をデフォルト値 (通常は「1.0」) から「0」に変更します。

    Lens flare intensity is enabled and set to zero

    これを行う際は、すべてのセクションを確認してすべてのプロパティを 0 に設定する必要はありません。最初に、レンズ フレア、スクリーン空間の反射、一時的 AA、SSAO、ブルームなど、パフォーマンスに影響を及ぼす可能性のあるものを無効にしてください。

タグ
Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル