How to Bake and Apply Ambient Occlusion (AO) as a Texture in Blender

tutorialblenderao-mapbakingpbrshaders

Ambient Occlusion (AO) is the secret sauce that separates flat, computer-generated 3D models from grounded, tactile assets. While real-time path tracers calculate contact shadows on the fly, game engines and stylized rendering pipelines rely on baking these micro-shadows directly into an image texture.

Blender workspace demonstrating a baked AO map multiplied over a Base Color texture using a Mix Color node

Combining a baked Ambient Occlusion texture with your Albedo map instantly adds depth and contact shadow realism to creases and mechanical seams.

If you are wondering how to add ambient occlusion in Blender as a texture, there are two distinct phases to the workflow: first, baking the geometric occlusion into an image file using Cycles, and second, wiring that baked texture into your material shader.


Phase 1: Baking the AO Map in Cycles

Blender’s Eevee renderer calculates screen-space AO in real-time, but to save it as a permanent texture file, you must use the Cycles path-tracing engine.

Step 1: Prepare Your UVs and Image Target

  1. Select your 3D model and switch to the UV Editing workspace to ensure your UV islands are cleanly unwrapped without overlapping.
  2. In the Shader Editor, press Shift + A and add a Texture > Image Texture node.
  3. Click the New button on the node. Name your image Asset_AO, set the dimensions to 2048 x 2048 (or your target resolution), and uncheck Alpha since AO is a pure grayscale map.
  4. Keep this Image Texture node selected (with a white outline), but leave its outputs completely disconnected.

Step 2: Configure Cycles Bake Settings

  1. Go to the Render Properties tab on the right sidebar and change the Render Engine to Cycles.
  2. Expand the Fast GI Approximation or Light Paths panel and ensure your ray bounces are sufficient for smooth shading gradients.
  3. Scroll down to the Bake panel.
  4. Change the Bake Type dropdown from Combined to Ambient Occlusion.
  5. Set the Margin to 16px (or at least 4px for low-res maps) to prevent edge bleeding when mipmaps scale down in game engines.

Step 3: Hit Bake and Save

  1. Click the large Bake button.
  2. Once rendering finishes, switch an editor panel to the Image Editor, select Asset_AO from the dropdown, and immediately go to Image > Save As to save your PNG or TGA file to disk. (Warning: Blender does not automatically save baked images when you close the project!)

Phase 2: Applying the AO Texture in Your Blender Material

Now that you have your Ambient Occlusion saved as a standalone texture file, how do you apply it to your model so it affects your material’s appearance?

In the PBR workflow, Ambient Occlusion represents areas where ambient environmental light cannot easily reach. Therefore, it should darken your Base Color without stripping away specular reflections or metallic properties.

[Blender Shader Node Setup for AO]

(Base Color Texture) ──[Color 1]──┐
                                  ├──> [Mix Color: Multiply] ──> [Principled BSDF: Base Color]
(Baked AO Texture)   ──[Color 2]──┘

The Step-by-Step Node Wiring:

  1. In the Shader Editor, locate your primary Base Color (Albedo) image texture.
  2. Press Shift + A and add a Color > Mix Color node (in older Blender versions, this is called a MixRGB node).
  3. Drop the Mix Color node directly onto the line connecting your Albedo texture to the Base Color input of your Principled BSDF.
  4. Change the blending mode dropdown from Mix to Multiply.
  5. Connect the Color output of your baked Asset_AO texture node into input B / Color 2 of the Multiply node.
  6. Set the Color Space of your AO image texture node to Non-Color (since AO data represents linear shading intensity, not sRGB display colors).
  7. Use the Fac (Factor) slider on the Multiply node to control the intensity of the contact shadows (typically 0.6 to 0.85 yields the most natural result).

Best Practice for Game Assets (ORM / RMA Packing)

If you are exporting this asset to Unity, Unreal Engine 5, or Godot, do not multiply the AO over your diffuse color in Blender! Modern game engines apply AO separately in their shader pipelines to dynamically occlude ambient skybox lighting while leaving direct sunlight unaffected.

Instead, combine your baked AO map into a packed channel texture (often called ORM or RMA):

  • Red Channel: Ambient Occlusion (AO Map)
  • Green Channel: Roughness Map
  • Blue Channel: Metallic Map

Need a clean AO map or roughness layer without setting up complex raycasting scenes in Cycles? Try our Free Online Normal & AO Map Generator to extract detailed surface occlusion and height data from your existing textures instantly in your browser.

Blender AO Bake Settings Quick Reference

SettingRecommended ValueWhy It Matters
Render EngineCyclesEevee SSAO cannot be saved as a texture
Bake TypeAmbient OcclusionIsolates contact shadow data only
Margin16px (2048px map) / 8px (1024px)Prevents edge bleeding in mipmaps
Image Color SpaceNon-ColorAO is linear data, not sRGB display
Mix Mode (in shader)MultiplyDarkens base color without affecting speculars
Multiply Factor (Fac)0.60 to 0.85Prevents over-darkening in real-time engines

Related reading: What is an AO Map? · Roughness Map Guide · Normal Map Fundamentals · Best Normal Map Creator Online

Ready to create your own materials?

Turn any image into a production-ready PBR texture in seconds.

Open NormalMap.ai Editor