1.5 KiB
1.5 KiB
Infinity_Vis_1 Architecture
Design goal
Make the render path cheaper than the current application by replacing object-heavy frame construction with a compact, controller-oriented runtime.
High-level layers
mapping_xml.pyParses and writes the existing XML mapping format.models.pySmallslots=Truedataclasses for tiles, segments, controllers, scenes, and frames.patterns.pyStateless pattern functions that return tile colors only.renderer.pyOwns precomputed controller routes and reusablebytearraypayloads.engine.pySeparates output cadence from preview cadence and handles delta sending.output/ddp.pySends already-built payloads as DDP packets.presets.pyJSON preset persistence.benchmark.pySimple measurable entry point for render throughput.
Main performance choices
- Render tile colors first, not rich nested preview objects.
- Reuse controller payload buffers every frame.
- Precompute segment byte offsets once at startup.
- Keep the runtime pure-stdlib for the new core.
- Keep preview as a consumer of a compact frame snapshot, not as the center of the engine.
- Decouple preview timing from hardware output timing so UI cost cannot directly cap live output.
- Skip unchanged controller payloads while still sending periodic keepalives.
What is intentionally not in phase 1
- Full Qt UI parity
- Full preview painter parity
- WLED discovery UI port
- Advanced transition compositing parity
Those belong in phase 2, after the faster runtime is proven and benchmarked.