每一個(gè)大前端(Web + App)工程師都應(yīng)該學(xué)習(xí) wgpu

計(jì)算機(jī)圖形學(xué)做為前端的底層技術(shù), 我相信大部分前端(Web + App)工程師都有過(guò)學(xué)習(xí)圖形學(xué)的想法。WebGPU?做為面向下一個(gè)十年的跨平臺(tái)圖形 API, 可以為我們節(jié)省分別學(xué)習(xí)各平臺(tái)圖形 API 的時(shí)間精力(WebGL / OpenGL ES 當(dāng)然也是跨平臺(tái)的,只是它注定將退出現(xiàn)代圖形接口這個(gè)舞臺(tái):macOS / iOS 早已不支持提交基于 OpenGL 的 App; Android 從 7.0 開(kāi)始已經(jīng)支持了 OpenGL 的繼任者 Vulkan; )。

WebGPU 是什么?

WebGPU 是由 W3C?GPU for the Web?社區(qū)組所發(fā)布的規(guī)范,目標(biāo)是允許網(wǎng)頁(yè)代碼以高性能且安全可靠的方式訪問(wèn) GPU 功能。它通過(guò)借鑒 Vulkan API,并將其轉(zhuǎn)換為宿主硬件上使用的各式 API(如 DirectX、Metal、Vulkan)來(lái)實(shí)現(xiàn)這一目標(biāo)。

wgpu 又是什么?

wgpu?是基于?WebGPU API 規(guī)范?的、跨平臺(tái)的、安全的、純 Rust 圖形 API。它是 Firefox、Servo 和 Deno 中 WebGPU 整合的核心。wgpu?不僅可以在 Web 環(huán)境運(yùn)行,還可以在 macOS / iOS、Android、Window 和 Linux 等系統(tǒng)上原生運(yùn)行。

雖然?WebGPU?標(biāo)準(zhǔn)目前還沒(méi)有正式發(fā)布,在瀏覽器中需要手動(dòng)開(kāi)啟支持,但在 App 中做跨平臺(tái)的圖形圖像開(kāi)發(fā)我已經(jīng)探索出了完整的方案,在線上教程的?集成與調(diào)試?部分有詳細(xì)的實(shí)施步驟并在 github 上提供了完整的示例。并且我個(gè)人已于兩年前在 AppStore 上架了基于 wgpu 實(shí)現(xiàn)的毛筆書(shū)法模擬 App?字習(xí) Pro

WebGPU 的學(xué)習(xí)資料是不是很少??

其實(shí)不用糾結(jié)于 WebGPU 方面的直接學(xué)習(xí)資料的多少。

WebGPU 就是一套圖形接口,絕大部分概念都是各圖形接口里通用的,任何一本經(jīng)典圖形學(xué)書(shū)籍都是我們的學(xué)習(xí)資料。 要利用好這些經(jīng)典資料,前提僅僅就是要先學(xué)習(xí)一套圖形接口。因?yàn)閳D形學(xué)的書(shū)不是使用統(tǒng)一的特定圖形接口所寫(xiě),先學(xué)會(huì)一個(gè)圖形接口及常見(jiàn)的概念,然后再去深入學(xué)習(xí)某個(gè)方面的資料就會(huì)事半功倍。

為什么使用 Rust?

wgpu 實(shí)際上提供了 C 語(yǔ)言綁定 (wgpu-native),你可以寫(xiě) C/C++ 或其他能與 C 互通的語(yǔ)言來(lái)使用它。盡管如此,wgpu 本身是用 Rust 實(shí)現(xiàn)的,它便利的 Rust 綁定能減少你使用中的阻礙。更重要的是,Rust 是一門(mén)高性能,內(nèi)存和線程安全且極具生產(chǎn)力的現(xiàn)代底層語(yǔ)言。如果對(duì) Rust 還不太熟悉,可以回顧一下?Rust 教程?或?Rust 語(yǔ)言圣經(jīng)。

如果你還沒(méi)有學(xué)習(xí)過(guò)任何一門(mén)底層語(yǔ)言,那就學(xué) Rust 吧,它不像 C++ 有那么多復(fù)雜難懂的概念;

如果你覺(jué)得學(xué) C/C++ 很難,那就學(xué) Rust 吧,你會(huì)受益于它的高性能,內(nèi)存和線程安全;?

如果你已精通 C/C++,那也學(xué)學(xué) Rust 吧,那么難的都學(xué)得會(huì),掌握 Rust 不過(guò)是小菜一碟;

現(xiàn)在學(xué)習(xí) wgpu 是不是為時(shí)尚早??

雖然 WebGPU 1.0 要到 2023 年才能正式發(fā)布,但 API 目前已經(jīng)趨于穩(wěn)定了,后面的修訂更多是內(nèi)部實(shí)現(xiàn)層的完善。

從 wgpu 及 dawn 這兩個(gè)主要的 WebGPU 標(biāo)準(zhǔn)的實(shí)現(xiàn)庫(kù)的開(kāi)發(fā)動(dòng)向可以看出,大量的擴(kuò)展特性目前只有 PC、Mac、iOS、Android 等系統(tǒng)上本地運(yùn)行才能支持。wgpu 更是將本地運(yùn)行做為首要目標(biāo),WebGPU 是做為最低支持的特性集而存在。

使用 wgpu 在移動(dòng)端做跨平臺(tái)開(kāi)發(fā)的體驗(yàn)極好,甚至我偏向于認(rèn)為:WebGPU 更容易在 iOS、Android 上得到普及。因?yàn)椴挥檬芟抻?1.0 / 2.0 標(biāo)準(zhǔn)啥時(shí)候發(fā)布,用戶的瀏覽器是否支持等問(wèn)題。

現(xiàn)在開(kāi)始學(xué)習(xí)正當(dāng)時(shí)。

完整 wgpu 學(xué)習(xí)教程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容