From 3cb19036d81d844cb5b19424de12bd1b2c47bbbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=86motion=20Studio?= <163354043+AEmotionStudio@users.noreply.github.com> Date: Tue, 22 Sep 2026 02:14:01 -0700 Subject: [PATCH] docs: what each shader type does on Krea 2, and what each costs Co-Authored-By: Claude Fable 5.1 --- CHANGELOG.md | 27 +++++++++++++++++++++++++++ HANDOFF.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e40291..be7bba2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/HANDOFF.md b/HANDOFF.md index 4e1f391..877e2e5 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -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