開発

Meta Questアプリの基本的な最適化ワークフロー

このトピックでは、プロファイリングを使用してアプリの開発ビルドでのボトルネックと問題を特定する基本的な最適化ワークフローについて説明します。

FPSとフレームあたりのミリ秒数

最適化の議論では、多くの場合フレーム毎秒(FPS)が強調されますが、アプリを最適化する際に調べる指標としては、ミリ秒/フレーム(フレームあたりのミリ秒数)のほうが適切な場合があります。ミリ秒単位で各フレームを測定すると、より実用的な目標が得られます。各フレームは、特定のフレームレートを達成するために、CPUとGPUの作業を設定された時間(通常はミリ秒で測定)内に完了する必要があります。
フレームあたりのミリ秒数を指標として使用する場合、各フレームに目標(例: 処理時間の具体的な上限時間)が割り当てられます。関連するフレームレートのパフォーマンスターゲットは、以下のとおりです。
  • 60 FPS = 16.6ミリ秒/フレーム
  • 72 FPS = 13.7ミリ秒/フレーム
Meta Questアプリの大半は72 FPSを目指しています。このガイドの次のセクションでは、プロファイリングを使用して最適化領域を特定することで、13.7ミリ秒/フレームのパフォーマンスターゲットを達成する方法を説明します。

ワークフローのプロファイリング

このワークフローでプロファイリングを行う場合、最初の目標は、アプリがGPUバウンドとCPUバウンドのどちらであるかを判断することです。アプリがCPUバウンドかGPUバウンドかを判断する方法の1つは、何もレンダリングしないことです。そのためには、レンダリングカメラをオフにした状態でアプリを実行し続けます。そうすると、カリング、ドローコールの送信、シェーダーの実行などのレンダリングパイプラインのコストがかかりません。アプリのフレームレートと、各フレームを完了するのにかかるミリ秒数を観測します。
テストが完了したら、結果を調べて次の点を検討します。
  • 何もレンダリングしなくてもアプリのパフォーマンスに何も影響がないかまたはほとんど影響がない場合、アプリはおそらくCPUバウンドです。
  • パフォーマンスが大幅に改善される場合、アプリはおそらくGPUバウンドです。

CPUバウンドのアプリへの対処

アプリがCPUバウンドになる一般的な原因は、アプリロジックと物理シミュレーションの複雑性や、ガベージコレクションの停滞などです。Unityプロファイラーなどのインストルメント化プロファイラーを使用すると、このようなパフォーマンスボトルネックを突き止めることができます。
最もコストが高いコードパスのみを最適化することに重点を置いてください。所要時間が2ミリ秒を超えるアプリロジックは、最適化できる可能性があります。

GPUバウンドのアプリへの対処

GPUバウンドのアプリは、一般的に次の2つのカテゴリに分けられます。
  • シーンの複雑さに問題がある頂点バウンドのアプリ。
  • フラグメントバウンドのアプリには、シェーダーの複雑性に関する問題があります。
どちらのカテゴリであるかをテストする方法は、レンダリングするピクセルを減らすことです。そのためには、アプリのレンダリングスケールを小さくします(例えば0.01)。そうすると、レンダリングされるフラグメントは減りますが、シーンの複雑性は保持されます。
テストが完了したら、結果を調べて以下の点を検討します。
  • パフォーマンスに影響がない場合、アプリはおそらく頂点バウンドです。
  • パフォーマンスが向上する場合、アプリはおそらくフラグメントバウンドです(フィルバウンドとも呼ばれる)。
:

頂点バウンド

アプリがCPUバウンドか、GPUバウンドかを判断するために使用される方法(すべてのレンダリングカメラの無効化)は、フラスタムカリングなど一部のCPU側の計算が頂点バウンド操作と見なされることを意味します。これは厳密に言うと正確ではありませんが、これらの操作は、一般的に、頂点バウンドのアプリを最適化する場合と同じアクションによって最適化されます。頂点バウンドアプリに関する最も一般的な問題は次のとおりです。
  • オブジェクトのカリングに時間がかかりすぎる
  • 発行されるドローコールが多すぎる
  • レンダリングする頂点が多すぎる
これらのボトルネックを特定するには、アプリの問題のある部分で、RenderDoc for Oculusのようなフレームデバッガーを使用します。多くの場合、複雑なジオメトリを簡素化してドローコールを削減すると、こうしたの問題は解決します。アプリのニーズによっては、LODシステムまたはドローコールのバッチ処理を検討する必要があります。

フィルバウンド

アプリがフィルバウンドである場合は、アプリの1つ以上のシェーダーを最適化する必要があります。ピクセルの複雑さは、フィルバウンドのシェーダーにとって主な問題となる傾向があります。

最適化と反復

調査の結果に基づいて、ワークフローで発生する主要な問題に対処します。プロファイリングと最適化は反復型のプロセスです。最初に見つかった問題を分離して対処しても、アプリで望ましいパフォーマンスが得られないことはよくあります。通常、目的のパフォーマンスを実現するためには、最適化を何度か繰り返す必要があります。作業中の最適化が完了したら、ワークフロー全体を見直してください。CPUバウンドであったアプリを最適化すると、その結果今度はフラグメントバウンドになることも考えられます。
ナビゲーションロゴ
日本語
© 2026 Meta