公開日: 2025 年 10 月 22 日
テクスチャ形式のサポート機能の拡張
新しい 「texture-formats-tier1」 GPU 機能により、デベロッパーは既存のコンテンツを WebGPU の下位機能に合わせて書き換えることなく、Web に移植できます。レンダー アタッチメント、ブレンド可能、マルチサンプリング機能を備えた新しいテクスチャ形式 "r16unorm"、"r16snorm"、"rg16unorm"、"rg16snorm"、"rgba16unorm"、"rgba16snorm" と、"read-only" または "write-only" ストレージ テクスチャ アクセスをサポートしています。また、レンダー アタッチメント、ブレンド可能、マルチサンプリング、解決機能を備えた既存のテクスチャ形式 "r8snorm"、"rg8snorm"、"rgba8snorm" も使用できます。さらに、"read-only" または "write-only" ストレージ テクスチャ アクセスを使用して、より多くのテクスチャ形式を使用できます。
新しい "texture-formats-tier2" GPU 機能により、特定の形式で "read-write" ストレージ テクスチャ アクセスが可能になります。これは、Unreal Engine をウェブに移植するなどのプロジェクトで不可欠です。デバイスの作成時に "texture-formats-tier2" を有効にすると、"texture-formats-tier1" が自動的に有効になります。
次のスニペットと chromestatus エントリをご覧ください。
const adapter = await navigator.gpu.requestAdapter();
const requiredFeatures = [];
if (adapter.features.has("texture-format-tier1")) {
requiredFeatures.push("texture-format-tier1");
}
if (adapter.features.has("texture-format-tier2")) {
requiredFeatures.push("texture-format-tier2");
}
const device = await adapter.requestDevice({ requiredFeatures });
// Later on, when dealing with "r8unorm" texture formats for example...
if (device.features.has("texture-format-tier2")) {
// Use "read-write" storage texture access...
} else if (device.features.has("texture-format-tier1")) {
// Use "read-only" or "write-only" storage texture access...
} else {
// Fallback: Use another texture format...
}
インテルの皆様、ご協力ありがとうございました。
WGSL のプリミティブ インデックス
primitive_index は、フラグメント シェーダーで処理される現在のプリミティブ(点、線、三角形など)を一意に識別する組み込みの WGSL 値です。0 から始まり、プリミティブが処理されるたびに 1 ずつ増え、描画されるインスタンスごとに 0 にリセットされます。
GPUAdapter で "primitive-index" 機能が使用可能な場合は、この機能を使用して GPUDevice をリクエストし、WGSL でプリミティブ インデックスのサポートを取得します。また、enable primitive_index; を使用して WGSL コードでこの拡張機能を明示的に有効にします。有効にしたら、フラグメント シェーダーで primitive_index 組み込み整数値を使用して、プリミティブごとのデータにアクセスしたり、レンダリングされる個別の幾何学的形状ごとに異なるロジックを実行したりします。
次のコード スニペットは、2 番目のプリミティブを赤で、他のすべてのプリミティブを青でレンダリングするフラグメント シェーダーを示しています。
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("primitive-index")) {
throw new Error("Primitive index support is not available");
}
// Explicitly request primitive index support.
const device = await adapter.requestDevice({
requiredFeatures: ["primitive-index"],
});
const fragmentShaderModule = device.createShaderModule({ code: `
enable primitive_index;
@fragment
fn main(@builtin(primitive_index) i : u32) -> @location(0) vec4f {
if (i == 1) {
return vec4f(1, 0, 0, 1);
}
return vec4f(0, 1, 0, 1);
}`,
});
// Send the appropriate commands to the GPU...
詳しくは、プリミティブ ピッキングのサンプルとchromestatus エントリをご覧ください。
Dawn の最新情報
ビルドするモノリシック ライブラリのタイプを処理するために使用される DAWN_BUILD_MONOLITHIC_LIBRARY CMake 変数のデフォルト値が OFF から STATIC に変更され、デフォルトで libwebgpu* ファイルが生成されるようになりました。
Dawn で、wgpu::Surface を構成する際にデフォルトで wgpu::PresentMode::Undefined が適切に処理されるようになりました。問題 441410668 をご覧ください。
これは主なハイライトの一部にすぎません。コミットの完全なリストをご覧ください。
WebGPU の新機能
WebGPU の新機能シリーズで取り上げられたすべての機能の一覧です。
Chrome 149 ~ 150
Chrome 147 ~ 148
Chrome 146
Chrome 145
Chrome 144
- WGSL subgroup_id 拡張機能
- WGSL uniform_buffer_standard_layout 拡張機能
- Linux の WebGPU
- writeBuffer と writeTexture の高速化
- Dawn の最新情報
Chrome 143
Chrome 142
Chrome 141
Chrome 140
- デバイス リクエストでアダプターが消費される
- テクスチャ ビューが使用されている場合にテクスチャを使用するためのショートカット
- WGSL textureSampleLevel で 1D テクスチャをサポート
- bgra8unorm 読み取り専用ストレージ テクスチャの使用を非推奨に
- GPUAdapter isFallbackAdapter 属性を削除
- Dawn の最新情報
Chrome 139
Chrome 138
- バッファをバインディング リソースとして使用するためのショートカット
- 作成時にマッピングされたバッファのサイズ要件の変更
- 最近の GPU のアーキテクチャ レポート
- GPUAdapter isFallbackAdapter 属性を非推奨に
- Dawn の最新情報
Chrome 137
- externalTexture バインディングにテクスチャ ビューを使用
- オフセットとサイズを指定せずにバッファをコピー
- アトミックへのポインタを使用する WGSL workgroupUniformLoad
- GPUAdapterInfo powerPreference 属性
- GPURequestAdapterOptions compatibilityMode 属性を削除
- Dawn の最新情報
Chrome 136
Chrome 135
- null バインド グループ レイアウトでパイプライン レイアウトを作成できるようにする
- ビューポートをレンダー ターゲットの境界を超えて拡張できるようにする
- Android で試験運用版の互換モードに簡単にアクセスできるようにする
- maxInterStageShaderComponents の上限を削除
- Dawn の最新情報
Chrome 134
Chrome 133
- 追加の unorm8x4-bgra および 1 コンポーネントの頂点形式
- 不明な上限を未定義の値でリクエストできるようにする
- WGSL のアライメント ルールの変更
- 破棄による WGSL のパフォーマンス向上
- 外部テクスチャに VideoFrame displaySize を使用
- copyExternalImageToTexture を使用して、デフォルト以外の向きの画像を処理
- デベロッパー エクスペリエンスの向上
- featureLevel で互換モードを有効にする
- 試験運用版のサブグループ機能のクリーンアップ
- maxInterStageShaderComponents の上限を非推奨に
- Dawn の最新情報
Chrome 132
- テクスチャ ビューの使用
- 32 ビット浮動小数点テクスチャのブレンド
- GPUDevice adapterInfo 属性
- 無効な形式でキャンバス コンテキストを構成すると JavaScript エラーが発生
- テクスチャのサンプラーのフィルタリング制限
- サブグループの試験運用版の拡張
- デベロッパー エクスペリエンスの向上
- 16 ビット正規化テクスチャ形式の試験運用版のサポート
- Dawn の最新情報
Chrome 131
- WGSL のクリップ距離
- GPUCanvasContext getConfiguration()
- 点と線のプリミティブに深度バイアスを設定しない
- サブグループの組み込みの包括的なスキャン関数
- マルチ描画間接の試験運用版のサポート
- シェーダー モジュールのコンパイル オプションの厳密な数学
- GPUAdapter requestAdapterInfo() を削除
- Dawn の最新情報
Chrome 130
Chrome 129
Chrome 128
- サブグループの試験運用
- 線と点の深度バイアスの設定を非推奨に
- preventDefault の場合、キャプチャされていないエラー DevTools 警告を非表示にする
- WGSL は最初にサンプリングを補間し、どちらか一方を補間する
- Dawn の最新情報
Chrome 127
- Android での OpenGL ES の試験運用版のサポート
- GPUAdapter info 属性
- WebAssembly 相互運用性の改善
- コマンド エンコーダ エラーの改善
- Dawn の最新情報
Chrome 126
- maxTextureArrayLayers の上限を引き上げる
- Vulkan バックエンドのバッファ アップロードの最適化
- シェーダー コンパイル時間の短縮
- 送信されたコマンド バッファは一意でなければならない
- Dawn の最新情報
Chrome 125
Chrome 124
Chrome 123
- WGSL での DP4a 組み込み関数のサポート
- WGSL の制限のないポインタ パラメータ
- WGSL での複合体の逆参照の構文シュガー
- ステンシルと深度アスペクトの読み取り専用状態を分離
- Dawn の最新情報
Chrome 122
Chrome 121
- Android で WebGPU をサポート
- Windows でのシェーダー コンパイルに FXC ではなく DXC を使用
- コンピューティング パスとレンダーパスのタイムスタンプ クエリ
- シェーダー モジュールのデフォルトのエントリ ポイント
- GPUExternalTexture の色空間として display-p3 をサポート
- メモリヒープ情報
- Dawn の最新情報
Chrome 120
Chrome 119
Chrome 118
- での HTMLImageElement と ImageData のサポート
copyExternalImageToTexture() - 読み書きと読み取り専用のストレージ テクスチャの試験運用版のサポート
- Dawn の最新情報
Chrome 117
- 頂点バッファの設定を解除
- バインド グループの設定を解除
- デバイスが失われたときに非同期パイプライン作成のエラーを抑制
- SPIR-V シェーダー モジュールの作成の更新
- デベロッパー エクスペリエンスの向上
- 自動生成されたレイアウトでパイプラインをキャッシュに保存
- Dawn の最新情報
Chrome 116
- WebCodecs の統合
- GPUAdapter
requestDevice()によって返される失われたデバイス importExternalTexture()が呼び出された場合でも動画再生をスムーズに保つ- 仕様への準拠
- デベロッパー エクスペリエンスの向上
- Dawn の最新情報
Chrome 115
- サポートされている WGSL 言語拡張機能
- Direct3D 11 の試験運用版のサポート
- AC 電源でデフォルトでディスクリート GPU を取得
- デベロッパー エクスペリエンスの向上
- Dawn の最新情報
Chrome 114
- JavaScript を最適化する
- 構成されていないキャンバスで getCurrentTexture() を呼び出すと InvalidStateError がスローされる
- WGSL の更新
- Dawn の最新情報