This simulation builds an infinite landscape from fractional Brownian motion (fBm): several octaves of smooth value noise are summed, each with a higher frequency and a smaller amplitude than the last. A seeded integer hash places pseudo-random heights on a grid, which are smoothstep-interpolated into a continuous heightmap. The combined signal is normalised to 0–1 and rendered as a top-down map with colour and hillshading.
The sliders control the noise: Scale sets the base feature size, Octaves how many noise layers are stacked, Persistence how quickly amplitude decays, and Lacunarity how quickly frequency grows. Sea level thresholds water against land, and an optional droplet-based hydraulic erosion pass carves valleys. The same maths drives terrain in games such as Minecraft and No Man's Sky, and underpins synthetic landscapes in film and GIS.
What is procedural terrain generation?
It is the creation of landscapes by algorithm rather than by hand. Instead of storing a fixed map, a mathematical noise function returns a height for any coordinate, so an endless, repeatable world can be produced from a single seed number. This page draws that height as a colour-coded top-down map.
What is fractional Brownian motion (fBm)?
fBm sums several layers of noise called octaves. Each octave is sampled at a higher frequency and added with a lower amplitude, so the first octaves create broad mountains and valleys while later ones add fine roughness. The result is the natural, self-similar look real terrain has across scales.
Does this really use Perlin noise?
The page is themed around Perlin noise, but the code implements value noise: a hash assigns a random height to each integer grid point and those values are interpolated. True Perlin noise interpolates gradients instead. Both produce similar fBm landscapes; value noise is simpler and a touch blockier in character.
What do Octaves, Persistence and Lacunarity do?
Octaves (1–10) is the number of stacked noise layers. Persistence (0.1–1.0) is the factor by which amplitude shrinks each octave, controlling roughness versus smoothness. Lacunarity (1.0–3.0) is the factor by which frequency grows each octave, controlling how much fine detail is packed in. The defaults are 7, 0.50 and 2.0.
Sea level (0–60%) is a threshold on the normalised height. Any cell below it is painted as water, with deeper blues at lower heights, and the panel reports the resulting Water, Land and Mountain percentages. Raising the slider floods the map; lowering it exposes more coastline and plains.
Biomes maps height bands to deep ocean, shallows, sandy coast, grass, forest, rocky highland and snow peaks. Height gradient shades purely by elevation. Slope shading greys cells by the steepness of the local gradient, highlighting cliffs and ridgelines. All modes also receive subtle hillshading except for water.
Each erosion pass releases roughly 500 virtual water droplets at random points. A droplet flows downhill along the local gradient for up to 80 steps, picking up sediment where it has spare capacity and depositing it where it slows, gradually cutting valleys and smoothing slopes. More passes produce deeper, more river-like carving.
Animate slowly advances a horizontal offset added to the noise coordinates each frame, so the landscape appears to scroll continuously while keeping its seed. It is a quick way to preview the endless nature of the terrain without dragging. Pressing it again stops the motion.
It is a convincing approximation rather than a geological model. fBm captures the fractal roughness of real land, and the droplet erosion mimics water transport, but there is no tectonics, climate or rock layering. It is intended for visual realism and teaching the ideas, not for survey-grade prediction.
The seed is a random integer fed into the hash that generates the noise grid. Changing it shifts every random height value, so the whole landscape is rebuilt from scratch. The same seed with the same settings will always reproduce the identical map, which is why procedural worlds are both infinite and repeatable.
Yes. The Save PNG button exports the current canvas as an image named after the active seed, capturing exactly what you see including the chosen colour mode, sea level and erosion. You can also drag to pan and scroll to zoom into a region before exporting to frame a particular view.
Fractal Brownian Motion (fBm) from layered Perlin noise generates infinite heightmaps with biome colours, realistic hillshading and optional hydraulic erosion. Pan, zoom and explore endless landscapes.
Multiple octaves of value noise are summed with decreasing amplitude and increasing frequency. The result is a natural-looking heightmap with large features and fine detail.
Pan across the terrain. Adjust octave count, persistence and lacunarity. Enable hydraulic erosion to carve realistic river valleys. Export as PNG.
Perlin noise was invented by Ken Perlin in 1983 for the film Tron. It won an Academy Award for Technical Achievement. Every video game with procedural terrain — from Minecraft to No Man's Sky — uses it.