Record Fensalir indirect TubeField draws

This commit is contained in:
Meta Vens 2026-05-26 20:58:53 +01:00
commit 50aa99f281
3 changed files with 8 additions and 4 deletions

View file

@ -171,8 +171,9 @@ a named invariant that the native runtime cannot protect yet.
Catmull-Rom XY tubes with modulo column addressing, amplitude power/
normalization, radius, ramp texture resource, and emission scale. D3D12 now
expands and renders those tubes from GPU-resident buffers, samples material
per pixel, and binds declared local ramp textures; indirect draw packets,
mesh, surface-page, and volume resource kinds remain future engine cuts.
per pixel, binds declared local ramp textures, and executes GPU-emitted
indirect draw argument packets; mesh, surface-page, and volume resource kinds
remain future engine cuts.
- `MimirRuntime` queues bioacoustic timeline PCM through Fensalir audio when the
active timing witness is allowed. `MimirAudioSynchronizationSettings.Mode`
selects `chirp-only`, `passive`, or `hybrid`; passive disables active

View file

@ -145,3 +145,4 @@
{"ts": "2026-05-26T20:13:00+01:00", "type": "implementation", "status": "ok", "note": "Fensalir now has the first D3D12 TubeField rendering path for Mimir-declared rolling float buffers: compute shader expansion binds the resolved GPU sample buffer read-only, emits endpoint-clamped Catmull-Rom tube envelopes into fixed-budget vertex/index UAVs, honors declared sample stride with byte-address loads, draws opaque field geometry through the spline SDF pipeline, and reports requested/dispatched/truncated segment counts. Mimir build and both Fensalir field evidence smokes pass; remaining cuts are per-pixel source-row material sampling, ramp texture binding/fallback, indirect draw packets, and non-buffer resolvers."}
{"ts": "2026-05-26T20:22:00+01:00", "type": "implementation", "status": "ok", "note": "Fensalir TubeField rendering now includes the pixel-material side Mimir asked for: compute expansion records one draw batch per lowering, and the TubeField pixel shader binds the matching source buffer/constants and resamples the rolling buffer per pixel by column+spline coordinate using the cheap 5-tap path. Initial material is opaque field geometry with fallback black-to-warm ramp, squared normalized emission, and fake Fresnel center-bright/edge-dark shaping. Real blackbody ramp texture binding, indirect draw packets, and non-buffer resolvers remain future cuts. Headless Fensalir dev reload, Aquarium.Engine.Tests, Mimir build, and both field smokes passed."}
{"ts": "2026-05-26T20:40:00+01:00", "type": "implementation", "status": "ok", "note": "Fensalir now exposes Texture2D local asset resources for engine users. The field DSL accepts `texture2d id=... key=... path=...`, TubeField `ramp=...` resolves aliases to resource keys, D3D12 lazily uploads local Rgba8 assets and binds the ramp SRV with linear clamp sampling, and unresolved ramps use a Fensalir-owned 0-1 fallback texture. Mimir's DSL smoke now proves two resources, one TubeField lowering, automatic ramp handle binding, and one planned TubeField packet. Headless Fensalir reload, Aquarium.Engine.Tests, Mimir build, and both field smokes passed."}
{"ts": "2026-05-26T20:59:00+01:00", "type": "implementation", "status": "ok", "note": "Fensalir TubeField compute now emits GPU-resident D3D12 indirect draw argument packets. Render still binds one batch at a time because source/ramp material root bindings differ, but draw count/start index authority now comes from the compute-emitted packet and render uses ExecuteIndirect. Fensalir build/tests/headless reload, Mimir build, and both field smokes passed. Remaining renderer migration cuts are mesh, surface-page, and volume resource resolvers."}

View file

@ -321,8 +321,10 @@ accepted_design:
Missing ramps fall back to a Fensalir-owned 0-1 linear texture. The first
material is opaque field geometry with squared normalized emission, fake
Fresnel center-bright/edge-dark shaping, and geometry-budget overflow
reporting. Remaining visual cuts are indirect draw packets, then honest
mesh/page/volume resolvers.
reporting. TubeField compute now emits GPU-resident D3D12 indirect draw
argument packets, and render executes those packets after binding each
batch's source/ramp material state. Remaining visual cuts are honest mesh/
page/volume resolvers.
- `config/perfect-machine.example.json` declares live owners, sensors,
reservoir views, and runtime policy.
- `src/Mimir.Runtime/Synchronization` now includes the Perfect Machine module