juj/wasm_webgpu
System headers for interfacing WebGPU from C programs compiled via Emscripten to WebAssembly
解決的問題
本專案為 C/C++ 開發者提供一個系統庫,可透過 Emscripten 從 WebAssembly (Wasm) 直接使用 WebGPU。它允許開發者使用 C++ 寫出高效率的圖形與運算程式碼,同時針對官方瀏覽器端的 WebGPU JavaScript API,無需手動撰寫 JavaScript 膠水程式碼。
工作原理
該庫在 C/C++ API 與瀏覽器的 WebGPU JS API 之間建立 1:1 對應。它使用命名規則(例如 GPUAdapter 變為 WGpuAdapter)與前置詞系統(wgpu_*)將 JavaScript 函數暴露給 WebAssembly 側。為確保最大效能與最小二進位體積,以類 C 風格實作,不包含高階抽象,因此可與 Closure Compiler 搭配進一步壓縮。
適用對象
希望在瀏覽器端應用中利用 WebGPU 的 C/C++ 開發者,特別是那些需要極小程式碼體積限制,或更傾向使用官方 WebGPU 規範 IDL 而非 Dawn C++ API 的使用者。
主要特色
- 1:1 JS API 對應:直接對應瀏覽器的 WebGPU 規範,C++ 與 JS 之間的轉換具有可預測性。
- 極低開銷:專為最小生成程式碼體積與最快執行速度而設計。
- 減少垃圾回收:特別優化以最小化渲染幀期間暫時性 JavaScript 垃圾的產生。
- 支援同步 API:透過 JSPI(JavaScript Promise Integration)提供非同步函數的同步變體,便於快速原型開發。
- 支援 OffscreenCanvas:支援從背景 Worker 線程、pthreads 或 pthread 代理抽象中進行 WebGPU 渲染。
- 記憶體模型彈性:支援 2GB、4GB 與 Wasm64 記憶體模型。
相關
- 專案
- 專案
- 專案
- 專案
- 專案