地図

Mapbox MapsにおけるVulkan対応のご紹介

Mapbox 、Android向けMaps SDKの最新リリースにおいて、VulkanグラフィックスレンダリングバックエンドのサポートMapbox 。この機能は、すべてのユーザー向けにパブリックプレビューとして提供されています。

これは、Androidにおける地図レンダリングの未来に向けた重要な一歩となります。Vulkanは、パフォーマンスの向上、効率の向上、そしてGPU操作に対するより直接的な制御を目的として設計された、最新のグラフィックスAPIです。Androidプラットフォーム全体でVulkanの採用が進む中、Mapbox 、高性能な地図体験を構築する開発者の皆様にこれらのメリットを提供できるよう、投資Mapbox 。

Vulkanとは何ですか?

Vulkanは、2016年に初めてリリースされた最新のグラフィックスAPIです。それ以来、Androidモバイルプラットフォームにおいて、OpenGLに取って代わりつつあります。

これにより、GPUによるグラフィックスコマンドの割り当て、送信、実行をより直接的かつきめ細かく制御できるようになります。また、シェーダーのコンパイルや最適化をより明確に管理することも可能になります。これらの機能により、OpenGLでは実現が困難、あるいは不可能なパフォーマンスの向上が、Mapbox たらされます。

こうした理由から、Vulkanは、ゲーム、自動車、AR/VR、高度な地理空間アプリケーションなど、高性能かつ低遅延のレンダリングが求められる業界において、主要なグラフィックスAPIとして定着しています。特に、自動車プラットフォームや次世代のモバイル体験では、デジタルコックピット、ナビゲーションシステム、没入型3D環境において、スムーズで応答性の高いインターフェースを実現するために、Vulkanの採用がますます進んでいます。 現代の地図レンダリングが、よりダイナミックでGPUを多用する体験へと進化し続ける中、Vulkanは、こうした需要を大規模にサポートするために必要な柔軟性とパフォーマンスを提供します。

Vulkanがマップのレンダリングをどのように改善するか

Androidでのマップ描画におけるVulkanには、次のような即効性のあるメリットがあります:

より応答性の高いUIレンダリング

Vulkanは、操作中に目に見えるカクつきを引き起こす可能性のあるフレームレートの急上昇やフレームの遅延を軽減します。これは主に、Vulkanがグラフィックスリソース(特にシェーダーやパイプライン)の構築をレンダリングスレッドから切り離すことを可能にするためです。

フレーム時間の短縮

テストの結果、Mapbox レンダリングと比較して、フレーム処理時間が約10%Mapbox 。その要因の一つとして、OpenGLドライバーは通常、API呼び出しのたびに検証のオーバーヘッドが発生しますが、Vulkanはその明示的なAPI設計により、このオーバーヘッドを最小限に抑えていることが挙げられます。

Galaxy Tab S9端末において、一般的な高倍率ズーム時のパン操作において、フレームレートの向上が確認されました。

パーセンタイル別のフレーム時間です。数値が低いほど良い状態です。

開発診断の向上

Vulkanは、開発中にAPIの使用に関する問題やパフォーマンスに影響を与える動作を特定するのに役立つ、オプションの検証レイヤーをサポートしています。これらの診断機能により、OpenGLでは容易に報告できない問題も把握できるようになります。

Vulkanのサポートを有効にする

開発者は、OpenGLバックエンドを引き続き使用するか、プレビュー版の新しいVulkanバックエンドを試すかを選択できます。Vulkan版を有効にするには、 Android用 Maps SDK開発者は、自身の build.gradle.kts ファイル:

configurations.all {
    resolutionStrategy.dependencySubstitution {
        all {
            val requested = requested as? ModuleComponentSelector
            if (requested?.group == "com.mapbox.maps" &&
                (requested.module == "android-core" || requested.module == "android-core-ndk27")
            ) {
                val vulkanModule = requested.module.replace("android-core", "android-core-vulkan")
                useTarget("com.mapbox.maps:$vulkanModule:${requested.version}")
            }
        }
    }


}

現在の制限事項およびパブリックプレビューの制約

パブリックプレビュー版におけるVulkanのサポートには、以下のプラットフォームおよび機能上の制限があります:

  • 対応プラットフォームは以下のものに限られます:
    • Android 12以降
    • Vulkan 1.1 以降
    • arm64-v8a 建築
  • 古いAndroidプラットフォームはサポートされていません。多くのデバイスには、まだ未熟または不安定なVulkanドライバーが搭載されており、レンダリングの不具合やアプリのクラッシュを引き起こす可能性があるためです。

Vulkanバックエンドでは、以下の機能はまだサポートされていません:

  • カスタムレイヤー
  • Vulkanでレンダリングされたマップの上にOpenGLウィジェットを重ねる
  • Vulkanがサポートされていない場合、自動的にOpenGLに切り替わります
  • MapWidget (Android Auto)
  • MapView.snapshot()
  • 降雨の影響(降雪の影響も対応しています)

非対応のデバイスでVulkanが選択された場合、自動フォールバック機能はまだ実装されていないため、マップの初期化エラーが発生する可能性があります。

はじめに、そして今後の展望

Mapbox、VulkanはAndroidデバイス上でより高速かつ応答性の高い地図を提供する新たな機会をもたらすと同時に、自動車分野、空間コンピューティング、そして高度なモバイル可視化における将来のイノベーションに向けた基盤を築くものです。より近代的なグラフィックスアーキテクチャへの移行により、AndroidエコシステムがVulkanを中心に標準化が進むにつれ、Mapbox レンダリング効率、フレームの一貫性、そして全体的なユーザー体験の向上を継続的にMapbox 。

Vulkanに関するよくある質問(FAQ)

Vulkanとは何ですか?

Vulkanは、GPUの動作を低レベルで制御できる最新のグラフィックスAPIであり、OpenGLなどの従来のAPIと比較して、より効率的で高性能なレンダリングを実現します。地図のレンダリングを含め、高度なAndroidグラフィックスの標準として、ますます普及しつつあります。

VulkanはAndroidにおけるマップのパフォーマンスをどのように向上させるのでしょうか?

Vulkanは、フレーム時間を短縮し、レンダリングの遅延を最小限に抑え、ズームやパンなどの操作をより滑らかにすることで、地図のパフォーマンスを向上させます。また、CPUの負荷を軽減し、GPUリソースをより有効に活用できるため、よりレスポンスの良い地図操作を実現します。

Vulkanのサポート導入は、Mapbox OpenGLのサポートを終了Mapbox 意味するのでしょうか?

OpenGLのサポートは継続されます。ただし、パフォーマンスや機能の豊富さという点では、VulkanがOpenGLを引き続き上回っていくものと予想されます。

Mapbox 、デバイスの機能に応じてVulkanまたはOpenGLを自動的に選択するMapbox ?

いいえ、バックエンドの自動選択機能はありません。バックエンドの自動選択を行うには、両方のバックエンドを含める必要があり、それがバイナリのサイズに影響を与えるためです。現時点では、手動での選択が唯一の選択肢となります。

Vulkan 1.0、Android 11 以前のバージョン、および armeabi-v7a はサポートされていますか?

いいえ、Vulkan 1.0には対応しておりません。Mapbox 、APIの機能の豊富さとデバイス対応率のバランスを考慮し、Vulkan 1.1Mapbox 。また、Android 11以前のバージョンおよびarmeabi-v7aにも対応しておりません。 

カスタムレイヤーとOpenGLの相互運用性については、どのような計画がありますか?

今後のリリースでは、カスタムレイヤーがサポートされる予定です。必要なVulkanデータはすべて公開され、開発者はカスタムレイヤー内でVulkan APIを利用できるようになります。また、今後のリリースでは、Mapbox OpenGLとの相互運用性もサポートMapbox 。特に、Vulkanベースのマップ上にOpenGLウィジェットを重ねて表示できるようになります。

関連記事