W3C が WebGPU 標準の草案を発表

W3C は、WebGPU および WebGPU Shading Language (WGSL) 仕様の最初のドラフトをリリースしました。このドラフトでは、レンダリングやコンピューティングなどの GPU 操作を実行するための API と、GPU 上で実行されるプログラムを作成するためのシェーダー言語が定義されています。 概念的には Vulkan、Metal、および Direct3D 12 API に似ており、仕様は Mozilla、Google、Apple、Microsoft のエンジニアを含むワーキング グループによって作成されました。

概念的には、Vulkan グラフィックス API が OpenGL と異なるのとほぼ同じように、WebGPU は WebGL とは異なりますが、WebGPU は特定のグラフィックス API に基づいているのではなく、Vulkan、Metal、およびダイレクト3D。 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

コメントを追加します