Wunsch aus dem Video shader: FadeIn soll Alpha und Scale steuern (0 = Scale 1,2, 1 = Scale 1,0), und das bei jeder Bild- und Sprite-Größe.
Der Vertex output zählt seinen Versatz in Pixeln des Bildes. Für einen Scale um die Mitte braucht man also die Bildgröße an der Ecke: x = (u - 0.5) * width * (scale - 1). Bisher ist Texture size dort gesperrt ("Not available per corner"), weil der Node als "pro Pixel" gilt. Die Größe ist aber für das ganze Bild gleich.
Plan
Texture size darf den Vertex output speisen. An der Ecke liefert der Node dieselbe Bildgröße, in der der Vertex output zählt, also genau die Zahl, die er im Fragment hat.
Gefüttert mit einem Pass-Bild bleibt er an der Ecke gesperrt, wie der Pass selbst.
Wo keine Ecke wandert (9-Slice, Feld-Shader, Kamera-Shader), ändert sich nichts.
Unit-Test, e2e-Check in 28, Wiki Shaders.
Wunsch aus dem *Video shader*: `FadeIn` soll Alpha und Scale steuern (0 = Scale 1,2, 1 = Scale 1,0), und das bei jeder Bild- und Sprite-Größe.
Der Vertex output zählt seinen Versatz in Pixeln des Bildes. Für einen Scale um die Mitte braucht man also die Bildgröße an der Ecke: `x = (u - 0.5) * width * (scale - 1)`. Bisher ist `Texture size` dort gesperrt ("Not available per corner"), weil der Node als "pro Pixel" gilt. Die Größe ist aber für das ganze Bild gleich.
**Plan**
- `Texture size` darf den Vertex output speisen. An der Ecke liefert der Node dieselbe Bildgröße, in der der Vertex output zählt, also genau die Zahl, die er im Fragment hat.
- Gefüttert mit einem Pass-Bild bleibt er an der Ecke gesperrt, wie der Pass selbst.
- Wo keine Ecke wandert (9-Slice, Feld-Shader, Kamera-Shader), ändert sich nichts.
- Unit-Test, e2e-Check in 28, Wiki *Shaders*.
Umgesetzt in 8118b80, Wiki 4c5823a (Shaders: Texture size in der Liste der Nodes am Vertex output, neuer Abschnitt „Scaling about the middle“).
Was sich ändert
An einer Ecke liefert Texture size die Bildgröße, in der der Vertex output seine Pixel zählt. Das ist dieselbe Zahl wie im Fragment. Weil der Versatz wieder durch diese Größe geteilt wird, stimmt ein Scale bei jeder Bild- und Sprite-Größe.
Gesperrt bleibtTexture size am Vertex output, wenn ein Pass-Bild hineingeht. Ein Pass hat an der Ecke kein Bild.
9-Slice, Feld- und Kamera-Shader verschieben keine Ecken, dort ändert sich nichts.
Video shader im Projekt cbbf160bb7e8
Gebaut am 2026-10-11 (Revision 21158 → 21159):
Mix(1.2, 1.0, FadeIn) → Scale, minus 1 → Zuwachs
je Achse (u - 0.5) · width · Zuwachs bzw. (v - 0.5) · height · Zuwachs → Vertex output x/y, Subdivisions 1
Texture alpha · FadeIn → Output.alpha
Mit dem echten Compiler geprüft, ohne Meldung. Im Browser angesehen habe ich den Shader nicht. Zugewiesen ist er noch keinem Sprite.
Tests
Unit shader-vertex: Der Node wird an der Ecke zu uPictureSize, der Output liest weiter textureSize. shader-passes: Ein Pass-Bild in Texture size am Vertex output wird abgelehnt. Mit dem alten perPixel wird der neue Test rot.
e2e 28l-iv: width · 0,5 an x verschiebt das 32-px-Bild so weit wie vorher die Konstante 16, gleiche drei Farben. Mit Größe 0 auf der GPU wird der Check rot.
Gate auf melektaus-atx: CHECK EXIT 0, 4562 Tests. CI zu 8118b80: Gate grün, Suite ALL PASSED – 2007 checks.
Grenzen
Der Scale wirkt nur aufs Bild. Collider und Klickfläche bleiben gleich groß.
Skaliert wird immer um die Bildmitte, unabhängig vom Anker des Sprites.
Umgesetzt in `8118b80`, Wiki `4c5823a` (*Shaders*: `Texture size` in der Liste der Nodes am Vertex output, neuer Abschnitt „Scaling about the middle“).
## Was sich ändert
- **An einer Ecke liefert `Texture size` die Bildgröße, in der der Vertex output seine Pixel zählt.** Das ist dieselbe Zahl wie im Fragment. Weil der Versatz wieder durch diese Größe geteilt wird, stimmt ein Scale bei jeder Bild- und Sprite-Größe.
- **Gesperrt bleibt** `Texture size` am Vertex output, wenn ein Pass-Bild hineingeht. Ein Pass hat an der Ecke kein Bild.
- 9-Slice, Feld- und Kamera-Shader verschieben keine Ecken, dort ändert sich nichts.
## Video shader im Projekt `cbbf160bb7e8`
Gebaut am 2026-10-11 (Revision 21158 → 21159):
- `Mix(1.2, 1.0, FadeIn)` → Scale, minus 1 → Zuwachs
- je Achse `(u - 0.5) · width · Zuwachs` bzw. `(v - 0.5) · height · Zuwachs` → `Vertex output` x/y, Subdivisions 1
- `Texture alpha · FadeIn` → `Output.alpha`
Mit dem echten Compiler geprüft, ohne Meldung. Im Browser angesehen habe ich den Shader nicht. Zugewiesen ist er noch keinem Sprite.
## Tests
- Unit `shader-vertex`: Der Node wird an der Ecke zu `uPictureSize`, der Output liest weiter `textureSize`. `shader-passes`: Ein Pass-Bild in `Texture size` am Vertex output wird abgelehnt. Mit dem alten `perPixel` wird der neue Test rot.
- e2e 28l-iv: `width · 0,5` an x verschiebt das 32-px-Bild so weit wie vorher die Konstante 16, gleiche drei Farben. Mit Größe 0 auf der GPU wird der Check rot.
- Gate auf `melektaus-atx`: `CHECK EXIT 0`, 4562 Tests. CI zu `8118b80`: Gate grün, Suite `ALL PASSED – 2007 checks`.
## Grenzen
- Der Scale wirkt nur aufs Bild. Collider und Klickfläche bleiben gleich groß.
- Skaliert wird immer um die Bildmitte, unabhängig vom Anker des Sprites.
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 aus dem Video shader:
FadeInsoll Alpha und Scale steuern (0 = Scale 1,2, 1 = Scale 1,0), und das bei jeder Bild- und Sprite-Größe.Der Vertex output zählt seinen Versatz in Pixeln des Bildes. Für einen Scale um die Mitte braucht man also die Bildgröße an der Ecke:
x = (u - 0.5) * width * (scale - 1). Bisher istTexture sizedort gesperrt ("Not available per corner"), weil der Node als "pro Pixel" gilt. Die Größe ist aber für das ganze Bild gleich.Plan
Texture sizedarf den Vertex output speisen. An der Ecke liefert der Node dieselbe Bildgröße, in der der Vertex output zählt, also genau die Zahl, die er im Fragment hat.Umgesetzt in
8118b80, Wiki4c5823a(Shaders:Texture sizein der Liste der Nodes am Vertex output, neuer Abschnitt „Scaling about the middle“).Was sich ändert
Texture sizedie Bildgröße, in der der Vertex output seine Pixel zählt. Das ist dieselbe Zahl wie im Fragment. Weil der Versatz wieder durch diese Größe geteilt wird, stimmt ein Scale bei jeder Bild- und Sprite-Größe.Texture sizeam Vertex output, wenn ein Pass-Bild hineingeht. Ein Pass hat an der Ecke kein Bild.Video shader im Projekt
cbbf160bb7e8Gebaut am 2026-10-11 (Revision 21158 → 21159):
Mix(1.2, 1.0, FadeIn)→ Scale, minus 1 → Zuwachs(u - 0.5) · width · Zuwachsbzw.(v - 0.5) · height · Zuwachs→Vertex outputx/y, Subdivisions 1Texture alpha · FadeIn→Output.alphaMit dem echten Compiler geprüft, ohne Meldung. Im Browser angesehen habe ich den Shader nicht. Zugewiesen ist er noch keinem Sprite.
Tests
shader-vertex: Der Node wird an der Ecke zuuPictureSize, der Output liest weitertextureSize.shader-passes: Ein Pass-Bild inTexture sizeam Vertex output wird abgelehnt. Mit dem altenperPixelwird der neue Test rot.width · 0,5an x verschiebt das 32-px-Bild so weit wie vorher die Konstante 16, gleiche drei Farben. Mit Größe 0 auf der GPU wird der Check rot.melektaus-atx:CHECK EXIT 0, 4562 Tests. CI zu8118b80: Gate grün, SuiteALL PASSED – 2007 checks.Grenzen