Android XR を搭載した Samsung Galaxy XR が登場このブログ投稿は、 Android XR Spotlight Week の一環として公開されています。このイベントでは、Android XR 向けアプリの学習、構築、準備に役立つリソース(ブログ投稿、動画、サンプルコードなど)を提供しています。
今週、Samsung は Google と Qualcomm との共同開発による Galaxy XR をリリースしました。デベロッパーにとってエキサイティングな時代が到来しました。Google は、XR アプリのパフォーマンスを最大限に引き出すお手伝いをしたいと考えています。
非 XR デバイスでゲームやアプリのパフォーマンスが低いと、ユーザーは不満を感じますが、XR の世界ではパフォーマンスは単なるオプションではなく、アプリの成功に不可欠な要素です。XR でフレームレートの目標を達成できないと、乗り物酔いなどのより深刻な問題を引き起こす可能性があります。
このガイドでは、Android XR 開発で理解しておくべきパフォーマンス最適化の基本について説明します。どの機能が最もパフォーマンスを向上させるか、いつ使用するか、フレームレートの目標を達成するためにどのように連携するかを学びます。
目指しているのは次のとおりです。
- 最小: 72fps(プレイの品質に関するガイドラインの一部)
- 省略可: フレームあたり 11 ミリ秒の予算で 90fps
高いフレームレートを維持することが重要な理由について詳しくは、パフォーマンス ガイドラインをご覧ください。
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 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 の追加最適化
継続的に測定して反復することが重要です。すべての最適化がすべてのプロジェクトに等しくメリットをもたらすわけではありません。パフォーマンス指標 API を使用して、特定のユースケースに実際に役立つものを明確に把握してください。
次のステップ: スキルを広げる
Google Vids と Google Workspace の以下のリソースをご確認ください。
続きを読む
-
プロダクト ニュース
本日、The Android Show で発表されたように、Android はオペレーティング システムからインテリジェンス システムへと移行し、アプリのエンゲージメントを高める機会を増やしています。
Matthew McCullough • 所要時間: 4 分
-
プロダクト ニュース
モバイル エコシステムは常に進化しており、新たな機会と新たな脅威の両方をもたらしています。これらの変更を通じて、Android と Google Play は、数十億のユーザーが安心してアプリを利用し続け、デベロッパーのイノベーションが発展し続けられるよう、引き続き取り組んでまいります。
Vijaya Kaza • 所要時間: 3 分
-
プロダクト ニュース
Jetpack Compose の 2026 年 4 月のリリースは安定版です。このリリースには、コア Compose モジュール バージョン 1.11(BOM マッピングの全体を参照)、共有要素のデバッグツール、トラックパッド イベントなどが含まれています。
Meghan Mehta • 所要時間: 5 分
最新情報の入手
Android 開発に関する最新の分析情報を毎週メールでお届けします。