這次的 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 轉接器,確保廣泛的使用性。
提高 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
- WGSL 中的裁剪距離
- GPUCanvasContext getConfiguration()
- 點和線圖元不得有深度偏差
- 針對子群組的內建包容性掃描函式
- 實驗性支援多重繪製間接功能
- 著色器模組編譯選項嚴格數學
- 移除 GPUAdapter requestAdapterInfo()
- Dawn 更新
Chrome 130
Chrome 129
Chrome 128
Chrome 127
Chrome 126
Chrome 125
Chrome 124
Chrome 123
Chrome 122
Chrome 121
- 支援 Android 上的 WebGPU
- 在 Windows 上使用 DXC 而非 FXC 進行著色器編譯
- 在運算和算繪階段中執行時間戳記查詢
- 著色器模組的預設進入點
- 支援以顯示器-p3 做為 GPUExternalTexture 色彩空間
- 記憶體堆積資訊
- Dawn 更新
Chrome 120
Chrome 119
Chrome 118
Chrome 117
Chrome 116
- WebCodecs 整合
- GPUAdapter
requestDevice()
傳回的遺失裝置 - 如果呼叫
importExternalTexture()
,請保持影片播放流暢 - 規格相容性
- 改善開發人員體驗
- Dawn 更新