Here are a few more pics. I have added the cirrus clouds again and lit them properly as well. I have also reworked the water shader, so that the reflections are stronger on sunset and sunrise. For that, I have moved away from the actual physical model of atmospheric scattering and added some of my own equations, so that the reflections are stronger and the colors are more vivid. Basically I have streched out the sun rise as if the planet was much larger. Ultimately, the idea is not to model the scattering physics correctly but to produce a nice looking environment. Plus, the atmospheric scattering is just an approximation anyways. On top of that I have also fixed the scattering equations for the land and atmosphere. There were a few problems as well.
There are only a few things left to do before I will finally be happy with the lighting for the planets as a whole. I am really tempted to rework the noise functions for the planet surface as well. Have a look at
www.outerra.com. They are using earth data as a basis, but use a fractal function to generate higher resolutions. Longs story short, they did a very good job! I would like to try and get a little closer to their solution, but I will probably put it off for a while. I have a pretty good idea what needs to be done so I can sleep easy putting it off

I love the way the clouds cast shadows on them selves, at least it look like they do. I guess it's really the light algorithm working very well, and it does.
Yup, that's the lighting algorithm. There are two parts to it. One is the pre-computed cloud density. That is not quite self-shadowing though, i.e. the clouds do not cast shadows on themselves, although I could pre-compute that as well. For now, I have decided against that, because I will eventually implement shadow maps for the entire environment. At that point the clouds will also case shadows on themselves. Before that, I should probably do some performance improvements.
Can this technology be incorporated into the trees? I was thinking of a tree that was just a particle cloud (a group of alpha mapped leaves).
Good point! Right now the leaves are not alpha-blended, but alpha-tested. The results are not as good, but the performance is much better, because there is no overdraw. I didn’t want to use blending because you have to sort the particles for every rendering step. Now that I know how to use pre-sorted index buffers, I could probably revisit that again. And, I could use the same shadowing techniques as for the clouds.