← 🌿 Nature

🏔️ Terrain

Colour mode
Seed
Water %
Land %
Mountain %
Deep sea
Shallow
Coast
Grass
Forest
Mountain
Snow peak
Scroll to zoom · Drag to pan · Generate a new seed with ⚡

About Procedural Terrain Generation

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.

Frequently Asked Questions

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.

How does the Sea level control work?

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.

What are the three colour modes?

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.

How does the hydraulic erosion option work?

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.

What does the Animate button do?

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.

Is the terrain physically accurate?

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.

Why does every new seed look completely different?

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.

Can I save the landscape I have generated?

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.

🏔️ Procedural Terrain — Perlin Noise

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.

🔬 What It Demonstrates

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.

🎮 How to Use

Pan across the terrain. Adjust octave count, persistence and lacunarity. Enable hydraulic erosion to carve realistic river valleys. Export as PNG.

💡 Did You Know?

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.