WebGPU サポートが Chrome で有効になります

Google は、113 月 2 日にリリース予定の Chrome 3 ブランチで WebGPU グラフィック API と WebGPU Shading Language (WGSL) をデフォルトでサポートすると発表しました。 WebGPU は、レンダリングや計算などの GPU 側の操作を実行するための Vulkan、Metal、Direct12D XNUMX に似た API を提供します。また、シェーダー言語を使用して GPU 側のプログラムを作成することもできます。 WebGPU 実装は、ChromeOS、macOS、および Windows のビルドで最初にのみ有効になります。 Linux と Android の場合、WebGPU のサポートは後日有効になります。

Chrome に加えて、Firefox では 2020 年 2021 月から、Safari では XNUMX 年 XNUMX 月から実験的な WebGPU サポートがテストされています。 Firefox で WebGPU を有効にするには、about:config で dom.webgpu.enabled フラグと gfx.webgpu.force-enabled フラグを設定します。 Firefox と Safari では WebGPU をデフォルトで有効にする予定はまだありません。 Firefox および Chrome 用に開発された WebGPU 実装は、Dawn (C++) および wgpu (Rust) という個別のライブラリの形式で利用でき、WebGPU サポートをアプリケーションに統合するために使用できます。 WebGL をネイティブに使用して、一般的な JavaScript ライブラリに WebGPU サポートを追加する作業も進行中です。 たとえば、WebGPU の完全なサポートは Babylon.js ですでに発表されており、Three.js、PlayCanvas、TensorFlow.js では部分的なサポートが発表されています。

概念的には、Vulkan グラフィックス API が OpenGL と異なるのとほぼ同じように、WebGPU は WebGL と異なります。ただし、WebGPU は特定のグラフィックス API に基づいているのではなく、Vulkan と同じ低レベルのプリミティブを使用する汎用レイヤーです。メタル、および Direct3D。 WebGPU は、JavaScript アプリケーションに、コマンドの構成、処理、GPU への送信、関連するリソース、メモリ、バッファ、テクスチャ オブジェクト、およびコンパイルされたグラフィック シェーダの管理に対する低レベルの制御を提供します。 このアプローチにより、オーバーヘッドが削減され、GPU の効率が向上するため、より高性能のグラフィックス アプリケーションを実現できます。

WebGPU を使用すると、Vulkan、Metal、または Direct3D を直接使用するスタンドアロン プログラムと同様に機能する Web 用の複雑な 3D プロジェクトを作成できますが、特定のプラットフォームに縛られません。 WebGPU は、WebAssembly にコンパイルすることでネイティブ グラフィックス プログラムを Web 対応フォームに移植するための追加オプションも提供します。 3D グラフィックスに加えて、WebGPU は、GPU 側への計算のオフロードとシェーダーの実行に関連する可能性もカバーします。

WebGPU の主な機能:

  • リソースの個別の管理、準備作業、および GPU へのコマンドの送信 (WebGL では、XNUMX つのオブジェクトが一度にすべてを担当しました)。 XNUMX つの個別のコンテキストが提供されています。テクスチャやバッファなどのリソースを作成するための GPUDevice。 レンダリングおよび計算ステージを含む個々のコマンドをエンコードするための GPUCommandEncoder。 GPU 実行キューに渡す GPUCommandBuffer。 結果は、XNUMX つ以上のキャンバス要素に関連付けられた領域にレンダリングすることも、出力なしで (たとえば、計算タスクの実行時) レンダリングすることもできます。 ステージを分離すると、リソースの作成とプロビジョニングの操作を、異なるスレッドで実行できる異なるハンドラーに分離することが容易になります。
  • 状態を処理するための別のアプローチ。 WebGPU は、GPURenderPipeline と GPUComputePipeline という XNUMX つのオブジェクトを提供します。これらを使用すると、開発者が事前定義したさまざまな状態を組み合わせることができ、ブラウザーがシェーダーの再コンパイルなどの追加作業でリソースを無駄にしないようにできます。 サポートされる状態には、シェーダ、頂点バッファおよび属性レイアウト、スティッキー グループ レイアウト、ブレンディング、深度およびパターン、レンダリング後の出力形式が含まれます。
  • Vulkan のリソース グループ化ツールによく似たバインディング モデル。 リソースをグループにグループ化するために、WebGPU は GPUBindGroup オブジェクトを提供します。これは、コマンドの作成時に、シェーダーで使用するために他の同様のオブジェクトに関連付けることができます。 このようなグループを作成すると、ドライバーが必要な準備アクションを事前に実行できるようになり、ブラウザーは描画呼び出し間のリソース バインディングをより高速に変更できるようになります。 リソース バインディングのレイアウトは、GPUBindGroupLayout オブジェクトを使用して事前定義できます。

出所: オープンネット.ru

コメントを追加します