Procedural Terrain & Biome Generation System
A modular procedural terrain system developed as my MSc dissertation, combining biome evaluation, domain-warped noise, shader-based biome blending, and infinite chunk streaming to generate large-scale landscapes at runtime.
Overview
This project was developed as my MSc dissertation and focuses on the design of a modular procedural terrain generation pipeline for biome-driven landscape creation.
The system was built to support large-scale terrain generation at runtime while maintaining designer control, extensibility, and stable performance.
Goals
The main objective was to create a terrain system capable of generating diverse, continuous landscapes in real time, while supporting biome-specific variation and infinite traversal.
My Contribution
- Designed and implemented the full procedural generation pipeline
- Built the biome evaluation system using layered environmental rules
- Developed terrain generation using domain-warped noise
- Implemented infinite chunk streaming with seam mitigation strategies
- Integrated GPU-based biome blending using Shader Graph
System Architecture
Terrain Generation
The terrain surface is generated from layered noise functions, with domain warping applied to reduce visible repetition and introduce more organic large-scale variation.
Biome Evaluation
Biome assignment is performed through a rule-based evaluation process combining environmental parameters and noise sampling.
Rendering and Blending
Biome transitions are handled visually on the GPU using Shader Graph, enabling smoother blending between biome regions.
Chunk Streaming
The terrain is divided into runtime-generated chunks that are loaded and unloaded dynamically according to player traversal.
Technical Deep Dive
Rule-Based Biome Evaluation
Biomes are assigned through a layered rule-based evaluation process combining height, temperature, humidity, and noise-derived parameters rather than relying exclusively on random placement or height thresholds. This allows biome placement to respond more consistently to environmental conditions.
Domain-Warped Noise
Base terrain height is generated using layered fractal noise, with domain warping applied to distort sampling coordinates before evaluation. This reduces visible directional repetition and produces more organic large-scale terrain variation.
Seam Handling Between Chunks
Because terrain is generated in discrete chunks, maintaining continuity between neighbouring chunk borders becomes critical. The system uses shared coordinate sampling and seam-aware generation strategies to reduce visible discontinuities between independently generated terrain regions.
GPU-Based Biome Blending
Biome colour and surface transitions are blended on the GPU using Unity Shader Graph, allowing smoother visual transitions between biome regions without relying on hard boundaries.
Challenges and Solutions
Maintaining Continuity Across Chunk Borders
A major challenge was maintaining continuity between independently generated terrain chunks. Differences in sampling and normalisation across chunk borders could introduce visible seams, particularly when combining domain-warped noise with runtime streaming.
Avoiding Repetitive Terrain Patterns
Layered procedural noise can introduce visible repetition and directional artefacts across large terrain regions, reducing the perceived natural variation of generated landscapes.
Preserving Runtime Performance
Runtime terrain generation introduces performance challenges when expensive mesh and biome calculations are performed synchronously. Chunk generation and streaming workflows were structured to minimise visible interruptions during traversal.
Results
The final system successfully generates continuous biome-driven terrain at runtime, combining procedural height generation, rule-based biome classification, GPU-driven biome blending, and chunk streaming into a modular terrain pipeline.
Future Improvements
- Global seam correction across independently generated chunks
- River carving across terrain and biome boundaries
- Biome-specific asset placement such as vegetation and props
- JSON export and import for parameter presets
- Extension toward volumetric terrain generation in future iterations