LAUNCH OFFER€25 in free credits when you sign up, no card requiredClaim the offer
    TURNA, Blender render farm
    Back to the Blender guides

    Ambient occlusion: what it is, how SSAO works, and where to find it in Blender

    T
    TURNA technical team
    28 October 2026
    11 min

    Short answer

    Ambient occlusion (AO) darkens each point of a surface according to how much of the hemisphere above it nearby geometry blocks, which is why corners, creases and contact areas look darker. Games compute it in screen space (SSAO, HBAO, GTAO). Since Blender 4.2, EEVEE has no AO checkbox: use Raytracing > Fast GI Approximation with Method set to Ambient Occlusion. Cycles offers Fast GI, an AO render pass, an AO shader node and an AO bake.

    • EEVEE: Render Properties > Raytracing > Fast GI Approximation, Method: Ambient Occlusion.
    • Cycles: Render Properties > Light Paths > Fast GI Approximation (AO Factor, AO Distance).
    • AO pass: View Layer Properties > Passes > Light > Ambient Occlusion.
    • AO node: Shader Editor, Shift+A > Input > Ambient Occlusion.
    • AO bake: Cycles only, Render Properties > Bake > Bake Type: Ambient Occlusion.

    Menu names below are checked against the Blender 5.2 manual and source code.

    What is ambient occlusion?

    Ambient occlusion (AO) measures how exposed each point of a surface is to light arriving from all around it. The renderer looks at the hemisphere above the point, the half dome of directions the surface faces, and works out how much of it nearby geometry blocks, which is how the Blender manual defines its Ambient Occlusion node. In Blender's AO pass, the result goes from 0, fully occluded, to 1, fully exposed.

    Why corners and creases get darker

    A point in the middle of an open floor sees its whole dome and stays at 1. Move it into the corner of a room and the two walls fill a large share of the dome: less ambient light reaches it, and its value drops. The same happens in cracks, in the folds of cloth, where two meshes meet and under an object resting on a table. That soft darkening where surfaces come close is what AO adds to an image: objects sit on the ground and small details stay readable.

    AO does not know where the lights are and does not follow light as it bounces. The Blender 2.93 manual called it a trick that is not physically accurate, useful to emphasize shapes or as a cheap stand-in for indirect light. A path tracer such as Cycles computes the bounces, so this darkening appears in its renders with no AO setting at all. Real-time engines cannot afford that and approximate it.

    SSAO, HBAO and GTAO: ambient occlusion in real time

    Games compute AO in screen space: instead of casting rays through the scene, they read the depth buffer, the distance to the camera the GPU has already stored for every pixel.

    • SSAO (screen-space ambient occlusion) places sample points around each pixel, tests them against the depth buffer and darkens the pixel according to how many are hidden. Martin Mittring of Crytek presented it at SIGGRAPH 2007 with CryEngine 2, the engine behind Crysis.
    • HBAO (horizon-based ambient occlusion), presented by NVIDIA at SIGGRAPH 2008, searches the depth buffer in several directions for the horizon angle the surroundings reach, and turns those angles into occlusion.
    • GTAO (ground truth ambient occlusion) comes from an Activision talk at SIGGRAPH 2016. It is also horizon-based, checked step by step against Monte Carlo ray-traced references. EEVEE's ambient occlusion code is based on this work.

    All three only know what the camera sees: an object hidden behind another one, or outside the frame, occludes nothing, so the result can change as the camera moves. Ray-traced AO, the kind Cycles uses, casts real rays into the scene and has no such blind spot, at a higher cost.

    Ambient occlusion in Blender: what moved

    Most AO tutorials for Blender predate one of two rewrites. Where each setting went:

    SettingIn older tutorialsIn Blender 5.2
    EEVEE AORender Properties > Ambient Occlusion checkbox (up to 4.1)Render Properties > Raytracing > Fast GI Approximation, Method: Ambient Occlusion
    Cycles AOWorld Properties > Ambient Occlusion, Factor and Distance (up to 2.93)Render Properties > Light Paths > Fast GI Approximation, AO Factor and AO Distance (panel added in 2.93, World panel removed in 3.0)
    EEVEE AO pass distanceDistance in the Ambient Occlusion panel (up to 4.1)Occlusion Distance, under the pass in View Layer Properties > Passes > Light
    AO node in EEVEEOnly worked with the Ambient Occlusion checkbox enabled (up to 4.1)That checkbox no longer exists

    Ambient occlusion in EEVEE (Blender 4.2 and later)

    Up to Blender 4.1, EEVEE had an Ambient Occlusion panel with Distance, Factor, Trace Precision, Bent Normals and Bounce Approximation. EEVEE was rewritten for 4.2 and the panel is gone: AO is now one way EEVEE computes indirect light on rough surfaces, the Fast GI Approximation.

    1. In Render Properties, set Render Engine to EEVEE.
    2. Tick the checkbox in the header of the Raytracing panel.
    3. Open its Fast GI Approximation subpanel and tick it (the checkbox arrived in Blender 4.3).
    4. Set Method to Ambient Occlusion, which the manual calls the fastest option: it uses scene intersections to shadow the distant lighting from light probes. Global Illumination, the other method, also takes light bouncing off nearby objects into account.
    5. Check Threshold, the maximum roughness a surface can have to be raytraced (in 4.2 it was Max Roughness, in the Raytracing panel). Rougher surfaces progressively switch to Fast GI; at 1, everything is raytraced and Fast GI is disabled.
    6. Set Distance if you want a limit: when it is not zero, it is the maximum distance at which other surfaces contribute.

    More Rays and Steps mean less noise, a higher Precision more accurate intersections, both at a cost in speed; a lower Resolution is faster and blurrier. Thickness, the geometric thickness EEVEE gives surfaces, reduces light leaking and missing contact occlusion. Blender 5.2 removed its second value, Far, which caused dark halos around objects, and fixed several Fast GI bugs: the release notes warn that older files, their AO pass and their AO nodes can look different.

    Ambient occlusion in Cycles: Fast GI Approximation

    Cycles traces the bounces, so it needs no AO setting for a realistic image; its AO options exist to render faster or to stylize. Up to Blender 2.93 they sat in a World > Ambient Occlusion panel; 2.93 also added Render Properties > Light Paths > Fast GI Approximation, and 3.0 removed the World panel. This subpanel, with its own checkbox, off by default, approximates diffuse indirect light with ambient occlusion tinted by the background.

    • Method: Replace replaces global illumination with AO after a number of bounces, set by Viewport Bounces and Render Bounces. The manual notes it can reduce noise in interiors with little visual difference.
    • Method: Add adds AO to diffuse surfaces on top of the full lighting: the classic AO look.
    • AO Factor sets the strength. AO Distance sets how far rays search for occluders: short values emphasize nearby features, long ones also catch distant objects.

    Both values are stored on the World even though you edit them here, which is why older tutorials send you to the World tab. AO Distance can be overridden per object in Object Properties > Shading > Fast GI Approximation (0 keeps the World value), useful when small and large objects share a scene. Lighting itself is covered in the guide to lighting in Blender.

    The Ambient Occlusion render pass

    For AO as a separate image, open View Layer Properties > Passes > Light and tick Ambient Occlusion under Other. The pass is grayscale, from 0 (occluded) to 1 (exposed), and the manual suggests multiplying it over the color in the Compositor with a Mix Color node.

    • In Cycles, its reach is the AO Distance of the Fast GI panel, whether Fast GI is enabled or not. The Cycles denoiser skips this pass, so give it enough samples.
    • In EEVEE, Occlusion Distance sits under the checkbox, a scene setting in 4.2 to 4.5 and a view layer setting since 5.0. In 5.2, the other quality settings of the pass come from the Fast GI panel: Rays, Steps, Precision, Thickness and Bias.

    A Cycles render already contains the occlusion its light paths produce, so multiplying the pass on top darkens the same areas twice. Keep the mix factor low unless you want a stylized look.

    The Ambient Occlusion node: dirt and wear masks

    In the Shader Editor, Shift+A > Input > Ambient Occlusion adds a node that turns the occlusion of each point into a value a material can use; the manual's example is weathering in corners. The AO output is the plain factor, Color the factor tinted by the Color input.

    • Distance: how far other objects count, 1 by default, in scene units.
    • Samples: rays traced at each shader evaluation, 16 by default, 1 to 128. The manual advises keeping it as low as possible.
    • Inside: detects convex shapes rather than concave ones, by computing occlusion inside the mesh.
    • Only Local (Cycles only): only the object itself occludes.

    A dirt mask in four nodes

    1. Connect the AO output to the Factor input of a Color Ramp (Add > Color in Blender 5; in 4.x, Add > Converter and an input named Fac).
    2. Move the two stops of the ramp closer together to sharpen the mask and set how far it spreads.
    3. Add a Mix Color node (Add > Color): ramp into Factor, a dirt color into A, the clean color into B. At a factor of 0 the node returns A, so occluded areas, dark in the mask, get the dirt.
    4. Connect Result to the Base Color of the Principled BSDF. A second ramp from the same AO output can raise Roughness in the dirty areas.

    Lower Distance to keep the dirt in small creases. Tick Inside and the mask follows convex edges instead, a start for worn edges or chipped paint. Only Local keeps the dirt on a crate independent of the floor under it. The guide to materials in Blender covers the Shader Editor and the Principled BSDF.

    In EEVEE, the node is computed from the depth buffer, like Fast GI, so it shares the screen space limits.

    How to bake ambient occlusion

    Baking stores AO in an image laid out along the UVs, as a base for texture painting or for game assets. The manual also suggests baking AO for the main objects so the final render does not compute it again.

    1. Set Render Engine to Cycles: the Bake panel only exists there.
    2. Give the mesh a UV map whose faces do not overlap.
    3. In its material, add an Image Texture node with a new image, unconnected, and click it so it is selected.
    4. In Render Properties > Bake, set Bake Type to Ambient Occlusion and click Bake.
    5. Save the image from an Image Editor with Image > Save As: Blender keeps it in memory until you do.

    The manual says this bake follows the World settings and ignores every light: in practice, its reach is the AO Distance of the Fast GI panel, as for the pass. It uses the render sample count and is not denoised, so give it enough samples. To bake an AO node instead, with Only Local or Inside, plug it into an Emission shader and bake the Emission type (Emit in 4.x). Every step is detailed in the guide to texture baking in Blender.

    What ambient occlusion costs in render time

    • The AO node in Cycles is the expensive one: the manual warns it can slow a render down significantly, since every evaluation traces its Samples count of extra rays. It suggests two faster options: the Pointiness output of the Geometry node (Cycles only, a per-vertex curvature suited to dirt and wear) or a baked AO map.
    • The AO pass in Cycles adds one occlusion ray per sample from the surfaces the camera sees.
    • Fast GI in Cycles, in Replace mode, saves time by cutting bounces short, at some cost in accuracy: the manual presents it for viewport rendering or final renders with reduced quality. Add mode traces extra AO rays instead.

    For the other settings that weigh on render time, see how to render faster in Cycles, and to choose an engine, the guide on how to render in Blender.

    Frequently asked questions

    What is ambient occlusion?

    Ambient occlusion (AO) is a shading technique that darkens each point of a surface according to how much of the hemisphere above it is blocked by nearby geometry. Corners, creases and contact areas receive less ambient light, so they turn darker. It ignores where the lights are and how light bounces, which makes it a cheap approximation of soft indirect shadowing.

    What is SSAO?

    SSAO stands for screen-space ambient occlusion: AO computed from the depth buffer of the current frame, pixel by pixel, instead of tracing rays through the scene. Crytek presented it at SIGGRAPH 2007 with CryEngine 2. It is fast and does not depend on scene complexity, but it only knows what is visible on screen.

    Where is ambient occlusion in Blender EEVEE?

    Since Blender 4.2 there is no Ambient Occlusion checkbox in EEVEE. Enable Render Properties > Raytracing, open its Fast GI Approximation subpanel, tick it (Blender 4.3 and later) and set Method to Ambient Occlusion. For a separate AO image, tick View Layer Properties > Passes > Light > Ambient Occlusion.

    Should ambient occlusion be on or off?

    In a game, AO grounds objects and adds depth, but it costs GPU time on every frame: lower it or turn it off when you need frame rate. In Blender, Cycles already produces that darkening through its light paths, so Fast GI can stay off for realistic renders; in EEVEE, enable Fast GI and pick its fastest method, Ambient Occlusion.

    How do you bake ambient occlusion in Blender?

    Switch to Cycles, give the mesh a UV map and add an unconnected, selected Image Texture node with a new image to its material. In Render Properties > Bake, set Bake Type to Ambient Occlusion and click Bake, then save the image from the Image Editor with Image > Save As.

    Rendering the animation on TURNA

    When a scene is already well optimised and the frame count is what takes the time, the remaining lever is rendering several frames at once. TURNA does this for Blender: an add-on (Blender 4.0 to 5.2, Cycles and Eevee) sends the scene in one click, and the frames are split across 1, 2, 4 or 8 GPUs in parallel, RTX 5090 first and RTX 4090 when none is free. The add-on shows the estimated cost before anything starts. Prices start at €4.90 per hour, billed on the time actually used, with a 2-minute minimum (30 seconds until November 9), and new accounts get €25 of free credit. A single still image is still rendered by one machine, so the gain is on animations. Tiers and worked examples are on the Blender render farm page.