48 lines
1.9 KiB
Markdown
48 lines
1.9 KiB
Markdown
# learn-wgpu
|
|
|
|
An educational book teaching Rust graphics programming with wgpu 29 + winit 0.30.
|
|
|
|
Built for backend/systems Rust developers who know Rust thoroughly but have zero
|
|
graphics programming experience. Every sentence teaches GPU concepts — not Rust syntax.
|
|
|
|
## Required Reading Order
|
|
|
|
1. [The Graphics Pipeline](concepts/graphics-pipeline.md) — GPU vs CPU, the 5-stage pipeline
|
|
2. [Coordinate Systems](concepts/coordinate-systems.md) — NDC, homogeneous coordinates, viewport
|
|
3. [Shader Basics](concepts/shader-basics.md) — WGSL, vertex/fragment shaders, interpolation
|
|
4. [Build a Rainbow Triangle](01-rainbow-triangle.md) — The complete step-by-step guide
|
|
5. [Troubleshooting](TROUBLESHOOTING.md) — Common errors and fixes (reference as needed)
|
|
6. [Glossary](concepts/GLOSSARY.md) — Every term defined (reference as needed)
|
|
|
|
> **Reading order matters:** Coordinate systems must be understood before shader basics,
|
|
> because the shader walkthrough references NDC coordinates.
|
|
|
|
## Guides
|
|
|
|
- **01 — Rainbow Triangle** — The minimal complete program: one triangle, smooth color interpolation
|
|
- More guides coming soon (textures, lighting, compute)
|
|
|
|
## Running the Project
|
|
|
|
From the project root:
|
|
|
|
```bash
|
|
cargo run
|
|
```
|
|
|
|
This works on all supported platforms. If you encounter build errors, see the
|
|
**Prerequisites** section above for platform-specific build tool requirements.
|
|
|
|
## Prerequisites
|
|
|
|
- Rust stable (edition 2024)
|
|
- A system with a GPU supporting WebGPU-compatible APIs:
|
|
- **Windows:** Windows 10 or later with a DirectX 12-capable GPU
|
|
- **macOS:** macOS 10.13+ with a Metal-capable GPU
|
|
- **Linux:** Vulkan-capable GPU and drivers
|
|
|
|
> **Build tools:** Your platform may require additional build tools:
|
|
> - **Windows:** Visual Studio Build Tools (2019 or later)
|
|
> - **macOS:** Xcode Command Line Tools (`xcode-select --install`)
|
|
> - **Linux:** Vulkan ICD and development packages (e.g., `vulkan-validationlayers` on Ubuntu)
|