summaryrefslogtreecommitdiff
path: root/TODO.md
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-03-27 07:59:00 +0100
committerskal <pascal.massimino@gmail.com>2026-03-27 07:59:00 +0100
commitfb13e67acbc7d7dd2974a456fcb134966c47cee0 (patch)
tree8dd1c6df371b0ee046792680a14c8bcb3c36510b /TODO.md
parent8c5e41724fdfc3be24e95f48ae4b2be616404074 (diff)
fix(cnn_v3): remove dec0 ReLU, load FiLM MLP at runtime
Two bugs blocking training convergence: 1. dec0 ReLU before sigmoid constrained output to [0.5,1.0] — network could never produce dark pixels. Removed F.relu in train_cnn_v3.py and max(0,…) in cnn_v3_dec0.wgsl. Test vectors regenerated. 2. set_film_params() used hardcoded heuristics instead of the trained MLP. Added CNNv3FilmMlp struct + load_film_mlp() to cnn_v3_effect.h/.cc. MLP auto-loaded from ASSET_WEIGHTS_CNN_V3_FILM_MLP at construction; Linear(5→16)→ReLU→Linear(16→72) runs CPU-side each frame. 36/36 tests pass. Parity max_err=4.88e-4 unchanged. handoff(Gemini): retrain from scratch — needs ≥50 samples (currently 11). See cnn_v3/docs/HOWTO.md §2-3.
Diffstat (limited to 'TODO.md')
-rw-r--r--TODO.md9
1 files changed, 6 insertions, 3 deletions
diff --git a/TODO.md b/TODO.md
index eb530ec..4c22212 100644
--- a/TODO.md
+++ b/TODO.md
@@ -71,15 +71,18 @@ Ongoing shader code hygiene for granular, reusable snippets.
## CNN v3 — U-Net + FiLM [IN PROGRESS]
-**Design:** `cnn_v3/docs/CNN_V3.md` | All phases 1–7 complete. Runtime pipeline operational.
+**Design:** `cnn_v3/docs/CNN_V3.md` | All phases 1–9 complete. Runtime pipeline operational.
**Current pipeline:** `GBufferEffect` → `GBufDeferredEffect` → `GBufViewEffect` → sink
-**Shadow pass status:** ✅ Fixed and re-enabled. Cube + sphere shadows correct. Pulsating sphere scale confirmed correct end-to-end. Scene is currently simplified (1 cube + 1 sphere, 1 light) for debugging.
+**Training bugs fixed (2026-03-27):**
+- ✅ dec0 ReLU removed: output now spans full [0,1] range (was stuck ≥0.5)
+- ✅ FiLM MLP loaded from `cnn_v3_film_mlp.bin` at runtime (was hardcoded heuristics)
**Active work:**
- [ ] Restore full scene in `GBufferEffect::set_scene()` (20 cubes + 4 spheres, 2 lights)
-- [ ] Run first real training pass — see `cnn_v3/docs/HOWTO.md` §3
+- [ ] Collect ≥50 training samples (currently 11) — see `cnn_v3/docs/HOWTO.md` §2
+- [ ] Retrain from scratch — see `cnn_v3/docs/HOWTO.md` §3
**Pending (lower priority):**
- [ ] GBufferEffect: Pass 3 transparency (transp=0 placeholder)