Skip to main content

psrdnoise: Periodic Rotating Simplex-Like Dimensional Noise

Advanced Periodic Noise with Gradient Rotation Control

The psrdnoise function generates Perlin-like noise patterns with enhanced control over periodicity and gradient rotation. Unlike standard noise functions, it provides seamless tiling capabilities and gradient rotation parameters for sophisticated texture generation.

The mathematical foundation follows simplex-like grid transformations with explicit control over periodic boundaries:

psrdnoise(x,p,α)=iwi4gidi\text{psrdnoise}(x, p, \alpha) = \sum_{i} w_i^4 \cdot g_i \cdot d_i

where wiw_i represents corner weights, gig_i are rotated gradient vectors by angle α\alpha, and did_i are distance vectors from simplex corners.

Basic Usage Patterns

Live Editor
const fragment = () => {
      const p = position.xy.mul(iTime)
      const n = psrdnoise(p)
      return vec4(vec3(n), 1)
}

Mathematical Properties

PropertyDescriptionImplementation
Period ControlSeamless tiling boundariesvec2(px, py) period parameters
Gradient RotationDynamic gradient directionalpha rotation angle parameter
Dimensional Support2D and 3D implementationspsrdnoise2D, psrdnoise3D
Derivative AccessSurface normal computationBuilt-in gradient calculation

Function Variants

The implementation provides multiple overloads for different use cases:

FunctionInputOutputPurpose
psrdnoise(x)vec2floatBasic 2D noise
psrdnoisePeriod(x, p)vec2, vec2floatPeriodic 2D noise
psrdnoiseAlpha(x, p, α)vec2, vec2, floatfloatRotated 2D noise
psrdnoise3(x)vec3floatBasic 3D noise
psrdnoise3Alpha(x, p, α)vec3, vec3, floatfloatRotated 3D noise

Advanced Pattern Generation

The combination of periodicity and rotation enables complex pattern synthesis:

P(x,t)=k=1NAkpsrdnoise(fkx,pk,αkt+ϕk)P(x,t) = \sum_{k=1}^{N} A_k \cdot \text{psrdnoise}(f_k x, p_k, \alpha_k t + \phi_k)

This layered approach creates intricate textures with controllable animation characteristics and seamless boundaries for tileable patterns.