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 cube
The 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 4
The following environment variables can be used to configure how the framework examples run:
-
WGPU_BACKEND
Options:
vulkan
,metal
,dx11
,dx12
,gl
,webgpu
If unset a default backend is chosen based on what is supported by your system.
-
WGPU_POWER_PREF
Options:
low
,high
If 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
.