wgpu
是一種跨平台,安全,純淨的圖形API。它在Vulkan,Metal,d3d12和OpenGL上本地運行;在WASM上的WebGL2和WebGPU上。
API基於WebGPU標準。它是Firefox和Deno中WebGPU集成的核心。
存儲庫包含以下庫:
以下二進製文件:
naga
在不同語言之間翻譯著著色器的工具。cts_runner
使用deno_webgpu
WebGPU符合測試套件跑步者。player
- 獨立應用API跟踪的應用。有關GFX-RS生態系統中所有組件的概述,請參閱大圖。
可以在WGPU/示例中找到生鏽的例子。您可以使用cargo run --bin wgpu-examples <example>
。請參閱示例列表。
要在瀏覽器中運行示例,請運行cargo xtask run-wasm
。然後打開http://localhost:8000
在瀏覽器中,您可以選擇一個示例。自然,為了顯示任何基於WebGPU的示例,您需要確保瀏覽器支持它。
如果您正在尋找WGPU教程,請查看以下內容:
要在C/C ++中使用WGPU,您需要WGPU本地。
如果您正在尋找WGPU C ++教程,請查看以下內容:
如果您想在其他語言中使用WGPU,則來自Python,D,D,Julia,Kotlin等語言有許多與WGPU本地的綁定。請參閱列表。
我們擁有構成WGPU社區的幾個不同房間的矩陣空間:
我們有一個Wiki,可以用作知識基礎。
API | 視窗 | Linux/Android | MacOS/iOS | 網絡(WASM) |
---|---|---|---|---|
VULKAN | ✅ | ✅ | ? | |
金屬 | ✅ | |||
DX12 | ✅ | |||
OpenGL | ? (GL 3.3+) | ? (gl es 3.0+) | ? | ? (WebGL2) |
WebGPU | ✅ |
✅=頭等艙支持
? =下層/最佳努力支持
? =需要角度翻譯層(僅GL ES 3.0)
? =需要熔融的翻譯層
=不受支持的,儘管對貢獻開放
WGPU支持WGSL,SPIR-V和GLSL中的著色器。 HLSL和GLSL都有用於靶向螺旋V的編譯器。當我們處理所有轉換時,所有這些著色器語言都可以與任何後端一起使用。此外,對這些著色器輸入的支持不會消失。
儘管WebGPU不支持WGSL以外的任何陰影語言,但如果您在WebGPU上運行,我們將自動轉換您的非WGSL著色器。
默認情況下,WGSL始終受到支持,但是GLSL和SPIR-V需要功能可以支持支持。
請注意,WGSL規範仍在開發中,因此規範草案並未準確描述wgpu
支持的內容。有關詳細信息,請參見下文。
要啟用Spir-V著色器,請啟用WGPU的spirv
功能。要啟用GLSL著色器,請啟用WGPU的glsl
功能。
角度是從GLE到其他由Google開發的後端的翻譯層。我們支持運行GLES3後端,以便獲得平台DX11支持,否則就無法訪問。為了以角度運行,必須啟用“角度”功能,並且將角度庫放在應用程序可見的位置中。這些二進製文件可以從GFBuild-angle工件下載,使用Apple Silicon的Mac需要手動編譯。
在Windows上,您通常需要將它們複製到工作目錄中,與可執行文件或路徑中的某個地方相同的目錄。在Linux上,您可以使用LD_LIBRARY_PATH
環境指向它們。
由於復雜的依賴者,我們有兩個MSRV策略:
d3d12
, naga
, wgpu-core
, wgpu-hal
和wgpu-types
的MSRV為1.76 ,但可能會低於將來的其餘工作區。它在CORE_MSRV
和REPO_MSRV
變量的CI上(在“ /.github/workflows/ci.yml”)上執行。儘管我們每三個月發布一次打破版本,但此版本只能升級為Breaking版本。
naga
, wgpu-core
, wgpu-hal
和wgpu-types
板條箱絕對不應在Firefox的MSRV之前需要MSRV進行夜間構建,這取決於python/mozboot/mozboot/util.py
的最小值MINIMUM_RUST_VERSION
確定。
所有測試和示例基礎架構共享相同的一組環境變量,這些變量確定將運行哪個後端/GPU。
WGPU_ADAPTER_NAME
帶有要使用的適配器名稱的子字符串(Ex。1080將與NVIDIA GeForce 1080ti
1080
)。WGPU_BACKEND
帶有要使用的後端的逗號分隔列表( vulkan
, metal
, dx12
或gl
)。WGPU_POWER_PREF
具有何時未指定特定適配器名稱的功率優先( high
, low
或none
)WGPU_DX12_COMPILER
帶有您希望使用的DX12著色器編譯器fxc
dxc
或fxc
,請注意dxc
需要dxil.dll
和dxcompiler.dll
在工作目錄中WGPU_GLES_MINOR_VERSION
帶有次要的OpenGL ES 1
0
automatic
2
。WGPU_ALLOW_UNDERLYING_NONCOMPLIANT_ADAPTER
帶有布爾值,是否列舉了不合格的驅動程序(forse 0
,為true 1
)。運行CTS時,請使用變量DENO_WEBGPU_ADAPTER_NAME
, DENO_WEBGPU_BACKEND
, DENO_WEBGPU_POWER_PREFERENCE
。
我們有多種測試方法,每種方法都測試了有關WGPU的不同質量。我們會自動在CI上進行測試。 CI測試的當前狀態:
平台/後端 | 測試 | 筆記 |
---|---|---|
Windows/DX12 | ✔️ | 使用經線 |
Windows/OpenGL | ✔️ | 使用llvmpipe |
macos/金屬 | ✔️ | 使用硬件跑步者 |
Linux/Vulkan | ✔️ | 使用Lavapipe |
Linux/OpenGL ES | ✔️ | 使用llvmpipe |
Chrome/WebGL | ✔️ | 使用SwiftShader |
chrome/webgpu | 未設置 |
我們使用一種稱為cargo nextest
的工具來運行我們的測試。要安裝它,請運行cargo install cargo-nextest
。
運行測試套件:
cargo xtask test
在WebGL上運行測試套件(當前不完整):
cd wgpu
wasm-pack test --headless --chrome --no-default-features --features webgl --workspace
這將使用包裝的瀏覽器自動運行測試。刪除--headless
可以使用您希望在http://localhost:8000
任何瀏覽器運行測試。
如果您是用戶,並且想要一種幫助WGPU貢獻的方法,我們總是需要更多幫助編寫測試用例。
WebGPU包括一個符合測試套件,以驗證實現正常工作。我們可以針對WGPU運行此CTS。
要運行CTS,首先,您需要檢查出來:
git clone https://github.com/gpuweb/cts.git
cd cts
# works in bash and powershell
git checkout $(cat ../cts_runner/revision.txt)
運行給定的一組測試:
# Must be inside the `cts` folder we just checked out, else this will fail
cargo run --manifest-path ../Cargo.toml -p cts_runner --bin cts_runner -- ./tools/run_deno --verbose "<test string>"
要找到完整的測試列表,請訪問在線CTS查看器。
當前啟用的CTS測試列表可以在此處找到。
wgpu
板條箱的本質是WebGPU API的慣用銹翻譯。該規範及其陰影語言WGSL仍處於“工作草案”階段,雖然一般輪廓穩定,但細節經常更改。在穩定規範之前,隨著實施的趕上, wgpu
板條箱和WGSL的版本可能與指定的規格不同。
wgpu
支持的哪些WGSL功能取決於您的使用方式:
當作為本機代碼運行時, wgpu
使用Naga板條將WGSL代碼轉換為平臺本機GPU API的陰影語言。納迦(Naga)有一個趕上WGSL規範的里程碑,但通常,納迦(Naga)和WGSL規範之間的差異沒有最新的摘要。
在Web瀏覽器中運行(通過啟用"webgl"
功能的WebAssembly)運行時, wgpu
依賴於瀏覽器自己的WebGPU實現。 WGSL著色器簡單地傳遞到瀏覽器,以確定您可以使用的WGSL功能。
當啟用wgpu
的"webgl"
功能在Web瀏覽器中運行時, wgpu
使用NAGA將WGSL程序轉換為GLSL。這使用NAGA的版本就像您正在運行wgpu
作為本機代碼一樣。
WGPU使用D3D和金屬的坐標系:
使成為 | 質地 |
---|---|