33
$\begingroup$

I recently discovered that turning on Simplify in the Scene panel, and setting "AO Bounces" to 2, reduced my render times from 30 minutes to 10 minutes. A three times speed improvement! But... I still don't know what it actually does, and there appears to be no documentation for it.

AO bounces value in scene panel

render comparison

Besides looking darker, there's not much noticeable difference.

Someone on twitter told me that it limits the light bounces in the scene to the value you set, then uses AO (with color set to the world color) in it's place.

But I'm confused by this, because 1. AO isn't even turned on 2. I changed the AO dist from 1 to 6 and it made no difference

But yes, it is using the world color somewhere (set to black in the above example) because I did a test setting it to purple, and the scene looked purple.

So does anyone know what it actually does?

$\endgroup$
  • $\begingroup$ Someone just sent this to me on twitter: mail-archive.com/bf-blender-cvs@blender.org/msg78834.html Sergey confirms that yes it uses AO in place of real bounces. But how? AO isn't turned on, and distance doesn't alter render results. $\endgroup$ – Andrew Price Jan 17 '18 at 1:03
  • 1
    $\begingroup$ As an addition to @MikePan answer, it does make a difference while using Refractive materials (Glass, Principled > Transimission = 1). It seems like these materials needs about >=4 Bounces before switch to AO to look somehow ok. $\endgroup$ – cgslav Jan 17 '18 at 1:39
  • 1
    $\begingroup$ I made a test in my scene here bit.ly/2FKTU0p. Result: As soon as the AO bounces go below 6 my glass objects became black. When I set the bounce values up, to get the transparancy back, the render time reset to the origin value without any simplify fx. But I think it is a real time safer, when working with objects without any transparency. $\endgroup$ – Christoph Werner Jan 17 '18 at 10:32
38
$\begingroup$

TL;DR:

To put it simply, after n light bounces, Cycles switches the material shader to a simplified diffuse material (i.e. AO), instead of evaluating the full material node tree.

This Simplify to AO feature can be replicated with this node setup: enter image description here Note that because the math node is set to 'greater than 1', the AO node will only kick in at ray depth 2.

Why?

This often give a significant speed up because we author the materials to look good to the camera, all those normal maps, fresnel effects and fancy edge shaders don't really change how the light behaves after a few bounces. For bounced light, all that matters is how reflective the material is(i.e. its albedo), does it bounce back 10% of the light, or 99% of the light?

Here is a more elaborate example of the optimization at work. enter image description here

enter image description here

We can easily cut the render time in half by falling back to a diffuse BSDF after 1 bounce instead of whatever megashader we are using. This test is an outdoor scene with bounced limited to 3. The rendertime improvement will only get better if there is more bounced light, as with most interior scene.

AO distance setting definitely plays a role in the output image. But it is unclear how other ambient occlusion settings (factor and world color) affects the AO pass.

Effect on perfectly specular surfaces

A question was raised about how this will affect perfectly glossy surfaces. To answer that we can assemble a test scene with 2 parallel mirrors with a subject in the middle: This is with the bounce turned all the way up to 8. We can see precisely 8 monkeys before the mirror turns black. enter image description here

If we turn on Simplify to AO to 2, it seems the shader returns the environment color after 2 bounces instead of returning black, which is arguable more energy conserving and correct. enter image description here

A final comparison: this is with the global bounce setting turned down to 2. Notice all reflection rays after 2 bounces are black. enter image description here

This is an extreme example, with normal world scenes, it's unlikely we'll need anything with more than 2 bounces.

Take Away: Always set AO Simplify to 2, or just limit your global bounces to 2 or 3.

If you have a complex shader network, create a diffuse shader for all the non-camera rays. This can be faster and more accurate than the AO simplify option.

$\endgroup$
  • $\begingroup$ So am I correct in saying that it has nothing to do with the AO settings (enabled/disabled, distance, factor) in the World Panel? $\endgroup$ – Andrew Price Jan 17 '18 at 2:45
  • $\begingroup$ Also, when you say "Cycles switches the material shader to a simplified diffuse material", does that mean that if a reflective wall receives a light ray that it's on it's 3rd bounce, that it won't show up in the reflection of the wall, but just in the diffuse? $\endgroup$ – Andrew Price Jan 17 '18 at 2:52
  • $\begingroup$ @Mike Pan what is you shader you've used with dust and rust color? $\endgroup$ – Wildfire Jan 17 '18 at 5:25
  • 2
    $\begingroup$ The shader is a proprietary setup developed for "Sunny & Gerd". We haven't made it public yet. $\endgroup$ – Mike Pan Jan 17 '18 at 23:51
6
$\begingroup$

You scene shouldn't get darker if the world value is turned to the proper values you can usually replicate the look you had before. Also the AO falloff size has a huge affect on how it looks.. Usually in an interior scene I try to have the AO go half way up the wall

But still im sure blender guru has a tutorial about it

$\endgroup$
  • 10
    $\begingroup$ I think I am going to upvote this because it is pretty funny. Does no one see the irony here. lol $\endgroup$ – icYou520 Jan 17 '18 at 6:06
  • 4
    $\begingroup$ I'm laughing so hard right now. $\endgroup$ – Rogue Lotus 4 Jan 17 '18 at 7:05
  • 1
    $\begingroup$ Just came after watching blender guru tutorial :p $\endgroup$ – Shaharyar Jan 20 '18 at 11:43
5
$\begingroup$

The only documentation of this feature at the moment appears to be the tooltip:

Approximate indirect light with background tinted ambient occlusion at the specified bounce, 0 disables this feature.

I.e. by using black for world color you kill the feature completely. Try it again with white for world background and record the difference, it should not darken the scene that much anymore. Then change the AO distance and record the difference again - there should be one.

Note that AO does not need to be turned on for it to work just as AO does not need to be turned on for the AO shader to work.

Here is a simple setup to demonstrate - camera inside a cube (10 BU * 10 BU), only light source is an HDRI on the world:

The setup

Of course is normally renders black as no light can make it into the cube. Here is how it renders with simplify AO bounces set to 1, the minimum settings:

Simplify 1, AO distance 10.0

Here the same render but AO distance in world is set to 1.0 instead of the default 10.0:

AO distance 1.0

Takeaway: Simplify uses the AO shader tinted by the world color. The distance setting is still taken into account just like when the AO shader is used in a material. Note that the factor setting is not taken into account because that is only used when global AO is turned on (once again just like when using the AO shader in a material).

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.