Add Infinity_Vis_1 performance core
This commit is contained in:
124
Infinity_Vis_1/FEATURE_INVENTORY.md
Normal file
124
Infinity_Vis_1/FEATURE_INVENTORY.md
Normal file
@@ -0,0 +1,124 @@
|
||||
# Current Feature Inventory
|
||||
|
||||
This inventory was collected from the current `app/` codebase and is the scope
|
||||
target for the clean rebuild.
|
||||
|
||||
## Core control flow
|
||||
|
||||
- Mapping/project open, save, and save-as
|
||||
- Startup auto-load of sample mapping
|
||||
- Live scene and Next scene
|
||||
- FOH mode with `Go` and `Fade Go`
|
||||
- Tempo transport and transition time control
|
||||
- Utility modes such as blackout and single-tile white test
|
||||
|
||||
## Pattern system
|
||||
|
||||
Current built-in patterns:
|
||||
|
||||
- `solid`
|
||||
- `checker`
|
||||
- `row_gradient`
|
||||
- `column_gradient`
|
||||
- `center_pulse`
|
||||
- `sparkle`
|
||||
- `breathing`
|
||||
- `wave_line`
|
||||
- `scan`
|
||||
- `arrow`
|
||||
- `scan_dual`
|
||||
- `sweep`
|
||||
- `saw`
|
||||
- `two_dots`
|
||||
- `strobe`
|
||||
- `stopwatch`
|
||||
- `snake`
|
||||
|
||||
Pattern parameter surface in the current app includes:
|
||||
|
||||
- brightness
|
||||
- fade / smoothing
|
||||
- tempo multiplier
|
||||
- direction
|
||||
- checker mode
|
||||
- scan style and angle
|
||||
- on/off width
|
||||
- band thickness
|
||||
- flip horizontal / vertical
|
||||
- strobe mode and duty cycle
|
||||
- stopwatch mode
|
||||
- color mode
|
||||
- primary / secondary colors
|
||||
- palette
|
||||
- symmetry
|
||||
- center pulse mode
|
||||
- step size
|
||||
- block size
|
||||
- pixel group size
|
||||
- randomness
|
||||
|
||||
## Preview and UI
|
||||
|
||||
- Main desktop Qt window
|
||||
- Pattern panel
|
||||
- Preset browser
|
||||
- Tile preview / technical preview / LEDs-only preview
|
||||
- Fullscreen preview window
|
||||
- Selected tile panel
|
||||
- Utility controls
|
||||
- Output diagnostics panel
|
||||
|
||||
## Mapping and editing
|
||||
|
||||
- XML mapping load/save/validation
|
||||
- Tile table editing
|
||||
- Segment table editing
|
||||
- Raw XML editor
|
||||
- Calibration and enable flags per tile
|
||||
- Controller IP / host / name / MAC metadata persistence
|
||||
|
||||
## WLED-assisted mapping
|
||||
|
||||
- Network scan for WLED devices
|
||||
- Device discovery via `/json/info` and `/json`
|
||||
- Per-device identify action
|
||||
- Tile assignment workflow inside Mapping Settings
|
||||
- Immediate persistence back to the mapping file
|
||||
|
||||
## Presets
|
||||
|
||||
- JSON-backed preset storage
|
||||
- Seed presets on first run
|
||||
- Save, load, and delete presets
|
||||
|
||||
## Output
|
||||
|
||||
- Preview backend
|
||||
- DDP backend for WLED
|
||||
- Art-Net backend seam
|
||||
- Output enable/disable
|
||||
- Output FPS target
|
||||
- Render FPS / Send FPS / Output health diagnostics
|
||||
- Controller-side FPS polling for WLED live mode
|
||||
|
||||
## Performance pain points in the current code
|
||||
|
||||
- A lot of per-frame object churn:
|
||||
- `PreviewFrame`
|
||||
- `TileFrame`
|
||||
- `TilePatternSample`
|
||||
- many `RGBColor` instances
|
||||
- nested `dict[str, list[RGBColor]]` payloads
|
||||
- Per-frame rebuilding of LED pixel lists for each segment
|
||||
- Preview and output coordination still centered around one controller loop
|
||||
- Multiple render engines and transition helpers duplicating state
|
||||
- DDP payload generation starts from nested Python objects instead of a compact frame buffer
|
||||
|
||||
## Rebuild priorities for Infinity_Vis_1
|
||||
|
||||
- fixed-size runtime state
|
||||
- lower per-frame allocation
|
||||
- preview cadence separated from hardware output cadence
|
||||
- controller-first payload generation
|
||||
- shared-IP multi-tile controller topology as a first-class concept
|
||||
- clean feature layering so UI, preview, render, and output can scale independently
|
||||
Reference in New Issue
Block a user