WebGPU の新機能(Chrome 113)

François Beaufort
François Beaufort

数年間の開発を経て、Chrome チームは、ChromeOS、macOS、Windows の Chrome で WebGPU の最初のリリースがデフォルトで利用可能になったことを発表しました。詳しくは、Chrome で WebGPU がリリースされましたをご覧ください。

また、MDN に WebGPU の包括的なドキュメント を追加しました。

他にもあります。

importExternalTexture() で WebCodecs VideoFrame ソースを使用する

WebGPU は、不透明な「外部テクスチャ」オブジェクトを HTMLVideoElement から importExternalTexture() を介して作成する API を公開します。これらのオブジェクトを使用すると、動画フレームを効率的にサンプリングできます。場合によっては、ソース YUV データから直接コピーなしでサンプリングできます。

ただし、初期の WebGPU 仕様では、GPUExternalTexture オブジェクトから WebCodecs VideoFrame オブジェクトを作成することはできません。この機能は、すでに WebCodecs を使用しており、動画処理パイプラインに WebGPU を統合したい高度な動画処理アプリにとって重要です。現在、gpuweb/gpuweb#1380 の問題で議論が行われています。

機能を有効にする

デフォルトでは、この機能は Chrome で有効になっていませんが、機能を明示的に有効にすることで Chrome 113 で試すことができます。chrome://flags/#enable-webgpu-developer-features で "WebGPU Developer Features" [flag] を有効にすると、ローカルで有効にできます。

アプリのすべての訪問者に対して有効にするため、現在オリジン トライアルが実施されており、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 147 ~ 148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113