wgpu is a cross-platform graphics API implementation in Rust. It powers Firefox's WebGPU implementation, but what most developers don't know is that you can use it for native applications too — getting Vulkan/Metal/DX12 performance with a single, safe Rust API.
What Makes wgpu Special?
- Cross-platform — runs on Vulkan, Metal, DX12, OpenGL, and WebGPU
- Rust safety — no unsafe GPU code, the API prevents errors at compile time
- Browser AND native — same code runs in Chrome and as a desktop app
- Production-ready — powers Firefox, Deno, and many game engines
The Hidden API: Native GPU Compute
use wgpu::*;
async fn run_compute() {
let instance = Instance::new(&InstanceDescriptor::default());
let adapter = instance.request_adapter(&RequestAdapterOptions {
power_preference: PowerPreference::HighPerformance,
..Default::default()
}).await.unwrap();
let (device, queue) = adapter.request_device(
&DeviceDescriptor {
label: Some("compute device"),
required_features: Features::empty(),
required_limits: Limits::default(),
..Default::default()
}, None
).await.unwrap();
let shader = device.create_shader_module(ShaderModuleDescriptor {
label: Some("compute shader"),
source: ShaderSource::Wgsl(include_str!("shader.wgsl").into()),
});
println!("GPU: {:?}", adapter.get_info().name);
}
Render API — Cross-Platform Graphics
let render_pipeline = device.create_render_pipeline(&RenderPipelineDescriptor {
label: Some("render pipeline"),
layout: Some(&pipeline_layout),
vertex: VertexState {
module: &shader,
entry_point: Some("vs_main"),
buffers: &vertex_buffers,
compilation_options: Default::default(),
},
fragment: Some(FragmentState {
module: &shader,
entry_point: Some("fs_main"),
targets: &[Some(ColorTargetState {
format: surface_format,
blend: Some(BlendState::REPLACE),
write_mask: ColorWrites::ALL,
})],
compilation_options: Default::default(),
}),
primitive: PrimitiveState::default(),
depth_stencil: None,
multisample: MultisampleState::default(),
multiview: None,
cache: None,
});
Quick Start
cargo new my-gpu-app
cd my-gpu-app
cargo add wgpu pollster
Why Game Developers Choose wgpu
A game engine developer shared: "We evaluated Vulkan, Metal wrappers, and wgpu. wgpu won because one codebase targets every platform. Our engine runs on Windows, macOS, Linux, and the web — from the same Rust source."
Building GPU-accelerated tools? Email spinov001@gmail.com or check out my developer toolkit.
What's your GPU programming stack? Have you tried wgpu?
Top comments (0)