You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
1.7 KiB
Markdown

+++
title = "edu: write chapter on shader programming"
priority = 3
status = "todo"
ticket_type = "task"
dependencies = []
+++
## Background
From `edu/TODO.md`: Hands-on: Shader programming.
A practical introduction to GPU shaders, written with Rust as the host language. The course covers the graphics pipeline conceptually and has hands-on exercises writing WGSL shaders driven by `wgpu`.
## Content outline (suggested)
### Part 1 — The GPU and the Graphics Pipeline
1. CPU vs GPU: parallel execution model
2. The programmable pipeline: vertex shaders, fragment shaders, compute shaders
3. What is WGSL? (WebGPU Shading Language) — syntax overview
### Part 2 — Setting Up with wgpu
4. What is `wgpu`? Cross-platform graphics API in Rust
5. Exercise 1: Create a window and clear it to a colour (the GPU 'hello world')
6. The render loop: swap chains, frames, command encoders
### Part 3 — Vertex and Fragment Shaders
7. Vertices, buffers, and the vertex shader
8. Interpolation and the fragment shader
9. Exercise 2: Draw a coloured triangle
10. Exercise 3: Animate the triangle using a time uniform
### Part 4 — Textures and Samplers
11. Texture coordinates (UVs), texture creation, sampler config
12. Exercise 4: Render a textured quad
### Part 5 — Compute Shaders
13. Compute pipelines: dispatching work groups
14. Storage buffers and read/write access from WGSL
15. Exercise 5: GPU-accelerate a particle simulation
### Part 6 — Going Further
16. Post-processing effects (bloom, blur) — conceptual overview
17. Signed Distance Fields for font rendering
18. Resources: Learn WGPU tutorial, Shadertoy, The Book of Shaders
## File to create
- `edu/src/shaders.md`
- Add to `edu/src/SUMMARY.md` under a `# Graphics` section