Rendering modes showed the many ways to render a location. This page is about finding the locations themselves. A location is the geometric half of a wallpaper: a fractal family with its constants fixed, plus a frame given by a center and a width (the aspect ratio is fixed). Color is deliberately absent. Mode and palette are chosen later, in finding good wallpapers.
What makes a location good
There's no geometric definition of a good location. It's an aesthetic call, and the pipeline's working definition is my own taste. I rate locations on a four-point scale, from junk to exceptional wallpaper material. Each rating looks at two differently colored renders of the same place, because what I'm rating is the geometry: could this place make a good wallpaper across the modes and palettes available to it? Those ratings train the location judge, a small network that predicts the same scale (training judges). Here are a few examples from each rating:
Guided search
Interesting detail crowds the boundary of a set (escape-time fractals), but the boundary alone isn't enough. Below are twelve viewports drawn at random along it, kept only if they passed a crude complexity check. I rated almost all of them mediocre at best, and that held across more than a hundred such draws.
Views I rate highly are rare, and they cluster: a spiral worth framing tends to sit near other spirals worth framing, as in Seahorse Valley. So this is a search problem. It needs promising places to start, a way to move locally, and a way to tell better from worse. The location judge is the last of those, and the search is a guided walk that explores thousands of frames per run.
Minibrots
Escape-time sets contain infinitely many miniature copies of themselves. In the Mandelbrot set they're called minibrots, and the multibrot planes of degree 3 to 6 have their own. Each copy has a nucleus, the c where the orbit of fc(z) = zd + c, started at zero, returns exactly to zero after p steps. That makes the nucleus a root Newton's method can solve for, so a minibrot is an exact coordinate at a known scale, not just a shape (code: the nucleus solver).
I rate the filaments and spirals in the halo around a copy highly, more often than the copy itself, so minibrots tend to sit near locations worth framing.
The walk
Each family gets its own walk: a growing forest of frames. The frontier is a priority queue, and the walk keeps expanding the most promising frame it knows about (code: the walk). Its roots come from several channels that I interleave rather than rank: seed views from solved nuclei and each plane's home view, pools of Julia constants from earlier discoveries, locations I've already rated well, and roots the twin channel makes during the run (below). Roots from proven material account for most of what a run admits, but fresh roots are how the walk opens territory nobody has looked at yet.
An expansion proposes four children inside the parent, each 35 to 50% of its width. Most are aimed at foci. The walk blurs the field at several radii and keeps the peaks that survive every blur, so a child points at coherent structure rather than one bright pixel. The rest are placed at random or toward dense detail, as insurance against the focus finder's blind spots.
Each child then goes through four steps:
- Render. It's drawn once, small, in a fixed neutral palette, and the gates and the judge both read that one picture.
- Gate. Structural checks drop frames that are mostly interior, escape at once, have a flat field, or have too few tiles with edge detail.
- Score. The judge gives the probability the view would rate at least a 3. Above the admission bar a frame is a find. Between the admission and expansion bars it's a stepping stone the walk may explore through. Below that it's refused. The bars are operating policy on one model's scale, restated at each retrain to keep the same volume admitted. A parameter-plane descent starts wide and bland, so its first few rungs are excused the expansion bar.
- Prioritize. Queue order is the judge's score plus one random draw per frame plus a small depth bonus, so frames get picked roughly in proportion to their score. Each batch of eight reserves a quarter for untouched roots and two slots for reframings, and a root retires after twelve expansions on a parameter plane or thirty-six on a Julia or Phoenix plane.
The judge never moves the camera. It only reorders the queue and decides each frame's fate; where the walk can go is decided by the proposal rules.
Every scored frame goes into the walk's append-only ledger, refusals included. That ledger is the walk's product, and rendering, palette choice, and curation all draw on what it admitted. A branch stops at a minimum width of 10⁻⁹, and the walk ends when its run budget does.
Reframing a find
My first idea for skipping the search was to enumerate minibrots directly and use them as seeds. It failed: a good view usually has a minibrot nearby, but nearly all minibrots sit in dull neighborhoods. What works is the reverse: find minibrots near views the walk already likes and recompose the camera around them. A reframing inherits the quality of the view that triggered it. Three operators do this, each firing when a kept frame shows signs of a minibrot:
snap_to_nucleussolves for the nucleus and centers it. It's accepted only when the nucleus lies within a bounded distance of the frame, relative to its width, so most attempts are refused and it stays a local correction.lateral_to_siblinglooks around the current minibrot for a neighbor at comparable scale and frames that one.expand_neighborhoodsweeps the surrounding disc for minibrots at the current scale or below and proposes the best two.
Inside the walk a reframing is a move, not a find. The reframed view goes onto the frontier, and only its children are scored. I size those frames outward, never at the copy's own size, because what I want from a minibrot is its halo.
Reusing previous finds
Quality clusters tightly, so most of the effort explores around known-good seeds, with a steady share of fresh roots looking elsewhere. A run reads whatever map exists when it starts and never waits on new labeling.
The Mandelbrot-Julia connection pays a second dividend. An admitted parameter-plane location's center c is a Julia constant, and a Julia set inherits the character of where its c sits. For the Julia families of degree 2 to 6, the center of an admitted plane location of the same degree becomes one of their roots; only degree 2 also has a pool of constants of its own. That's the twin channel. A new twin is skipped if its c is within 0.032 of one already accepted. I measured the near-duplicate rate across five decades of separation and found no knee, so the radius is just how much near-duplication I'm willing to pay for.
The reframing operators also run as a channel of their own, outside the walk. They fire
at highly rated plane locations, solve each nearby nucleus, and let the judge pick the
best of a ladder of outward framings, which is recorded as a new location. Later
generations fire at nuclei that earlier ones promoted, so the channel grows chains of
derived neighborhoods. It has become one of the strongest sources of good locations in the
project. The figure below follows one seeded chain from its root to an admitted frame,
with an expand_neighborhood reframing in the middle.
Examining walk quality
In one run, 98% of roots seeded from locations I'd rated well admitted at least one frame, against 22% of roots drawn fresh from the boundary. Both kinds were walked to about the same median depth. Starting in a good neighborhood pays off, and searching a poor one harder doesn't, which is why the pipeline invests in seeding rather than longer walks.
The refusals hold up: the frames turned away are the flat, exterior, and interior-dominated ones the gates exist for. The walk is looser about what it keeps open, and many expandable frames lead nowhere. I keep it that way, because the cost is frames walked, not bad admissions.
Training judges covers where the location judge comes from and what a small network can and cannot be trusted to know.
























































