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