Skip to content

Noise Functions

Classic gradient noise, output range [-1, 1]:

import { createPerlinNoise } from '@esengine/procgen';
const perlin = createPerlinNoise(seed);
// 2D noise
const value2D = perlin.noise2D(x, y);
// 3D noise
const value3D = perlin.noise3D(x, y, z);

Faster than Perlin with less directional bias:

import { createSimplexNoise } from '@esengine/procgen';
const simplex = createSimplexNoise(seed);
const value = simplex.noise2D(x, y);

Cell-based noise, suitable for stone, cell textures:

import { createWorleyNoise } from '@esengine/procgen';
const worley = createWorleyNoise(seed);
// Returns distance to nearest point
const distance = worley.noise2D(x, y);

Layer multiple noise octaves for richer detail:

import { createPerlinNoise, createFBM } from '@esengine/procgen';
const baseNoise = createPerlinNoise(seed);
const fbm = createFBM(baseNoise, {
octaves: 6, // Layer count (more = richer detail)
lacunarity: 2.0, // Frequency multiplier
persistence: 0.5, // Amplitude decay factor
frequency: 1.0, // Initial frequency
amplitude: 1.0 // Initial amplitude
});
// Standard FBM
const value = fbm.noise2D(x, y);
// Ridged FBM (for mountains)
const ridged = fbm.ridged2D(x, y);
// Turbulence
const turb = fbm.turbulence2D(x, y);
// Billowed (for clouds)
const cloud = fbm.billowed2D(x, y);
ParameterDescriptionRecommended
octavesLayer count, more = richer detail4-8
lacunarityFrequency multiplier2.0
persistenceAmplitude decay factor0.5
frequencyInitial frequency0.01-0.1
amplitudeInitial amplitude1.0
Noise TypeUse Case
PerlinSmooth terrain transitions, clouds
SimplexPerformance-critical scenarios
WorleyCells, stone, crack textures
FBMMulti-layer natural detail effects
Ridged FBMMountains, ridged terrain
TurbulenceFlame, smoke effects
Billowed FBMClouds, soft puffy effects