summaryrefslogtreecommitdiff
path: root/cnn_v3/docs
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-03-22 19:29:01 +0100
committerskal <pascal.massimino@gmail.com>2026-03-22 19:29:01 +0100
commit7b89a7130a998017de98dde363a8d9be61d7d44e (patch)
tree2b45a3253a5770170d787915b5c3d18fd69e40ac /cnn_v3/docs
parentc5e66964c0463219019d0439ec20b79248637fa4 (diff)
feat(cnn_v3): GBufferEffect Pass 2 — SDF shadow raymarching
Implements gbuf_shadow.wgsl: fullscreen render pass that reads depth from Pass 1, reconstructs world-space positions, evaluates a proxy-box SDF for each object (via inv_model), computes soft shadows for both directional lights using shadowWithStoredDistance(), and writes shadow factor to the RGBA8Unorm node_shadow_ target consumed by gbuf_pack.wgsl. Bind layout: B0=GlobalUniforms, B1=ObjectsBuffer (storage-read), B2=texture_depth_2d, B3=GBufLightsUniforms. Sky fragments (depth=1.0) are output as 1.0 (fully lit). Falls back to clear(1.0) if pipeline is not ready. 36/36 tests pass. handoff(Gemini): Pass 2 done. Pass 3 (transparency) still TODO. Phase 4 (type-aware SDF) optional after visual validation.
Diffstat (limited to 'cnn_v3/docs')
-rw-r--r--cnn_v3/docs/HOWTO.md6
1 files changed, 3 insertions, 3 deletions
diff --git a/cnn_v3/docs/HOWTO.md b/cnn_v3/docs/HOWTO.md
index 2d88019..765d80b 100644
--- a/cnn_v3/docs/HOWTO.md
+++ b/cnn_v3/docs/HOWTO.md
@@ -73,7 +73,7 @@ Each frame, `GBufferEffect::render()` executes:
- Depth test + write into `gbuf_depth` (depth32float)
- `obj.type` written to `ObjectData.params.x` for future SDF branching
-2. **Pass 2 — SDF shadow raymarching** (`gbuf_shadow.wgsl`) — TODO
+2. **Pass 2 — SDF shadow raymarching** (`gbuf_shadow.wgsl`) ✅
- See implementation plan below.
3. **Pass 3 — Transparency** — TODO (deferred; transp=0 for opaque scenes)
@@ -104,7 +104,7 @@ outputs[1] → feat_tex1 (rgba32uint: mat_id, prev.rgb, mip1.rgb, mip2.rgb, s
| Pass 1: MRT raster | ✅ Done | proxy box, all object types |
| Pass 4: Pack compute | ✅ Done | 20 channels packed |
| Internal scene + animation | ✅ Done | cubes + spheres + 2 lights |
-| Pass 2: SDF shadow | ❌ TODO | main missing piece |
+| Pass 2: SDF shadow | ✅ Done | `gbuf_shadow.wgsl`, proxy-box SDF per object |
| Pass 3: Transparency | ❌ TODO | low priority, opaque scenes only |
| Phase 4: type-aware SDF | ❌ TODO | optional refinement |
@@ -337,7 +337,7 @@ Test vectors generated by `cnn_v3/training/gen_test_vectors.py` (PyTorch referen
| Phase | Status | Notes |
|-------|--------|-------|
| 1 — G-buffer (raster + pack) | ✅ Done | Integrated, 36/36 tests pass |
-| 1 — G-buffer (SDF + shadow passes) | TODO | Placeholder: shadow=1, transp=0 |
+| 1 — G-buffer (SDF shadow pass) | ✅ Done | `gbuf_shadow.wgsl`, proxy-box SDF |
| 2 — Training infrastructure | ✅ Done | blender_export.py, pack_*_sample.py |
| 3 — WGSL U-Net shaders | ✅ Done | 5 compute shaders + cnn_v3/common snippet |
| 4 — C++ CNNv3Effect | ✅ Done | FiLM uniform upload, 36/36 tests pass |