I'll update this with more info later. Short story: A comment I read on another site left me thinking while I was asleep: Prioritize triangle subdivision based on screen space movement. I simplified this to a sorted list based on movement perpendicular to the camera forward vector. Here's the results.


To explain a bit better. When a triangle subdivides without updating it's three edges are split in half. The new points created are just interpolated so the screen space movement should be 0. I then get the position if that point was updated and test the difference between the two vectors against the up and right vector of the camera. I add the two magnituded and the final output is what I use to sort the order of triangle subdivision. To narrow down the search I simply ignore backfacing triangles. This can be bad because there's a change that subdivided version may appear above the horizon. I'll worry about that later.

A quick explanation for the pictured. The first one is simply what the planet looks like from far away now. The second is what the back of the planet looks like, it's completly un-subdivided. The third picture is a view from the planet surface and the last is the same view from over head to see how the subdivision worked.