A grid of circles whose radius and vertical offset both come from one noise sample.
One sample, two consequences
var sample = noise.Noise2D(x * Frequency / 200f, y * Frequency / 200f);
var r = MathF.Pow(Math.Clamp(0.5f + 0.5f * sample, 0f, 1f), RadiusPower);
var cx = (x + cell + cell * (1 - r) * HorizontalDrift) * Scale;
var cy = (y + cell + cell * (1 - r) * VerticalDrift) * Scale;
var radius = r * 100f / Grid * Scale;
The noise is sampled once per cell and used twice: it sets the circle’s radius, and it
sets the circle’s vertical offset within its cell. A high sample gives a large circle
sitting low; a low sample gives a small circle sitting high.
For the lead presentation, the completed field is set behind a warm mat and dark frame.
That gallery layer is separate from the field: it frames Tidal Glow without turning every
variant into a redundant framed copy.
Coupling the two is what turns a grid of dots into something that reads as relief. If the
size varied and the position did not, the field would look like a halftone; if the
position varied and the size did not, it would look like a wave. Varying both from the
same number makes the eye read depth.
A sixth of the cells.
Why simplex and not value noise
Simplex noise, Ken Perlin’s 2001 successor to his own 1983 construction, has two
properties that matter here.
It is smooth: neighbouring samples come from the same handful of gradients and cannot
differ much, so the field has features rather than static. And it has no directional
bias — the classic Perlin construction is built on a square lattice and its features
tend to align with the axes, while simplex noise uses a triangular one and does not.
On a square grid of samples, that second property is what stops the artefacts of the
noise lining up with the artefacts of the grid.
A third.
Half.
Three quarters.
The full field: Grid² samples of one continuous function, at fifty cells a side.
Five renderings
| Rendering | Grid | Frequency | Structure |
|---|
| Tidal Glow | 54 | 2.4 | drifting two-tone discs |
| Violet Rings | 36 | 3.8 | broad outlined contours |
| Saffron Weave | 46 | 5.2 | alternating rotated ovals |
| Coral Drift | 30 | 1.35 | sparse directional ovals |
| Cobalt Static | 68 | 8 | fine, high-contrast stipple |
Frequency scales the noise coordinates, so it decides how many features fit across the
grid; Grid decides how finely they are sampled. The ratio of the two is what matters —
the same field can be shown as a few large blobs or as a fine texture. Aspect ratio,
rotation, outline treatment, radius response and two-axis drift give each rendering a
different visual grammar while preserving the shared noise field.
Determinism
The noise is seeded from the preset and sampled by position rather than by sequence, so
the cells could be visited in any order and still get the same values.