> For the complete documentation index, see [llms.txt](https://flora.magneticarcade.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://flora.magneticarcade.com/scripts/scene-settings.md).

# Scene Settings

Provides scene-wide configuration settings.

The **Scene Settings** singleton controls Flora rendering and terrain foliage for one scene. Create or select it from **GameObject > Flora > Scene Settings**.

## Inspector

<figure><img src="https://2882982566-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fyo4B7EVXffipTxnJzee6%2Fuploads%2Fgit-blob-23f457a42d9ad7d3b58390d0fb681f5d10714780%2Fscene-settings-6-4-5.webp?alt=media" alt="Flora Scene Settings Global tab with terrain foliage and SpeedTree wind controls"><figcaption><p>Scene Settings in Container Prefab Sample.</p></figcaption></figure>

* **Global** - terrain registration, foliage, detail streaming, and SpeedTree wind sampling.
* **Stats** - live CPU culling, GPU culling, and graphics-buffer data.
* **Rendering Inspector** - opens [Rendering Inspector](/rendering/rendering-inspector.md).
* **Rendering Debugger** - opens [Debugging](/rendering/debugging.md).
* **Flora Graphics Settings** - opens project-wide Runtime Settings.
* **Add Render Settings Volume** - adds a global Volume with `FloraRenderSettings`.

The **Stats** tab collects data only while visible. [Static Spatial Caching](/rendering/static-spatial-caching.md) adds cache status and rebuild controls.

## Properties

### `EnableRendering`

Master toggle for Flora rendering.

### `EnableTerrainFoliage`

Enables Flora rendering for Terrains with an active Terrain Provider. Disabling it returns foliage rendering to Unity.

### `AutoRegisterTerrains`

Adds a Terrain Provider to active Terrains in this scene. Disabled providers remain opted out. Turning this setting off does not remove existing providers.

### `AllowedTreeFeatures`

Limits optional tree data inherited from prototypes. Defaults to `Everything`. A Terrain's explicit **Tree Motion Vectors** mode takes precedence.

### `TerrainSpeedTreeWindProxyMode`

Controls where Flora samples [SpeedTree wind](/rendering/speedtree-wind.md) for Terrain trees:

* `PerPrototype` shares one sample between matching render prototypes and samples position-dependent wind at the world origin. This is the default and preserves the most batching.
* `PerTerrain` samples separately at the center of each Terrain.

### `SceneSpeedTreeWindProxyMode`

Controls the default SpeedTree wind sampling policy for scene-backed `FloraInstanceRenderer` components:

* `PerPrototype` shares one sample between matching render prototypes and samples position-dependent wind at the world origin. This is the default.
* `PerInstance` samples separately at each Instance Renderer or its assigned proxy anchor. Every renderer using it creates a separate proxy and rendering binding, reducing batching; reserve it for a limited number of trees that require position-dependent wind.

An individual [Instance Renderer](/scripts/instance-renderer.md) can override this setting.

### `AllowedDetailFeatures`

Limits optional data for GPU-generated details. Defaults to `None`. Random ID is supported; Variation Color is not.

### `GlobalDetailDensity`

Multiplies detail density across every Terrain. Defaults to `1`; `0` removes all details. Layers using local density apply `GlobalDetailDensity * localDetailDensity`.

### `DetailUnloadHysteresisSeconds`

Seconds to retain details after they leave range. Defaults to `0.5`; higher values reduce reload churn but retain GPU data longer.

Terrain details stream automatically and have no instance handles. Use [terrain-detail queries](/scripts/terrain-provider.md#query-nearby-detail-prototypes) to inspect nearby populations.

## Runtime values

Apply runtime values through Scene Settings and its global Volume component:

```csharp
var sceneSettings = FloraSceneSettings.GetOrCreate();
sceneSettings.GlobalDetailDensity = userDetailDensity;
sceneSettings.TerrainSpeedTreeWindProxyMode = FloraTerrainSpeedTreeWindProxyMode.PerTerrain;
sceneSettings.SceneSpeedTreeWindProxyMode = FloraSceneSpeedTreeWindProxyMode.PerInstance;

var render = sceneSettings.GetGlobalRenderSettings();
render.MaxRenderDistance.Override(userRenderDistance);
render.RangeDensityMode.Override(FloraDensityMode.RenderersOnly);
render.RangeDensity.Override(userDensity);
```

Use `Override(...)`; assigning `.value` does not enable the override.

For removed scene-level feature gates and culling-pipeline fields, see [Upgrade from 6.3.35](/getting-started/upgrading-from-6-3-35.md).
