5.4 KiB
Large-format print strategy
For a wall-scale piece (you mentioned ~2.5 m × 4 m, assembled in layers with other artwork), the key idea is: don't bake one giant flat raster. Work with a vector geometry master plus separable raster texture, and let the seed be the single source of truth.
1. The seed is the whole fingerprint
Every parameter is derived deterministically from the seed (src/scene/params.js).
So an inspiration thumbnail and its print master are the same image at different
sizes — you never track parameters, you just keep a seed.
tools/inspire.sh 40 600 # 40 random plates → output/inspiration/ + index.html
# browse output/inspiration/index.html, note the seeds you like
tools/render.sh STRANGENESS-7 # → output/masters/STRANGENESS-7.{svg,pdf,_9000.png}
tools/render.sh STRANGENESS-7 12000 # bigger raster if you want it
2. Two masters per chosen seed
| master | resolution | carries | use |
|---|---|---|---|
SVG (<SEED>.svg) |
infinite | geometry: tracks, curls, disk structure, fan lines, header | scale to the full 4 m with zero pixelation — the crisp "ink" |
PNG (<SEED>_<px>.png) |
up to ~14000 px | the analog layer: grain, bloom, tonal mottle, stains, vignette | the photographic texture/feel |
PDF (<SEED>.pdf) |
infinite (CMYK) | same geometry, print-shop colour | hand to a print shop as-is |
Why both: vector stays razor-sharp at any size but is "clean"; the raster holds the worn-film texture but is resolution-limited. At 4 m you want the geometry crisp and the grain present — so use both as layers.
2a. SVG layers (for post manipulation)
Every SVG is organised into named layers (Inkscape inkscape:groupmode="layer"
convention) — they open as toggleable layers in Inkscape and Affinity
Designer, and as named groups in Illustrator:
Background paper + gas-glow gradient
Chamber optics boundary + structural fan / wall lines
Shock disk the piston disk (body + bubbles/strokes + stains)
Tracks · primary primary interaction tracks
Tracks · cosmic & sweepers
Tracks · V-decays
Tracks · δ-rays (curls) the little spirals, isolated for separate treatment
Plate damage scratches, hairs, dust, water rings
Fiducials registration crosses
Vignette edge darkening
Archival header lab / seed / plate / exposure text
So you can, e.g., recolour just the δ-rays, delete the header, mask the disk, or push the plate-damage layer to a different blend — without touching the rest. (Empty layers for a given seed are omitted.)
PDF layers too. The PDF carries the same set as Optional Content Groups (OCG) — toggleable layers in Acrobat, Illustrator and Preview.
SVG effects. SVG supports filters; the Shock disk layer carries an
optional feGaussianBlur ("Disk edge softness" slider / diskSoften) to soften
just that layer's edges. It's matched in the raster preview/PNG. (The PDF keeps
the disk crisp — apply blur in post there, or use the PNG/SVG for the soft look.)
3. Recommended assembly (in your compositor)
Think of each plate as a small stack you drop into your larger artwork:
- Geometry — place the SVG, scale to final size. Stays sharp at 4 m.
- Texture/feel — place the PNG over it; it already contains grain +
bloom + stains. Blend
Multiply(positive plates) and dial opacity, or isolate just its grain/mottle if you only want texture. - Your other artistic layers above/below, blended to taste.
Because the PNG and SVG come from the same seed they register exactly (same composition, same coordinate frame, same margins).
Film grain should enlarge — real emulsion grain gets bigger on big prints. So upscaling the PNG's texture to 4 m is not a defect, it's the look. Render the PNG at whatever size is comfortable (9000 px is plenty as a texture source) and let it scale up.
4. Resolution math
For viewing a wall piece from > 1–2 m, 100–150 DPI is ample (the eye can't resolve more at that distance).
| print dimension | 100 DPI | 150 DPI |
|---|---|---|
| 2.5 m (98 in) | 9 800 px | 14 700 px |
| 4.0 m (157 in) | 15 700 px | 23 600 px |
- The SVG/PDF meet any of these exactly (vector).
- The PNG tops out around 14 000 px in this headless pipeline (Chrome canvas limit ≈ 16384²; 14000 renders reliably, ~78 s, ~260 MB). That covers the 2.5 m dimension at 140 DPI as a baked image; for the 4 m dimension rely on the SVG for sharpness and let the PNG texture scale.
5. If you need a baked raster bigger than ~14000 px
Options, in order of preference:
- Use the SVG as the geometry and only scale the PNG texture — almost always the right answer.
- Tiled render — render the scene in N×N tiles and stitch (a future
tools/render-tiled.mjs). Seamless grain/bloom across tiles needs care; ask and I'll build it. - node-canvas offline — move the photographic renderer to Node with
node-canvas(no Chrome canvas-size limit). Adds a native dependency.
6. Tuning a seed before committing
Found a seed that's close? Open bubble_chamber.html, type the seed, and nudge
sliders — including Shock-wave Disk → Staining / erosion for the disk's
cleanliness. (Note: manual slider tweaks are not part of the seed fingerprint;
if you want a tweak to be permanent, tell me the values and I'll fold them into a
preset or the seed-derivation ranges.)