← Back to Works

FFT-driven terrain

Extending FFT terrain with environmental data, procedural materials, and player-centred generation.

FFT-generated mountains surrounding a lake
Tech Stack
Unreal Engine
C++
Role
Developer
Core Mechanics
Procedural Mesh Generation
Fast Fourier Transform

This project builds on the FFT terrain from Procedural Terrain & Ocean, extending the generated landscape with environmental data, automatic material blending, and runtime optimisation.

Height, slope, moisture, and temperature are calculated and sampled from the terrain. These four data layers connect the procedural mesh to its surface materials, while player-centred tiles control which terrain blocks are generated at runtime.

The Challenge

Building on the FFT terrain from Procedural Terrain & Ocean, this chapter adds calculation and sampling of height, slope, moisture, and temperature.

The four terrain layers are visualised through vertex colours. Moisture uses the blue channel (B); adjusting the influence of elevation and slope changes how moisture is distributed across the landscape.

Moisture vertex-colour visualisation with elevation and slope weight settings in Unreal Engine
Moisture data visualised on the procedural mesh.
Updated blue-channel moisture distribution after adjusting terrain moisture weights
Changing elevation and slope weights alters the moisture distribution. Open either image to inspect the settings.

The terrain material reads the four calculated data layers and uses them to blend surface materials. This example uses moisture to blend snow-covered mountains with muddy ground.

Snow-covered FFT mountains and wet muddy ground showing automatic material blending
Moisture-driven material blending across the landscape.
Close view of the transition from snow to exposed ground on an FFT terrain slope
Surface transitions on the mountain slope.

A Height Curve compression parameter, starting from a value of 1, extends control over the generated landforms. Adjusting compression changes the terrain profile to explore different landscape shapes.

Low rolling green landforms created by adjusting the Height Curve parameter
Exploring alternative landforms with Height Curve compression.

To reduce runtime overhead in a large world, the landscape is divided into tiles. The player’s position determines which terrain blocks are generated around the current location.

Animated demonstration of terrain tiles generated around the player's position
Terrain generation follows the player across the tiled landscape.

Video

FFT terrain, procedural surface materials, and runtime generation.

L.Z / 2026