Evolve
Generate random procedural expressions or shape compositions from a seed and palette.
What it does
Evolve composes a procedural pattern from a seed. The seed deterministically assembles a small tree of ingredients (sine waves, smoothing curves, sharp folds, tiling, noise) into a single field. The same seed reproduces the same pattern every time; a different seed gives a different pattern.
Depth sets how elaborate the composition gets. The palette sets how often each kind of ingredient is used. Every palette entry is a number rather than a tick: 0 means never, anything above it is a relative share of the mix. Two entries at 1 come up about equally, 2 against 1 comes up roughly twice as often. The ratio is exactly what you set, so raising one category does not demote the others.
In Expression mode, Frequency sets the feature size: raise it for finer, smaller detail, lower it for broad, sweeping shapes. At its default of 0.02 the pattern reads at roughly the same scale as a default Noise node beside it, features around 50 units across.
Fields and Shapes wired into the palette act as custom building blocks, each with its own weight.
When to use it
Organic, non-repeating patterns for masks, displacement, and backgrounds
Infinite variation from one seed: sweep or randomise Seed to browse a family of related patterns
Biasing the character of the result by an amount rather than a yes or no: Periodic for wave-like patterns, Sharp for graphic and faceted looks, Tiling for repeating motifs, Noise for organic grain
Setting feature size directly, through Frequency
Breeding compositions out of your own building blocks: wire Fields or Shapes into the palette inputs and weight each one against the built-ins
| Parameter | Type | Default |
|---|---|---|
mode | String | "Expression" |
seed | Number | 42 |
depth | Number | 4 |
periodic | Number | 1 |
smooth | Number | 1 |
sharp | Number | 0 |
arithmetic | Number | 1 |
tiling_ops | Number | 0 |
noise | Number | 0 |
outputs | String | "Scalar" |
distance_input | Boolean | true |
frequency | Number | 0.020 |
sphere | Number | 1 |
torus | Number | 1 |
cube | Number | 1 |
cylinder | Number | 0 |
cone | Number | 0 |
superquadric | Number | 1 |
boolean_ops | Number | 1 |
displaced | Number | 1 |
offset_ops | Number | 0 |
repeat_ops | Number | 0 |
palette_count | Number | 0 |
opacity | Number | 1 |
Gotchas
Mode picks what Evolve grows. Expression builds a procedural field for use as a mask, displacement, or texture source. Shape builds a procedural 3D solid at a usable size, comparable to a Sphere or Cube node. The palette follows the Mode: maths and noise ingredients in Expression, primitives and boolean, displacement, offset and repeat operators in Shape.
Noise is a frequency, not a guarantee. Raising Noise means noise comes up that often, not that noise is present. At a low weight some seeds draw a noise or Voronoi ingredient and some do not. To get noise into a specific seed, raise the weight until it appears, or wire a Noise node into a palette input and give that input the weight instead. Every other palette entry works the same way.
The Expression palette. Periodic covers the wave shapes: sine, cosine, triangle, sawtooth. Smooth covers the soft curves that ease a value into a range. Sharp covers the hard, graphic moves: absolute value, sign, stepping, wrapping. Tiling covers the repeat-the-pattern move on its own and adds to Sharp's share of it, so Tiling can be raised without pulling the rest of the graphic look along with it. Arithmetic says how often two branches are combined rather than one being wrapped, so it controls how bushy the composition gets rather than what it looks like.
The Shape palette works the same way. Sphere, Cube, Torus, Cylinder, Cone and Superquadric say how often each solid turns up as a building block. Boolean Ops is Shape's version of Arithmetic: how often two shapes are combined (union, intersect, subtract) rather than one being wrapped, which decides how busy and branched a generated solid gets. Displaced, Offset Ops and Repeat Ops weight the three ways a single shape is modified: noise displacement on the surface, a uniform shell offset, and infinite tiling repetition.
Wired palette inputs carry their own weight. Raise Palette Count and each new input gets a Palette Weight beside it, in the same currency as the built-in categories, so a wired Field at 2 against Periodic at 1 comes up about twice as often. Set a slot's weight to 0 to mute that input without unwiring it. The weight belongs to the input socket, so a gap in the middle of the list leaves every other number where it was.
Distance Input is a plain on/off, because there is no honest amount of distance to dial. It adds distance from the centre as an extra ingredient. Leave it on for patterns that read as more radially symmetric (rings, blooms), turn it off for a result with no centre bias.
Depth is a growth budget, not a guarantee. The tree assembles by picking ingredients from the palette at each level, so raising Depth tends towards more layered, more detailed patterns rather than a predictable literal depth.
If every palette weight is 0, Evolve falls back to a single sine wave. Raise at least one for real variety.
Worked example
Add an Evolve node. Leave Mode on Expression.
Set a Seed and raise Depth to taste, starting around 4 and increasing for more complexity.
Adjust Frequency to set the feature size. The default (0.02) reads like a default Noise node; raise it for finer detail, lower it for broad shapes.
Dial the palette to shape the character: raise Sharp for graphic, faceted results, Tiling for repeating motifs, Noise for organic grain. Lower a category to
0to rule it out.Raise Arithmetic for a bushier, more layered composition; lower it for a simpler chain of one ingredient wrapped in the next.
Raise Palette Count, wire your own Fields or Shapes into the new inputs, and set each one's Palette Weight against the built-in categories.
Change Seed to browse different results at the same settings. The same seed always reproduces the same pattern.