Ambient occlusion

Soft darkening in corners, creases, and contact points that makes separate 3D surfaces feel grounded together.

soft shadows in the cornersdark creases where objects touchwhy do my 3D objects look like they are floatinglittle contact shadowswhy does my render look flat and fakecorner shadow effectambent occlusionao map

See it

Live demo coming soon

What it is

Ambient occlusion darkens places where surrounding surfaces block the soft light arriving from the environment: corners, cracks, and the contact patch under an object. It is an approximation of indirect lighting, not a replacement for the cast shadow from a lamp or the sun. That small distinction is what makes a cup feel planted on a table instead of hovering a millimeter above it.

Use a baked AO texture for a static asset, or screen-space ambient occlusion (SSAO), the trick Crytek shipped in Crysis in 2007, when objects move and the effect has to update every frame. Keep it tight and quiet. The useful part lives where surfaces nearly meet, not as a grey wash over the whole model.

Gotcha: strong AO looks like dirt painted into every seam. SSAO has another limitation: it only knows the depth and normals currently visible to the camera, so thin objects can grow halos and off-screen geometry cannot contribute.

Ask AI for it

Add subtle ambient occlusion to this three.js scene with EffectComposer: run RenderPass first, then SSAOPass using the scene and camera. Keep the sample radius tight enough to darken only creases and contact points, tune kernelRadius, minDistance, and maxDistance to avoid halos, and leave renderer.shadowMap enabled for directional cast shadows. Do not let AO grey out exposed faces.

You might have meant

bakingdepth buffer z buffernormal mappost processing render passshadow mapping shadow acne peter panning