How to Bake AO Maps Without Artifacts
A good ambient occlusion bake adds immediate depth and realism to even the simplest material. A bad one — grainy, too dark, full of seam artifacts — is immediately noticeable and hard to fix after the fact. This guide walks through the settings that matter and the fixes for every common AO baking problem.
What AO Baking Does
AO baking fires a hemisphere of rays from each surface point on the mesh and measures how many of those rays hit other geometry before escaping to the sky. A point surrounded by other geometry — a crevice, a corner, the underside of an overhang — has many ray hits and gets a dark value. An exposed, open surface has few hits and gets a bright value.
The result is a greyscale "soft shadow" map. White means open and exposed to ambient light. Dark means occluded and sheltered. Applied over the albedo, this adds a sense of depth and grounding that makes even a plain grey material read as three-dimensional.
Key Bake Settings
These are the settings that have the most impact on AO bake quality. Getting them right before baking saves you from having to rebake.
| Setting | What It Does | Recommended Starting Point |
|---|---|---|
| Ray count / Samples | Number of rays fired per texel. More rays = cleaner result, longer bake time. | 64 for preview, 128–256 for production quality |
| Max ray distance | How far rays travel before counting as unoccluded. Controls how broad the shadowing is. | Start at 0.1–0.5m for a typical prop, adjust based on asset size |
| Bias / Self-intersection offset | Prevents the surface from occluding itself at the ray origin point. | Small value — increase until self-shadow artifacts disappear at flat surfaces |
| Bake space | Object space bakes self-occlusion only. World space includes nearby scene objects. | Object space for portable assets; world space only for environment-specific bakes |
| Output resolution | Texture resolution of the baked result. | Match your normal and albedo resolution — typically 2048×2048 |
Common Artifacts and How to Fix Them
Baking AO from High Poly vs Low Poly
Unlike normal maps — which almost always need a high-poly source — AO can be baked from the low-poly mesh alone and still look excellent. The choice between the two approaches depends on how much fine surface detail you need captured in the AO.
Low poly AO only
Fast and simple. Captures all the broad occlusion from the mesh's geometry — corners, gaps, recesses. Doesn't capture fine sculpted details like pores, stitching, or engraved text. Right choice for most hard-surface game props.
High poly AO bake
Includes all the micro-occlusion from sculpted features — pores darken, rivets cast shadow, text has depth. Produces richer, more detailed AO. Slower to bake and requires the high-poly source. Right choice for organic characters and detailed hero props.
For most game assets, low-poly AO is the right call. It's fast, requires no extra mesh, and the result is clean and artifact-free. Reserve high-poly AO bakes for assets where fine surface detail genuinely needs to show occlusion — characters, weapons with engraving, and detailed hero props viewed up close.
Using AO in Your Material
A baked AO map is most commonly used in one of two ways in-engine: packed into a texture channel, or connected directly to a material input.
Channel packed — ORM texture
In Unreal and Godot, AO is packed into the Red channel of the ORM texture alongside Roughness (Green) and Metallic (Blue). The engine's standard material reads it automatically from the Ambient Occlusion input slot. This is the most common and most efficient approach.
Standalone AO texture — multiply over albedo
If not using channel packing, connect the AO map directly to the Ambient Occlusion slot in your material (Unreal, Unity, Godot all have one). Alternatively, multiply it over the Albedo in the material graph to darken occluded areas manually. The visual result is the same either way.
Unity HDRP Mask Map — Green channel
Unity HDRP packs AO into the Green channel of the Mask Map texture (alongside Metallic in Red, Detail Mask in Blue, and Smoothness in Alpha). Trumble's Unity export preset handles this packing automatically.
Baking AO in Trumble
Trumble's Bake tool includes AO as a standard pass alongside normal, curvature, height, and thickness maps. Import your mesh, set the ray count and max distance, and run the bake. AO bakes from the low-poly mesh by default — if you want high-poly AO, import both meshes and enable the high-poly source in the bake settings.
After baking, inspect the AO result in isolation. Open, flat areas should be near-white. Tight corners, recesses, and underside surfaces should be dark grey or black. If flat surfaces appear grey or dark, your max ray distance is too high — reduce it and rebake. The AO is automatically packed into the correct channel for your target engine at export time.
AO bakes alongside all other maps in a single pass. No separate bake session required — one run produces normal, AO, curvature, height, and thickness together.
Ray count, max distance, and bias are all configurable before baking. Preview at low quality first, then switch to production settings for the final bake.
AO is packed into the correct channel at export — Red channel of ORM for Unreal and Godot, Green channel of Mask Map for Unity HDRP.