There's a pretty solidly shadered-up planet. It has diffuse and ambient light, a specular highlight on the ocean, bump mapped surface features, and atmospheric haze. I'd like to add a cloud layer, which should be pretty trivial, but once that's done I can't think of any other special features I'll want to integrate. I'm also slowly building up the superstructure of this thing with a cSolarSystem class to manage groups of objects. In this shot there's a solar system with two bodies -- the planet, and a large star offscreen to the left that's illuminating it.
Just to be clear, the planet's texture isn't created by my code. Since I'm still pondering how to approach that issue, I used the rather astonishingly great LunarCell plugin for Photoshop (there's a 30-day free trial, you should check it out!) to generate some planet textures to experiment with, along with this handy Normal Map Generator utility to make the bump map.
I'm still undecided over whether or not the actual landscape should be generated in the shader. One factor pushing me in that direction is the fact that even with 1024x1024 textures, the planet looks obviously blocky and pixelated in a way it wouldn't if the shader was used, and as textures grow ever larger the memory usage is going to become colossal. One factor pushing me away from that direction is that doing it in the shader is really goddamn complicated.