The body of the planet is a cube with 4 32x32 panels per each face. These are projected onto a sphere and then sample values from height maps are used for the deformation of the sphere.
I didn't do much research into methods for LOD terrain before implementing my own idea for how to do it but I believe my method is similar to quadtree based terrain division. When the camera gets within a distance (relative to that panel's width) instead of rendering itself the panel calls its own render function 4 times with the relative positions and sizes of the child panels. Those panels then repeat the same process until the camera is not close enough to divide or the finest level of division has been reached. In this video the panels divide up to 15 times and frame rates are still over 400fps.
Frustum culling is not currently used those there is culling based on how far a panel is past the horizon so that panels entirely past the horizon are not rendered.
The height maps and normal maps are generated at execution time with the libnoise library. I generate 4 maps for height and 4 maps for normals. Each map is a quadrant of the surface. Maps are generated on separate threads and each map takes about 15 seconds to generate so it takes about 30 seconds or so of asset generation before things start rendering.
When at close proximity the detail supported by the fine meshes is greater than the resolution of the maps being generated (making larger maps takes too long and too much memory). I intend to find a better method of generating the noise in the future.
The finest level of detail reveals small perturbations that I believe are a result of floating point precision breakdown due to static near/far plain values.