docs: what each shader type does on Krea 2, and what each costs

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Æmotion Studio
2026-09-22 02:14:01 -07:00
co-authored by Claude Fable 5.1
parent 266b116fc5
commit 3cb19036d8
2 changed files with 69 additions and 0 deletions
+27
View File
@@ -57,6 +57,33 @@ so the first step away from strength 0 is only as large as the shader makes it.
batched call, and leave the global RNG alone. Like `spectral`, their strengths are
**not** calibrated against real prompts the way the first four are.
Draw cost and effective channel rank on `walk`, from `verification/benchmark_draw.py`
(CPU, 4 threads, octaves 3), with `domain_warp` for reference:
| type | H3 608x352/56f | H3 1344x768/124f | LTXV 128ch |
|---|---|---|---|
| `domain_warp` | 0.36s, 23.2/24 | 1.49s, 23.4/24 | 0.12s, 81/128 |
| `gaussian` | 0.01s, 24.0/24 | 0.07s, 24.0/24 | 0.01s, 125/128 |
| `fractal` | 0.15s, 23.4/24 | 0.54s, 23.7/24 | 0.04s, 64/128 |
| `perlin` | 0.62s, 23.4/24 | 2.50s, 23.7/24 | 0.18s, 66/128 |
| `heterogeneous_fbm` | 0.20s, 23.4/24 | 0.73s, 23.7/24 | 0.06s, 64/128 |
| `interference` | 0.25s, 23.7/24 | 0.89s, 23.8/24 | 0.07s, 84/128 |
| `projection_3d` | 0.31s, 23.6/24 | 1.31s, 23.8/24 | 0.09s, 76/128 |
| `cellular` | 0.74s, 23.9/24 | 3.01s, 23.9/24 | 0.21s, 94/128 |
| `waves` | 0.15s, 23.9/24 | 0.55s, 24.0/24 | 0.04s, 97/128 |
`cellular` is the dearest, at twice `domain_warp`: 27 neighbouring cells per pixel on
a clip. The five existing types draw exactly what they did before.
Measured on Krea 2 (one prompt, three seeds, images only; the table and the sheets
are in HANDOFF under "Measured on Krea 2"): `gaussian` moves the picture less than
half as far as any structured type and never leaves its seed, which is what a control
should do. `fractal`, `heterogeneous_fbm`, `cellular` and `projection_3d` behave like
`domain_warp`, re-composing the scene from 0.25 without drawing their pattern into
it, the two FBMs with more colour. `waves`, `interference` and `perlin` get drawn:
from about 0.5 their bands appear as striped fabric and backdrop, `waves` soonest and
hardest, so their useful range on that model sits below 0.5.
Shared underneath: `shaders/fbm.py` (the draw-and-fill skeleton every scalar-field
type uses, an FBM over the shared simplex, `simplex_warp`), `lattice_hash` and the
four-corner `simplex_3d_full` in `shaders/simplex.py` (the latter moved verbatim
+42
View File
@@ -916,6 +916,48 @@ format, a real dual-shift `ModelSamplingAV` and `MiniMaxH3`'s own
---
## Measured on Krea 2: the eight new types
One prompt (the user's own Krea 2 workflow, a woman on a red elephant, 1024x1024,
8 steps at cfg 1.0, `er_sde`/`beta57`, the Krea2 rebalance node on the positive),
three seeds, `walk`, one stage, `multiply` with normalisation on, octaves 2, warp
0.7, and strengths 0.25 / 0.5 / 0.75, with `domain_warp` alongside as the calibrated
reference. Images only. Recorded by `verification/blend/drive.py krea2 --label types
--shader-types ...` and read by `analyze.py`; the sheets are at
`~/ComfyUI/output/snk_measure/sheets/krea2_types_*.png`. Every type's CPU field
matched the server's CUDA field to within 8e-06.
Distances in towns (the mean image distance between two seeds' strength-0 results,
0.120 here). `home` below 1 means the run is still nearer its own seed's picture than
the other seeds'; `overlap` is the correlation between the latent change and the
field that caused it, against a chance level of 0.02 to 0.09.
| type | far 0.25 | far 0.5 | far 0.75 | home 0.5 | overlap 0.75 | what the sheets show |
|---|---|---|---|---|---|---|
| `gaussian` | 0.24 | 0.35 | 0.54 | 0.34 | 0.00 | the control: the same picture with small changes at every strength; it moves less than half as far as any structured type, and never leaves its seed |
| `domain_warp` | 1.03 | 1.34 | 1.51 | 0.96 | +0.03 | re-composes from 0.25, stays a coherent painting to 0.75 |
| `cellular` | 1.34 | 1.70 | 1.77 | 0.96 | +0.03 | re-composes hardest at 0.25 of all of them; the cells are never drawn, the picture stays photographic |
| `projection_3d` | 1.41 | 1.81 | 1.77 | 0.99 | +0.07 | like cellular: strong re-composition, no visible pattern |
| `fractal` | 1.52 | 1.74 | 1.88 | 0.98 | +0.11 | re-composes, and from 0.5 the background turns to paint texture and cloth goes to saturated colour fields; the field imprints most |
| `heterogeneous_fbm` | 1.37 | 1.68 | 1.77 | 0.96 | +0.11 | as fractal, with the colour fields arriving on one seed at 0.5 and two at 0.75 |
| `perlin` | 1.12 | 1.35 | 1.56 | 0.99 | +0.10 | gentler at 0.25; at 0.5 one seed's cloth becomes rainbow bands, the pattern drawn in the prompt's material |
| `interference` | 0.88 | 1.42 | 1.72 | 0.96 | +0.04 | the gentlest structured type at 0.25; at 0.5 striped fabrics and paint splashes, at 0.75 bold colour blocks on one seed |
| `waves` | 0.69 | 1.70 | 1.88 | 0.97 | +0.07 | barely moves at 0.25, then the pattern takes over: rainbow wavefronts across background and cloth on two of three seeds at 0.5 and 0.75 |
Three groups, then. `gaussian` is the near end of the road on its own. The FBM
family, `cellular` and `projection_3d` behave like `domain_warp`, re-composing the
scene without drawing their pattern into it, `fractal` and `heterogeneous_fbm` with
more colour. `waves`, `interference` and `perlin` get drawn: their fields carry
straight bands, and the model paints those bands as fabric and backdrop once they are
strong enough, `waves` soonest and hardest. The step from 0.25 to 0.5 is where that
happens (road 1.37 towns for `waves`, 1.26 for `interference`, against 1.03 for
`fractal`), so for those three the useful range on this model sits below 0.5.
Same caveats as every table in this file: one prompt, three seeds, one model. The
presets' strengths were calibrated with `domain_warp` and do not transfer; the
`explore` preset at 0.3 is plausibly right for the re-composing group and too much
for `waves`.
## Not on this list, deliberately
**`core/sampler.py`, `core/blending.py` and `core/transforms.py` are uncalled by