Shader: Vorschau-Sprite im Shader-Tab #168

Closed
opened 2026-09-19 11:41:52 +02:00 by meleki · 3 comments
Owner

Aus #62 („Not in this step: … a preview sprite in the tab …“).

Befund

  • Der Shader-Tab (src/editor/shader/ShaderEditor.ts) zeigt nur den Graphen. Wie der Shader aussieht, sieht man erst an einem platzierten Sprite in der Szene.
  • Animation- und Particles-Tab haben längst eine Vorschau neben dem Graphen (#86, #99).

Zu bauen (Vorschlag)

  • Vorschau rechts neben dem Graphen hinter einem Splitter, wie im Particles-Tab.
  • Gezeigt wird ein wählbares Sprite (Texture-Auswahl in der Kopfzeile, Vorgabe: ein Testbild), mit den Parametern des Shaders als Regler.
  • Shader-Zeit läuft in der Vorschau, mit Hold/Run wie bei Particles.
  • Tests: Vorschau folgt einer Graph-Änderung; Pixelwert an einem bekannten Effekt.

Offen (mit Vorschlag)

  1. Was ist das Testbild? Vorschlag: ein eingebautes Farbverlauf-Schachbrett mit Alpha-Rand, daran sieht man Farbe, UV und Transparenz.
Aus #62 („Not in this step: … a preview sprite in the tab …“). ## Befund - Der Shader-Tab (`src/editor/shader/ShaderEditor.ts`) zeigt nur den Graphen. Wie der Shader aussieht, sieht man erst an einem platzierten Sprite in der Szene. - Animation- und Particles-Tab haben längst eine Vorschau neben dem Graphen (#86, #99). ## Zu bauen (Vorschlag) - Vorschau rechts neben dem Graphen hinter einem Splitter, wie im Particles-Tab. - Gezeigt wird ein wählbares Sprite (Texture-Auswahl in der Kopfzeile, Vorgabe: ein Testbild), mit den Parametern des Shaders als Regler. - Shader-Zeit läuft in der Vorschau, mit Hold/Run wie bei Particles. - Tests: Vorschau folgt einer Graph-Änderung; Pixelwert an einem bekannten Effekt. ## Offen (mit Vorschlag) 1. **Was ist das Testbild?** Vorschlag: ein eingebautes Farbverlauf-Schachbrett mit Alpha-Rand, daran sieht man Farbe, UV und Transparenz.
meleki added the new label 2026-09-19 11:41:52 +02:00

Testbild: wie wäre es nicht sinnvoller, wenn man einfach das (zuletzt) selektierte Sprite/Texture darstellt?

Testbild: wie wäre es nicht sinnvoller, wenn man einfach das (zuletzt) selektierte Sprite/Texture darstellt?
admin added this to the Development project 2026-09-19 11:57:30 +02:00
admin removed the new label 2026-09-19 11:57:35 +02:00
admin added the shader label 2026-09-19 12:33:46 +02:00
admin moved this to Next in Development on 2026-09-21 06:54:01 +02:00
Author
Owner

Umgesetzt in 73a7147, Wiki 41b1532 (Seite Shaders, Abschnitt The preview).

Die Vorschau

Rechts neben dem Graphen steht jetzt ein Vorschau-Panel mit ziehbarem Splitter, wie im Particles-Tab.

  • Das Bild folgt der letzten Auswahl mit Bild, ohne Picker (wie oben vorgeschlagen): ein platziertes Sprite samt Overrides, Größe und Farbe, ein Sprite-Asset, eine Textur oder ein Frame. Ein Klick auf den Shader, einen Node, ein Behavior oder eine Szene lässt das Bild stehen. Unter den Knöpfen steht, welches Bild gerade gezeigt wird.
  • Testbild: Ohne so eine Auswahl, oder wenn das Bild gelöscht ist, kommt ein eingebautes 64-px-Testbild. Die Farbe verläuft mit u und v, ein Schachbrett zeigt, wo eine UV landet, und der Rand blendet für Alpha-Effekte aus.
  • Ein Regler pro Property. Die Regler gehören nur der Vorschau und schreiben nie ins Projekt. Sie starten bei den Werten des Sprites, wenn es diesen Shader trägt, sonst beim Default.
  • Eigene Uhr: Hold/Restart sind nur aktiv, wenn ein Time-Node im Graphen hängt.
  • Der Aufbau Graph | Splitter | Panel ist als PreviewSplit aus dem Particles-Tab herausgezogen, beide Tabs nutzen ihn.
  • Bewusst nicht gebaut: Ein nine-sliced Frame wird ungeschnitten gezeigt (steht im Wiki).

Funde unterwegs

  • Änderten sich die Properties, während der Tab verborgen war, blieb die Reglerzeile auf wenige Pixel zusammengequetscht. Behoben, der Regler-Check in 28n hält es fest.
  • Das Graph-Canvas ist schmaler geworden (385 px bei 1280 px Fensterbreite, wie im Particles-Tab). Block 28b klickt jetzt relativ zur gemessenen Breite statt fest bei x+420.

Tests

./check.sh               → 132 Files, 1952 Tests, CHECK EXIT 0   (vorher 131 / 1941)
npm run build            → BUILD EXIT 0
GM_STEPS=28,31 (frisch)  → ALL PASSED – 105 checks
  • 11 neue Unit-Tests (tests/editor/shader-preview.test.ts), 7 neue e2e-Checks (Block 28n).
  • Gegenproben greifen: Startwerte ohne Sprite → 1 Unit-Test fällt, Vorschau ohne Auswahl → 2 e2e-Checks fallen.
  • Check-Summe 1209 ist gerechnet (1202 + 7), gemessen wird sie im CI-Lauf.
Umgesetzt in 73a7147, Wiki 41b1532 (Seite *Shaders*, Abschnitt *The preview*). ## Die Vorschau Rechts neben dem Graphen steht jetzt ein Vorschau-Panel mit ziehbarem Splitter, wie im Particles-Tab. - **Das Bild folgt der letzten Auswahl mit Bild**, ohne Picker (wie oben vorgeschlagen): ein platziertes Sprite samt Overrides, Größe und Farbe, ein Sprite-Asset, eine Textur oder ein Frame. Ein Klick auf den Shader, einen Node, ein Behavior oder eine Szene lässt das Bild stehen. Unter den Knöpfen steht, welches Bild gerade gezeigt wird. - **Testbild:** Ohne so eine Auswahl, oder wenn das Bild gelöscht ist, kommt ein eingebautes 64-px-Testbild. Die Farbe verläuft mit u und v, ein Schachbrett zeigt, wo eine UV landet, und der Rand blendet für Alpha-Effekte aus. - **Ein Regler pro Property.** Die Regler gehören nur der Vorschau und schreiben nie ins Projekt. Sie starten bei den Werten des Sprites, wenn es diesen Shader trägt, sonst beim Default. - **Eigene Uhr:** Hold/Restart sind nur aktiv, wenn ein Time-Node im Graphen hängt. - Der Aufbau Graph | Splitter | Panel ist als `PreviewSplit` aus dem Particles-Tab herausgezogen, beide Tabs nutzen ihn. - **Bewusst nicht gebaut:** Ein nine-sliced Frame wird ungeschnitten gezeigt (steht im Wiki). ## Funde unterwegs - Änderten sich die Properties, während der Tab verborgen war, blieb die Reglerzeile auf wenige Pixel zusammengequetscht. Behoben, der Regler-Check in 28n hält es fest. - Das Graph-Canvas ist schmaler geworden (385 px bei 1280 px Fensterbreite, wie im Particles-Tab). Block 28b klickt jetzt relativ zur gemessenen Breite statt fest bei x+420. ## Tests ``` ./check.sh → 132 Files, 1952 Tests, CHECK EXIT 0 (vorher 131 / 1941) npm run build → BUILD EXIT 0 GM_STEPS=28,31 (frisch) → ALL PASSED – 105 checks ``` - 11 neue Unit-Tests (`tests/editor/shader-preview.test.ts`), 7 neue e2e-Checks (Block 28n). - Gegenproben greifen: Startwerte ohne Sprite → 1 Unit-Test fällt, Vorschau ohne Auswahl → 2 e2e-Checks fallen. - Check-Summe **1209** ist gerechnet (1202 + 7), gemessen wird sie im CI-Lauf.
Author
Owner

Nachtrag: Anzeigefehler in der Vorschau behoben (7063c8d).

Symptom: Wenn man Min, Max oder Default einer Property geändert hat, fehlte in der Vorschau der Regler, und nur das Label war zu sehen. Erst eine Größenänderung der Vorschau hat ihn wieder gezeigt.

Ursache: Widget.resize legt nur dann neu aus, wenn sich die Größe ändert. Bei so einer Änderung bleibt die Zeilenzahl gleich, der Zeilen-Stack behält also seine Höhe, und die neu gebauten Zeilen blieben bei 0 x 0.

Fix: syncParams legt nach dem Umbau jetzt auch den Zeilen-Stack selbst neu aus (src/editor/shader/ShaderEditor.ts).

Tests:

  • Neuer e2e-Check in 28n: Ein neues Max baut den Regler mit 136 x 24, ein Klick ans rechte Ende setzt level auf 2. Gegen den alten Build rot (w 0, h 0).
  • GM_STEPS=28,31 frisch: ALL PASSED, 106 Checks (vorher 105)
  • ./check.sh: 132 Files, 1952 Tests, grün
  • Check-Summe 1210 in README und Wiki (1d530fe), gerechnet, gemessen wird sie in CI.
Nachtrag: Anzeigefehler in der Vorschau behoben (7063c8d). **Symptom:** Wenn man Min, Max oder Default einer Property geändert hat, fehlte in der Vorschau der Regler, und nur das Label war zu sehen. Erst eine Größenänderung der Vorschau hat ihn wieder gezeigt. **Ursache:** `Widget.resize` legt nur dann neu aus, wenn sich die Größe ändert. Bei so einer Änderung bleibt die Zeilenzahl gleich, der Zeilen-Stack behält also seine Höhe, und die neu gebauten Zeilen blieben bei 0 x 0. **Fix:** `syncParams` legt nach dem Umbau jetzt auch den Zeilen-Stack selbst neu aus (`src/editor/shader/ShaderEditor.ts`). **Tests:** - Neuer e2e-Check in 28n: Ein neues Max baut den Regler mit 136 x 24, ein Klick ans rechte Ende setzt `level` auf 2. Gegen den alten Build rot (w 0, h 0). - `GM_STEPS=28,31` frisch: ALL PASSED, 106 Checks (vorher 105) - `./check.sh`: 132 Files, 1952 Tests, grün - Check-Summe 1210 in README und Wiki (`1d530fe`), gerechnet, gemessen wird sie in CI.
admin moved this to Done in Development on 2026-09-21 09:29:08 +02:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#168