Interactive Examples

Explore different noise types with real-time visualizations. Click a canvas to zoom in, and edit the code blocks to see changes instantly.

Noise Configuration

Edit the seed value to change the noise pattern globally:

window.noise = new ForgeNoise(12345);

Basic Noise Types

2D Perlin Noise

return noise.generate2D01(x / 16, y / 16)

2D Simplex Noise

return noise.generateSimplex2D01(x / 16, y / 16)

2D Worley Noise

return noise.generateWorley2D01(x / 16, y / 16)

Advanced Techniques

Domain Warping

return (noise.warp2D(x / 16, y / 16, { 
  warpStrength: 1, 
  warpScale: 1 
}) + 1) * 0.5

Fractional Brownian Motion (fBm)

return (noise.generateFractal2D(x / 16, y / 16, { 
  octaves: 6, 
  lacunarity: 2.0, 
  persistence: 0.5 
}) + 1) * 0.5

Ridged Multifractal

return (noise.generateFractal2D(x / 16, y / 16, { 
  octaves: 6, 
  ridged: true, 
  lacunarity: 1.0, 
  persistence: 0.5 
})) * 0.5

Combined Techniques

Perlin Masked with Simplex

let perlin = noise.generate2D01(x / 16, y / 16);
let simplex = noise.generateSimplex2D01(x / 16, y / 16);
return perlin * simplex;

Worley Masked with Perlin

let worley = noise.generateWorley2D01(x / 16, y / 16);
let perlin = noise.generate2D01(x / 16, y / 16);
return worley * perlin;

Simplex Masked with fBm

let simplex = noise.generateSimplex2D01(x / 16, y / 16);
let fbm = (noise.generateFractal2D(x / 16, y / 16, { 
  octaves: 4, 
  lacunarity: 2.0, 
  persistence: 0.5 
}) + 1) * 0.5;
return simplex * fbm;

Experimental Combinations

Warped fBm with Turbulence

let warped = noise.warp2D(x / 16, y / 16, { 
  warpStrength: 2, 
  warpScale: 1.5 
});
let fbm = noise.generateFractal2D(warped, y / 16, { 
  octaves: 5, 
  turbulence: true, 
  lacunarity: 2.0, 
  persistence: 0.6 
});
return (fbm + 1) * 0.5;

Voronoi Edges with Perlin Modulation

let voronoi = noise.generateVoronoi2D(x / 16, y / 16).distance;
let edges = Math.min(voronoi, 0.1) / 0.1; // Highlight edges
let perlin = noise.generate2D01(x / 16, y / 16);
return edges * perlin;

Tiled Simplex with Ridged Noise

let tiled = noise.generateTiling2D(x / 16, y / 16, { 
  periodX: 64, 
  periodY: 64 
});
let ridged = noise.generateFractal2D(x / 16, y / 16, { 
  octaves: 4, 
  ridged: true, 
  lacunarity: 2.0, 
  persistence: 0.5 
});
return (tiled + ridged + 2) * 0.25;