wgpu-rs is an idiomatic Rust wrapper over wgpu-core. It's designed to be suitable for general purpose graphics and computation needs of Rust community.
wgpu-rs can target both the natively supported backends and WASM directly.
See our gallery and the wiki page for the list of libraries and applications using wgpu-rs.
All examples are located under the examples directory.
These examples use the default syntax for running examples, as found in the Cargo documentation. For example, to run the cube example:
cargo run --example cubeThe hello* examples show bare-bones setup without any helper code. For hello-compute, pass 4 numbers separated by spaces as arguments:
cargo run --example hello-compute 1 2 3 4The following environment variables can be used to configure how the framework examples run:
-
WGPU_BACKENDOptions:
vulkan,metal,dx11,dx12,gl,webgpuIf unset a default backend is chosen based on what is supported by your system.
-
WGPU_POWER_PREFOptions:
low,highIf unset a low power adapter is preferred.
See wiki article.
wgpu-core uses tracing for logging and wgpu-rs uses log for logging.
If you just want log messages to show up and to use the chrome tracing infrastructure,
take a dependency on the wgpu-subscriber crate then call initialize_default_subscriber. It will
set up logging to stdout/stderr based on the RUST_LOG environment variable.
tracing also has tools available to convert all tracing events into log events and vise versa.
The tracing_log crate has a log logger to translate all events into tracing events. Call:
tracing_log::LogTracer::init().unwrap()The tracing crate has a log feature which will automatically use log if no subscriber is added:
tracing = { version = "0.1", features = ["log"] }If you want events to be handled both by tracing and log, enable the log-always feature of tracing:
tracing = { version = "0.1", features = ["log-always"] }If you need to test local fixes to gfx-rs or other dependencies, the simplest way is to add a Cargo patch. For example, when working on DX12 backend on Windows, you can check out the "hal-0.2" branch of gfx-rs repo and add this to the end of "Cargo.toml":
[patch."https://github.com/gfx-rs/gfx"]
gfx-backend-dx12 = { path = "../gfx/src/backend/dx12" }
gfx-hal = { path = "../gfx/src/hal" }If a version needs to be changed, you need to do cargo update -p gfx-backend-dx12.
