Subdivide each face of a cube into four quads and push the new vertices onto the surface of the sphere. Continue this process for every new quad and you will generate a set of patches that cover the entire sphere. Not evenly, but good enough. Each patch is then covered with a triangle mesh where each vertex is also pushed onto the sphere. Instead of mapping the vertices exactly onto a sphere, a noise function can be used to generate slight displacements that result in surface features. In order to generate an earth sized planet, however, a lot of octaves are needed for each vertex. It basically requires a dual core processor where one thread is constantly computing new terrain patches as they are needed. Some of the vertices can be recycled from the previous patch, but at least half of them have to be computed on the fly.
I have looked at a number of other terrain rendering algorithms, in particular ROAM, geoclipmaps, geomipmaps and chunked LOD. ROAM certainly produces the best tessellation, but it is also the most inefficient and simply not practical; at least for now. The algorithm described here is sort of a chunked LOD, except that the borders between terrain patches are properly stitched up with triangles. In order to keep the complexity low, two adjacent terrain patches may only differ by one level detail. This restriction also makes it possible to link up all the patches and allow for fast access to the neighbors, which will become important when computing normal and tangent space. This is it for today, allthough there is a lot more to be said about rendering planets. I will cover more aspects in the future. Check out the Geist3D website for movies and actual software downloads.
Have you got any advice/resources to push me in the right direction? I'd greatly appreciate it.