# `StageSettings.ambientOcclusion`

> Contract 2.0.0 · package sha256 `a857eca95b35921109faf997094bb4192f12527d9d0fcd4be7e97f06425bad6e` · generated from `configurator-runtime.d.ts` by `services/onsite-scripter/scripts/build-contract-docs.mjs`; edit the source, not this file.

Property of [`StageSettings`](StageSettings.md) · stable · since 2.0.0 · called as `session.document.stage.ambientOcclusion`

```ts
ambientOcclusion?: boolean | {
  radius?: number | 'auto';
  strength?: number;
};
```

`radius`: metres, or 'auto' from role 'product' bounds. Turning it on from a layer (true or an
object) draws on the page's post-processing chain. A page document that sets
`stage.ambientOcclusion` or `stage.bloom` (false included) gives the page one; on a page
without one the runtime makes it for the change that first turns AO or bloom on, and the page
draws as before until then. The fake commits the same writes.

**Default:** the document's

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `ambientOcclusion` names no product |
| 2. A precedent | pass: [Babylon.js SSAO2RenderingPipeline.radius](https://github.com/BabylonJS/Babylon.js/blob/master/packages/dev/core/src/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.ts) (row `E5`) |
| 3. Two apps, or labs | one app recorded: app-b362a81c85 (spec 3.1 rule 3 asks for two, or labs) |
| 4. The cheaper fix first | decided per need in Appendix B: rows `E5`, `K32` at tier stable (a member only where no rule, data, asset or app code serves the need) |
