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
| Port | Type | Direction | Description |
|---|---|---|---|
out | imageRgba16f | output | GPU fBm noise texture (grayscale) |
scalar | scalar | output | CPU smooth random value at the current evolution |
vec2 | vec2 | output | CPU decorrelated 2D vector |
scalarField | scalarField | output | Lightweight field — eval(x, y) returns [0, 1] |
vectorField | vectorField | output | Lightweight field — eval(x, y) returns 2D flow vector |
Parameters
| Param | Type | Default | Description |
|---|---|---|---|
noiseType | enum | Perlin | Perlin, Simplex, or Curl |
fbmMode | enum | Standard | Standard, Alligator, Turbulence, or Ridged |
seed | scalar | 0 | Random seed offset |
scale | vec2 | (1, 1) | Spatial frequency (linked by default) |
offset | vec2 | (0, 0) | Spatial offset for panning |
evolution | scalar | 0 | Time dimension — animate for flowing noise |
looping | boolean | false | Enable seamless looping via 4D noise |
cycleDuration | scalar | 120 | Loop cycle in frames |
loopSpeed | scalar | 1 | Speed multiplier within cycle |
octaves | scalar | 4 | fBm layers (1-8). More = more detail. |
roughness | scalar | 0.5 | High-frequency amplitude falloff per octave |
contrast | scalar | 1 | Output contrast adjustment |
brightness | scalar | 0 | Output brightness offset |
Expose Channels
| Port | Type | Overrides |
|---|---|---|
seed_in | scalar | seed |
evolution_in | scalar | evolution |
octaves_in | scalar | octaves |
roughness_in | scalar | roughness |
offset_in | vec2 | offset |
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
octavesfor better performance on complex graphs - Scale is linked by default — unlink for anisotropic noise (stretched in one direction)
Related Nodes
- 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)