最適化ウィンドウ - MRTK2

MRTK Optimize Window は、Unity で最適なパフォーマンスを発揮するために必要な Mixed Reality プロジェクトの構成プロセスを自動化し、情報を提供するためのユーティリティです。 このツールは、正しいプリセットに設定することで処理をミリ秒単位で短縮することができるレンダリング構成に主に焦点を当てています。

Note

Optimize Window を開くには、Unity Editor の上部にあるバー メニューから、[Mixed Reality]>[Utilities] (ユーティリティ)>[Optimize Window] の順に選択します。

Active Build Target (アクティブなビルド ターゲット) は、プロジェクトで現在コンパイルの対象となっているビルド プラットフォームです。

Performance Target (パフォーマンス ターゲット) は、どのようなデバイス エンドポイントをターゲットにするかを最適化ツールに指示します。

  • AR Headsets (AR ヘッドセット) は、HoloLens などのモバイルクラスのデバイスです。
  • VR Standalone (VR スタンドアロン) は、Oculus Go や Quest などのモバイルクラスのデバイスです。
  • VR Tethered (PC 接続型) は、Samsung Odyssey、Oculus Rift、HTC Vive などの PC 対応デバイスです。

MRTK Optimize Window Performance Target

最適化を設定する

Settings Optimization (設定の最適化) タブでは、Unity プロジェクトの重要なレンダリング構成がいくつか提供されています。 このセクションは、最適なパフォーマンスを発揮するために変える必要がある設定の自動設定や、情報提供に役立ちます。

緑のチェック アイコンは、特定の設定が行われたプロジェクトやシーンにおいて、現在の値が最適であることを示しています。 黄色の警告アイコンは、現在の構成に改善の余地があることを示しています。 各セクションの関連ボタンをクリックすると、Unity のプロジェクトまたはシーンの該当する設定が、より最適な値に自動で構成されます。

MRTK Optimize Window Settings

単一パス インスタンス化レンダリング

単一パス インスタンス化レンダリングは、Mixed Reality アプリケーション用の最も効率的なレンダリング パスです。 この構成を使用すると、両眼のレンダリング パイプラインが合わせて 1 度だけ実行され、両眼のドローコールがインスタンス化されます。

深度バッファーの共有

アプリケーションの深度バッファーを共有すると、ホログラムの安定性向上に役立てることができます。これにより、レンダリングされたシーン内の、どの位置にある何に対して、ホログラムを安定させるかの情報がプラットフォームに提供されます。

深度バッファーのフォーマット

また、"AR ヘッドセット" で深度バッファーの共有を有効にする場合は、24 ビットではなく 16 ビットの深度フォーマットを利用することが推奨されます。 つまり、精度を下げて、パフォーマンスを向上させるということです。 ピクセルの深度計算の精度が低いために z-fighting が発生する場合は、クリップ プレーンの far をカメラに近づけることをお勧めします (1000m ではなく 50m にするなど)。

Note

"16 ビットの深度フォーマット" を使用する場合、この設定では Unity はステンシル バッファーを作成しないため、ステンシル バッファーを必要とする効果は機能しません。 "24 ビットの深度フォーマット" を選択した場合、エンドポイントのグラフィックス プラットフォームが対応する場合は、通常、8 ビットのステンシル バッファーが作成されます。

ステンシル バッファーを必要とするマスク コンポーネントを使用する場合は、RectMask2D を代わりに使用することを検討してください。これはステンシル バッファーを必要としないため、"16 ビットの深度フォーマット" と組み合わせて使用できます。

リアルタイム グローバル イルミネーション

Unity のリアルタイム グローバル イルミネーションを使用すると、美しい結果を実現することができますが、非常に高いコストがかかります。 グローバル イルミネーションのライティングは Mixed Reality では非常に高コストなため、開発時にはこの機能を無効にすることをお勧めします。

Note

Unity のグローバル イルミネーションの設定は、プロジェクト全体ではなく、シーンごとに設定されます。

シーン解析

Scene Analysis (シーン解析) タブでは、現在シーンにあるどの要素がパフォーマンスに最も影響を与えているかの情報を確認することができます。

MRTK Optimize Window Settings scene Analysis

Lighting Analysis (ライティング解析)

このセクションでは、現在のシーンに存在するライトの数と、影の表示を無効にすべきライトの分析が行われます。 シャドウ キャストは非常にコストのかかる操作です。

Polygon Count Analysis (ポリゴン数の解析)

このツールは、ポリゴン数の統計情報も提供します。 該当シーン内のポリゴン数が最も多いゲームオブジェクトを素早く特定し、最適化の対象を識別するのに非常に役立ちます。

Unity UI Raycast Analysis (Unity UI レイキャスト解析)

フォーカスされている Unity UI 要素があるかどうか判断するために、MRTK のポインターごとにグラフィック レイキャスト操作が行われます。 このようなレイキャストは非常に高コストなため、パフォーマンスを向上させるために、結果が必要ない UI 要素をレイキャストのターゲットから無効にする必要があります。 すべての Graphic 要素には、Graphic.raycastTarget プロパティが含まれています。 このツールは、このプロパティが有効になっている (つまり、無効にする要素の候補となる) テキスト UI 要素の検索を行います。

シェーダー解析

Unity の Standard Shader を使用すれば、非常に高品質なゲーム ビジュアルを作成することができますが、GPU Bound な Mixed Reality アプリケーションのパフォーマンス要件においては、そのほとんどが最適ではないことが一般的です。 したがって、開発者は MRTK Standard シェーダー を使用して、美的なグラフィカル機能とパフォーマンスのバランスを & 取うことをお勧めします。

Shader Analysis (シェーダー解析) タブでは、現在のプロジェクトの Asset フォルダをスキャンして、Unity Standard Shader が使用されているマテリアルの検索を行うことができます。また、必要に応じて、Mixed Reality Toolkit が提供するシェーダーを使用していないすべてのマテリアルを検索することができます。 マテリアルが検出されたら、適切なボタンを使用して、そのすべてを変換したり、個別に変換したりすることができます。

MRTK Optimize Window Settings shader analysis

関連項目