Skip to content

Simulation & Compute Nodes

Both nodes on this page run an iterative pass that reads its own previous output. That cannot be expressed as an ordinary filter, so they run on the GPU compute path and require the native render core. On a build without it they produce no output rather than a substitute.

They are listed under the Filters category in the Node Library and follow the same conventions as the other filter nodes: Input is required, and the optional grayscale Mask input restricts the effect where the mask is dark.

Type id: distance_field

Computes the distance from every pixel to the nearest bright pixel using a jump flood, giving exact, resolution-independent falloffs for glows, bevels, gradients around shapes, and any mask that needs to fade outward from a silhouette.

Inputs

  • Input (any texture, required): the shape to measure from; it is thresholded into “inside” and “outside” first.
  • Mask (grayscale, optional): restricts the effect.

Outputs

  • Output (grayscale): the normalized distance field.
ParameterTypeDefaultRange / OptionsNotes
ThresholdDecimal0.50.0 to 1.0Luminance cutoff that decides what counts as inside the shape.
SpreadDecimal0.250.001 to 2.0The distance the gradient covers before it clips, as a fraction of the shorter image edge, so the same value produces the same visual band at any resolution.
ModeChoiceSignedSigned, Inside, OutsideSigned puts the boundary at mid-gray, going darker inward and brighter outward. Inside reads 0 at the silhouette and rises inward, staying black outside the shape. Outside reads 0 at the silhouette and rises outward, staying black inside it.

Shapes crossing the tile seam are treated as one shape, so the field has no discontinuity at the image edges. The cost scales with resolution rather than with Spread: the node runs roughly log2 of the longest edge passes, plus a seeding and a resolving pass, about 12 passes at 1024 and 13 at 2048.

Type id: erosion

Simulates weathering on a height map by actually moving material, so what a channel loses turns up downstream. Unlike Slope Blur, which only smears pixels along a gradient, this conserves what it transports. That is what makes silt fans and scree slopes appear where they should.

Inputs

  • Height (grayscale, required): the terrain to weather.
  • Mask (grayscale, optional): restricts the effect.

Outputs

  • Output (grayscale): the map selected by the Output parameter.
ParameterTypeDefaultRange / OptionsNotes
TypeChoiceHydraulicHydraulic, ThermalHydraulic: water lands, runs downhill, dissolves material into suspension, carries it, and drops it where the flow slows; cuts channels and builds silt fans. Thermal: material on slopes steeper than its angle of repose slides to lower neighbors; rounds ridges and piles scree at the foot of cliffs.
IterationsWhole number241 to 128How long the simulation runs, and the node’s main cost. Material travels about one pixel per iteration at a 1024-pixel reference size.
StrengthDecimal0.50.0 to 1.0How much material moves per step.
TalusDecimal0.350.0 to 1.0Thermal only. The angle of repose: how steep a slope has to be before material slides. Lower values let material slide off gentler slopes, so more of the terrain flattens.
RainDecimal0.50.0 to 1.0Hydraulic only. How much water arrives per step.
EvaporationDecimal0.30.0 to 1.0Hydraulic only. How fast water leaves, which decides how far it carries its load before dropping it.
CapacityDecimal0.50.0 to 1.0Hydraulic only. How much sediment moving water can hold: the balance between cutting deep channels and silting everything up. More capacity cuts deeper.
DepositionDecimal0.50.0 to 1.0Hydraulic only. How readily suspended material is dropped. More deposition silts up the low ground.
OutputChoiceHeightHeight, Flow, Deposit, WearWhich map the run returns. Height is the eroded terrain. Flow is how much moved through each pixel (where water ran under Hydraulic, where material slid under Thermal), averaged over the run so raising Iterations does not just brighten it; use it as a wetness or moss mask. Deposit is where material landed: silt and sand masks. Wear is where material was stripped: exposed-rock masks.

Talus is hidden while Type is Hydraulic, and Rain, Evaporation, Capacity and Deposition are hidden while Type is Thermal.

Reading a second map means adding a second Erosion node with identical settings, which runs the whole simulation again.

Cost scales with resolution on purpose. Material moves one pixel per step, so at twice the resolution the same iteration count would carry silt half as far across the image, and a graph tuned at 512 would come out of a 2048 export visibly less eroded. The node therefore scales the real pass count with the image (Iterations × shorter edge ÷ 1024, capped at 512, plus a seeding and a resolving pass) and shrinks the per-step time slice to match, so the same settings give the same picture at every size. The honest consequence is that a 4K render really does run about four times the passes of a 1K one.

A common pairing is to erode the height first, then use the same node’s Flow output as a mask for dirt in the base color.