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

François Beaufort
François Beaufort

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

在此同時,請瞭解如何在無頭 Chrome 中支援 WebGPU 和 WebGL,提升網路 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 功能,而非不安全的功能,這樣一來,您就能使用安全的實驗性 WGSL 功能,而無需啟用「allow_unsafe_apis」切換鈕。請參閱問題 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