Shader: Properties-Node bietet die Params aller Shader fuer jedes Sprite #66

Closed
opened 2026-09-13 11:27:43 +02:00 by meleki · 1 comment
Owner

Befund

allShaderParamRows (src/editor/inspector/portSection.ts) sammelt die Property-Zeilen aller Shader-Assets des Projekts und bietet sie im Port-Picker des Properties-Nodes fuer jedes Sprite an. An einem Sprite mit Shader B ist deshalb glow aus Shader A waehlbar. Zur Laufzeit wird der Wert in den Bag geschrieben, read() des Filters ignoriert ihn, nichts meldet das.

Vorschlag

  • Zeigt der Port fest auf ein Sprite (Asset bekannt): nur die Params dessen Shaders anbieten.
  • Sonst (Ziel erst zur Laufzeit bekannt): die Params nach Shader gruppieren, damit sichtbar ist, wohin ein Eintrag gehoert.

Ob ein Node-Problem angezeigt werden soll, wenn ein Param gewaehlt ist, den der Shader des Ziels nicht kennt, ist offen; mindestens eine Konsolenzeile beim Schreiben waere sinnvoll.

## Befund `allShaderParamRows` (`src/editor/inspector/portSection.ts`) sammelt die Property-Zeilen **aller** Shader-Assets des Projekts und bietet sie im Port-Picker des `Properties`-Nodes fuer jedes Sprite an. An einem Sprite mit Shader B ist deshalb `glow` aus Shader A waehlbar. Zur Laufzeit wird der Wert in den Bag geschrieben, `read()` des Filters ignoriert ihn, nichts meldet das. ## Vorschlag - Zeigt der Port fest auf ein Sprite (Asset bekannt): nur die Params **dessen** Shaders anbieten. - Sonst (Ziel erst zur Laufzeit bekannt): die Params nach Shader gruppieren, damit sichtbar ist, wohin ein Eintrag gehoert. Ob ein Node-Problem angezeigt werden soll, wenn ein Param gewaehlt ist, den der Shader des Ziels nicht kennt, ist offen; mindestens eine Konsolenzeile beim Schreiben waere sinnvoll.
meleki added the shader label 2026-09-13 11:27:43 +02:00
admin added this to the Development project 2026-09-13 13:29:59 +02:00
admin moved this to Next in Development on 2026-09-13 13:39:15 +02:00
Author
Owner

Gebaut und gemessen. Commit 5c1c3c6, Wiki 46d30db.

Was der Picker jetzt zeigt

Jeder Shader-Param im + Property-Menue des Properties-Nodes nennt seinen Shader; ein von zwei Shadern geteilter Name nennt beide:

brightness (Adjust colors, Neon glow)
contrast (Adjust colors)
glow (Neon glow)

Die Sprite-eigenen Zeilen (enabled, width, texture, ...) bleiben unbeschriftet -- die Beschriftung markiert genau das, was vorher verwirrte.

Zuschnitt wie abgestimmt: nur der Picker. Keine Laufzeitmeldung, wenn ein Wert an ein Sprite geschrieben wird, dessen Shader den Param nicht kennt (writeTyped schreibt in target.props, read() ignoriert ihn still) -- und kein neues Setting.

Eine Stelle, die leicht schiefgegangen waere

Die Notiz haengt an einer Map auf das Def-Objekt, nicht auf den Namen. Ein Sprite-Property und ein Shader-Param duerfen denselben Namen tragen (das ist #63) -- ein Schluessel auf den Namen haette dann die falsche Zeile beschriftet.

Beweise

./check.sh === CHECK EXIT 0 ===, 850 Tests (849 + 1 neuer)
e2e Modul 24 allein ALL PASSED - 22 Checks (vorher 20), Exit 0
Angesehen Screenshot des offenen Menues: die vier Shader-Zeilen benannt, die Sprite-Zeilen nicht -- der Shot gehoert jetzt dauerhaft zum Schritt
Gueltigkeit keine Datei in src/ juenger als das Bundle; Neubau nach den Gegenproben md5-gleich mit dem des gruenen Laufs

Zwei Gegenproben, jede beisst an ihrer Stelle: zweiter Shader-Name verworfen -> genau der neue Unit-Test faellt, 15 andere bleiben gruen. Menue-Notiz abgeklemmt und neu gebaut -> genau die zwei neuen e2e-Checks fallen, die uebrigen 20 bleiben gruen.

Ein Fund am Messgeraet, kein Produktfehler

Eine Port-Sektion nimmt ihre Auswahl beim Bauen des Inspectors, nicht beim Oeffnen des Menues. Ein mutate(), das einen zweiten Shader anlegt, aendert das Menue also nicht, und select() auf denselben Node ist wegen sameSelection ein No-op. Der Schritt waehlt jetzt ab und wieder an.

Gebaut und gemessen. Commit **5c1c3c6**, Wiki **46d30db**. ## Was der Picker jetzt zeigt Jeder Shader-Param im `+ Property`-Menue des `Properties`-Nodes nennt seinen Shader; ein von zwei Shadern geteilter Name nennt beide: ``` brightness (Adjust colors, Neon glow) contrast (Adjust colors) glow (Neon glow) ``` Die Sprite-eigenen Zeilen (`enabled`, `width`, `texture`, ...) bleiben unbeschriftet -- die Beschriftung markiert genau das, was vorher verwirrte. Zuschnitt wie abgestimmt: **nur der Picker**. Keine Laufzeitmeldung, wenn ein Wert an ein Sprite geschrieben wird, dessen Shader den Param nicht kennt (`writeTyped` schreibt in `target.props`, `read()` ignoriert ihn still) -- und kein neues Setting. ## Eine Stelle, die leicht schiefgegangen waere Die Notiz haengt an einer Map **auf das Def-Objekt**, nicht auf den Namen. Ein Sprite-Property und ein Shader-Param duerfen denselben Namen tragen (das ist #63) -- ein Schluessel auf den Namen haette dann die falsche Zeile beschriftet. ## Beweise | | | |---|---| | `./check.sh` | `=== CHECK EXIT 0 ===`, **850 Tests** (849 + 1 neuer) | | e2e Modul 24 allein | **ALL PASSED - 22 Checks** (vorher 20), Exit 0 | | Angesehen | Screenshot des offenen Menues: die vier Shader-Zeilen benannt, die Sprite-Zeilen nicht -- der Shot gehoert jetzt dauerhaft zum Schritt | | Gueltigkeit | keine Datei in `src/` juenger als das Bundle; Neubau nach den Gegenproben **md5-gleich** mit dem des gruenen Laufs | **Zwei Gegenproben, jede beisst an ihrer Stelle:** zweiter Shader-Name verworfen -> genau der neue Unit-Test faellt, 15 andere bleiben gruen. Menue-Notiz abgeklemmt und **neu gebaut** -> genau die zwei neuen e2e-Checks fallen, die uebrigen 20 bleiben gruen. ## Ein Fund am Messgeraet, kein Produktfehler Eine Port-Sektion nimmt ihre Auswahl beim **Bauen** des Inspectors, nicht beim Oeffnen des Menues. Ein `mutate()`, das einen zweiten Shader anlegt, aendert das Menue also nicht, und `select()` auf denselben Node ist wegen `sameSelection` ein No-op. Der Schritt waehlt jetzt ab und wieder an.
admin moved this to Done in Development on 2026-09-13 14:05:52 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#66