Just because my thread was tagged here: I am not doing a terrain generator.
A terrain generator finds the visible surface. There are various ways of doing this, from simplex noise to modelling natural processes. Adding surface details, scatterings of things from rocks and stones to vegetation, buildings and fauna is content creation and artwork and depends on the individual use case and the type of scenery one wants to create. Some of this can be integrated in a generator, but usually game developers would have to create their own content that fits their game or simulation. For instance, objects in a space game would look rather silly with grass and trees on them. Just like a veritable desert on earth, think Rhub al Khali.
I would also like to point out that I am doing a seamless and fast LOD mechanism for use in games that want large worlds. At the beginning, the LOD mechanism uses prior generated heightfields or heightmaps as input. I am not doing a terrain generator because there's a plethora out there already that one can find searching "terrain generator". Some of them support earth-like vegetation and scattering of stones and some flora, but many just do the visible surface with various methods. And I am not doing content creation as this is the task of game developers.
While heightmaps are just 2.5D, other terrain generators may use 3-dimensional algorithms to produce a voxelized terrain. These are usually slower to display, require a huge amount of memory even for small worlds, and quite some programming effort to make them look "naturally". Rendering these isn't yet suitable for large open world, naturally looking, and fast rendering real time applications. I am not talking about mindcraft.
But that's another thing.