Shaders: alpha input on Output, Texture alpha node, fade recipe (#70)
1 parent
56dee13f8a
commit
7eac624fb1
2 files changed
+12
-4
No files matched your search
+2
-2
@@ -12,7 +12,7 @@ npm run check # typecheck + lint + format:check + tests, the gate CI runs
|
||||
# code is lost (tail's is reported), so a red run reads as green
|
||||
npm run build # writes dist/ and regenerates index.html
|
||||
./build.sh # the same under `set -o pipefail`, for callers that pipe the output
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 699 editor checks, screenshots in /tmp/gm-e2e-*.png
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 703 editor checks, screenshots in /tmp/gm-e2e-*.png
|
||||
GM_STEPS=20 node tools/e2e.mjs # or 1-12, or 6,20 — a subset while working on one step
|
||||
./e2e.sh start [GM_STEPS] # the same run detached, see below
|
||||
./e2e.sh status # live progress, or the last run's result
|
||||
@@ -150,4 +150,4 @@ widths to find click points. The **render device is not in this repo** — `/dev
|
||||
and a 1 GB `/dev/shm` come from `container.options` in the runner's own `config.yaml`, which
|
||||
applies to every job on that runner. Without them chromium falls back to llvmpipe, which gets
|
||||
WebGL 1.0 only. Measured in the job container: `ANGLE (Intel, Vulkan 1.3.230, HD Graphics 630)`,
|
||||
WebGL 2.0, and the same 699 checks as here.
|
||||
WebGL 2.0, and the same 703 checks as here.
|
||||
+10
-2
@@ -24,14 +24,22 @@ fed to a colour port is broadcast to all three channels. A colour cannot be fed
|
||||
| Node | Ports | What it does |
|
||||
|---|---|---|
|
||||
| **Texture color** | out `color` | The sprite's own pixel before the shader: its texture tinted by its colour, straight (unpremultiplied). |
|
||||
| **Output** | in `color` | The colour the sprite is drawn with, clamped to 0-1. Its alpha stays the texture's. Left unconnected, the pixel passes through. One per graph. |
|
||||
| **Texture alpha** | out `value` | The opacity of the sprite's own pixel: 0 transparent, 1 opaque. |
|
||||
| **Output** | in `color`, `alpha` (number) | What the sprite is drawn with: the colour, clamped to 0-1, and the opacity, clamped too. Each input left unconnected stays the texture's. One per graph. |
|
||||
| **Property** | out `value` | Declares a number the sprite sets: `Name` is the row below the sprite's Shader dropdown and the uniform in the fragment; `Default`, `Min`, `Max` are the row's range. A name is one word (letters, digits, `_`), unique in the graph. |
|
||||
| **Color** | out `color` | A constant colour, picked in the inspector. |
|
||||
| **Add**, **Subtract**, **Multiply**, **Divide** | in `a`, `b` (any) · out `result` | Arithmetic, per channel for colours. An unconnected input is the number typed on the node (0, or 1 for the second input of Multiply and Divide). |
|
||||
| **Mix** | in `a`, `b` (any), `t` (number) · out `result` | Blends from `a` to `b`: `t` = 0 is `a`, 1 is `b`, beyond that it extrapolates. |
|
||||
| **Luminance** | in `color` · out `value` | How bright a colour is (Rec. 709 weights), as one number. |
|
||||
|
||||
A colour input with no field (Output, Luminance) that is left unconnected reads the texel's colour.
|
||||
An input with nothing to type on it (the Output's two, Luminance's colour) that is left unconnected
|
||||
reads the texel: its colour for a colour port, its alpha for the Output's `alpha`. That is why the
|
||||
Output's `alpha` has no inline number: a typed-in value would replace the texture's transparency.
|
||||
|
||||
The colour has no alpha of its own — a `Color` node and the sprite's colour are RGB. To fade a
|
||||
sprite: Property *opacity* (default 1, 0 to 1) and `Texture alpha` into a `Multiply`, its result into
|
||||
the Output's `alpha`; the sprite then blends with whatever is behind it, and a behavior can write
|
||||
`opacity` every frame.
|
||||
|
||||
## Adjust colors
|
||||
|
||||
|
||||
Reference in new issue
Block a user