<feed xmlns='http://www.w3.org/2005/Atom'>
<title>demo.git/src/effects, branch main</title>
<subtitle>Vide-coded 64k demo system</subtitle>
<id>https://git.taar-o.com/demo.git/atom?h=main</id>
<link rel='self' href='https://git.taar-o.com/demo.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/'/>
<updated>2026-05-21T06:10:47Z</updated>
<entry>
<title>style: apply clang-format</title>
<updated>2026-05-21T06:10:47Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-05-21T06:10:47Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=d806027dcaeadcdd8d2febd88bc46b2fd2c465de'/>
<id>urn:sha1:d806027dcaeadcdd8d2febd88bc46b2fd2c465de</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: audio &amp; effects cleanup — dead code removal, simplifications</title>
<updated>2026-05-20T21:21:59Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-05-20T21:12:08Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=ca8acd5e7c0556bee7cb21f5ff280c5fd1f47801'/>
<id>urn:sha1:ca8acd5e7c0556bee7cb21f5ff280c5fd1f47801</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: code review cleanup — bugs, dead code, factorization, simplification</title>
<updated>2026-05-20T21:21:59Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-05-20T20:44:44Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=a91f89c8ea15665853176c05597760d0fcf6e0df'/>
<id>urn:sha1:a91f89c8ea15665853176c05597760d0fcf6e0df</id>
<content type='text'>
Bugs:
- B1: fix dead tempo debug (prev_tempo captured after assignment)
- B2: fix ReloadAssetsFromFile leak for disk-loaded assets; simplify DropAsset
- B3: fix get_free_pool_slot leak (unregister synth + free data on reuse)
- B4: volatile -&gt; std::atomic with acquire/release in miniaudio_backend, synth
- B5: fix unaligned reads in scene_loader (memcpy-based read_f32/read_u32)
- B6: fix shader module + BGL + pipeline layout leaks in gpu.cc, pipeline_builder

Dead code:
- D1: remove unused particle_defs.h
- D3: remove create_post_process_pipeline_simple (zero callers)
- D4: remove empty gpu_draw()
- D5: remove write-only Hybrid3D::initialized_
- D6: remove legacy pending buffer path in audio.cc

Factorization:
- F1: Effect::run_fullscreen_pass() replaces boilerplate in 5 effects
- F2: particle_common.wgsl snippet, #include in 3 WGSL shaders
- F3: gpu_create_shader_module() helper, used in 3 call sites
- F5: get_world_aabb() shared between bvh.cc and physics.cc
- F6: samples_to_seconds() replaces 6 inline expressions
- F7: gpu_create_linear/nearest_sampler use SamplerCache; add nearest() preset

Simplification:
- S9+S1: WgslSamplerType param; Scene2Effect collapsed to thin wrapper
- S4: FFT heap allocs -&gt; stack arrays (zero allocs on hot path)
- S5: ObjectType::CUBE documented as legacy alias for BOX; default changed
- S6: bind group dirty-flag in Renderer3D; remove duplicate pipeline set
- S7: create_gpu_procedural() helper in texture_manager (~80 lines removed)

37/37 tests passing.

handoff(Claude): code review batch — all items verified, no regressions.
</content>
</entry>
<entry>
<title>fix: code review cleanup — bugs, dead code, factorization (-167 lines)</title>
<updated>2026-05-20T20:44:44Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-05-20T20:44:44Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=5d20c892dedce7bc7486acbd72fbd35da69e413e'/>
<id>urn:sha1:5d20c892dedce7bc7486acbd72fbd35da69e413e</id>
<content type='text'>
Bugs:
- B1: fix dead tempo debug (prev_tempo captured after assignment)
- B2: fix ReloadAssetsFromFile leak for disk-loaded assets; simplify DropAsset
- B3: fix get_free_pool_slot leak (unregister synth + free data on reuse)
- B4: volatile -&gt; std::atomic with acquire/release in miniaudio_backend, synth
- B5: fix unaligned reads in scene_loader (memcpy-based read_f32/read_u32)
- B6: fix shader module + BGL + pipeline layout leaks in gpu.cc, pipeline_builder

Dead code:
- D1: remove unused particle_defs.h
- D3: remove create_post_process_pipeline_simple (zero callers)
- D4: remove empty gpu_draw()
- D5: remove write-only Hybrid3D::initialized_
- D6: remove legacy pending buffer path in audio.cc

Factorization:
- F1: Effect::run_fullscreen_pass() replaces boilerplate in 5 effects
- F2: particle_common.wgsl snippet, #include in 3 WGSL shaders
- F3: gpu_create_shader_module() helper, used in 3 call sites
- F5: get_world_aabb() shared between bvh.cc and physics.cc
- F6: samples_to_seconds() replaces 6 inline expressions
- F7: gpu_create_linear/nearest_sampler use SamplerCache; add nearest() preset

37/37 tests passing.

handoff(Claude): code review batch — all items verified, no regressions.
</content>
</entry>
<entry>
<title>feat(shaders): add ray_sphere snippet, use in gbuf_raster impostor</title>
<updated>2026-03-22T19:28:48Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-03-22T19:28:48Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=ce22f79c55e68f9fa496a47a528a6978b89e1261'/>
<id>urn:sha1:ce22f79c55e68f9fa496a47a528a6978b89e1261</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor(shaders): extract oct-normal encode/decode into math/normal snippet</title>
<updated>2026-03-22T19:10:53Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-03-22T19:10:53Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=aa5c8e6730b03ea901ead59bc7cb1c31dac62012'/>
<id>urn:sha1:aa5c8e6730b03ea901ead59bc7cb1c31dac62012</id>
<content type='text'>
New src/shaders/math/normal.wgsl: oct_encode, oct_decode, oct_encode_unorm,
oct_decode_unorm. Registered in InitShaderComposer as "math/normal".
Removed inline copies from gbuf_raster.wgsl and gbuf_pack.wgsl.
18/18 tests passing.
</content>
</entry>
<entry>
<title>feat(cnn_v3): GBufDeferredEffect — simple deferred render (albedo * shadow)</title>
<updated>2026-03-22T18:58:04Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-03-22T18:58:04Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=9bf9b0aa0573f77bd667e6976a8bb413153daa1d'/>
<id>urn:sha1:9bf9b0aa0573f77bd667e6976a8bb413153daa1d</id>
<content type='text'>
New effect unpacks feat_tex0/feat_tex1 and outputs albedo * shadow.
Replaces CNNv3Effect in cnn_v3_test sequence until training is complete.
37/37 tests passing.

handoff(Gemini): GBufDeferredEffect wired in timeline; CNN v3 pipeline: GBufferEffect → GBufDeferredEffect → sink.
</content>
</entry>
<entry>
<title>feat(cnn_v3): GBufferEffect Pass 2 — SDF shadow raymarching</title>
<updated>2026-03-22T18:29:01Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-03-22T18:29:01Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=7b89a7130a998017de98dde363a8d9be61d7d44e'/>
<id>urn:sha1:7b89a7130a998017de98dde363a8d9be61d7d44e</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>feat(cnn_v3): add G-buffer visualizer + web sample loader (Phase 7)</title>
<updated>2026-03-22T15:21:25Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-03-22T15:21:25Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=159ca2ca19345515cdfebed9fd88646730492cd2'/>
<id>urn:sha1:159ca2ca19345515cdfebed9fd88646730492cd2</id>
<content type='text'>
C++ GBufViewEffect: renders all 20 feature channels from feat_tex0/feat_tex1
in a 4×5 tiled grid. Custom BGL with WGPUTextureSampleType_Uint; bind group
rebuilt per frame via wgpuRenderPipelineGetBindGroupLayout.

Web tool: "Load sample directory" button — webkitdirectory picker, FULL_PACK_SHADER
compute (matches gbuf_pack.wgsl packing), runFromFeat() skips photo-pack step,
computePSNR() readback + comparison vs target.png side-by-side.

36/36 tests pass. Docs updated: HOWTO.md §9, README, PROJECT_CONTEXT, TODO,
COMPLETED.

handoff(Gemini): CNN v3 Phase 7 done. Next: run train_cnn_v3.py (see HOWTO §3).
</content>
</entry>
<entry>
<title>feat(cnn_v3): Phase 4 complete — CNNv3Effect C++ + FiLM uniform upload</title>
<updated>2026-03-21T07:52:53Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-03-21T07:52:53Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=fe008df92f7a68d81c9bedb4328da7001e0775f0'/>
<id>urn:sha1:fe008df92f7a68d81c9bedb4328da7001e0775f0</id>
<content type='text'>
- cnn_v3/src/cnn_v3_effect.{h,cc}: full Effect subclass with 5 compute
  passes (enc0→enc1→bottleneck→dec1→dec0), shared weights storage buffer,
  per-pass uniform buffers, set_film_params() API
- Fixed WGSL/C++ struct alignment: vec3u has align=16, so CnnV3Params4ch
  is 64 bytes and CnnV3ParamsEnc1 is 96 bytes (not 48/80)
- Weight offsets computed as explicit formulas (e.g. 20*4*9+4) for clarity
- Registered in CMake, shaders.h/cc, demo_effects.h, test_demo_effects.cc
- 35/35 tests pass

handoff(Gemini): CNN v3 Phase 5 next — parity validation (Python ref vs WGSL)
</content>
</entry>
</feed>
