Regenerate all guide demos with the bilinear palette wash; update wording to match

The nearest->bilinear wash fix (5f61727) changes what palette-wash recipes
render, so every wash-affected demo is re-rendered through the live V10
nodes on the same seeds: the palette sphere is now a smooth gradient, the
toward-lamp an organic rose/sage piece, the final-only timing lamp a clean
two-tone split. Guide prose that described the old mosaic aesthetic is
reworded to describe the new renders, the V10 paper's treatment row and the
V9 paper's wash pseudocode now document the bilinear upsample (with a note
on why nearest was wrong), and the focus-validation reference images join
the recipe-lab refs.
This commit is contained in:
Kevin Gilper
2026-07-03 15:58:09 -04:00
parent 5f61727801
commit 30e9a53cfc
21 changed files with 18 additions and 13 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 KiB

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 KiB

After

Width:  |  Height:  |  Size: 240 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 366 KiB

After

Width:  |  Height:  |  Size: 364 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 345 KiB

After

Width:  |  Height:  |  Size: 348 KiB

@@ -271,7 +271,7 @@
"timing": "final details only",
"output": "demos/timing-style-final-only.png",
"workflow": "demos/timing-style-final-only.workflow.json",
"lesson": "Same seed, same card, opposite timing: the prompt owns the early composition and the source arrives in the detail passes - its mosaic finish lands crisply on the prompt's lamp."
"lesson": "Same seed, same card, opposite timing: the prompt owns the early composition and the source arrives in the detail passes - its rose-and-sage palette lands as a crisp two-tone finish on the prompt's lamp."
},
{
"slug": "counter-example-baseline",
Binary file not shown.

Before

Width:  |  Height:  |  Size: 395 KiB

After

Width:  |  Height:  |  Size: 394 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 389 KiB

After

Width:  |  Height:  |  Size: 378 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 365 KiB

After

Width:  |  Height:  |  Size: 372 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 KiB

After

Width:  |  Height:  |  Size: 364 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 KiB

After

Width:  |  Height:  |  Size: 364 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 KiB

After

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 KiB

After

Width:  |  Height:  |  Size: 259 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 KiB

After

Width:  |  Height:  |  Size: 399 KiB

+1 -1
View File
@@ -143,7 +143,7 @@ studies — this is the pack's hard guarantee layer. Pipeline order:
| `grayscale` | color drop | palette |
| `soft blur` | box blur k=5 | micro-texture |
| `strong blur` | box blur k=13 | words, texture patterns |
| `palette wash` | adaptive color grid (2–10 cells/side, `side//48`), blended 85/15 with the mean color, then blur k=9 | **everything except color relationships** |
| `palette wash` | adaptive coarse color field: pooled to 2–10 cells/side (`side//48`), bilinearly upscaled into smooth gradients, blended 85/15 with the mean color, then blur k=9 | **everything except color relationships** |
| `color wash` | box blur k=31 | structure, keeps soft color fields |
| `grayscale blur` | gray + blur k=13 | palette + detail (keeps shapes) |
| `shape wash` | gray + blur k=25 | everything except broad silhouette |
+5 -3
View File
@@ -695,7 +695,8 @@ layers: [0.25, 0.35, 0.45, 0.6, 0.8,
Same prompt (<code>a sculptural table lamp in a clean studio product
photo, no readable text</code>), same seed (972106); the only change
is the style card and its direction. Pulled toward at 0.65, the
source's pastel mosaic palette lands all over the lamp. Pushed away
source's pastel palette takes over the lamp - a rose shade, a sage
base, a rounder and softer art direction. Pushed away
at 0.40, the same card scrubs in the opposite direction - the lamp
comes out plainer and warmer-neutral than even the prompt-only
baseline, because the stack is actively steering out of the source's
@@ -761,8 +762,9 @@ layers: [0.25, 0.35, 0.45, 0.6, 0.8,
source guide composition and broad color fields, then the prompt's
finish passes smooth the surfaces into a classic soft-graded shade.
Final-only is the mirror image: the prompt owns the early
composition and the source arrives in the detail passes, laying its
crisp mosaic finish onto the prompt's lamp.
composition and the source arrives in the detail passes, landing its
rose-and-sage palette as a crisp two-tone finish on the prompt's
lamp.
</p>
<div class="three" style="margin-top: 12px;">
<figure>
+7 -4
View File
@@ -537,7 +537,8 @@ same seed (`972106`); the only change is the style card and its direction:
| Step 3 card | `suggest the visual style`, `away from this image`, strength `0.40` |
| Demo files | [step 1](assets/krea-v10/demos/counter-example-baseline.png), [step 2](assets/krea-v10/demos/counter-example-toward.png), [step 3](assets/krea-v10/demos/counter-example-away.png) + `.workflow.json` beside each |
Pulled toward, the source's pastel mosaic palette lands all over the lamp.
Pulled toward, the source's pastel palette takes over the lamp - a rose
shade, a sage base, a rounder and softer art direction.
Pushed away, the same card scrubs the result in the opposite direction - the
lamp comes out plainer and warmer-neutral than even the prompt-only baseline,
because the stack is actively steering out of the source's palette and
@@ -593,8 +594,9 @@ widget really moves is *how* the look lands: early-only lets the source
guide the composition and broad color fields, then the prompt's own finish
passes smooth the surfaces - the shade comes out a classic soft-graded cone.
Final-only is the mirror image: the prompt owns the early composition and
the source arrives in the detail passes, laying its crisp mosaic finish onto
the prompt's lamp. One widget, two clearly different pictures.
the source arrives in the detail passes, landing its rose-and-sage palette
as a crisp two-tone finish on the prompt's lamp. One widget, two clearly
different pictures.
## Manual Layer Dials
@@ -635,7 +637,8 @@ The six-card showcase, rendered both ways on the same seed:
With six active cards the gentle budget trims the loudest pulls: the balanced
render keeps the same mug-on-desk composition while the ensemble blends a
touch more evenly (note the calmer lid and the desk items settling in). With
touch more evenly (the balanced mug comes out slightly lighter, with a
simpler lid and softer shadows). With
stacks this size the difference is deliberately subtle - balance is a
graceful-degradation guard, not a look control.
+3 -3
View File
@@ -539,12 +539,12 @@ The most surgical filter (`palette_wash_samples`): keep palette and coarse color
```text
1. grid_h = clamp(height // 48, 2, 10); grid_w = clamp(width // 48, 2, 10)
2. palette = adaptive_avg_pool2d(image, (grid_h, grid_w)) # per-cell mean color
3. palette = nearest-upsample back to full size # blocky color map
3. palette = bilinear-upsample back to full size # smooth color gradient
4. palette = 0.85 * palette + 0.15 * mean_color(image) # pull toward global average
5. return box_blur(palette, k=9) # soften cell edges
5. return box_blur(palette, k=9) # soften remaining structure
```
At the style recipe's default study side (384) the grid is 8×8 to 10×10 cells, so at most about 100 color samples survive from the entire image. No subject, no texture, no glyphs, and the style-gentle recipe pairs this with detail 0.05. Step 4's pull toward the global mean (15%) tames outlier cells. Step 5 removes the hard cell borders that would otherwise read as a checkerboard *composition* cue.
At the style recipe's default study side (384) the grid is 8×8 to 10×10 cells, so at most about 100 color samples survive from the entire image. No subject, no texture, no glyphs, and the style-gentle recipe pairs this with detail 0.05. Step 4's pull toward the global mean (15%) tames outlier cells. Step 3's bilinear upsample matters: an earlier nearest-neighbor version left hard cell borders that the encoder read as a literal *composition* cue - subjects came back as pixel-art mosaics. Smooth gradients plus the step 5 blur carry the same palette with no geometry to imitate.
---
+1 -1
View File
@@ -110,7 +110,7 @@ DEMOS = [
refs=["krea-reference-examples/slot2_style_reference.png"],
prompt="a modern table lamp in a clean studio product photo, no readable text",
seed=972105, strengths=[0.75], timing="final details only",
lesson="Same seed, same card, opposite timing: the prompt owns the early composition and the source arrives in the detail passes - its mosaic finish lands crisply on the prompt's lamp."),
lesson="Same seed, same card, opposite timing: the prompt owns the early composition and the source arrives in the detail passes - its rose-and-sage palette lands as a crisp two-tone finish on the prompt's lamp."),
dict(slug="counter-example-baseline", title="Counter-example journey: prompt only", recipe="(no cards)",
refs=[], prompt="a sculptural table lamp in a clean studio product photo, no readable text",
seed=972106, strengths=[],
Binary file not shown.

After

Width:  |  Height:  |  Size: 433 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 KiB