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 layers (1-8). More = more detail.
roughnessscalar0.5High-frequency amplitude falloff per octave
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).

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)

Caddis — professional motion design.