Smooth Terrain & Smooth Voxels
intermediate featureVoxel Play 4 · 3D Terrain Graph
Smooth Terrain renders voxel surfaces as continuous, rounded geometry instead of hard cubes, using a Surface Nets mesher driven by the 3D Terrain Graph density field. Each voxel type can opt in or out, so you can mix smooth ground with blocky structures in the same world.

Smooth terrain requires a 3D Terrain Graph with a density output. It is not available for 2D heightmap generators.
Enabling Smooth Terrain
- Open your Terrain3DGenerator graph asset.
- Enable Smooth Terrain (the
enableSmoothTerrainfield). - Make sure the graph has a density output - Surface Nets reads the density field to locate the surface crossing.
From code:
terrain3DGenerator.enableSmoothTerrain = true;
While smooth terrain is on, the enableHalfStepSurface option is ignored (a warning is logged).
Smooth Corner Radius
The Smooth Corner Radius field (smoothCornerRadius, range 0 to 0.25, default 0.2) controls how rounded convex edges and corners look. It applies a visual chamfer only to vertices that face air, so flat joins between solid voxels stay flush and the density halo is not changed.
- 0 - sharp blocky corners, even with Surface Nets on.
- 0.1 to 0.15 - subtle rounding, terrain still reads as voxelized.
- 0.2 (default) - balanced look, recommended for most worlds.
- 0.25 - maximum rounding, organic feel.
terrain3DGenerator.smoothCornerRadius = 0.2f;
Per-Voxel Control
Each VoxelDefinition has a Smooth Geometry mode:
| Mode | Behavior |
|---|---|
| Auto (default) | The voxel contributes to Surface Nets whenever smooth terrain is active. |
| No | The voxel always uses regular cube geometry, even when smooth terrain is on. |
voxelDefinition.smoothGeometry = SmoothGeometryMode.No;
Typically only opaque solid voxels become smooth candidates; cutout, cross and transparent voxels keep their own rendering. Use No for man-made blocks (bricks, crafted structures) that should keep sharp edges while the terrain around them stays smooth.
Textures and Materials
Smooth surfaces keep per-face texturing: the mesher picks the top, side or bottom texture of each voxel from the world-space normal, so grass tops and dirt sides render correctly on rounded slopes. PBR surface maps behave the same as on cube voxels.
Mixed Smooth and Cube Terrain
Smooth and cube voxels can sit side by side. Where a non-smooth opaque voxel touches a smooth voxel, the mesher seals the seam so there are no gaps or z-fighting. Caves, overhangs and multi-level terrain are handled correctly.
Vegetation and Interaction
Cross/vegetation voxels (grass, flowers) snap to the real smooth surface instead of the voxel grid, and selection highlights and raycasts follow the rendered surface. Picking, placing and destroying voxels work as usual.
Performance
Smooth meshing evaluates a higher-resolution density halo around each chunk and costs more than cube meshing. Halo evaluation is parallelized across CPU cores. Set Smooth Geometry to No on voxel types that don't need it to keep the smooth candidate set small.
Saving and Loading
Smooth terrain is a rendering and meshing feature: it changes how surfaces are drawn, not the underlying voxel data. It does not alter the world state, so it does not interfere with normal world saving and loading. You can turn it on or off without affecting saved worlds, and a world saved with smooth terrain on loads identically with it off (and vice versa).
See Also
- 3D Terrain Graph - the density-based generator smooth terrain builds on
- Node Reference - density, noise and shaper nodes
- Super Chunks - extend visible terrain past the full-res chunk radius
Suggest an improvement
Help us improve this documentation page.