Biome System Upgrades
intermediate featureVoxel Play 4 upgrades the biome system with 3-axis selection (altitude + moisture + temperature), per-biome shore voxels, and tighter integration with the 3D Terrain Graph via the Climate Map node.
BiomeZone and 3-Axis Selection
Each BiomeDefinition contains an array of BiomeZone entries. A BiomeZone defines a region in climate space where the biome applies:
| Axis | Fields | Range |
|---|---|---|
| Altitude | altitudeMin, altitudeMax | World units (e.g. -500 to 500) |
| Moisture | moistureMin, moistureMax | 0 to 1 (normalized) |
| Temperature | temperatureMin, temperatureMax | 0 to 1 (normalized, VP4 only) |
A position matches a biome when all three axes fall within the zone's ranges. Temperature is backward-compatible: zones where both temperature values are 0 ignore the temperature axis entirely, so existing VP3 biomes work without changes.
How Temperature Works
Temperature is not a built-in world property. It comes from the terrain graph: connect a noise node to the Climate Map's third input (Temperature). This could represent anything - actual temperature, distance from equator, elevation-based climate, or any other value you design.
Without a temperature input connected, biome selection works exactly as in VP3 (altitude + moisture only).
Per-Biome Voxel Fields
VP4 adds new per-biome voxel customization fields on BiomeDefinition:
| Field | VP3 | VP4 | Description |
|---|---|---|---|
voxelTop | Yes | Yes | Surface voxel (e.g. grass, sand) |
voxelDirt | Yes | Yes | Underground voxel (e.g. dirt, stone) |
voxelShore | - | New | Shore voxel for surfaces adjacent to water. Allows per-biome beach materials (sand for deserts, gravel for mountains). |
voxelLakeBed | - | New | Underwater floor voxel, distinct from underground dirt |
voxelWater | - | New | Water voxel override per biome (e.g. murky water in swamps) |
Climate Map Node
The Climate Map node in the 3D Terrain Graph performs biome lookup at generation time. It takes three inputs:
- Altitude (0-1): typically from a height calculation or World Y node
- Moisture (0-1): from a 2D noise node representing humidity
- Temperature (0-1, optional): from any noise or calculation node
The node outputs a biome index (0..N) that references the World Definition's biome array. Connect this output to the Voxel ID, Vegetation ID or Tree ID terminals to drive per-biome block selection, plant placement and tree generation.
Geological Layers (Global Underground Strata)
By default, each biome controls all underground voxels within its range via voxelDirt and voxelDirtAdditional. This works well for surface-level variation (soil, sand, clay) but makes it difficult to create shared geological layers like rock types that should be consistent across biomes.
The Geological Layers array in the World Definition solves this by defining global underground layers based on absolute altitude (Y). Each layer specifies:
| Field | Description |
|---|---|
| Voxel Definition | The voxel type for this layer (e.g. Granite, Limestone) |
| Probability | Weight (0-1) relative to other layers at the same altitude |
| Altitude Min / Max | Y range where this layer applies (default -500 to 500) |
How It Works
During terrain generation, for each underground voxel position:
- Biome-specific underground voxels (
voxelDirtAdditional) are applied first, consuming their configured probability. - Any remaining probability is filled from the global geological layers, proportionally rescaled to the remaining space.
- If no global layer covers that altitude, the biome's
voxelDirtis used as final fallback.
This means biomes only need to define their surface-level materials. Deep layers like granite, slate, or limestone are configured once at the world level and shared automatically.
If a biome needs to fully override the underground (e.g. a volcanic biome with 100% basalt), set its voxelDirtAdditional probability to 1.0 for the full altitude range - the global layers will never apply.
See Also
- Terrain Graph Overview - How to build terrain graphs
- Node Reference - Complete Climate Map node parameters
- Biomes (VP3 docs) - Base biome system reference
Suggest an improvement
Help us improve this documentation page.