Displace
Displace geometry or image pixels by a texture or field.
What it does
Displace pushes pixels or geometry using a texture, a field, or a procedural noise. An image input shifts pixels. A shape, distance field or mesh moves anchors or vertices, along a direction, radially from a point, twisted around an axis, or swirled with a divergence-free curl flow. Wire a second input into Displacement to drive the push from another image or field; left unwired, the node's own procedural source drives it.
An image source stays flat by default. Set Output to 3D and it tessellates into a heightfield mesh, with Grid Density setting how fine that mesh is. A shape or geometry source needs no switch: it promotes to 3D as soon as displacement pushes it off the flat plane.
When to use it
Pushing pixels with a noise or texture: ripple, ruffle, glitch.
Turning a flat image into a bumpy heightfield mesh.
Wobbling, twisting or radially bulging a shape or path.
An area-preserving swirl, Curl mode, instead of a flow that bunches pixels or points together.
Per-shape variation: wire Instance Attribute to a gradient attribute such as
@uso displacement strength varies across a group of shapes.Displacing a captured sequence over time: Temporal mode rolls a live buffer of past frames and blends between them.
| Parameter | Type | Default |
|---|---|---|
source | OneOf([FieldOf(Raster), FieldOf(Volume), Collection, RasterArray, VolumeArray, CollectionArray]) | — |
displacement | OneOf([FieldOf(Color), Field]) | — |
displacement_channel | String | "" |
mode | String | "Directional" |
amount | Number | 10 |
output_dimension | String | "2D" |
grid_density | Number | 256 |
midpoint | Number | 0.500 |
wrap_mode | String | "Clamp" |
channel | String | "Luminance" |
direction | Vec3 | (1, 0, 0) |
anchors_per_segment | Number | 32 |
projection | String | "Triplanar" |
projection_scale | Number | 1 |
instance_attribute | String | "None" |
time_offset | Number | 0.500 |
interpolation | String | "Linear" |
displacement_attribute | String | "id" |
buffer_size | Number | 64 |
strength | Number | 1 |
Gotchas
Midpoint, Channel and Wrap Mode apply only when a raster image drives the displacement, either because the Displacement input carries an image or because the source is an image and nothing is wired to Displacement. Wire a scalar or vector field into Displacement on a shape source and these controls disappear, because the field is sampled directly rather than read as pixel values.
Output appears only for a raster source. On an image, 2D keeps the result a flat picture even when Direction has a non-zero Z, and that axis is ignored until Output is 3D. A shape or mesh source has no toggle and goes 3D on its own once anchors leave the flat plane.
Curl mode ignores Direction entirely. The whole flow comes from the source, so a centre or direction dialled in for Directional, Radial or Warp mode has no effect once Curl is selected.
When a path translates instead of visibly wobbling, raise Anchors Per Segment. A Circle starts with four anchors, and low anchor counts under-sample the displacement so the whole outline moves as one.
Worked example
Add a Displace node and wire an image into Source.
Add a Noise node, or any field, and wire it into Displacement.
Raise Amount to push pixels further. Try Radial mode and drag the centre in Direction to bulge outward from a point instead of sliding sideways.
Switch Output to 3D to turn the rippled image into a heightfield mesh, and raise Grid Density for a finer surface.
See also
Warp · Lens Distort · Panoramic · Fields