Android Jetpack の WebGPU ライブラリは、WebGPU 標準の慣用的な Kotlin バインディングを提供し、Android アプリケーション内で高性能な最新の 3D グラフィックスとコンピューティング機能を実現します。
WebGPU は WebGL の後継であり、OpenGL の精神を受け継いでいます。最新の GPU の動作を反映し、GPU の機能をクロス プラットフォームで安全かつ人間工学的に優れた方法で公開するために、ゼロから構築されました。
WebGPU を選ぶ理由
- 使いやすさの向上: Vulkan は Android の主要な低レベル グラフィック API です。WebGPU は、Vulkan よりも使いやすく、冗長性が大幅に低い最新のハイレベル API を提供します。
- バッチ処理とシリアル化: WebGPU は、プロトコルのチャットを最小限に抑える設計の一部として、複数のコマンドをコマンド バッファに記録します。これにより、Kotlin バインディングを使用する際に外部メソッドを呼び出す必要性も最小限に抑えられます。
- ユニバーサル サポート: WebGPU シェーダー コード(WGSL)は、ウェブを含むプラットフォーム間の WebGPU 実装で直接共有できます。
- 最適化されたコンピューティング: コンピューティング タスクとグラフィック タスクの間でバッファをコピーなしでシームレスに共有することで、パフォーマンスが向上し、従来の API と比べて開発が簡素化されます。
このライブラリの対象者
このライブラリは、GPU への直接アクセスを必要とする高性能アプリケーションを構築するために設計されています。
- 画像と動画処理のフィルタ
- データのビジュアル化
- 機械学習の推論
- ゲームとシミュレーション
目標外: これはグラフィック API であり、ゲームエンジンではありません。レンダリング ループ、カメラ行列、シーングラフの管理は、ユーザーが行う必要があります。
WebGPU の基本コンセプト
WebGPU の開発では、WebGPU の基本的なオブジェクトとその相互作用を理解することが不可欠です。
コンセプト |
説明 |
インスタンス |
WebGPU のエントリ ポイント。アダプタとサーフェスへのアクセスを許可します。 |
アダプター |
デバイスの特定の GPU を表します |
デバイス |
リソースが作成される GPU への論理接続 |
キュー |
GPU にコマンドを送信するために使用されるメカニズム |
シェーダー モジュール |
WebGPU シェーディング言語 (WGSL)で記述された GPU コード |
パイプライン |
タスクの GPU 状態全体(シェーダー、ブレンド)を記述するオブジェクト |
バインド グループ |
データバッファ(テクスチャなど)をシェーダーに関連付けます |
コマンド エンコーダ |
GPU コマンドのシーケンスをコマンド バッファに構築するために使用されるオブジェクト |