CCP Games has posted a new developer blog describing recent updates to its sci-fi MMO, EVE Online. The post offers an in-depth look at effort required to revamp the visual look of planets and moons, including the new Plasma planet type added with the Dominion expansion.
Clouds
We soon realized that the clouds are the most noticeable feature of a planet and they needed to look very good. These textures are the biggest textures used by the planets, 2048×2048 pixels when your client is set to ‘High’ texture quality.
The shader starts by adding a shadow underneath the clouds to give them some depth. We have the direction to the sun in texture space so we simply make a new lookup into the cloud texture but shift it by a certain amount. We then perform a regular texture lookup into the cloud texture and add it on top.
The cloud maps each have a corresponding pole texture mapped using the pole coordinates. Where these overlap with the belly texture we combine them using a max() function. 
Light Scattering
Physical accuracy was important for us to make a believable atmosphere. Scattering controls the color of the atmosphere as well as making the light terminator creep further into the dark side of the planet, since the light is bouncing inside the atmosphere. We started by calculating the atmospheric scattering in real time, but ended on a pre-baked solution. Scattering is view dependant so we created a lookup texture where the view dependant factor is on one axis and the light direction dependant factor was on the other.
The atmosphere on the horizon was treated differently. There we have separate geometry and calculate the bulk of the scattering equations in the vertex shader, but feed the result to the pixel shader and complete the calculations there. This gives us the nice effect that light behind the planet will still scatter towards the camera.
Let there be city lights
Some of the Temperate planets are inhabited and their cities can be seen from space. We use one texture covered in UV texture coordinate patches, spherical mapped, to provide surrogate texture coordinates. The texture coordinates fetched are used to look up into a texture atlas. We then mask the fringes of these patches with a separate grayscale texture. The UV patch textures were baked in Maya.