Repository navigation
Performance
Measured on an Apple M1 Pro at Retina resolution:
| v4.38 | v4.39 | |
|---|---|---|
| Scenes over 16.7 ms CPU per frame | 25 of 59 | 0 |
| Worst scene CPU per frame (Tanglecube) | 256 ms avg, 2.9 s peak | 3.2 ms avg |
| Edges after the effect chain | up to 404,000 | at most 60,000 |
| Simplest scene, uncapped | 34 fps | 167 fps |
| Schwarz D / Tanglecube | 3.8 / 2.9 fps | 109 / 106 fps |
| Stress run, 600 BPM, 83 scene changes | worst frame 8.9 ms CPU |
- Effects: sort-based duplicate removal only where duplicates can arise, a 60,000-edge budget, undo on non-finite output.
- Scenes build on worker threads and are prefetched; the render loop never waits for a rebuild.
- Uploads: O(edges) check, direct index upload, buffer orphaning.
- GPU: the procedural background and art layer render in a half-resolution pass, skipped while a logo card covers the screen.
--qualitynow helps (about +35% at 0.5).
Fixes
- A rejected mesh no longer ends the show. Full-screen is vsynced. The beat solarize flash no longer turns black grey.
Music
- Playlist: "Stars (4ch. version)" by cs127 (CC BY 4.0), then "Digital Rendezvous" by Drozerix (The Mod Archive 180821, Public Domain), looping; credit and tempo switch with the track, without a beat jump. WAV playback and the looping-clock fix from v4.38.
New
--stats(fps and CPU time per frame),--no-vsync, repeatable--music.- Regression tests for the edge budget, effect validity and the async scene fetch.
CI green on macOS, Linux and Windows.