explaingit

gfx-rs/wgpu

17,128RustAudience · developerComplexity · 4/5Setup · hard

TLDR

wgpu is a Rust graphics library that lets you write GPU rendering code once and run it on Windows, Linux, macOS, iOS, Android, and the web, without rewriting for each platform's native graphics API.

Mindmap

mindmap
  root((wgpu))
    What it does
      Cross-platform GPU
      Single API
      WebGPU standard
    Backends
      Vulkan
      Metal
      D3D12
      WebGL2 fallback
    Platforms
      Windows Linux macOS
      iOS Android
      Browser via WASM
    Use Cases
      Games
      Visualization
      Custom renderers
      GPU compute
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a cross-platform 3D game in Rust that runs on desktop and in the browser from a single codebase.

USE CASE 2

Write scientific visualization or GPU compute software that deploys to Linux, macOS, Windows, and Android without platform-specific code.

USE CASE 3

Create a custom rendering engine or creative-coding tool that runs natively and in the browser via WebAssembly.

USE CASE 4

Use wgpu-native C bindings to drive the GPU from C, C++, or another language that is not Rust.

Tech stack

RustWebGPUWGSLVulkanMetalD3D12WebAssembly

Getting it running

Difficulty · hard Time to first run · 1h+

Requires Rust 1.87+, a compatible GPU driver, and a WebAssembly toolchain such as wasm-pack or Trunk for browser builds.

In plain English

wgpu is a safe, cross-platform graphics library written in pure Rust. Graphics programming usually means writing code against a specific GPU API like Vulkan, Metal, D3D12, or OpenGL, which means rewriting parts of your code for each platform. wgpu hides all of that behind one unified API so you can write your rendering code once and have it run on Windows, Linux, macOS, iOS, Android, and the web. The API design is based on the WebGPU standard, the modern web graphics specification that aims to replace WebGL. On native platforms, wgpu translates your calls down to Vulkan, Metal, D3D12, or OpenGL as appropriate. On the web through WebAssembly, it runs on top of WebGPU directly, or falls back to WebGL2 where WebGPU is not yet available. Shaders are written in WGSL, the shading language that ships with the WebGPU standard. wgpu is also the actual implementation powering WebGPU inside Firefox, Servo, and Deno, so the same code that runs in your Rust app also runs inside major browsers and runtimes. The project publishes C bindings as a separate crate called wgpu-native, which lets you use wgpu from C, C++, and dozens of other languages. You would reach for wgpu when you are building anything that needs to draw with the GPU and want a single codebase that works across major platforms: games, simulations, scientific visualization tools, creative coding apps, or custom rendering engines. The minimum supported Rust version for using the crate is 1.87. The full README is longer than what was provided.

Copy-paste prompts

Prompt 1
Show me a minimal wgpu Rust program that opens a window, clears it to a solid color, and compiles for both desktop and WebAssembly.
Prompt 2
Walk me through writing a wgpu compute shader in WGSL that adds two arrays of floats together on the GPU and reads the result back to the CPU.
Prompt 3
How do I set up a wgpu render pipeline in Rust that draws a triangle using a vertex shader and fragment shader, with the full boilerplate?
Prompt 4
I want to use wgpu in my Rust game. Show me how to load a PNG texture, upload it to the GPU, and sample it in a fragment shader.
Prompt 5
How do I compile a wgpu Rust project to WebAssembly and run it in a browser using wasm-pack or Trunk?
Open on GitHub → Explain another repo

← gfx-rs on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.