I’m very glad to announce the release of Ultimate Terrains (aka uTerrains) after more than one year of development. This is the result of hundreds hours of hard work. I put all my heart into this to make it as good as possible and always put myself in future users shoes to answer their needs. I hope you will enjoy it!
Ultimate Terrains is a brand new voxel terrain engine implementing adaptive Dual Contouring with very powerful features. It is able to generate and render infinite terrains with any kind of shape (cubical, smooth, mountains, hills, caves, overhangs, etc.), supports real-time editing and offers awesome distance of view. It has been made to be easily and deeply customizable.
Features:
Fast, optimized, multithreaded, with low memory footprint.
Infinite terrains.
Giant distance of view. Visible part of a terrain is up to 8192x8192 while keeping an excellent voxel resolution (only 1x1x1 unit per voxel!).
Can render any kind of shape: mountains, hills, valleys, but also caves, holes, overhangs, cliffs, etc. Possibility to change the smoothness of some parts of the terrain (or the entire terrain) so you can have fully cubical areas and perfectly smooth relief at the same time.
Realtime editing. Dig/build your terrain as much as you want in real time.
Procedural generation thanks to modules such as Perlin noise, Simplex, Ridged multifractal, heightmap, etc. You can write your own modules easily.
Biome system with full control over terrain generation.
Editor to edit the terrain directly within the scene view.
For now, 8192 is a maximum. I could easily increase it to 16384 if some people need it, but I thought 8192 was enough for most situations while keeping good performance.
ahahah! You made me laugh
Well, thank you very much!
Yes, you can even create your own type of operation by implementing IOperation interface. So basically you do whatever you want.
Indirectly, yes, because you can change the maximum acceptable geometric error. But increasing it too much could introduce some artifacts and even some holes in the terrain between chunks, because LOD cracks are handled via properly connected seams. I’m planing to add an option (in a future update) to use skirts instead so it will reduce polycount (but won’t look as good as seams especially if you set a high acceptable geometric error).
Thanks! Yes I know, problem comes from the shader. I will have to improve it but I’m not a shader expert, I was already quite happy to manage to make a triplanar shader
I will ask for help on the shader forum. BTW, this problem doesn’t occur when RTP3 is used.
EDIT: actually it does occur with RTP3 too. There might be an issue with normals. I’m gonna work on this.
What’s the memory usage for a 8kx8k terrain? From my experience with other voxel engines I expect it to be huge. Most of the time it’s around 700MB for very small terrains (less than 1000x1000)…
Ultimate Terrains has been developed with a lot of care regarding performance and memory footprint. As you mentioned, a voxel engine always needs a lot of memory, but uTerrains keeps it at a low level comparatively to most other engines.
For a 8192x8192 terrain like the ones in the demos, it uses less than 300MB of memory (to be more specific, in the full demo scene it takes about 280MB).
Thank you for the compliment, VoxelFarm is more advanced than uTerrains, which is normal as it exists for years, but my goal now is to improve uTerrains continuously so it will be better and better. I think the core of uTerrains engine is good enough to make it a true competitor in the future.
Newbie question. Is it possible to create a uTerrain shape based on some other geometry? For example I have been using OBJ to Terrain- script for converting obj terrain models into Unity terrains. Would this kind of workflow be possible with uTerrain?
@mk1978
I haven’t made a mesh to voxel converter yet. But your particular case, you could get the heightmap of your terrain and use it with the heightmap module of uTerrains.