Chrome 發(fā)布 WebGPU,你們都知道了嗎?
經過多年的開發(fā),Chrome 團隊發(fā)布了 WebGPU,它允許在 Web 上進行高性能 3D 圖形和數據并行計算。WebGPU 現(xiàn)在默認在 Chrome 113 中可用,其目前處于 Beta 通道,并預計將于 4 月 26 日發(fā)布正式版。
WebGPU 是一種新的 Web 圖形 API,它具有顯著的優(yōu)勢,例如大大減少相同圖形的 JavaScript 工作量,以及機器學習模型推斷的三倍以上的改進。WebGPU 的初始版本可以在 ChromeOS、macOS 和 Windows 上使用。對其他平臺的支持將于今年晚些時候推出。
Web 網絡圖形的新曙光
WebGPU 是一種新的 Web API,它公開了現(xiàn)代硬件功能,并允許在 GPU 上進行渲染和計算操作,類似于 Direct3D 12、Metal 和 Vulkan。與 WebGL 系列 API 不同,WebGPU 提供了對更高級 GPU 功能的訪問,并為 GPU 上的通用計算提供一流的支持。該 API 的設計考慮了 Web 平臺,具有常用的 JavaScript API、與 Promise 的集成、對導入視頻的支持以及帶有大量錯誤消息的完善的開發(fā)人員體驗。
WebGPU 的這個初始版本是未來更新和增強的構建塊。API 將提供更高級的圖形功能,并鼓勵開發(fā)人員發(fā)送對其他功能的請求[1]。Chrome 團隊還計劃提供對著色器核心的更深入訪問,以便在 WebGPU 著色語言 WGSL 中進行更多的機器學習優(yōu)化和額外的人體工程學。
WebGPU 是 W3C 的“Web GPU”社區(qū)組織[2]協(xié)作努力的結果,其中包括來自 Mozilla、Apple、Intel 和 Microsoft 等主要公司的貢獻。經過六年的發(fā)展(90 位貢獻者,2000 次 commits,3000 個 issues[3]),從 2017 年的初始設計開始,第一個實現(xiàn)現(xiàn)在可以在 Chrome 中使用,并正在支持 Firefox 和 Safari。
WebGPU 是 W3C 的“Web GPU”社區(qū)組協(xié)作努力的結果,其中包括來自 Mozilla、Apple、Intel 和 Microsoft 等主要公司的貢獻。經過六年的發(fā)展(90 位貢獻者,2000 次提交,3000 個問題),從 2017 年的初始設計開始,第一個實現(xiàn)現(xiàn)在可以在 Chrome 中使用,并正在支持 Firefox 和 Safari。
Chromium 的 Dawn[4] 庫和 Firefox 的 wgpu[5] 庫都可以作為獨立包使用,它們提供了出色的可移植性和人體工程學層,可以抽象操作系統(tǒng) GPU API。在原生應用中使用這些庫還可以更輕松地通過 Emscripten[6] 和 Rust web-sys[7] 移植到 WASM[8]。
瀏覽器支持
WebGPU 的初始版本可在支持 Vulkan 的 ChromeOS 設備、支持 Direct3D 12 的 Windows 設備和 macOS 的 Chrome 113 中使用。Linux、Android 和對現(xiàn)有平臺的擴展支持即將推出。
除了在 Chrome 中的初步實現(xiàn)之外,目前在 Firefox 和 Safari 中正在開發(fā) WebGPU。
庫支持
許多廣泛使用的 WebGL 庫已經在實施 WebGPU 支持的過程中或已經這樣做了。這意味著使用 WebGPU 可能只需要進行一行更改:
- Babylon.js[9] 已經完全支持 WebGPU,請參見演示[10]。
- PlayCanvas[11] 宣布了最初的 WebGPU 支持。
- TensorFlow.js[12] 支持大多數運算符的 WebGPU 優(yōu)化版本。
- Three.js[13] WebGPU 支持正在進行中,請參閱示例[14]。
相關資源
WebGPU 是一項重要的技術,推薦以下資源以了解更多信息:
- 查看 WebGPU[15] 和 WGSL[16] 的 W3C 規(guī)范。
- 使用示例[17]進行實驗并瀏覽 WGSL[18]。
- 查看 MDN 文檔[19]。
- 閱讀官方解釋[20]和最佳實踐[21]。
- 了解 GPU 計算[22]等。
參考:?? https://developer.chrome.com/blog/webgpu-release/??
相關資料
[1]發(fā)送對其他功能的請求: ??https://github.com/gpuweb/gpuweb/issues??
[2]W3C 的“Web GPU”社區(qū)組織: ??https://www.w3.org/community/gpu/??
[3]90 位貢獻者,2000 次 commits,3000 個 issues: ??https://github.com/gpuweb/gpuweb/graphs/contributors??
[4]Dawn: ??https://dawn.googlesource.com/dawn??
[5]wgpu: ??https://github.com/gfx-rs/wgpu??
[6]Emscripten: ??https://emscripten.org/??
[7]Rust web-sys: ??https://rustwasm.github.io/wasm-bindgen/web-sys/index.html??
[8]WASM: ??https://webassembly.org/??
[9]Babylon.js: ??https://babylonjs.com/??
[10]演示: ??https://playground.babylonjs.com/#YX6IB8#73??
[11]PlayCanvas: ??https://blog.playcanvas.com/initial-webgpu-support-lands-in-playcanvas-engine-1-62/??
[12]TensorFlow.js: ??https://www.npmjs.com/package/@tensorflow/tfjs-backend-webgpu??
[13]Three.js: ??https://threejs.org/??
[14]示例: ??https://threejs.org/examples/?q=webgpu#webgpu_particles??
[15]WebGPU: ??https://gpuweb.github.io/gpuweb/??
[16]WGSL: ??https://gpuweb.github.io/gpuweb/wgsl/??
[17]示例: ??https://webgpu.github.io/webgpu-samples/??
[18]瀏覽 WGSL: https://google.github.io/tour-of-wgsl/
[19]MDN 文檔: ??https://developer.mozilla.org/docs/Web/API/WebGPU_API??
[20]解釋: ??https://gpuweb.github.io/gpuweb/explainer/??
[21]最佳實踐: ??https://toji.dev/webgpu-best-practices/??
[22]GPU 計算: ??https://developer.chrome.com/articles/gpu-compute/??