Entire Post below has been rebuilt and updated.
Update
TerraFirma is moving to a new home… Though i will still be heavily involved in it’s development from here on in, me and the brilliant designer, Lennart Johansen have forged a bit of a partnership, and the system is now officially, an “Awesome Technologies” production! ![]()
What this essentially means is as a whole, TerraFirma will be far more complete product, with many great features planned between the both of us that should give developers a bigger better suite of tools to enable more possibilities than one coder such as much so could hope to do in a timely fashion.
With amazing vegetation, terrain and in a sense, scene management, at your disposal… Well the future is looking very bright from our perspectives. ![]()
We are working on this now and will soon start another forum thread and website with updates as the development continues.
Thank you everyone for your support, and many great updates to come with this as well. !
*** A good majority of the images found through out this post at the time of writing are no longer visible. Moved image hosting my own domain.

This project is re-imagining of the terrain system built in with Unity3D designed from the ground up with intention of being performant, lightweight and feature rich, while also delivering a feeling of familiarity in-terms of how both the Terrain objects interact and are interfaced.
Below I’ve outlined a mostly complete feature list, as well as image sets comparing mesh quality and performance.
Mesh Comparison
Top Image Set
Left - Unity
Right - TerraFirma (All patches set to the highest level of detail)
Bottom Image Set
Top - TerraFirma
Bottom - Unity

-Can generate from Unity terrain data. (Convert unity terrain to a terrafirma terrain.)
-Is completely compatible with the unity terrain vegetation system. (Utilized for now and later as a fall back, vegetation system preview below.)
-Mesh topology in terms of geometry is identical to the unity terrain object it is generated from.
-When using the built-in shaders that come with texture splatting appearance is maintained as well.
Performance Comparison
Below is comparison of both TerraFirma and Unity handling the terrain mesh.
The first image is in-land where only a small portion of the terrain is exposed.
The bottom image shows the same scene running with entire terrain object expose in the viewport.
In both image sets :
Top - TerraFirma
Bottom - Unity3D
Middle of the Terrain.

Whole Terrain in Camera Perspective

4K Heightmap Based Terrain
This scenario is much the same as the above examples, the only difference is rather than handling a 1048 height map, the terrain here is utilizing a 4098 height map as it’s data set.
Top - TerraFirma
Bottom - Unity

-Like unity, TerraFirma supports terrains up to a maximum size of 4096 pixels.
Texture Array Support (Handle all texture layers in one pass)

-With texture array support every terrain texture layer can be drawn all in a single pass.
Tessellation Support

-Tessellation supported across all texture layers.
Texture Array Performance Comparison
Because all painted textures are handled in one pass, draw calls are reduced. This leads to an increase in
Top-Unity
Middle-TerraFirma (Non-Array Based)
Last-TerraFirma (Array Base)

Triplaner Projections
Left-Triplaner Projections ON
Right-Triplaner Projections OFF

-Supports Triplaner Projection removing texture tile stretching at sharp/long feature changes.
Batching And Frustrum Culling

-Comes with a custom batching method for reducing mesh instances/draw calls.
Height Based Culling as well as User Specified patch culling/exculsion.

-Supports culling of patches below a certain height.
-Supports culling of patches specified by the user through script. (Create your own culling rules!)
Real-Time Shadow Support

-Supports Real-Time Shadows across all built-in shaders.
Multi-Terrain Support

-Supports stitching and LOD transitions across multiple terrains.
-Supports modifying neighboring terrain connections in real-time, enabling the user to build infinite terrain
generation schemes, as well as systems to load/offload data from disc, the web, ect.
LOD Transition Methods

-Currently Supports two transition schemes.
Left Error Metric Based
-Detail is placed optimally, where the terrain changes occur the most.
-Partition “pop-in” on transition is reduced.
-Works in a similar fashion to unity’s method.
Right Radial Based
-Detail is set higher to camera and progressive degrades away naively based on distance.
-Partition pop-in is noticeable on large terrains.
-Overall requires less draw calls and resources to handle the mesh.
Integrated Editor
Comes with a built in mesh editor designed to mimic as well as add to what is currently offered with the unity terrain editor.

-Also support layer-able brushes. Interface visible below.
Full Object Interface

Future Features
Vegetation Handling
As of now Terrafirma uses the unity vegetation system as a fallback with it’s vegetation system in the works.

-Custom Vegetation system. (Uses unity’s as of now and later as a fall back.)
-Wind simulation supported.
-Custom billboard generator build-in.
-Built to mimic the Unity vegetation system.
Things Left to Do :
-Support for different grass types.
-Better tree handling along with other optimizations.
-Voxel Patch Support/Paint on any mesh.
-Add in option to handle grass via a GPU.
Voxel Support (Tunneling / Mesh Over-Hang support)

-Marching cube meshing integration then later surfaces nets, first naive then with the option to use a qef solver and Hermite data (“Dual Contouring”).
-3D data is utilized only when the terrain data in any given partition calls for it.
-Stitches seamlessly with terrain patches driven by a 2D data set.
-Faster processing when editing volumetric data. (Flood filling, ect)
Things Left to Do For Starters :
-Material handling for volume patch edges.
-Optimize/finish the volume patch manager.
-Optimize the volume partition structure.
-Integrate the voxel editor. (Video below)
Things to do Later
-Island removal. (floating chunks).
-Surface nets/dual methods.
Mesh Terrain Intersection Blending (Just needs to be interfaced)
Top - Two Objects Blended with the Terrain
Bottom - Two Objects Blending with each other and with the Terrain

Things Left to Do :
-Interfacing
Full GPU Driven LOD Transitions (via tessellation for now compute shader handling in the works well)

-All LOD transitions handled via the gpu.
-Dramatic reduction in draw calls.
Things Left to Do :
-Interfacing
Other Planned Features
-Sphere mapping a cube with 6 terrains as the faces. (Planets)
-Texture Coverage System for both meshes and the Terrain (procedural snow/leaf covering system handled via shader.)
-Threading support.




