WebGPU の新機能(Chrome 113)

François Beaufort
François Beaufort

数年間の開発期間を経て、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 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113