Cyclic Noise*

Noise Preview

Cyclic Noise is a hybrid procedural pattern generator that sits between domain-warped fBm (Fractal Brownian Motion) and cyclic trigonometric noise. Unlike traditional Perlin or Simplex noise, which rely on lattice grids or hashing, Cyclic Noise operates entirely in continuous space using sine and cosine functions. This results in a texture free of grid artifacts, capable of producing swirling, organic fluid-like structures, abstract marble, or alien terrains. It utilizes an orthogonal basis rotation per octave to ensure isotropic detail distribution.

Performance Cost 🟢 Low
Space 2D/3D - UV/World/Object
Implementation Native Compiled C++
Devices (Cycles) CPU / GPU (1:1)

Usage & Behavior

With default values
High gain
Low gain high octaves
Turbulency plus high octaves for dents or dirty

The algorithm iterates through multiple octaves of detail. In each step, the coordinate space is "warped" by a sine function, rotated by a fixed orthogonal matrix, and then sampled using a trigonometric dot product. This creates a feedback loop of distortion where high-frequency details follow the flow of lower-frequency shapes.

Best Used For: Abstract organic surfaces, alien skin, swirling liquids, gas giant planetary atmospheres, and stylized marble.
Avoid using for: Strictly geometric patterns or realistic concrete/dirt (unless heavily modified).

Key Features

  • Continuous Space: No square or triangular grid artifacts.
  • Domain Warping: Built-in coordinate distortion for fluid looks.
  • Isotropic: Rotates inputs to prevent directional bias.

Parameters

Coords Vector
The input texture coordinates. If left unconnected, this defaults to the global Position field (P) of the shading point.
Scale Vector (default: 2.0, 2.0, 2.0)
Global scaling factor applied to the input coordinates before noise calculation. Adjusting the XYZ components independently allows for stretching or compressing the pattern along specific axes.
Lacunarity (default: 1.6)
Controls the change in frequency at each octave. A value of 2.0 means each subsequent layer of noise is half the size of the previous one. The default 1.6 creates a more organic, non-repeating structure compared to standard powers of two.
Warp (default: 0.5)
Determines the intensity of the domain distortion (warping).
- Low values (0.0 - 0.2): Result in softer, cloud-like trigonometric patterns.
- High values (> 1.0): Create intense swirling and marble-like distortions.
Strength (default: 0.6)
The global multiplier for the noise pattern intensity. This controls the brightness and contrast of the initial signal before octaves are accumulated.
Gain (default: 0.8)
Controls the change in amplitude at each octave (also known as persistence). Higher values mean that fine details (high frequency) remain prominent, resulting in a "rougher" texture. Lower values make fine details fade out quickly, resulting in a smoother look.
Octaves (default: 4)
The number of noise layers to accumulate.
Performance: Increasing octaves adds fine detail but increases the cost of the shader. A value of 4 is usually sufficient for most surface textures.

Quick Recipes

Use these presets as a baseline to achieve specific organic looks.

Fluid Marble

Scale: 1.5
Lacunarity: 2.0
Warp: 1.8
Gain: 0.6
High warp creates the signature liquid distortions used for marble or oil.

Alien Terrain

Scale: 4.0
Lacunarity: 1.4
Warp: 0.3
Gain: 0.9
High gain and low lacunarity create complex, craggy details perfect for bumps.

Soft Clouds

Scale: 1.0
Lacunarity: 2.1
Warp: 0.1
Gain: 0.45
Low warp and low gain produce gentle, puffy undulations.
Technical Note: The noise uses a hardcoded seed vector to generate an orthogonal basis matrix. This implementation outputs a smooth, non-turbulent signal remapped to the 0-1 range.
© 2025 Rombo Tools. All rights reserved.
↑ Back to Top

Leave a Reply