Firefox の夜間ビルドに WebGPU サポートが追加されました

В 毎晩 Firefox のビルド 出現した 仕様のサポート WebGPU、概念的には API に似た、3D グラフィックス処理および GPU 側コンピューティングのためのプログラミング インターフェイスを提供します。 火山, 金属 и ダイレクト3D 12。 この仕様は、Mozilla、Google、Apple、Microsoft、およびコミュニティ メンバーによって開発されています。 ワーキンググループ、W3C組織によって作成されました。

WebGPU の主な目標は、Windows 上の Direct3D 3、Metal などの最新のシステム グラフィックス API によって提供される 12D グラフィックス テクノロジと機能を活用するために、Web プラットフォームに安全でユーザー フレンドリーでポータブルな高性能プログラミング インターフェイスを提供することです。 macOS では Vulkan、Linux では Vulkan です。 概念的には、Vulkan が OpenGL と異なるのと同じように、WebGPU は WebGL とは異なります。同時に、WebGPU は特定のグラフィックス API に基づいていませんが、通常は Vulkan と同じ低レベル プリミティブを使用するユニバーサル レイヤーです。メタルと Direct3D。

WebGPU は、JavaScript アプリケーションにコマンドの編成、処理、GPU への送信に対する下位レベルの制御を提供し、関連するリソース、メモリ、バッファ、テクスチャ オブジェクト、およびコンパイルされたグラフィック シェーダを管理します。 このアプローチにより、オーバーヘッド コストが削減され、GPU での作業効率が向上するため、グラフィックス アプリケーションのパフォーマンスを向上させることができます。

WebGPU を使用すると、Vulkan、Metal、または Direct3D に直接アクセスするスタンドアロン プログラムと同等に機能する、Web 用の本格的な複雑な 3D プロジェクトを作成できますが、特定のプラットフォームに関連付けられません。 WebGPU は、WebAssembly テクノロジを使用してネイティブ グラフィックス プログラムを Web 対応フォームに移植する際の追加機能も提供します。 3D グラフィックスに加えて、WebGPU は、GPU への計算のオフロードとシェーダー開発のサポートに関連する機能もカバーします。 シェーダ WebGPU シェーディング言語で作成されるか、中間 SPIR-V 形式で指定され、現在のドライバーでサポートされるシェーダー言語に変換されます。

WebGPU は、リソース、準備作業、GPU へのコマンドの送信を個別に管理します (WebGL では、XNUMX つのオブジェクトが一度にすべてを担当していました)。 XNUMX つの個別のコンテキストが提供されます。
テクスチャやバッファなどのリソースを作成するための GPUDevice。 レンダリングおよび計算ステージを含む個々のコマンドをエンコードするための GPUCommandEncoder。 GPU での実行のためにキューに入れられる GPUCommandBuffer。 結果は、XNUMX つ以上のキャンバス要素に関連付けられた領域にレンダリングすることも、出力せずに処理することもできます (たとえば、計算タスクの実行時)。 ステージを分離すると、リソースの作成操作と準備操作を、異なるスレッドで実行できる異なるハンドラーに分離することが容易になります。

WebGPU と WebGL の XNUMX 番目の違いは、状態を処理するアプローチが異なることです。 WebGPU は、GPURenderPipeline と GPUComputePipeline という XNUMX つのオブジェクトを提供します。これらを使用すると、開発者が事前に定義したさまざまな状態を組み合わせることができ、ブラウザーがシェーダーの再コンパイルなどの追加作業でリソースを無駄にしないようにできます。 サポートされる状態には、シェーダ、頂点バッファおよび属性レイアウト、スティッキー グループ レイアウト、ブレンディング、深度およびパターン、レンダリング後の出力形式が含まれます。

WebGPU の XNUMX 番目の機能はバインディング モデルと呼ばれ、主に
Vulkan に存在するリソース グループ化ツールを思い出させます。
リソースをグループ化するために、WebGPU は GPUBindGroup オブジェクトを提供します。これは、コマンドの作成中にシェーダーで使用するために他の同様のオブジェクトに関連付けることができます。 このようなグループを作成すると、ドライバーが必要な準備アクションを事前に実行できるようになり、ブラウザーは描画呼び出し間のリソース バインディングをより高速に変更できるようになります。 リソース バインディングのレイアウトは、GPUBindGroupLayout オブジェクトを使用して事前定義できます。

Firefox の夜間ビルドに WebGPU サポートが追加されました

Firefox では、about:config で WebGPU を有効にするために、「dom.webgpu.enabled」という設定があります。 CanvasContext レンダリングでは、合成を有効にする必要もあります ウェブレンダー (about:config の「gfx.webrender.all」)、Rust で記述され、ページ コンテンツのレンダリング操作を GPU にアウトソーシングします。 WebGPUの実装はプロジェクトコードに基づいています
wgpu、Rust で書かれており、Linux、Android、Windows、macOS 上の DX12、Vulkan、および Metal API 上で実行できます (DX11 および OpenGL ES 3.0 のサポートも開発中です)。 並行して、Google は別の実装を開発中です。 カナリア支店 Chromium は「chrome://flags/#enable-unsafe-webgpu」フラグを使用して有効にしますが、今のところ macOS と Windows でのみ機能します。

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

コメントを追加します