Add Infinity_Vis_1 performance core
This commit is contained in:
72
Infinity_Vis_1/README.md
Normal file
72
Infinity_Vis_1/README.md
Normal file
@@ -0,0 +1,72 @@
|
||||
# Infinity_Vis_1
|
||||
|
||||
Fresh restart of Infinity Vis with a smaller runtime surface and a lower-allocation render path.
|
||||
|
||||
This directory is intentionally separate from the legacy `app/` implementation.
|
||||
The goal is to keep the old tool usable while rebuilding the next version on a
|
||||
clean architecture.
|
||||
|
||||
## What is in here
|
||||
|
||||
- `FEATURE_INVENTORY.md`
|
||||
Current feature surface collected from the existing application.
|
||||
- `ARCHITECTURE.md`
|
||||
The new runtime design and the main performance goals.
|
||||
- `MIGRATION_STATUS.md`
|
||||
Honest parity tracking between the legacy app and the clean rebuild.
|
||||
- `infinity_vis_1/`
|
||||
New core package with mapping I/O, patterns, fast renderer, presets, and DDP output.
|
||||
- `tests/`
|
||||
Basic verification for the new mapping and renderer core.
|
||||
|
||||
## Current focus
|
||||
|
||||
Phase 1 is the performance-oriented core, not the full Qt feature-parity UI yet.
|
||||
|
||||
That means this new codebase already covers:
|
||||
|
||||
- loading and saving the existing XML mapping format
|
||||
- controller grouping for shared-IP multi-tile nodes
|
||||
- pattern rendering with a low-allocation tile-color pipeline
|
||||
- separate output and preview timing via a new runtime engine
|
||||
- direct DDP payload generation
|
||||
- delta sending with keepalive support for unchanged controller frames
|
||||
- preset persistence
|
||||
- benchmark tooling
|
||||
|
||||
## Run the benchmark
|
||||
|
||||
From the repo root:
|
||||
|
||||
```powershell
|
||||
python -m Infinity_Vis_1.infinity_vis_1.benchmark --frames 600
|
||||
python -m Infinity_Vis_1.infinity_vis_1.benchmark --mode engine --frames 600 --pattern solid
|
||||
```
|
||||
|
||||
## Start the live DDP sender
|
||||
|
||||
```powershell
|
||||
python -m Infinity_Vis_1.infinity_vis_1.live --mapping sample_data\infinity_mirror_mapping_clean.xml --pattern solid --fps 40
|
||||
```
|
||||
|
||||
Example for a harder live test:
|
||||
|
||||
```powershell
|
||||
python -m Infinity_Vis_1.infinity_vis_1.live --mapping sample_data\infinity_mirror_mapping_clean.xml --pattern strobe --fps 40 --strobe-mode global --no-delta
|
||||
```
|
||||
|
||||
## Use the runtime core
|
||||
|
||||
```python
|
||||
from Infinity_Vis_1.infinity_vis_1 import OutputSettings, RealtimeEngine, SceneState, load_mapping
|
||||
|
||||
mapping = load_mapping("sample_data/infinity_mirror_mapping_clean.xml")
|
||||
engine = RealtimeEngine(mapping, scene=SceneState(), settings=OutputSettings(output_fps=40, preview_fps=12))
|
||||
result = engine.tick()
|
||||
```
|
||||
|
||||
## Run the new tests
|
||||
|
||||
```powershell
|
||||
python -m unittest discover Infinity_Vis_1/tests
|
||||
```
|
||||
Reference in New Issue
Block a user