Android XR を搭載した Samsung Galaxy XR が登場このブログ投稿は、 Android XR Spotlight Week の一環として公開されています。このイベントでは、Android XR 向けアプリの学習、構築、準備に役立つリソース(ブログ投稿、動画、サンプルコードなど)を提供しています。
今週、Samsung は Google と Qualcomm との共同開発による Galaxy XR をリリースしました。デベロッパーにとってエキサイティングな時代が到来しました。XR アプリのパフォーマンスを最大限に引き出すために、ぜひこのガイドをご活用ください。
非 XR デバイスでのゲームやアプリのパフォーマンスの低下はユーザーの不満につながりますが、XR の世界ではパフォーマンスは単なるオプションではなく、アプリの成功に不可欠な要素です。XR でフレームレートの目標を達成できないと、乗り物酔いなどのより深刻な問題を引き起こす可能性があります。
このガイドでは、Android XR 開発で理解しておくべきパフォーマンス最適化の基本について説明します。どの機能が最もパフォーマンスを向上させるか、いつ使用するか、フレームレートの目標を達成するためにどのように連携するかを学びます。
目指しているのは次のとおりです。
- 最小: 72fps(プレイ品質に関するガイドラインの一部)
- 省略可: フレームあたり 11 ミリ秒の予算で 90fps
高いフレームレートを維持することが重要な理由について詳しくは、パフォーマンス ガイドラインをご覧ください。
XR 固有のパフォーマンス機能
まず、視線追跡レンダリングと Vulkan サブサンプリングという 2 つの XR 固有のパフォーマンス機能について説明します。
視線追跡レンダリング
視線追跡レンダリングは、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 Resident Drawer がない場合、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 Batcher が動作していることを確認したいですか?フレーム デバッガで「RenderLoopNewBatcher」エントリを探します。GPU Resident Drawer が適切にバッチ処理されているかどうかを確認するにはどうすればよいですか?「Hybrid Batch Group」エントリを探します。これらの視覚的な確認により、最適化設定が実際に有効になっているかどうかを把握できます。
シーンの最初の 50 個のドローコールをステップ実行します。類似したオブジェクトがバッチ処理されずに個別に描画されている場合は、インスタンス化またはバッチ処理が正しく機能していないことを示しています。フレーム デバッガを使用すると、こうした問題をすぐに確認して対処できます。
その他の最適化
上記の最適化に加えて、パフォーマンス ガイドの完全版では、その他の最適化についても説明しています。概要は次のとおりです。
- URP 設定: モバイル XR の HDR とポスト プロセッシングを無効にします。これらの機能は、モバイル ハードウェアでのパフォーマンス コストに対して視覚的な影響が最小限であるため、視覚的な違いをほとんど認識できない状態で、パフォーマンスを大幅に向上させることができます。
- SRP Batcher: 同じシェーダー バリアントを使用するマテリアルが多数あるシーンの CPU オーバーヘッドを削減します。描画呼び出し間のレンダリング状態の変化を最小限に抑えることで、レンダリングに費やされる CPU 時間を大幅に削減できます。
- ディスプレイのリフレッシュ レート: シーンの複雑さに基づいて 72 fps と 90 fps の間で動的に調整します。複雑なシーケンスではフレームレートを下げて安定性を維持し、シンプルな場面ではフレームレートを上げて非常にスムーズな操作を実現します。
- Depth/Opaque Textures: シェーダー効果に特に必要な場合を除き、無効にします。これらは、ほとんどのアプリケーションでメリットが得られないにもかかわらず、パフォーマンスを無駄にする不要な GPU コピー オペレーションを引き起こします。
- URP レンダー スケール: この設定では、パフォーマンスを向上させるために低解像度でレンダリングしたり、画質を向上させるためにレンダリングをアップスケーリングしたりできます。
これらの最適化の詳細な手順については、Android XR 向け Unity パフォーマンス ガイドをご覧ください。
まとめ
XR アプリのパフォーマンスは、単なる技術的なチェックボックスではありません。快適で没入感のある体験と、ユーザーが不快感や吐き気を催す体験の違いです。これまで説明してきた最適化は、最新の XR デバイスで重要なフレームレートの目標を達成するためのツールキットです。
ロードマップは次のとおりです。
- まず、フォービエイテッド レンダリングと Vulkan サブサンプリングから始めます。これらの XR 固有の機能により、GPU の使用量をすぐに大幅に削減できます。
- 複雑なシーンでジオメトリや室内空間が繰り返される場合は、GPU Resident Drawer と Occlusion Culling を追加します。
- Performance Metrics API を使用してすべてをモニタリングし、変更が実際に役立っていることを確認する
- パフォーマンスの余力を増やすための URP の追加最適化
継続的に測定して反復することが重要です。すべての最適化がすべてのプロジェクトに同じようにメリットをもたらすわけではありません。Performance Metrics API を使用して、特定のユースケースに実際に役立つものを明確に把握してください。
次のステップ: スキルを広げる
詳細をご確認ください。以下のリソースをご確認ください。
続きを読む
-
プロダクト ニュース
デベロッパーの AI ワークフローとニーズはそれぞれ異なるため、AI が開発にどのように役立つかを選択できることが重要です。1 月には、Android Studio の AI 機能にローカルまたはリモートの AI モデルを選択できる機能を導入しました。
Matthew Warner • 所要時間: 2 分
-
プロダクト ニュース
Android Studio Panda 3 が安定版となり、本番環境で使用できる準備が整いました。このリリースでは、AI を活用したワークフローをさらに細かく制御してカスタマイズできるようになり、高品質の Android アプリをこれまで以上に簡単に構築できるようになります。
Matt Dyor • 所要時間: 3 分
-
プロダクト ニュース
Google は、最も高性能な AI モデルを直接 Android デバイスに搭載することに取り組んでいます。本日、Google の最新の最先端オープンモデルである Gemma 4 のリリースを発表いたします。
Caren Chang, David Chou • 所要時間: 3 分
メールを受け取る
Android 開発に関する最新の分析情報を毎週メールでお届けします。