mirror of
https://github.com/gfx-rs/wgpu.git
synced 2026-04-22 03:02:01 -04:00
1504542019abf6ae7175be4379c12e59ddaca982
59: Map buffers async r=kvark a=swiftcoder This is not ready to merge. It works well enough for the example, but looking for some early feedback. In particular: - It's not really async, since gfx-hal's mapping APIs seem to all be immediate. - Async callbacks in Rust are really unpleasant due to lifetimes, so maybe it's just as well they aren't async. - There is no validation and no real error handling here yet. Co-authored-by: Tristam MacDonald <swiftcoder@gmail.com>
WebGPU
This is an experimental WebGPU implementation as a native static library. It's written in Rust and is based on gfx-hal and satellite libraries. The corresponding WebIDL specification can be found at gpuweb project.
The implementation consists of the following parts:
wgpu-native- the native implementation of WebGPU as a C API librarywgpu-bindings- automatic generator of actual C headerswgpu-remote- remoting layer to work with WebGPU across the process boundarywgpu-rs- idiomatic Rust wrapper of the native library
Example
To run an example, simply cd to the examples or gfx-examples directory, then use cargo run with --features {backend} to specify the backend (where {backend} is either vulkan, dx12, dx11 or metal). For example:
# Clone the wgpu repository
git clone https://github.com/gfx-rs/wgpu
# Change directory to `examples`
cd wgpu/examples
# Vulkan (Linux/Windows)
cargo run --bin hello_triangle --features vulkan
# Metal (macOS/iOS)
cargo run --bin hello_triangle --features metal
# DirectX12 (Windows)
cargo run --bin hello_triangle --features dx12
cd ../gfx-examples
# Vulkan (Linux/Windows)
cargo run --bin cube --features vulkan
# Metal (macOS/iOS)
cargo run --bin cube --features metal
# DirectX12 (Windows)
cargo run --bin cube --features dx12
These examples assume that necessary dependencies for the graphics backend are already installed. For more information about installation and usage, refer to the Getting Started guide.
Description
Languages
Rust
79.9%
WGSL
16.2%
HLSL
2%
GLSL
1.7%
JavaScript
0.2%