LRPN Noise*

LRPN Noise Preview

LRPN Noise (Local Random Phase Noise) represents a distinct paradigm in procedural generation, separating itself from classic Gradient noise (Perlin/Simplex) and Cellular noise (Worley). Instead of interpolating values or measuring distances, LRPN operates in the Spectral Domain.

It generates stochastic patterns by summing cosine waves with randomized phases across a regular spatial lattice. These contributions are blended using a Kaiser-Bessel window function. This approach decouples spatial sampling from spectral sampling, allowing for precise, mathematically rigorous control over the texture's frequency content (grain) and orientation (anisotropy) without the artifacts common in older noise types.

Performance Cost 🟡 Medium
Space 2D UV Space
Implementation Native Compiled C++
Devices (Cycles) CPU / GPU (1:1)

Usage & Behavior

With default values
Bernoulli Mode (High Contrast)

Because LRPN sums cosine waves, the resulting texture often resembles physical micro-structures like fabrics, brushed metals, or sand grains, rather than the "cloudy" look of Perlin noise. The Orientation Range parameter allows you to constrain these waves to specific angles, making it exceptionally powerful for anisotropic materials like carbon fiber or muscle tissue.

Best Used For: Fabrics (denim/linen weaves), brushed metals, carbon fiber, anisotropic sand/grain, and structured microstructure patterns.

Key Features

  • Spectral Synthesis: Sums local cosine waves rather than interpolating gradients.
  • Decoupled Sampling: Independent control over spatial lattice and frequency content.
  • Precision Anisotropy: Exact control over the orientation of pattern details.

Parameters

Use Bernoulli (bool, default: false)
Determines the amplitude distribution of the impulses.
  • False (Uniform): Amplitudes vary smoothly between -1 and 1. Result is softer, more Gaussian.
  • True (Bernoulli): Amplitudes are snapped to either -1 or 1. Result is higher contrast and "punchier."
Coords Vector
Input 2D texture coordinates.
U / V Scale (default: 25.0 / 4.0)
Controls the size of the underlying spatial lattice grid. Unlike standard noise Scale, this defines the "container" size for the local spectral summation. Non-uniform scaling here stretches the grid cells.
Frequency Range Vector2 (default: 0.0, 12.0)
Defines the Min (X) and Max (Y) frequency of the cosine waves inside each cell.
- High values: Finer, smaller details (grains).
- Low values: Broader, larger waves.
Orientation Range Vector2 (default: 0.0, 0.5)
Defines the Min (X) and Max (Y) rotation angles (in radians/normalized units) for the cosine waves.
- Narrow range (e.g., 0.0 to 0.1): All waves align in one direction (brushed metal).
- Full range (0.0 to 2Ï€): Waves are random, creating an isotropic (non-directional) noise.
Impulses (default: 5)
The number of cosine waves summed per grid cell.
- Low (1-5): Simple, structured, interference-like patterns.
- High (32+): Converges towards Gaussian noise, becoming smoother but significantly more expensive to render.

Quick Recipes

Use these settings for structured, realistic surfaces.

Brushed Steel

Orientation: (0.0, 0.05)
Frequency: (10.0, 20.0)
Impulses: 8
U/V Scale: (10, 10)
Restricting the orientation range forces all waves to align, creating perfect brushing.

Linen Weave

U Scale: 50.0
V Scale: 50.0
Bernoulli: True
Impulses: 4
Bernoulli distribution plus low impulses creates the high-contrast "over-under" look of threads.

Carbon Fiber

Orientation: (0.7, 0.9)
Frequency: (15.0, 15.0)
U Scale: 20.0
V Scale: 20.0
Diagonal orientation with a fixed frequency mimics the diagonal weave of carbon mats.
Technical Note: The algorithm performs a local summation of cosines within a 3x3 cell neighborhood. To prevent aliasing and hard edges between cells, it applies a Kaiser-Bessel window function to weight the contributions. This ensures spectral fidelity while maintaining smooth spatial transitions.
↑ Back to Top

Leave a Reply