Skip to main content
BVDART Logo
← All guidesGenerative systems

Domain warping

Domain warping changes the coordinates used to sample another function. A noise field bends another field’s domain before its values are evaluated.

Follow a coordinate through a warped lookup

Coordinates before sampling
Where the function is readHollow: p · filled: p + w(p)
A simple stripe functionf(q) = ½ + ½ sin(8πqₓ)
Follow one lookupp = (0.40, 0.55) → q = p + w(p) = (0.480, 0.679)

The line in the grid connects the output coordinate to its sampling coordinate. The function stays the same; its input coordinates change.

Try this Set warp amount to zero. The grid becomes regular and the stripes straighten. Increase it while keeping the seed to see the same coordinate field bend them.

Straighten and bend the current coordinate grid while the same stripe function follows its displaced inputs. Use any control to take over.

What to try
  1. Set Warp amount to zero, then increase it.
  2. Move the crosshair on the stripe field to inspect its source coordinate.
Open in the Lab ↗

What to look for: The grid shows where coordinates are sent before sampling. The hollow point and filled point mark p and p + w(p); the stripe function is evaluated at the latter.

How it works

Instead of reading f(x, y), read f(x + wx, y + wy), where the displacement components come from other fields. Warping a smooth basis can turn broad gradients into folded, flowing or tangled structures. The image is generated from the modified coordinates rather than distorted after a fixed raster is complete.

Warp amount sets the displacement strength. Frequency and octave settings still control the underlying field scales. Keeping the seed fixed makes it easier to see which structural change comes from the amount rather than a new random arrangement.

Use it in the Lab

Generate a domain-warp field for a texture layer, then use levels, threshold or gradient mapping to emphasize its flow. Compare it with the Wave or Twirl effects when deciding whether to generate new structure or deform existing imagery.

Limits & distinctions

This generator uses its own procedural displacement fields. It does not accept an arbitrary second layer as a displacement map.

Sources & references

Guide updated