Android XR を搭載した Samsung Galaxy XR が登場しました。このブログ投稿は、Android XR 向けアプリの学習、開発、準備に役立つリソース(ブログ投稿、動画、サンプルコードなど)を提供する Android XR Spotlight Week の一環として公開されています。
今週、Samsung は Google と Qualcomm の協力により開発された Galaxy XR をリリースしました。デベロッパーにとってエキサイティングな時代が到来しました。Google は、XR アプリのパフォーマンスを最大限に引き出すお手伝いをしたいと考えています。
XR 以外のデバイスでゲームやアプリのパフォーマンスが低いと、ユーザーは不満を感じますが、XR の世界ではパフォーマンスは単なるオプションではなく、アプリの成功に不可欠な要素です。XR でフレームレートの目標を達成できないと、VR 酔いなど、はるかに深刻な問題を引き起こす可能性があります。
このガイドでは、Android XR 開発で理解しておくべき重要なパフォーマンス最適化について説明します。どの機能がパフォーマンスの向上に最も貢献するか、いつ使用するか、それらの機能がどのように連携してフレームレートの目標を達成するのに役立つかについて説明します。
目標は次のとおりです。
- 最小: 72 fps(プレイ品質に関するガイドラインの一部)
- オプション: 1 フレームあたり 11 ミリ秒の予算で 90 fps
高いフレームレートを維持することが重要な理由について詳しくは、パフォーマンス ガイドラインをご覧ください。
XR 固有のパフォーマンス機能
まず、XR 固有のパフォーマンス機能である視線追跡レンダリングと Vulkan サブサンプリングについて説明します。
視線追跡レンダリング
視線追跡レンダリングは、2 つのモードを持つ最適化です。1 つ目は静的モード で、画面の中央を高解像度でレンダリングし、視線が外れるほど解像度を徐々に下げます。
2 つ目は視線追跡モード で、視線が向いている領域を詳細にレンダリングし、周辺に表示される画質を低下させます。これは、人間が特定の領域に焦点を当てたときにのみ細かい部分が見えるという、人間の視覚の仕組みを模倣したものです。
視線追跡レンダリングは、ユーザーが認識する画質を損なうことなく、GPU のワークロードを大幅に削減します。視線追跡レンダリングの優れた点は、ユーザーが周辺視野の画質の低下に気づかない一方で、GPU はパフォーマンスの向上を確実に認識できることです。
複雑な 3D アーティファクトを使用した博物館のエクスペリエンスを構築しているとします。視線追跡レンダリングを使用しない場合、「画角」内のすべてをレンダリングしようとすると、90 fps を維持するのが困難になります。視線追跡レンダリングを使用すると、ユーザーが視線を向けている場所の高ポリゴンの詳細を維持できますが、背景環境は低画質でレンダリングされます。ユーザーは違いに気づきませんが、シーンに詳細を追加する余裕が生まれます。
Vulkan サブサンプリング
Vulkan サブサンプリングは、視線追跡レンダリングの強力なサポート機能です。視線追跡レンダリングは、さまざまな画質レベルでレンダリングするものを決定しますが、Vulkan サブサンプリングは、フラグメント密度マップを使用して、さまざまな画質レベルを効率的にレンダリングする方法を処理します 。
視線追跡レンダリングと組み合わせると、Vulkan サブサンプリングによりパフォーマンスが 0.5 ミリ秒向上します。また、周辺視野のギザギザのエッジを滑らかにし、画像全体の見た目をきれいにします。
たとえば、ユーザーが計器や操作に焦点を当てるフライト シミュレータ ゲームでは、視線追跡レンダリングと Vulkan サブサンプリングを組み合わせることで、詳細な操作を鮮明にレンダリングできますが、周辺のコックピット構造では使用するリソースが少なくなります。0.5 ミリ秒の追加はわずかに思えるかもしれませんが、インタラクティブ要素を追加する余裕があるか、激しい瞬間にフレームが落ちるかの違いになります。
複雑なシーン向けの GPU 機能
視線追跡レンダリングと Vulkan サブサンプリングに加えて、スマート インスタンシングとカリングによって不要な負荷を軽減する GPU 機能もあります。これらは、ジオメトリが繰り返される複雑なシーンや、大幅なオクルージョンが発生するシーンで特に効果的です。
GPU レジデント ドロワー
GPU レジデント ドロワーは、GPU インスタンシングを自動的に使用して描画呼び出しを減らし、CPU の処理時間を解放します。そのため、CPU が各オブジェクトを個別に GPU に伝えるのではなく、GPU が類似のオブジェクトをバッチ処理します。
この機能は、森林の木々、オフィス ビルの家具、環境全体に散らばった小道具など、同じメッシュが繰り返される大規模なシーンで最も効果的です。
同じベースメッシュを使用する 200 本の木がある森林のシーンを想像してください。GPU レジデント ドロワーがない場合、200 回の描画呼び出しで GPU が消費され、CPU が解放されます。この機能を有効にすると、GPU はこれらの木をインテリジェントにインスタンス化し、描画呼び出しを 5 ~ 10 回に減らします。これは GPU の大幅な節約となり、ゲームプレイ ロジックや物理演算に投資できます。
GPU オクルージョン カリング
GPU オクルージョン カリングは、 CPU ではなく GPU を使用して、非表示のオブジェクトを特定してレンダリングをスキップします。他のオブジェクトの背後に隠れている(オクルージョンされている)ものを自動的に検出するため、ユーザーに見えないものに GPU を無駄に費やすことはありません。
この機能は、複数の部屋がある屋内空間、密集した環境、壁、床、オブジェクトによって自然に視界が遮られる建築シーンで特に強力です。
たとえば、複数の部屋がある家のエクスペリエンスを構築しているとします。ユーザーがリビングルームにいるときに、壁の背後に完全に隠れている詳細なキッチンをレンダリングして GPU サイクルを無駄にする必要はありません。GPU オクルージョン カリングは、非表示のオブジェクトのレンダリングを自動的にスキップし、実際に表示されるものにパフォーマンス バジェットを割り当てます。
パフォーマンスのモニタリング
これらの機能を使用するだけでは十分ではありません。最適化を測定して、その影響を定量化し、変更が実際に機能していることを確認する必要があります。
Metrics API
Performance Metrics API は、アプリのメモリ使用量、CPU パフォーマンス、GPU パフォーマンスをリアルタイムでモニタリングします。コンポジタ レイヤとランタイム レイヤから包括的なデータが提供されるため、アプリケーションで何が起こっているかを正確に把握できます。
変更を加える前にベースラインを確立し、最適化を適用して影響を測定し、反復します。このデータドリブン アプローチにより、推測ではなく、実際にパフォーマンスが向上していることを確認できます。
視線追跡レンダリングを有効にする前は、GPU フレーム時間が 13 ミリ秒になる可能性があります。これは 11 ミリ秒の予算を超えています。視線追跡レンダリングを有効にして再度測定すると、9 ミリ秒に短縮されます。これにより、シーンに詳細を追加したり、他の場所で画質を向上させたり、より幅広いコンテンツでスムーズなパフォーマンスを確保したりするための 4 ミリ秒の余裕が生まれます。
これらの指標がないと、最適化は当て推量になります。Metrics API は、特定のユースケースに実際に役立つものについて正確な情報を提供します。
フレーム デバッガ
フレーム デバッガは、シーンがフレームごとにどのようにレンダリングされているかを正確に把握するための Unity の組み込みツールです。描画呼び出しのシーケンスが表示され、ステップ実行して最適化が正しく機能していることを確認できます。
SRP バッチャーが機能していることを確認するには、フレーム デバッガで「RenderLoopNewBatcher」エントリを探します。GPU レジデント ドロワーが適切にバッチ処理されているかどうかを確認するには、「Hybrid Batch Group」エントリを探します。これらの視覚的な確認により、最適化設定が実際に有効になっているかどうかを把握できます。
シーンの最初の 50 回の描画呼び出しをステップ実行します。類似のオブジェクトがバッチ処理されずに個別に描画されている場合は、インスタンス化またはバッチ処理が正しく機能していないことを示しています。フレーム デバッガを使用すると、これらの問題をすぐに確認して対処できます。
その他の最適化
上記の最適化に加えて、完全なパフォーマンス ガイドでは、その他の最適化についても説明しています。以下にその概要をまとめます。
- URP 設定: モバイル XR の HDR とポスト プロセッシングを無効にします。これらの機能は、モバイル ハードウェアでのパフォーマンス コストと比較して視覚的な影響が最小限であるため、視覚的な違いはほとんど認識できないにもかかわらず、パフォーマンスを大幅に向上させることができます。
- SRP バッチャー: 同じシェーダー バリアントを使用するマテリアルが多いシーンでの CPU オーバーヘッドを削減します。描画呼び出し間のレンダリング状態の変更を最小限に抑えることで、レンダリングに費やされる CPU 時間を大幅に削減できます。
- ディスプレイのリフレッシュ レート: シーンの複雑さに応じて 72 fps と 90 fps の間で動的に調整します。複雑なシーケンスではフレームレートを下げて安定性を維持し、単純な場面ではフレームレートを上げて非常にスムーズな操作を実現します。
- 深度/不透明テクスチャ: シェーダー効果に特に必要な場合を除き、これらを無効にします。これらは不要な GPU コピー オペレーションを引き起こし、ほとんどのアプリケーションでメリットがないにもかかわらずパフォーマンスを無駄にします。
- URP レンダリング スケール: この設定を使用すると、パフォーマンス上のメリットを得るために低解像度でレンダリングしたり、画質を向上させるためにレンダリングをアップスケールしたりできます。
これらの最適化とその他の最適化の手順については、Android XR 向け Unity パフォーマンス ガイドをご覧ください。
まとめ
XR アプリのパフォーマンスは、単なる技術的なチェックボックスではありません。快適で魅力的なエクスペリエンスと、ユーザーが気分が悪くなったり不快に感じたりするエクスペリエンスの違いです。ここで説明した最適化は、最新の XR デバイスで重要なフレームレートの目標を達成するためのツールキットです。
ロードマップは次のとおりです。
- まず、視線追跡レンダリングと Vulkan サブサンプリングから始めます。これらの XR 固有の機能により、GPU の使用量をすぐに大幅に削減できます。
- ジオメトリが繰り返される複雑なシーンや屋内空間がある場合は、GPU レジデント ドロワーとオクルージョン カリングを追加します。
- パフォーマンス指標 API を使用してすべてをモニタリングし、変更が実際に役立っていることを確認します。
- URP の追加の最適化を調べて、パフォーマンスの余裕を増やします。
継続的に測定して反復することが重要です。すべての最適化がすべてのプロジェクトに同じようにメリットをもたらすわけではないため、パフォーマンス指標 API を使用して、特定のユースケースに実際に役立つものを明確に把握してください。
次のステップ: スキルを広げる
さらに詳しく知りたい場合は、以下のリソースをご確認ください。
- Android XR 向け Unity パフォーマンス ガイド - ここで説明するすべての機能の実装手順を詳しく説明します。
- Unity と Android XR のスタートガイド - 開発環境をセットアップして、 開発を始めましょう。
- Android XR デベロッパー ドキュメント - すべての Android XR 機能に関する包括的なガイド
-
プロダクト ニュースAndroid XR で Unreal Engine と Godot の公式サポートが開始されました。また、生産性を向上させ、新しい XR 機能を有効にするように設計された新しいツール(Android XR Engine Hub と Android XR Interaction Framework)もリリースします。
Luke Hopkins, Ryan Bartley • 4 分で読了 -
プロダクト ニュースGoogle Play では、安全なオンライン エクスペリエンスを提供し、ユーザーを危害から保護することを最優先に考えています。
Paul Feng • 2 分で読了 -
2026 年 7 月 28 日2026 年 7 月 28 日
プロダクト ニュース本日、Jetpack Compose 1.0 のリリースから 5 周年を迎えました。2021 年 7 月 28 日に発表されたバージョン 1.0 から最新の 1.11 リリースまで、API は長年にわたって大幅に進化してきました。この機会に、その進化を振り返ってみましょう。
Rebecca Franks, Nick Butcher, Loryn Hairston • 5 分で読了
Android 開発に関する最新の分析情報を毎週メールでお届けします。