The order in which they are rendered has little to do with how the phenomena works in real life. The alpha blended images must be drawn after all other images or the alpha blending fails. As well I would have to create a light-based clipping volume to cause the planets to disappear and or include another lighting variable that the planets would test against to see if they would in fact be visible. This is not a 3D sun. All of my sun's and light sources are accomplished using 2D billboards with a technique that although criticized on this board is used quite often and I've found it in several books as well.
There is not any depth sorting going on yet in this engine which cause the alpha blended billboards to incorrectly be drawn on top of by the planets. The billboards do not write to the zbuffer and as such do not exist according to the buffer. But this has to be done so that my billboards can be transparent in places which is necessary for a sun. I've seen other sun corona effects with pixel shaders in Shader X2: Tips and Tricks but I've not been impressed with them.
I am frustrum culling simply based on the camera look vector right now which is not totally perfect since the dot product will produce values that pass the test, yet should not be drawn because they do not lie in the frustrum. The next phase is to test against the cube generated by the frustrum and then clip against the six sides of the volume. However, I'm not sure this is worth the extra cycles at this point. At the very least, the only objects affected by my not so perfect cull algo are those that lie between 0 and about .30 on either side of the camera. This, of course, also depends on the actual position of the object. I'm only culling based on the planet position vector, not based on the actual vertices of the planet which would be a very costly cull.
I'm going to do sun coronas by additive alpha blending another texture onto the billboard. I'm not sure yet if I'm going to generate this procedurally inside of a pixel shader or if I'm going to use a static one. Although it would be cool to see the sun actually surge and change shape, I'm not so sure it would look right at great distances.
I'm also going to change all planets to progressive meshes and perhaps add 3 materials and textures per planet.
The next step right now is to implement my pixel shader. I'm not so sure I'm going to include specular calculations because planets by their very nature are not shiny. So I'll probably leave the specular calculation for another shader that could be applied to more metallic surfaces. I'd like to do some bump mapping as well but I need to be careful about the level of detail on the planets or the illusion of distance and vastness of space will be lost.
The sun glare quad is rendered last and it has to be. The sun, since it is a billboard, is rendered after the non-alpha blended polies in the same manner as the explosions, nebulas, lasers, etc.
If you have any further suggestions on the engine I'm all ears.