wgpu
는 크로스 플랫폼, 안전하고 순수한 러스트 그래픽 API입니다. Vulkan, Metal, D3d12 및 OpenGL에서 기본적으로 실행됩니다. WASM의 WebGL2와 WebGPU 위에.
API는 WebGPU 표준을 기반으로합니다. Firefox 및 Deno에서 WebGPU 통합의 핵심 역할을합니다.
리포지토리는 다음 라이브러리를 호스팅합니다.
다음 바이너리 :
naga
사용하여 다른 언어로 셰이더를 변환하는 도구.cts_runner
deno_webgpu
사용한 WebGPU 적합성 테스트 스위트 러너.player
- API 트레이스 재생을위한 독립형 응용 프로그램.GFX-RS 생태계의 모든 구성 요소에 대한 개요는 큰 그림을 참조하십시오.
Rust 예제는 WGPU/예제에서 찾을 수 있습니다. cargo run --bin wgpu-examples <example>
사용하여 Native에서 예제를 실행할 수 있습니다. 예제 목록을 참조하십시오.
브라우저에서 예제를 실행하려면 cargo xtask run-wasm
실행하십시오. 그런 다음 브라우저에서 http://localhost:8000
열면 실행할 예제를 선택할 수 있습니다. 당연히 WebGPU 기반 예제를 표시하려면 브라우저가 지원해야합니다.
WGPU 자습서를 찾고 있다면 다음을보십시오.
C/C ++에서 WGPU를 사용하려면 wgpu-native가 필요합니다.
WGPU C ++ 자습서를 찾고 있다면 다음을보십시오.
다른 언어로 WGPU를 사용하려면 Python, D, Julia, Kotlin 등과 같은 언어에서 WGPU 네이티브에 많은 바인딩이 있습니다. 목록을 참조하십시오.
우리는 WGPU 커뮤니티를 형성하는 몇 가지 다른 방이있는 매트릭스 공간을 가지고 있습니다.
우리는 지식 기반 역할을하는 위키가 있습니다.
API | 창 | 리눅스/안드로이드 | 마코오/iOS | 웹 (WASM) |
---|---|---|---|---|
vulkan | ✅ | ✅ | ? | |
금속 | ✅ | |||
DX12 | ✅ | |||
Opengl | ? (GL 3.3+) | ? (GL es 3.0+) | ? | ? (WebGL2) |
Webgpu | ✅ |
✅ = 일류 지원
? = 다운 레벨/최선의 노력 지원
? = 각도 번역 층이 필요합니다 (GL es 3.0 만 해당)
? = MoltenVK 번역 계층이 필요합니다
= 지원되지 않지만 기부금에 열려 있습니다
WGPU는 WGSL, SPIR-V 및 GLSL에서 셰이더를 지원합니다. HLSL과 GLSL에는 SPIR-V를 대상으로하는 컴파일러가 있습니다. 이러한 모든 셰이더 언어는 모든 전환을 처리 할 때 모든 백엔드와 함께 사용할 수 있습니다. 또한 이러한 셰이더 입력에 대한 지원은 사라지지 않습니다.
WebGPU는 WGSL 이외의 다른 음영 언어를 지원하지 않지만 WebGPU에서 실행중인 경우 비 WGSL 셰이더를 자동으로 변환합니다.
WGSL은 항상 기본적으로 지원되지만 GLSL 및 SPIR-V 필요 기능은 지원 중에 컴파일 할 수 있습니다.
WGSL 사양은 여전히 개발 중이므로 초안 사양은 wgpu
지원하는 내용을 정확하게 설명하지 않습니다. 자세한 내용은 아래를 참조하십시오.
Spir-V 셰이더를 활성화하려면 WGPU의 spirv
기능을 활성화하십시오. GLSL 셰이더를 활성화하려면 WGPU의 glsl
기능을 활성화하십시오.
Angle은 GLES에서 Google에서 개발 한 다른 백엔드까지 번역 계층입니다. 플랫폼 DX11 지원에 도달하기 위해 GLES3 백엔드를 실행하는 데 도움이되지 않습니다. 각도로 실행하려면 "각도"기능을 활성화하고 응용 프로그램이 보이는 위치에 배치 된 각도 라이브러리를 활성화해야합니다. 이 바이너리는 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 Releases에서만 업그레이드 될 수 있지만 3 개월마다 Breaking 버전을 출시합니다.
naga
, wgpu-core
, wgpu-hal
및 wgpu-types
상자 상자는 python/mozboot/mozboot/util.py
에서 MINIMUM_RUST_VERSION
의 값에 의해 결정된 경우 Firefox의 MSRV보다 MSRV를 야간 빌드에 앞서 필요로하지 않아야합니다.
모든 테스트 및 예제 인프라는 동일한 환경 변수 세트를 공유하여 어떤 백엔드/GPU를 실행할 것인지 결정합니다.
WGPU_ADAPTER_NAME
사용하려는 어댑터 이름의 하위 문자열이있는 (예 : 1080
NVIDIA GeForce 1080ti
와 일치 함).vulkan
, metal
, dx12
또는 gl
)의 쉼표로 구분 된 목록이있는 WGPU_BACKEND
.WGPU_POWER_PREF
( high
, low
거나 none
)WGPU_DX12_COMPILER
( dxc
또는 fxc
, dxc
dxil.dll
및 dxcompiler.dll
이 작업 디렉토리에 있어야한다는 점에 유의하십시오. 그렇지 않으면 fxc
로 돌아갑니다)WGPU_GLES_MINOR_VERSION
있는 Minor OpenGl es 3 버전 번호가있는 ( 0
, 1
, 2
또는 automatic
).WGPU_ALLOW_UNDERLYING_NONCOMPLIANT_ADAPTER
비준수 드라이버가 열거되어 있는지 여부 ( 0
, 1의 경우 1
). CTS를 실행할 때 변수를 사용하십시오. DENO_WEBGPU_ADAPTER_NAME
, DENO_WEBGPU_BACKEND
, DENO_WEBGPU_POWER_PREFERENCE
사용하십시오.
우리는 여러 가지 테스트 방법을 가지고 있으며, 각 방법은 WGPU에 대한 다른 특성을 테스트합니다. CI에서 테스트를 자동으로 실행합니다. CI 테스트의 현재 상태 :
플랫폼/백엔드 | 테스트 | 메모 |
---|---|---|
Windows/DX12 | ✔️ | 워프 사용 |
Windows/OpenGL | ✔️ | llvmpipe 사용 |
마코/금속 | ✔️ | 하드웨어 러너 사용 |
Linux/Vulkan | ✔️ | Lavapipe 사용 |
Linux/Opengl es | ✔️ | llvmpipe 사용 |
크롬/웹글 | ✔️ | 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
패키지 브라우저를 사용하여 테스트를 자동으로 실행합니다. http://localhost:8000
에서 원하는 브라우저로 테스트를 실행하려면 --headless
제거하십시오.
귀하가 사용자이고 WGPU에 기여하는 데 도움이되는 방법을 원하는 경우 항상 테스트 사례를 작성하는 데 더 많은 도움이 필요합니다.
WebGPU에는 구현이 올바르게 작동하는지 확인하기위한 적합성 테스트 스위트가 포함되어 있습니다. 우리는이 CTS를 WGPU에 대해 실행할 수 있습니다.
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 IT가 구현하는 버전은 구현이 따라 잡히면 지정된 것과 다를 수 있습니다.
정확히 WGSL 기능 wgpu
지원이 사용하는 방법에 따라 다릅니다.
기본 코드로 실행할 때 wgpu
Naga Crate를 사용하여 WGSL 코드를 플랫폼의 기본 GPU API의 음영 언어로 변환합니다. Naga는 WGSL 사양을 따라 잡기위한 이정표가 있지만 일반적으로 Naga와 WGSL 사양의 차이점에 대한 최신 요약은 없습니다.
wgpu
"webgl"
기능이 활성화되지 않은 웹 브라우저 (WebAsSembly로 컴파일)에서 실행될 때 브라우저의 WebGPU 구현에 의존합니다. WGSL 셰이더는 단순히 브라우저로 전달되므로 사용할 수있는 WGSL 기능이 결정됩니다.
wgpu
의 "webgl"
기능이 활성화 된 웹 브라우저에서 실행할 때 wgpu
NAGA를 사용하여 WGSL 프로그램을 GLSL로 변환합니다. 이것은 마치 wgpu
기본 코드로 실행하는 것처럼 동일한 버전의 Naga를 사용합니다.
WGPU는 D3D 및 Metal의 좌표 시스템을 사용합니다.
세우다 | 조직 |
---|---|
![]() | ![]() |