Planetary Rendering

Hi! I am trying to render a simple shot of Earth from space:

I simply applied NASA’s Blue Marble image as a diffuse map and faked the atmospheric scattering with Schlick-Fresnel and a constant color. I have two questions.

  1. Is there a better way to fake atmophere? I don’t want to write an actual scattering shader.
  2. Are there any ways to fake dynamic clouds? I thought of driving curl noise with a flow map, but that sounds too much. Would something simple like Diablo III style noise texture multiplications give decent cloud movement? Rendering to a movie isn’t out of the question.

I am really excited about the possibility here, but it seems like the look is stuck in the mud right now. Any feedback would be greatly appreciated!


It depends on whether your camera angle will change, and how far you are from the planet.

If your angle will stay fixed, consider building a small halo of geometry that remains pointed at the camera.
Then, build your clouds into a bump offset shader. Depending on your FOV the planet will seem bulbously exaggerated when you texture it. That’s because there’s no fooling the eye about how far away the camera is. So you can either set the camera very far away and narrow the viewing angle. Or you can squish the geometry and scroll the texture instead of rotating the globe.

If your camera is going to move such that you go to various angles and locations on the globe, it’s better to work in relatively small scales. You’re going to want to chase your tail on scaling the globe and moving the camera. It’s better to stick with a fixed size within a reasonable scale and alter your camera distance and FOV.

You can always put a second translucent shell around the globe, but that’s harder to manage fresnel falloff ratios. Again, layering in the cloud layer is going to make your life easier. The good news is that if you want, you can make the atmosphere fade to black if you keep it very very thin.

Hope that helps!

Very interesting!

After looking at more research (the shots you linked) it seems like the atmosphere fade is only prominent at close distances. My camera will remain fixed for the most part, I might zoom in by a factor of two or so. In general , the interaction will be similar to the old Wii Weather Channel:

I love their exaggerated atmosphere, it seems like it might be a second transparent mesh as you alluded to.

I’m a little confused about your first two paragraphs. If I understand correctly, you are suggesting a camera-facing ring mesh that is displaced via a cloud texture? Also, in terms of sticking to a fixed size with a reasonable scale… do you mean using physically accurate Earth scales? What is the advantage or disadvantage of playing with mesh scale?

Thinner meshes at larger distances suffer depth buffer artifacts if you use depth buffer shaders to help reveal mountain heights.
If you try to play games with making your globe astronomically correct, you’ll run into precision errors in animation.
I’ve seen more than one person try to animate accurate velocities only to have their set torn to shit by velocity vs. precision.

Heeey, you have struck a very nice balance.

The atmosphere, in reality, is far thinner than your illustration if i remember correctly. I feel like it encroaches a bit, like i’m seeing atmosphere over the ocean. But that might work out great if you write the clouds in from the satellite data.