数年間の開発期間を経て、WebGPU の最初のリリースが、ChromeOS、macOS、Windows の Chrome でデフォルトで利用できるようになりました。詳しくは、Chrome の WebGPU をご覧ください。
MDN で WebGPU の包括的なドキュメントの追加も開始しました。
他にもあります。
importExternalTexture()
で WebCodecs VideoFrame
ソースを使用する
WebGPU は、HTMLVideoElement
から importExternalTexture()
まで、不透明な「外部テクスチャ」オブジェクトを作成する API を公開しています。これらのオブジェクトを使用すると、動画フレームを効率的にサンプリングでき、場合によってはソース YUV データから直接 0 コピーの方法でサンプリングできます。
ただし、WebGPU の初期仕様では、WebCodecs の VideoFrame
オブジェクトから GPUExternalTexture
オブジェクトを作成することはできません。この機能は、すでに WebCodecs を使用していて、WebGPU を動画処理パイプラインに統合したいと考えている高度な動画処理アプリにとって重要です。現在、gpuweb/gpuweb#1380 の問題に関して議論が行われています。
機能を有効にする
この機能は Chrome ではデフォルトで有効になっていませんが、Chrome 113 で明示的に有効にすることでテストできます。ローカルで有効にするには、chrome://flags/#enable-webgpu-developer-features
で「WebGPU Developer Features」フラグを有効にします。
現在、オリジン トライアルが進行中で、Chrome 118(2023 年 12 月 8 日)で終了する予定です。トライアルに参加するには、登録し、HTML または HTTP ヘッダーにオリジン トライアル トークンを含むメタ要素を含めてください。詳しくは、オリジン トライアルのスタートガイドをご覧ください。
サンプルコード
// Access the GPU device.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create VideoFrame from HTMLVideoElement.
const video = document.querySelector("video");
const videoFrame = new VideoFrame(video);
const texture = device.importExternalTexture({ source: videoFrame });
// TODO: Use texture in bind group creation.
試してみるには、WebCodecs を使用した動画のアップロードの試験運用版サンプルをご覧ください。
WebGPU の新機能
WebGPU の新機能シリーズで取り上げたすべての内容のリストです。
Chrome 125
Chrome 124
Chrome 123
- WGSL での DP4a 組み込み関数のサポート
- WGSL の無制限のポインタ パラメータ
- WGSL で複合体を逆参照するためのシンタックス シュガー
- ステンシルと奥行きの側面の読み取り専用状態を分離
- 夜明けの更新情報
Chrome 122
Chrome 121
- Android で WebGPU をサポートする
- Windows でのシェーダー コンパイルに FXC ではなく DXC を使用する
- コンピューティング パスとレンダリング パスのタイムスタンプ クエリ
- シェーダー モジュールへのデフォルトのエントリ ポイント
- GPUExternalTexture 色空間として display-p3 をサポート
- メモリヒープ情報
- 夜明けの更新情報
Chrome 120
Chrome 119
Chrome 118
copyExternalImageToTexture()
での HTMLImageElement と ImageData のサポート- 読み取り / 書き込みと読み取り専用のストレージ テクスチャの試験運用版のサポート
- 夜明けの更新情報
Chrome 117
- 頂点バッファの設定解除
- バインド グループの設定を解除
- デバイスを紛失した場合に非同期パイプライン作成によるエラーをミュート
- SPIR-V シェーダー モジュール作成の更新
- デベロッパー エクスペリエンスの向上
- 自動生成されたレイアウトを使用したキャッシュ パイプラインのキャッシュ
- 夜明けの更新情報
Chrome 116
- WebCodecs の統合
- GPUAdapter
requestDevice()
から返却された紛失のデバイス importExternalTexture()
が呼び出された場合に動画のスムーズな再生を維持する- 仕様の遵守
- デベロッパー エクスペリエンスの向上
- 夜明けの更新情報
Chrome 115
- サポートされている WGSL 言語拡張機能
- Direct3D 11 の試験運用版のサポート
- AC 電源でデフォルトでディスクリート GPU を使用
- デベロッパー エクスペリエンスの向上
- 夜明けの更新情報