Shader node: Pow #80

Closed
opened 2026-09-13 16:28:06 +02:00 by admin · 1 comment

ein node mit dem eine wert hoch X nehmen kann

ein node mit dem eine wert hoch X nehmen kann
admin added the shader label 2026-09-13 16:28:06 +02:00
admin added this to the Development project 2026-09-13 16:28:06 +02:00
admin moved this to Next in Development on 2026-09-13 16:28:11 +02:00
admin moved this to Queue in Development on 2026-09-13 16:28:58 +02:00
admin moved this to Next in Development on 2026-09-13 18:02:31 +02:00
Owner

Gebaut in a399795, Wiki bda512e.

Zuschnitt

Pow — in value (any), exponent (number, Default 2) · out result. 2 quadriert, 0.5 ist die Wurzel; per Kanal fuer Farben (der Exponent wird auf vec3 gebroadcastet).

Eine Regel, die GLSL erzwingt: pow(x, y) ist fuer x < 0 undefiniert (und fuer x = 0, y <= 0) — das Ergebnis haengt sonst vom Treiber ab, wie bei #64. Der Node emittiert deshalb pow(max(value, 0.0), exponent): unter 0 zaehlt der Wert als 0. Steht so im Node-Text und im Wiki Shaders.

Beweis

./check.sh === CHECK EXIT 0 ===, 868 Tests (+1: Float-Form pow(max(n_u, 0.0), 2.0) und Farb-Form pow(max(n_color, 0.0), vec3(2.2)))
e2e Modul 28 allein ALL PASSED – 53 Checks (+2)
Pixel Step 0.5 auf pow(u, 2): die Kante wandert auf u = 0.707 — rot bei u = 0.6, blau bei 0.8; auf pow(u, 0.5): Kante bei u = 0.25 — rot bei 0.2, blau bei 0.35
Gegenprobe A max(…, 0.0) entfernt → genau der neue Unit-Test faellt (20 andere gruen)
Gegenprobe B Pow als Identitaet emittiert, neu gebaut → genau die zwei neuen e2e-Checks fallen (Kante bleibt bei 0.5: #0000ff/#0000ff bzw. #ff0000/#ff0000), die anderen 51 bleiben gruen
Gueltigkeit Rueckbau und Neubau ergeben wieder index-DFqjp5rB.js — dasselbe Bundle wie der gruene Lauf; keine Datei in src/tests/tools juenger als das Log

Zaehler 762 (README, Wiki Development) = 760 gemessen in CI-Lauf 23 (102a649) + 2; Lauf 24 (a399795) misst nach.

Gebaut in `a399795`, Wiki `bda512e`. ## Zuschnitt **`Pow`** — in `value` (any), `exponent` (number, Default 2) · out `result`. `2` quadriert, `0.5` ist die Wurzel; per Kanal fuer Farben (der Exponent wird auf `vec3` gebroadcastet). **Eine Regel, die GLSL erzwingt:** `pow(x, y)` ist fuer `x < 0` undefiniert (und fuer `x = 0, y <= 0`) — das Ergebnis haengt sonst vom Treiber ab, wie bei #64. Der Node emittiert deshalb `pow(max(value, 0.0), exponent)`: unter 0 zaehlt der Wert als 0. Steht so im Node-Text und im Wiki *Shaders*. ## Beweis | | | |---|---| | `./check.sh` | `=== CHECK EXIT 0 ===`, **868 Tests** (+1: Float-Form `pow(max(n_u, 0.0), 2.0)` und Farb-Form `pow(max(n_color, 0.0), vec3(2.2))`) | | e2e Modul 28 allein | **ALL PASSED – 53 Checks** (+2) | | Pixel | `Step 0.5` auf `pow(u, 2)`: die Kante wandert auf u = 0.707 — rot bei u = 0.6, blau bei 0.8; auf `pow(u, 0.5)`: Kante bei u = 0.25 — rot bei 0.2, blau bei 0.35 | | Gegenprobe A | `max(…, 0.0)` entfernt → genau der neue Unit-Test faellt (20 andere gruen) | | Gegenprobe B | `Pow` als Identitaet emittiert, neu gebaut → genau die zwei neuen e2e-Checks fallen (Kante bleibt bei 0.5: `#0000ff`/`#0000ff` bzw. `#ff0000`/`#ff0000`), die anderen 51 bleiben gruen | | Gueltigkeit | Rueckbau und Neubau ergeben wieder `index-DFqjp5rB.js` — dasselbe Bundle wie der gruene Lauf; keine Datei in `src`/`tests`/`tools` juenger als das Log | Zaehler **762** (README, Wiki *Development*) = 760 gemessen in CI-Lauf 23 (`102a649`) + 2; Lauf 24 (`a399795`) misst nach.
admin moved this to Done in Development on 2026-09-13 18:51:40 +02:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#80