|
1 | 1 | # TODO |
2 | 2 |
|
| 3 | +## Benchmarking Infrastructure (Priority) |
| 4 | + |
| 5 | +**No optimization code changes until this is complete.** |
| 6 | + |
| 7 | +- [ ] Implement benchmark mode CLI subcommand (`cargo run --release -- bench`) |
| 8 | +- [ ] Camera spline system - move camera along a path over time |
| 9 | +- [ ] Look-at spline - animate what the camera looks at for realistic movement |
| 10 | +- [ ] Frame time recording - capture timing for each frame |
| 11 | +- [ ] Output timing data to file for analysis |
| 12 | +- [ ] Consistent benchmark runs (fixed frame count, deterministic camera path) |
| 13 | + |
3 | 14 | ## Features (Ray Tracing in One Weekend series) |
4 | 15 |
|
5 | 16 | 1. [x] Lighting (emissive materials, diffuse lights) |
|
9 | 20 | - [x] Create test scene with emissive quad (Cornell box) |
10 | 21 | 2. [x] Quads (axis-aligned and arbitrary) |
11 | 22 | 3. [x] Transforms (translate, rotate, scale) |
12 | | -4. [ ] Image textures |
13 | | -5. [ ] Noise textures (Perlin noise) |
14 | | -6. [ ] Bounding Volume Hierarchy (BVH) |
| 23 | +4. [ ] Finish Cornell box scene - add the two rotated boxes inside |
| 24 | + - Reference: `ray-tracing-in-one-weekend/src/main.rs:cornell_box` |
| 25 | +5. [ ] Image textures |
| 26 | +6. [ ] Noise textures (Perlin noise) |
| 27 | +7. [ ] Bounding Volume Hierarchy (BVH) |
15 | 28 | - [ ] Implement AABB (Axis-Aligned Bounding Box) with ray intersection test |
16 | 29 | - [ ] Add `bbox()` method to hittable primitives (Sphere, Quad) |
17 | 30 | - [ ] Implement linearized BVH structure (flat array, no recursion/pointers for GPU) |
@@ -99,8 +112,8 @@ The camera crashes when looking straight up or down because `vup` becomes parall |
99 | 112 |
|
100 | 113 | ### Future enhancements (not for first pass) |
101 | 114 |
|
102 | | -- Sample accumulation when stationary |
103 | | -- Screenshot with current camera position |
| 115 | +- [ ] **Dynamic ray sampling**: Lower samples per pixel when camera/world is moving for faster feedback, then accumulate rays over time when stationary for higher quality. Requires tracking frame-to-frame camera changes and maintaining an accumulation buffer. |
| 116 | +- [ ] Screenshot with current camera position |
104 | 117 |
|
105 | 118 | ## Technical Debt |
106 | 119 |
|
|
0 commit comments