Planet Shaders

I was trying to create realistic clouds rotating the earth using normal maps and texture panners.
I’d be curious if you guys had any ideas on how to improve it.

Looking good! I suppose it depends on whether you’re going for photorealism or not. If so, I’d say the normals should be somewhat smaller scale (space is pretty big!), and perhaps an atmospheric haze around the rim would help, depending on where the sun is located. That’d also help make silhouetted vertices less visible.

That earth globe looks really great. Mind describing exactly how you go to this point?

[edit] To be specific, whenever I tried making a sphere I ran into the issue where my texcoords were pinched at the poles. So I ended up having to go into my paint program and make a texture that looked correct at the poles. Do you know of any easier methods?

[edit2] Only trick I can think of would be to pull my planets into ZBrush, project the desired planet texture unto the surface, & then simply export the modified diffuse map back out. Now that would be much easier than what I’ve done in the past

earth does need a little atmosphere, 1, 2 clouds ain’t enough

Yeah, I think you’re right. I also just noticed that the normals go out into the water a little bit. I think an atmospheric haze is a really good idea. The only sphere I had to work with was from the examples content so it had a relativity low poly count. I’ll try to get a more detailed one.

Sandboxgod- I’ll take a screen shot of my material blueprint when I get home. I’ve never used Zbrush but ive heard really good things about it.

May it come from the way you map UV from spherical earth to square texture? You should take a look to

Take a look at this:

See how the land is basically flat, the ocean is reflective and the clouds are bumpy and cast shadows. You need two materials, one for the ground and one for the clouds. Make an atmospheric mesh which is slightly larger than the planet and map the cloud material to it. The cloud material needs to be transparency masked and able to cast shadows + aggressive normal map; it would also be good to have a slightly blue fresnel effect for the horizon.

Also your colors are super cartoony, take a look at some actual images of earth from space and use color levels on the texture to tone them down.

looks good but I agree that it needs a haze for the atmosphere, then I think it would look awesome:)

this reminds me of a low poly planet earth I made in UDK ages ago (Free Custom Assets ready for UDK! [Only Download] - Epic Games Forums) although I have no idea how you would do the atmosphere with UE4’s material system, anyway cant wait to see what this looks like when its finished:D.

Sweet I’d love to see it!

Yeah zbrush is very good. It’s a skill I’ve acquired in the recent months. Because it has very good vertex painting tools (plus tools that will convert the vertex paint → UV map), it is also very useful for making quick maps that look seamless.

Look at the skybox material to see how they did clouds there.

That’s a great idea. Never even thought to look at that.

You should layer the clouds in 2-3 levels of opacity and slightly varying speeds - perhaps even a darker offset to show a slight shadow of the clouds against the planet to show height.

If you are going for a realistic look, there are some things about the earth you definately should know. First, even taking the highest peaks in the world into account, the surface of the earth is overall smoother than the surface of a marble (if a marble was the size of the earth), thus you would never see any differing heights looking down at any location in the world when viewed from space, so there really isn’t a need for any normal map at all. Second, because light passes through more material, and thus reflects differently, when passing through more atmosphere, the quality of the light around the edges of the earth would look different than what light is reflected when looking at it straight on. A fresnel node would help achieve that effect, depending on how much time you spend fiddling with the settings. As it is right now, it still looks quite good, but its alot more cartoony than it is in reality.

Interesting post Knobby

Couple years ago I did a 3D Earth for my animation. It was done in 3ds Max, but I think you could also apply this technique. I created 3 spheres (slightly different radius):

  1. Land with oceans
  2. Clouds
  3. Atmosphere.

Each sphere had different shader. It’s not so game engine friendly but it gives you lots of freedom (f.e cloud layer manipulation). Thinking more about geometry optimization. You could use one sphere with complex shader. I would use layered materials.
Material functions:

  1. Land+Water (if you want to be more advanced here you could separate land from water and blend it with RGB mask).
  2. Clouds (simple gray color with mask to blend with)
  3. Atmosphere (that would be a tricky part. I would play with Fresnel effect or some custom gradient. This layer would blend with scalar value). When I have some free time I can make a prototype.

Good luck with this idea!

Here’s the blueprint. Sorry for the let down but after fooling around with it the simplest of the blue prints I made looks the best. I’m not going for a photo realistic look so I’m trying to exaggerate the normals a little bit. The problem I have now is getting the normals of the clouds to be “fixed” at a height above ground. Right now they are just mixing with the grounds normals and it looks weird. I haven’t been able to find a high poly sphere with the right UV’s so I’m going to try to add a haze around the sphere instead.