WebGPU 新功能' (Chrome<版本>122)

François Beaufort
François Beaufort

這次的 WebGPU 功能數量可能不多,但重大進展即將到來!接下來的版本將包含 DP4a、唯讀和讀寫儲存體紋理、獨立的遮罩和深度方面控制項、轉譯為 3D 紋理切片,以及著色器編譯改善等功能。

同時,建議你瞭解如何在 Headless Chrome 中使用 WebGPU 和 WebGL 支援功能,提升 Web AI 模型測試效率,以及瞭解 WebGPU 在 Chrome 中停用或無法運作的原因

使用相容性模式擴大觸及範圍 (開發中的功能)

WebGPU 與新型圖形 API (Vulkan、Metal 和 D3D12) 相容,但部分裝置不支援這些 API。這樣會限制 WebGPU 的無障礙,特別是在 Windows (31% 的 Chrome 使用者缺乏 D3D11.1 以上版本)、Android (23% 未使用 Vulkan 1.1 以上版本) 和 ChromeOS (越來越多人採用 Vulkan)。

Chrome 團隊正在開發 WebGPU 中的相容性模式,提供可在舊版 API (例如 D3D11 和 OpenGL ES) 上運作的 WebGPU 版本,以解決這個問題。這會擴大 WebGPU 的潛在使用者族群。

重要的是,使用相容性模式的應用程式仍是完全有效的 WebGPU 應用程式。不支援相容性模式的裝置會預設為使用核心 WebGPU 轉接器,確保廣泛的使用性。

WebGPU 相容性模式圖表。
WebGPU 相容性模式擴大觸及範圍。

如有任何疑問,請查看提案留言

提高 maxVertexAttributes 上限

根據預設,建立 GPURenderPipeline 時,緩衝區內屬性總數的上限為 16。在支援的情況下,現在可以使用 maxVertexAttributes 限制,最多要求 30 個。請參閱以下範例和問題 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 功能。請參閱問題 dawn:2260

Node.js 的 Dawn 繫結最近的改善項目包括:

  • 已新增 GPUSupportedFeatures::getSize()
  • 已實作 GPUAdapter 過時機制。
  • GPUInternalError 現在可正確回報裝置資訊。
  • 屬性現在可進行列舉。

這份文件僅涵蓋部分重點。請參閱完整的修訂版本清單

WebGPU 新功能

以下是「WebGPU 最新消息」系列文章中涵蓋的所有內容。

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