I am currently experimenting with rendering planetary scale terrain.
I am generating the terrain on the GPU with noise, and to fix the 32 bit floating point precision problems, I generate the heightmaps that need the most precision (the deepest levels of the quadtree I am using for the level of detail) by bicubically interpolating the heightmaps generated for the parent heightmaps (that are generated with normal 32 bit floats, since they don't need a lot of precision).
Doing it this way limits the amount of details the terrain can have, because the smallest details are generated with 32 bit floats, and if more detail is needed, bicubic interpolation is used to generate the intermediate height values.
The issues with this is that if I want extremely detailed terrain, 32 bit float textures (I store the heightmaps in those) are not precise enough, resulting in terraced terrain.
Is there a way I can store more distinct values inside a texture?