Project Status

Terrain3D has been available and usable since the alpha was released in July, 2023. We have hundreds of users and are using it in our game, Out of the Ashes. It is stable and just needs advanced features.

The status of various features are shown in the table below.

See the Roadmap for priorities. See Contributing if you would like to help the project move faster.

Feature

Status

Platforms

Terrain editing and exported games work on Windows, Linux, macOS. Mobile and web platforms are experimental.

Languages

GDScript, C++, C# all work, as should any language Godot supports. See Integrating With Terrain3D

Editing

Sculpting Operations

Raise, Lower, Flatten, Expand (Multiply away from 0), Reduce (Divide towards 0), Slope and Smooth. It can be improved over time.

Painting Operations

Texture, Color, Wetness (roughness) with Height blending.

GPU Sculpting

Pending. Currently painting occurs on the CPU in C++. It’s reasonably fast, but we have a soft limit of 200 on the brush size, as larger sizes lag.

Advanced texturing

Pending and this. eg. Paintable uv scale / slope / rotation, 2-layer texture blending, 3D projection. We intend to implement all of these and adopt techniques provided by The Witcher 3 team. (See System Architecture)

Environment

Foliage

Pending. Paintable meshes will be instanced via MultiMeshInstancer. Collision may also be generated. Alternatives are using MultiMeshInstance3D or a particle shader, or see 3rd party tools below.

Object placement

Out of scope. See 3rd party tools below.

Holes

Supported since 0.9. See #60

Water

Use WaterWays for rivers, or Realistic Water Shader or Infinite Ocean for lakes or oceans.

Destructibility

Real-time modification is technically possible by fetching the height and control maps and directly modifying them. That’s how the editor works. But most gamedevs who want destructible terrains are better served by Zylann’s Voxel Tools.

Non-destructive layers

Used for things like river beds, roads or paths that follow a curve and tweak the terrain. It’s possible, but low priority.

Physics

Godot

Works within regions you define in your world. No collision outside of those.

Jolt

Godot-Jolt v0.6+ works as a drop-in replacement for Godot Physics. The above restriction applies.

Navigation Server

Supported. See Navigation

Data

Large terrains

8k^2 works, maybe a little more, though collision will take up ~3GB RAM. 16k x 8k up to 16k^2 works in memory, but cannot be saved due to an engine bug.

Importing / Exporting

Works. See Importing data

Double precision floats

Supported.

Rendering

Frustum Culling

The terrain is made up of several meshes, so half can be culled if the camera is near the ground.

Occlusion Culling

Supported.

SDFGI

Works fine.

Lightmap baking

Not possible. There is no static mesh, nor UV2 channel to bake lightmaps on to.

3rd Party Tools

Scatter

For placing objects algorithmically, with or without collision. We provide a script that allows Scatter to detect our terrain. Or you can enable debug collision and use the default Project on Colliders.

AssetPlacer

A level design tool for placing assets manually. Works on Terrain3D with debug_show_collision turned on. Native support is pending.

Simple Grass Textured

A foliage painter. Add as a child and enable debug_show_collision.

Spatial Gardener

A foliage painter. Add as a child and enable debug_show_collision.