Ambient Occlusion
Ambient Occlusion derives the soft contact shading a surface implies from its own height: mortar lines darkening between bricks, the ground beside a raised rivet, the inside of every scratch and pore. Wire a height map into the Height input, or a whole texture set into the Texture input so the node reads the set’s Height, and take the AO output into a Texture node, an export, or a 3D Render. A connected texture set comes back whole, with its Ambient Occlusion map filled in.
A height map is a solid
Section titled “A height map is a solid”The node reads a height map as a solid surface seen from above and measures how much open sky each point can see. A flat, open face sees everything and comes back white; the bottom of a crevice sees a sliver and comes back dark. The result follows from the shape of the height map alone.
- Nothing is measured from the picture. No control stretches the result to fit the brightest or darkest pixel, so one extreme pixel never rescales a map, and two tiles of one material shade the same way.
- A cutout is a real hole. Where the surface is transparent (an image’s alpha, or a texture set’s Opacity), nothing stands there to cast shade, and the transparent point itself comes back white. A decal sheet is shaded as the pieces it has, not as a sheet with invisible walls around every piece.
Radius and Height Depth
Section titled “Radius and Height Depth”Set these two first; they decide the whole look.
- Radius is how far the search reaches, as a percentage of the image’s shorter side (default 5%) or in exact pixels, chosen by Radius Unit. Percent keeps the same reach if you resize the material later. Small values pick out fine detail quickly; large values shade broad cavities and take longer. Zero returns pure white.
- Height Depth says how tall the height map is: a height difference of 1 stands this many percent of the shorter side out of the surface (default 1%). Raising it deepens every crevice in proportion; lowering it flattens the surface toward white.
Reach for Height Depth when the map reads too flat or too gouged, and for Radius when the shading is at the wrong scale.
Quality
Section titled “Quality”Quality is how many directions the search looks in: Draft 8, Standard 16 (the default, right for most maps), or High 32. More directions means smoother shading, not different shading.
Edge Mode
Section titled “Edge Mode”Edge Mode says what lies outside the map.
- Repeat, the default, tiles it, so a brick at the left edge shades the mortar that reappears at the right. Use it for a tiling material.
- Open puts nothing outside, for a single non-tiling image such as a photographed panel or a decal sheet, where tiling would invent shade along the edges.
- Clamp extends the border pixels outward.
Strength and Existing AO
Section titled “Strength and Existing AO”Strength regrades the finished map: 1 leaves it alone, higher darkens, lower lifts, and 0 is pure white. It is a finishing control, not a substitute for Height Depth, which changes the surface being measured.
Existing AO decides what happens to an occlusion map that is already there, taken from the Existing AO input first and the connected set’s own Ambient Occlusion map second.
- Replace (default) publishes only the occlusion generated here, so two of these nodes in a row never quietly compound.
- Multiply multiplies the generated occlusion into the existing one. Use it on a map baked from a mesh: the bake keeps the large shapes only a real mesh knows about, and this node adds the fine detail from the height map. The node tells you when there is no existing map to multiply into.
Getting a height map into it
Section titled “Getting a height map into it”Three routes cover nearly everything.
- A normal-only asset. Many assets ship a normal map and no height. Wire the normal map into Normal to Height and its Height output into this node’s Height input. At its default Range of Normalized, Normal to Height states the matching depth in its Parameters panel, under its Range row, for example “To match this normal map, set Height Depth to 3.8% on the node that reads this height”; copy that number into Height Depth here. To type nothing, set Normal to Height’s Range to Midgray, which publishes at the depth this node’s default already reads.
- A known height plus painted detail. Combine the two heights in a Height Layer before this node rather than shading them separately. Occlusion is a property of one surface; two occlusion maps added together read wrong where the shapes cross.
- A baked map you want to keep. Wire the baked occlusion into Existing AO, or leave it in the connected texture set, and set Existing AO to Multiply.
Over a texture set
Section titled “Over a texture set”A set on the Texture input comes back with its Ambient Occlusion map replaced, or inserted when it had none. Every other map is untouched, and the set’s Opacity decides where the surface is. The node body draws the occlusion map rather than Base Color, and selecting the node opens the Preview on that map. The AO output carries the same map on its own.
A map on the Height input overrides the set’s Height for generating the occlusion only; the returned set keeps its own Height map.
A library (a batch of sets) goes through one set at a time, keeping order and names. The node never resizes: a height map that does not match the set’s size is an error naming the mismatch.
What it does not do
Section titled “What it does not do”- Bake occlusion from a mesh. A height map is a surface seen from above. Occlusion between separate pieces of real geometry is a mesh baker’s job.
- Guess the depth for you. Nothing scales from image content.
- Smooth the input. Put a Blur ahead of it if the height map is noisy.
- Cast a shadow from a light. Occlusion is ambient shading. For shadows from a light you place yourself, use Relight or 3D Render.
Parameters
Section titled “Parameters”Pins
Occlusion
How Radius is measured.
- Percent: percent of the shorter side, so one number means the same reach on any size of map.
- Pixels: an exact reach in pixels.
How far the occlusion search reaches, as a percentage of the shorter side of the map. Small values pick out fine detail; large values shade broad cavities and cook slower. 0 = pure white
How far the occlusion search reaches, in pixels. Small values pick out fine detail; large values shade broad cavities and cook slower. 0 = pure white
How tall the height map really is: a height difference of 1 stands this many percent of the shorter side out of the surface. Raising it deepens every crevice
How many directions the search looks in.
- Draft: 8 directions. Fastest, for working.
- Standard: 16 directions.
- High: 32 directions. Smoothest and slowest.
What lies outside the map.
- Repeat: the map tiles, so occlusion carries across the seam. Use it for a tiling material.
- Clamp: the border pixels extend outward.
- Open: nothing outside, so nothing beyond the border casts occlusion.
Output
Deepens or lifts the finished occlusion. Higher values darken it, lower values lift it. 1 = unchanged, 0 = pure white
What to do with an ambient occlusion map that is already there.
- Replace: publish only the occlusion generated here.
- Multiply: multiply it into the existing map, so a baked map keeps its large shapes and this node adds the fine detail.
Usage Tips
Section titled “Usage Tips”- A signed height map, or one with values above 1, is valid input. Occlusion depends on height differences, so adding a constant to the whole map changes nothing.
- A height saved as an RGB file is read from its red channel, so it needs no conversion.
- Work in 32-bit (Float) Mode, the default for new projects. The node works in an 8-bit document too, but a deep height map has far fewer steps there.
- Search the node library for “ambient occlusion”, “AO”, “occlusion”, “cavity”, or “contact shadow”.