Wunsch des Users (2026-10-10): Beim Bearbeiten der Bänder in Filter und Parametric EQ läuft der Editor mit etwa 30 statt 60 fps.
Gemessen auf stein2 an einer Kopie von Garden of Sacrifices (162 Assets), Band im EQ-Node gezogen, 250 Mausbewegungen pro Sekunde, 3 s:
Jeder Vorschau-Frame (FramePreview → state.preview() → Ereignis project) kostet in den Listenern etwa 17 ms.
Davon entfallen ~7,6 ms auf die versteckte Szenenansicht (SceneViewport.redraw, zeichnet die ganze Szene neu, obwohl der Sound-FX-Tab vorne ist) und ~4,8 ms auf preloadProjectFiles (Datenwalk über alle Assets und Bake-Prüfung).
Im kleinen Fixture-Projekt fällt das kaum auf (~4,7 ms je Frame).
Betrifft jeden Drag mit FramePreview, also auch die Knöpfe der Geräte im Graphen.
Vorschlag: Was man während eines Drag-Frames nicht sieht, wartet auf den Befehl am Ende des Drags. Die versteckte Szenenansicht holt beim Zeigen nach (wie schon im Play-Modus seit #265).
Wunsch des Users (2026-10-10): Beim Bearbeiten der Bänder in Filter und Parametric EQ läuft der Editor mit etwa 30 statt 60 fps.
Gemessen auf stein2 an einer Kopie von *Garden of Sacrifices* (162 Assets), Band im EQ-Node gezogen, 250 Mausbewegungen pro Sekunde, 3 s:
- Jeder Vorschau-Frame (`FramePreview` → `state.preview()` → Ereignis `project`) kostet in den Listenern etwa **17 ms**.
- Davon entfallen ~7,6 ms auf die **versteckte Szenenansicht** (`SceneViewport.redraw`, zeichnet die ganze Szene neu, obwohl der Sound-FX-Tab vorne ist) und ~4,8 ms auf **`preloadProjectFiles`** (Datenwalk über alle Assets und Bake-Prüfung).
- Im kleinen Fixture-Projekt fällt das kaum auf (~4,7 ms je Frame).
Betrifft jeden Drag mit `FramePreview`, also auch die Knöpfe der Geräte im Graphen.
Vorschlag: Was man während eines Drag-Frames nicht sieht, wartet auf den Befehl am Ende des Drags. Die versteckte Szenenansicht holt beim Zeigen nach (wie schon im Play-Modus seit #265).
Jeder Frame eines Drags meldet „Projekt geändert“, und alle Listener laufen mit, auch die, deren Arbeit während des Drags niemand sieht. Gemessen an einer Kopie von „Garden of Sacrifices“ (162 Assets, Band im Parametric EQ, 250 Mausbewegungen pro Sekunde): 17 ms pro Frame. Davon ~7,6 ms die Szenenansicht im Hintergrund, die die ganze Szene neu zeichnet, und ~4,8 ms das Vorladen der Dateien, das alle Assets und Bakes durchgeht. Im kleinen Testprojekt sind es nur ~4,7 ms, deshalb ist es bisher nicht aufgefallen.
Was gebaut ist
FramePreview markiert seinen eigenen Frame, abfragbar über isDragFrame().
Die Szenenansicht hinter einem anderen Tab überspringt so einen Frame und zeichnet beim nächsten Zeigen neu, wie sie es im Play-Modus seit #265 schon tut.
preloadProjectFiles überspringt ihn ebenfalls.
Der Befehl, der den Drag beendet, meldet sich selbst, und ein Drag ohne Änderung endet mit einem normalen Preview. Beide holen also am Ende nach.
Das gilt für jeden Drag über FramePreview, auch für die Knöpfe der Geräte im Graphen.
Messung
pro Drag-Frame
vorher
nachher
Listener gesamt
17 ms
7,4 ms
Szenenansicht im Hintergrund (3 s)
814 ms
53 ms
Vorladen der Dateien (3 s)
514 ms
0,4 ms
Den Rest brauchen vor allem die sichtbaren Panels Hierarchy (~3 ms) und Assets (~1,3 ms). Die bleiben, weil man sie sieht.
Gegenprobe: Ohne die Markierung wird genau der neue Test rot.
Nicht geprüft:
ob es auf deinem PC wirklich 60 fps sind. Gemessen ist auf stein2 (i5-7500T).
die übrigen e2e-Module, die bei verdeckter Szene ziehen, und der CI-Lauf zu 8c53ce0 (nicht abgewartet).
Erledigt mit cb31832, Wiki 5a21c02.
## Ursache
Jeder Frame eines Drags meldet „Projekt geändert“, und alle Listener laufen mit, auch die, deren Arbeit während des Drags niemand sieht. Gemessen an einer Kopie von „Garden of Sacrifices“ (162 Assets, Band im Parametric EQ, 250 Mausbewegungen pro Sekunde): **17 ms pro Frame**. Davon ~7,6 ms die Szenenansicht im Hintergrund, die die ganze Szene neu zeichnet, und ~4,8 ms das Vorladen der Dateien, das alle Assets und Bakes durchgeht. Im kleinen Testprojekt sind es nur ~4,7 ms, deshalb ist es bisher nicht aufgefallen.
## Was gebaut ist
- `FramePreview` markiert seinen eigenen Frame, abfragbar über `isDragFrame()`.
- Die **Szenenansicht hinter einem anderen Tab** überspringt so einen Frame und zeichnet beim nächsten Zeigen neu, wie sie es im Play-Modus seit #265 schon tut.
- **`preloadProjectFiles`** überspringt ihn ebenfalls.
- Der Befehl, der den Drag beendet, meldet sich selbst, und ein Drag ohne Änderung endet mit einem normalen Preview. Beide holen also am Ende nach.
- Das gilt für jeden Drag über `FramePreview`, auch für die Knöpfe der Geräte im Graphen.
## Messung
| pro Drag-Frame | vorher | nachher |
|---|---|---|
| Listener gesamt | 17 ms | 7,4 ms |
| Szenenansicht im Hintergrund (3 s) | 814 ms | 53 ms |
| Vorladen der Dateien (3 s) | 514 ms | 0,4 ms |
Den Rest brauchen vor allem die sichtbaren Panels Hierarchy (~3 ms) und Assets (~1,3 ms). Die bleiben, weil man sie sieht.
## Tests
```
Unit frame-preview, play-throttle → 29 Tests grün (1 neu)
e2e 34 (atx) → ALL PASSED, 136 Checks
Gate (atx) → CHECK EXIT 0, 288 Dateien, 4417 Tests
```
- Gegenprobe: Ohne die Markierung wird genau der neue Test rot.
**Nicht geprüft:**
- ob es auf deinem PC wirklich 60 fps sind. Gemessen ist auf stein2 (i5-7500T).
- die übrigen e2e-Module, die bei verdeckter Szene ziehen, und der CI-Lauf zu 8c53ce0 (nicht abgewartet).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Wunsch des Users (2026-10-10): Beim Bearbeiten der Bänder in Filter und Parametric EQ läuft der Editor mit etwa 30 statt 60 fps.
Gemessen auf stein2 an einer Kopie von Garden of Sacrifices (162 Assets), Band im EQ-Node gezogen, 250 Mausbewegungen pro Sekunde, 3 s:
FramePreview→state.preview()→ Ereignisproject) kostet in den Listenern etwa 17 ms.SceneViewport.redraw, zeichnet die ganze Szene neu, obwohl der Sound-FX-Tab vorne ist) und ~4,8 ms aufpreloadProjectFiles(Datenwalk über alle Assets und Bake-Prüfung).Betrifft jeden Drag mit
FramePreview, also auch die Knöpfe der Geräte im Graphen.Vorschlag: Was man während eines Drag-Frames nicht sieht, wartet auf den Befehl am Ende des Drags. Die versteckte Szenenansicht holt beim Zeigen nach (wie schon im Play-Modus seit #265).
Erledigt mit
cb31832, Wiki 5a21c02.Ursache
Jeder Frame eines Drags meldet „Projekt geändert“, und alle Listener laufen mit, auch die, deren Arbeit während des Drags niemand sieht. Gemessen an einer Kopie von „Garden of Sacrifices“ (162 Assets, Band im Parametric EQ, 250 Mausbewegungen pro Sekunde): 17 ms pro Frame. Davon ~7,6 ms die Szenenansicht im Hintergrund, die die ganze Szene neu zeichnet, und ~4,8 ms das Vorladen der Dateien, das alle Assets und Bakes durchgeht. Im kleinen Testprojekt sind es nur ~4,7 ms, deshalb ist es bisher nicht aufgefallen.
Was gebaut ist
FramePreviewmarkiert seinen eigenen Frame, abfragbar überisDragFrame().preloadProjectFilesüberspringt ihn ebenfalls.FramePreview, auch für die Knöpfe der Geräte im Graphen.Messung
Den Rest brauchen vor allem die sichtbaren Panels Hierarchy (~3 ms) und Assets (~1,3 ms). Die bleiben, weil man sie sieht.
Tests
Nicht geprüft:
8c53ce0(nicht abgewartet).