WebGPU対応レポート
いま開いている端末のGPUが、WebGPUのどの機能を持ち、どこまで大きな値を扱えるかを表示します。項目名だけでは分かりにくい features・limits・WGSL言語機能を、1項目ずつ日本語の解説つきで並べています。
環境を確認中…
GPU情報を取得中…
アダプター情報
navigator.gpu.requestAdapter() が返したGPUの素性です。指紋(フィンガープリント)対策として、ブラウザが値を伏せることがあります。
ベンダー
vendor非公開
GPUの製造元です(nvidia / amd / intel / apple / qualcomm など)。プライバシー保護のため空欄になる環境もあります。
アーキテクチャ
architecture非公開
GPUの世代・系統です。同じ系統なら性能特性や不具合の傾向も近く、実装の分岐条件に使われます。
デバイス
device非公開
GPUの型番を示す識別子です。多くの環境では空欄です。
説明
description非公開
ドライバーが返すGPUの説明文です。ブラウザによって内容と粒度が異なります。
サブグループ最小サイズ
subgroupMinSize非公開
同時に走るスレッド集団(サブグループ)の最小要素数です。サブグループ演算の実装を調整するときに使います。
サブグループ最大サイズ
subgroupMaxSize非公開
サブグループの最大要素数です。
ソフトウェア描画かどうか
isFallbackAdapterいいえ(GPUで動作)
true の場合は実GPUではなくソフトウェア実装で動いています。描画は通りますが、実機の性能評価には使えません。
推奨キャンバスフォーマット
getPreferredCanvasFormat()取得できません
キャンバスに描くときに、変換コストなしで表示できるフォーマットです。
context.configure()にはこの値をそのまま渡すのが基本です。WebXRとの接続(WebGPU binding)
XRGPUBinding利用できません
WebGPUで描いた映像をそのままWebXRのセッションに出すための橋渡しです。未対応の環境では、XR側の描画はWebGLで行うことになります。
機能(features)
使いたい機能は requestDevice({ requiredFeatures: [...] }) で要求します。ここで「未対応」の機能を必須指定すると、デバイス作成そのものが失敗します。
- 未対応
コア機能と標準上限
core-features-and-limitsコアWebGPUのコア機能一式と、仕様が定める標準の上限値をすべて満たしているアダプターであることを示します。
なぜ必要?
これが無い環境は互換モード(compatibility mode)相当で、テクスチャサイズやストレージバッファ数の上限が標準より低く設定されます。同じコードでも初期化に失敗することがあります。
- 未対応
深度クリップの無効化
depth-clip-control描画視錐台の手前・奥の面で図形が切り落とされる処理を止め、深度値を範囲内に丸めて描画できます。
なぜ必要?
影のボリューム描画やスカイボックスのように、カメラの近接面・遠方面をまたぐ図形を扱うときに欠けが出ます。
- 未対応
32bit深度 + 8bitステンシル
depth32float-stencil8描画depth32float-stencil8 フォーマットのテクスチャを深度・ステンシルバッファとして使えます。
なぜ必要?
広い空間を扱うシーンで、遠景のZファイティング(面のちらつき)を抑えながらステンシルも併用したいときに必要です。
- 未対応
BC圧縮テクスチャ
texture-compression-bcテクスチャBC1〜BC7(S3TC / DXT / BPTC)形式の圧縮テクスチャをGPUに直接読み込めます。
なぜ必要?
非対応だと展開済みの生テクスチャを送ることになり、VRAM使用量と読み込み時間が数倍に増えます。デスクトップGPUで一般的な形式です。
- 未対応
BC圧縮の3Dテクスチャ対応
texture-compression-bc-sliced-3dテクスチャBC圧縮を3Dテクスチャのスライス単位で扱えます(ボリュームデータの圧縮保持)。
- 未対応
ETC2圧縮テクスチャ
texture-compression-etc2テクスチャETC2 / EAC 形式の圧縮テクスチャを読み込めます。Androidやスタンドアロン型ヘッドセットのGPUで広く使われる形式です。
- 未対応
ASTC圧縮テクスチャ
texture-compression-astcテクスチャASTC形式の圧縮テクスチャを読み込めます。圧縮率と画質のバランスが良く、モバイル系GPUの標準的な選択肢です。
なぜ必要?
WebXRのようにテクスチャ枚数が多く、フレーム時間の余裕が少ない用途では、配布サイズとVRAM削減の効き方が大きい項目です。
- 未対応
ASTC圧縮の3Dテクスチャ対応
texture-compression-astc-sliced-3dテクスチャASTC圧縮を3Dテクスチャのスライス単位で扱えます。
- 未対応
GPUタイムスタンプ計測
timestamp-query計測レンダーパス・コンピュートパスの開始と終了のGPU時刻を取得し、処理時間を計測できます。
なぜ必要?
非対応だとCPU側の時間しか測れず、描画が重い原因がGPUのどのパスにあるかを切り分けられません。
- 未対応
間接描画のインスタンス開始位置指定
indirect-first-instance描画GPU側のバッファから描画命令を読む間接描画で、firstInstance に0以外を指定できます。
- 未対応
16bit浮動小数点シェーダー
shader-f16シェーダーWGSLで16bit浮動小数点(f16)型を使えます。演算量とメモリ帯域を減らせます。
なぜ必要?
モバイルGPUや推論処理で効果が大きく、非対応だとすべてf32で計算するためフレーム時間が伸びます。
- 未対応
rg11b10ufloat への描画
rg11b10ufloat-renderable描画rg11b10ufloat フォーマットをレンダーターゲットとして使えます。HDRの中間バッファを軽量に持てます。
- 未対応
bgra8unorm ストレージテクスチャ
bgra8unorm-storageテクスチャbgra8unorm フォーマットのテクスチャにシェーダーから直接書き込めます。
- 未対応
32bit floatテクスチャのフィルタ
float32-filterableテクスチャ32bit float テクスチャをバイリニア補間でサンプリングできます。
なぜ必要?
高さマップや距離場のような精度が要るデータを、シェーダー側で手動補間せずに滑らかに読めます。
- 未対応
32bit floatターゲットのブレンド
float32-blendable描画32bit float のレンダーターゲットでアルファブレンドなどの合成を使えます。
- 未対応
任意平面でのクリップ
clip-distancesシェーダーWGSLから clip_distances を出力し、任意の平面で図形を切り取れます。
なぜ必要?
水面の反射描画や断面表示のように、シーンの一部だけを平面で切りたい場面で使います。
- 未対応
デュアルソースブレンド
dual-source-blending描画1つのフラグメントから2つの色を出力し、それらを使って合成できます。
なぜ必要?
サブピクセル単位のテキストアンチエイリアスなど、色ごとに異なるブレンド係数が要る表現で必要になります。
- 未対応
サブグループ演算
subgroupsシェーダー同時に走るスレッドの集まり(サブグループ)の間で、共有メモリを介さず値を交換・集計できます。
なぜ必要?
リダクションやソート、ポストプロセスの高速化に効きます。非対応ならワークグループ共有メモリ経由の実装にフォールバックします。
- 未対応
サブグループサイズの指定
subgroup-size-controlシェーダーパイプライン作成時にサブグループのサイズを指定し、GPU間での挙動差を抑えられます。
- 未対応
追加テクスチャフォーマット Tier1
texture-formats-tier1テクスチャ標準セットに加えて、Tier1として定義された追加フォーマットの読み書きができます。
- 未対応
追加テクスチャフォーマット Tier2
texture-formats-tier2テクスチャTier1をさらに広げた追加フォーマット群(ストレージテクスチャ用途を含む)を使えます。
- 未対応
プリミティブインデックス参照
primitive-indexシェーダーフラグメントシェーダーから、いま描いている三角形の番号を参照できます。
なぜ必要?
ID書き出しによるピッキングや、頂点データを持たない可視化で使われます。
- 未対応
テクスチャ成分の並び替え
texture-component-swizzleテクスチャテクスチャビューを作るときにRGBAの成分の並びを入れ替えられます。
なぜ必要?
素材ごとにチャンネル配置が違うテクスチャを、シェーダーを分けずに1本の実装で読めます。
上限値(limits)
どこまで大きな値を使えるかの上限です。仕様の既定値はすべての対応環境が保証する下限なので、既定値の範囲で書いたコードはどこでも動きます。上限を引き上げたいときは requestDevice({ requiredLimits: [...] }) で明示的に要求します。
1Dテクスチャの最大幅
maxTextureDimension1Dテクスチャdimension が "1d" のテクスチャに指定できる幅の上限です。
取得できません
仕様の既定値 8,192
2Dテクスチャの最大辺
maxTextureDimension2Dテクスチャ通常の2Dテクスチャの幅と高さの上限です。レンダーターゲットの解像度もこの値に収める必要があります。
取得できません
仕様の既定値 8,192
3Dテクスチャの最大辺
maxTextureDimension3Dテクスチャ3Dテクスチャの幅・高さ・奥行きの上限です。ボリュームデータやLUTの解像度を左右します。
取得できません
仕様の既定値 2,048
テクスチャ配列の最大枚数
maxTextureArrayLayersテクスチャ2Dテクスチャ配列に積める枚数の上限です。素材をまとめて1本のバインドで扱うときの上限になります。
取得できません
仕様の既定値 256
バインドグループの最大数
maxBindGroupsバインド1つのパイプラインで同時に使えるバインドグループの数です。リソースを更新頻度ごとに分ける設計の余地を決めます。
取得できません
仕様の既定値 4
バインドグループ+頂点バッファの合計
maxBindGroupsPlusVertexBuffersバインドバインドグループ数と頂点バッファ数の合計の上限です。両方を多用する構成で先に頭打ちになります。
取得できません
仕様の既定値 24
イミディエイトデータの最大バイト数
maxImmediateSizeバインドバッファを経由せずコマンドに直接埋め込めるデータのバイト数です。小さな定数の差し替えを軽くできます。
取得できません
仕様の既定値 64 B(64)
1バインドグループ内の最大バインド番号
maxBindingsPerBindGroupバインド1つのバインドグループで使えるバインド番号の上限です。番号を飛ばして割り当てる設計のときに効きます。
取得できません
仕様の既定値 1,000
動的オフセット付きユニフォームバッファ数
maxDynamicUniformBuffersPerPipelineLayoutバインドパイプライン全体で使える、動的オフセット指定つきユニフォームバッファの数です。描画ごとに定数を切り替える手法の上限になります。
取得できません
仕様の既定値 8
動的オフセット付きストレージバッファ数
maxDynamicStorageBuffersPerPipelineLayoutバインドパイプライン全体で使える、動的オフセット指定つきストレージバッファの数です。
取得できません
仕様の既定値 4
シェーダーステージあたりのテクスチャ数
maxSampledTexturesPerShaderStageバインド1つのシェーダーステージから同時に読めるテクスチャの数です。マテリアルの複雑さの上限に直結します。
取得できません
仕様の既定値 16
シェーダーステージあたりのサンプラー数
maxSamplersPerShaderStageバインド1つのシェーダーステージで使えるサンプラーの数です。フィルタ設定の種類数の上限になります。
取得できません
仕様の既定値 16
シェーダーステージあたりのストレージバッファ数
maxStorageBuffersPerShaderStageバインド1つのシェーダーステージから読み書きできるストレージバッファの数です。GPU計算の入出力の本数を決めます。
取得できません
仕様の既定値 8
頂点シェーダーのストレージバッファ数
maxStorageBuffersInVertexStageバインド頂点シェーダーから使えるストレージバッファの数です。互換モードの環境では0になることがあります。
取得できません
仕様の既定値 8
フラグメントシェーダーのストレージバッファ数
maxStorageBuffersInFragmentStageバインドフラグメントシェーダーから使えるストレージバッファの数です。
取得できません
仕様の既定値 8
シェーダーステージあたりのストレージテクスチャ数
maxStorageTexturesPerShaderStageバインドシェーダーから直接書き込めるテクスチャの数です。ポストプロセスや画像処理の同時出力数を決めます。
取得できません
仕様の既定値 4
頂点シェーダーのストレージテクスチャ数
maxStorageTexturesInVertexStageバインド頂点シェーダーから書き込めるテクスチャの数です。
取得できません
仕様の既定値 4
フラグメントシェーダーのストレージテクスチャ数
maxStorageTexturesInFragmentStageバインドフラグメントシェーダーから書き込めるテクスチャの数です。
取得できません
仕様の既定値 4
シェーダーステージあたりのユニフォームバッファ数
maxUniformBuffersPerShaderStageバインド1つのシェーダーステージで使えるユニフォームバッファの数です。
取得できません
仕様の既定値 12
ユニフォームバッファの最大バインドサイズ
maxUniformBufferBindingSizeバッファ1回のバインドで参照できるユニフォームバッファの最大バイト数です。ボーン行列やライト配列をまとめて渡せる量を決めます。
取得できません
仕様の既定値 64 KiB(65,536)
ストレージバッファの最大バインドサイズ
maxStorageBufferBindingSizeバッファ1回のバインドで参照できるストレージバッファの最大バイト数です。大きな点群やパーティクル配列を分割せずに扱えるかが決まります。
取得できません
仕様の既定値 128 MiB(134,217,728)
ユニフォームバッファのオフセット境界
minUniformBufferOffsetAlignmentバッファ小さいほど良いユニフォームバッファの動的オフセットに要求される境界です。小さいほど詰めて配置でき、無駄なパディングが減ります。
取得できません
仕様の既定値 256 B(256)
ストレージバッファのオフセット境界
minStorageBufferOffsetAlignmentバッファ小さいほど良いストレージバッファの動的オフセットに要求される境界です。小さいほど詰めて配置できます。
取得できません
仕様の既定値 256 B(256)
頂点バッファの最大数
maxVertexBuffers頂点1回の描画で同時にバインドできる頂点バッファの数です。属性をバッファごとに分ける設計の上限になります。
取得できません
仕様の既定値 8
バッファ1本の最大サイズ
maxBufferSizeバッファ作成できるGPUバッファ1本のバイト数の上限です。大きなメッシュやボクセルデータを分割せずに置けるかが決まります。
取得できません
仕様の既定値 256 MiB(268,435,456)
頂点属性の最大数
maxVertexAttributes頂点1つの頂点に持たせられる属性(位置・法線・UV・スキンウェイトなど)の数です。
取得できません
仕様の既定値 16
頂点バッファのストライド上限
maxVertexBufferArrayStride頂点頂点1件あたりのバイト数の上限です。属性を1本のバッファに詰め込む構成で効いてきます。
取得できません
仕様の既定値 2 KiB(2,048)
シェーダー間で渡せる変数の数
maxInterStageShaderVariables描画頂点シェーダーからフラグメントシェーダーへ受け渡せる変数の数です。補間して渡す情報量の上限になります。
取得できません
仕様の既定値 16
カラーアタッチメントの最大数
maxColorAttachments描画1回のレンダーパスで同時に書き込めるカラーターゲットの数です。ディファードレンダリングのGバッファ構成を左右します。
取得できません
仕様の既定値 8
1サンプルあたりのカラー総バイト数
maxColorAttachmentBytesPerSample描画すべてのカラーアタッチメントを合わせた、1サンプルあたりのバイト数の上限です。枚数だけでなく、フォーマットの重さも合算されます。
取得できません
仕様の既定値 32 B(32)
ワークグループ共有メモリの上限
maxComputeWorkgroupStorageSizeコンピュートコンピュートシェーダーの1ワークグループが使える共有メモリのバイト数です。タイル単位の処理でどれだけデータを手元に置けるかが決まります。
取得できません
仕様の既定値 16 KiB(16,384)
1ワークグループの最大スレッド数
maxComputeInvocationsPerWorkgroupコンピュート1ワークグループ内で走らせられるスレッド数の上限です(X×Y×Zの積)。
取得できません
仕様の既定値 256
ワークグループサイズX
maxComputeWorkgroupSizeXコンピュートワークグループサイズのX方向の上限です。
取得できません
仕様の既定値 256
ワークグループサイズY
maxComputeWorkgroupSizeYコンピュートワークグループサイズのY方向の上限です。
取得できません
仕様の既定値 256
ワークグループサイズZ
maxComputeWorkgroupSizeZコンピュートワークグループサイズのZ方向の上限です。
取得できません
仕様の既定値 64
ディスパッチの最大ワークグループ数
maxComputeWorkgroupsPerDimensionコンピュートdispatchWorkgroups の各次元に指定できるワークグループ数の上限です。1回のディスパッチで処理できる件数の目安になります。
取得できません
仕様の既定値 65,535
WGSL言語機能
シェーダー言語WGSLの側で使える構文・命令です(navigator.gpu.wgslLanguageFeatures)。GPUの機能ではなく、ブラウザのシェーダーコンパイラが持つ機能です。