Skip to content

Noise

Generates procedural noise patterns. Outputs GPU texture, CPU scalar/vec2 values, and lightweight field types for driving other nodes.

Category: Fields Menu path: Fields > Noise

Ports

PortTypeDirectionDescription
outimageRgba16foutputGPU fBm noise texture (grayscale)
scalarscalaroutputCPU smooth random value at the current evolution
vec2vec2outputCPU decorrelated 2D vector
scalarFieldscalarFieldoutputLightweight field — eval(x, y) returns [0, 1]
vectorFieldvectorFieldoutputLightweight field — eval(x, y) returns 2D flow vector

Parameters

ParamTypeDefaultDescription
noiseTypeenumPerlinPerlin, Simplex, or Curl
fbmModeenumStandardStandard, Alligator, Turbulence, or Ridged
seedscalar0Random seed offset
scalevec2(1, 1)Spatial frequency (linked by default)
offsetvec2(0, 0)Spatial offset for panning
evolutionscalar0Time dimension — animate for flowing noise
loopingbooleanfalseEnable seamless looping via 4D noise
cycleDurationscalar120Loop cycle in frames
loopSpeedscalar1Speed multiplier within cycle
octavesscalar4fBm detail layers (1–8). Each octave adds finer detail on top of the existing pattern — the base shapes stay put. Fractional values fade the last octave in smoothly, so octaves can be animated without stepping.
roughnessscalar0.5Amplitude of each added octave relative to the previous one. Only affects the detail layers — the base octave always contributes at full strength. 0 = base only, higher = stronger fine detail.
contrastscalar1Output contrast adjustment
brightnessscalar0Output brightness offset

Expose Channels

PortTypeOverrides
seed_inscalarseed
evolution_inscalarevolution
octaves_inscalaroctaves
roughness_inscalarroughness
offset_invec2offset

How It Works

The GPU texture output renders a fullscreen fBm (fractional Brownian motion) pattern using WGSL hash-based noise. The CPU outputs provide matching Rust implementations for consistent values across both paths.

Noise types: Perlin (classic smooth), Simplex (less grid-aligned), Curl (divergence-free 2D flow — texture shows magnitude, vec2 shows flow direction).

fBm modes: Standard (smooth sum), Alligator (abs per octave — cell-like), Turbulence (abs sum — veiny), Ridged (weight feedback — sharp ridges).

Octave accumulation: the base octave always contributes at full amplitude; each additional octave samples at double frequency and adds on top, scaled by roughness^i. Raising octaves refines the pattern without restructuring it, and raising roughness strengthens only the added detail. The fractional part of octaves is the blend weight of the last octave, so animating octaves ramps detail in continuously.

Looping: Uses 4D noise with Z/W mapped to a circle. The pattern seamlessly cycles over cycleDuration frames.

Fields: The scalarField and vectorField outputs are lightweight param structs — they don't allocate GPU textures. Consumer nodes (PointAttributes, ShapeAttributes, ShapeDeform, PointAdvect, etc.) sample them at eval time per-element. Use eval(x, y) for [0, 1] range or eval_bipolar(x, y) for [-1, 1].

Usage Examples

Basic: Animated texture

Set evolution to a Time node's seconds output for continuously evolving noise. Use as displacement map, alpha, or drive other effects.

Particle flow

Connect Noise's vectorField to PointAdvect's field_in. Points will flow along the noise field. Use Curl type for swirling, organic motion.

Procedural attributes

Noise.scalarField -> PointAttributes (target: Scale or Opacity). Each point samples the noise field at its position, creating spatially varying size or transparency.

Seamless loop

Enable looping, set cycleDuration to your comp length. The noise will seamlessly repeat.

Tips

  • Noise defaults to layer time — the output at a given clip position is stable regardless of where the layer sits on the timeline
  • Curl noise vectorField is ideal for PointAdvect — it produces smooth, swirling flow without convergence points
  • Lower octaves for better performance on complex graphs
  • Scale is linked by default — unlink for anisotropic noise (stretched in one direction)
  • PointAdvect — stateful field advection using Noise's vectorField
  • ShapeDeform — per-vertex displacement using Noise's scalarField
  • PointAttributes — per-element attribute setting from Noise's fields
  • ImageSample — raster-to-field bridge (spatial gradients from images)