Creating realistic atmospheric perspective?

I’ve been searching through the threads here and on YouTube but I can’t really find anything that covers this well enough. Most of the tips are about the mist pass, but that eliminates having a sky in the scene… Unless you wanna do multiple render layers and comping.

I found this old documentation from Blender 2.4 that apparently had an atmospheric setting: https://docs.blender.org/manual/en/2.79/render/blender_render/lighting/lamps/sun/sky_atmosphere.html It’s seems to be completely gone now however.

I know https://www.physicaladdons.com/psa/ exists and it does exactly what I am after, but I can’t justify spending $60 on it just yet.

Is it possible to achieve something close to PSA for free, without comping?

1 Like

Like this???

No, unfortnuately not. I am talking about atmospheric perspective/aerial perspective and not thick fog.

The image below is a good example of what I want to achieve. Notice how everything becomes less saturated, less contrasty and blurry the further away it gets from the camera. It also doesn’t affect the sky too much, just a bit at the horizon.

1 Like

I’d use the volume as a basis, like described in the tutorial, and add some cloud texture to make slight density variations, and a gradient from bottom to top to have less density on the sky so you can see the clouds.

I’m not 100% sure about using emission as done in the tutorial, but for sure it can help.

You probably have to play with the number and settings to get a natural look, I think this is probably what people generally do instead of re-creating something physically accurate.

To my knowledge the way PSA works is that it doesn’t uses volume but creates a layer on top of each materials, that way the sky is clean, and since sky and object layer are kept in sync they both match.

What they did look super cool and it’s really an attempt at being physically correct, so whatever sun position you’ll get what ones expect from the sky with artistic control on top of it. But yeah if you don’t have a lot of uses for that it’s pricey, totally worth the effort they put into but a bit to much for occasional uses.

I aslo think you should consider using compositing since it’s a good way to compensate the lack of physical settings.

I’m pretty sure every options can lead to good results, some are more difficult path than others…

Have fun !

2 Likes

Id also take a look at this thread : Tenochtitlan (wip)

They share good tips about sky and atmosphere !

3 Likes

The problem I have with using volumes is that they obstruct the sky, I’ve played around with gradients to try to fade the volume into the sky, but it’s really hard and finicky to get something that looks decent and just doesn’t cut off abruptly. And if I get something that looks OK, as soon as the move the Sky Texture it’s ruined, so not really optimal.

Interesting about PSA, I might experiment more with individual materials instead to see if I can get something that looks better. I think adding a color/gradient on top of a material based on the distance from camer should work OK.

Yeah ! I don’t see a lot of benefit over doing a bit of comp then, it’s like taking the mist pass removing the sky and try to match them.

you can also use subtle comp effect there to get even cooler results.

Another technique worth mentioning is to use some planes with transparent gradient


atmos.blend (160.7 KB)

If you find cool techniques please do share them, it’s not always simple indeed , and since there is no perfect solution it’s always inspiring to see how people manage in the end !

Have fun !

8 Likes

This is what I’ve been doing, its a lot easier on my laptop than volumetric, and it gives me a good amount of artistic control.

I’ve also done some lighter materials for the background objects, but its a little funky, because the shadows are still pretty dark. Haven’t found a way to fix that.

1 Like

I would just do some color work in comp using the depth pass.

Another method is using the ray length to mix between your standard shader and a blueish diffuse bsdf. But that obviously bakes the color information into the render, so you have to get it right when rendering. Not sure it’s best.

5 Likes

Yeah, doing it in compositing is the way to go - its fast and gives maximum flexibility.
Using transparent planes with some subtle animated noise is a good way to create local fog layers in some areas if you want something that is not as uniform.

3 Likes

I did this but instead of a gradient I used volumes with varying thickness on this piece: Zereth Mortis from WoW Think it turned out quite well, I still have to see a nice way of doing this with comping. All the results I’ve seen so far are not that nice tbh.

1 Like

I think you’ll get the result you want with MIST Pass

1 Like

Cool ! Indeed that works too !

What’s the problem with them ? since it’s a very efficient method I’m pretty sure it’s used a lot, especially in complex renders you want to get as much as free stuff as possible.

On a recent project I tried volumetric, and although they gave cool results render time for animation were completely impractical, therefore I used the volume image as a reference and tried to recreate the effect with Zpass, I’ll probably color grade a few areas with masks to get even closer.

It’s always the same battle, you can have really good renders but if they take a long time to render you’ll likely to give up after a few iteration . A cheap method that allows you to do more re-render might lead to a better image because you are not tired to iterate !

Just in case anyone else runs into this challenge, here’s a neat way to do it in REAL TIME. One of the cool advantages here is that you can preview how the scene is going to look prior to rendering and tweak it accordingly… or even make some otherworldly or surreal effects.

Basically what we’re doing here is some neat vector math in real time!

The attached image should give you a rundown of the node setup for the material shader and how the “Near” and “Far” empties are used, but for anyone interested in the math, here’s what we’re doing “under the hood”:

  1. We create two Empties, one labeled “Far” and one labeled “Near”.
  2. In our Material Shader nodes, we calculate a unit vector pointing from the “Near” Empty to the “Far” Empty.
  3. Then we take the position vector (the one pointing to the position on the surface that the render engine is currently sampling) and then “project it” against that unit vector to retrieve the distance from the “Near” vector to the plane that contains our surface point. We can call this Distance A.
  4. Then we figure out how far the “Far” Empty is from the “Near” Empty. We can call this Distance B.
  5. We divide Distance A by Distance B and feed that into a Color Ramp to get a gradient that runs along the vector pointing from “Near” to “Far”.
  6. We use that to mix in an Emission shader that is designed to emulate “Aerial Perspective” fading.

And whew! :crazy_face:

Well, if you don’t want to get too deep into the math, just try to match the node setup in the image I attached. Hope this helps any passersby! Peace and God bless!