今回は WebGPU の機能が少し増えるように見えるかもしれませんが、大きな進歩が目前に迫っています。今後のリリースには、DP4a、読み取り専用と読み書き可能なストレージ テクスチャ、個別のステンシルと奥行きのアスペクト制御、3D テクスチャ スライスへのレンダリング、シェーダー コンパイルの改善などの機能が含まれます。
それまでの間、ヘッドレス Chrome の WebGPU と WebGL のサポートでウェブ AI モデルのテストを強化する方法と、Chrome で WebGPU が無効になる、または動作しない理由をご確認ください。
互換モードでリーチを拡大(現在開発中の機能)
WebGPU は最新のグラフィック API(Vulkan、Metal、D3D12)に対応していますが、一部のデバイスはサポートしていません。このため、特に Windows(Chrome ユーザーの 31% は D3D11.1 以降を搭載していない)、Android(23% は Vulkan 1.1 以降を搭載していない)、ChromeOS(Vulkan の導入が増加傾向にある)などのプラットフォームでは、特に WebGPU のアクセシビリティが制限されます。
Chrome チームは、D3D11 や OpenGL ES などの古い API で動作する WebGPU の若干制限されたバージョンを提供することで、この問題に対処するために WebGPU の互換モードの開発に取り組んでいます。これにより、WebGPU の潜在的なユーザーベースを拡大できます。
重要なのは、互換モードを使用するアプリケーションは、引き続き完全に有効な WebGPU アプリケーションであるということです。互換モードに対応していないデバイスでは、デフォルトでコア WebGPU アダプタが使用されるため、幅広いユーザビリティが確保されます。
ご不明な点がございましたら、提案とコメントをご確認ください。
maxVertexAttributes の上限を引き上げる
GPURenderPipeline を作成するときには、バッファ全体での最大属性数はデフォルトでは 16 です。サポートされている場合は、maxVertexAttributes 上限を使用して最大 30 個までリクエストできるようになりました。次の例と issue dawn:2223 をご覧ください。
const adapter = await navigator.gpu.requestAdapter();
if (adapter.limits.maxVertexAttributes < 30) {
// When the desired limit isn't supported, take action to either fall back to
// a code path that does not require the higher limit or notify the user that
// their device does not meet minimum requirements.
}
// Request highest limit of max vertex attributes.
const device = await adapter.requestDevice({
requiredLimits: { maxVertexAttributes: 30 },
});
夜明けの更新情報
「expose_wgsl_experimental_features」という新しいインスタンスの切り替えが追加され、インスタンスが試験運用版の WGSL 機能のみを公開し、安全でない機能を公開しないようにしました。これにより、「allow_unsafe_apis」の切り替えを有効にしなくても安全な試験運用版の WGSL 機能を使用できます。issue dawn:2260 をご覧ください。
Node.js の Dawn バインディングに対する最近の改善点は次のとおりです。
GPUSupportedFeatures::getSize()
を追加しました。GPUAdapter
の未更新が実装されました。GPUInternalError
がデバイスで適切に報告されるようになりました。- 属性が列挙できるようになりました。
ここでは、重要なハイライトの一部についてのみ説明します。commit の完全なリストを確認する。
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 を使用
- デベロッパー エクスペリエンスの向上
- 夜明けの更新情報