For the complete documentation index, see llms.txt. This page is also available as Markdown.

SpeedTree Wind

Configure and diagnose SpeedTree wind for Flora-rendered trees.

Flora automatically animates compatible SpeedTree render prototypes. It creates hidden, non-rendering proxies, lets Unity evaluate their wind, and copies the current and previous wind parameters into Flora's BatchRendererGroup bindings.

No Flora material override, build-time wind asset list, or separate wind simulation is required.

Requirements

A compatible render source must have:

  • A Unity Tree component that reports SpeedTree wind and has a valid wind asset.

  • An enabled wind renderer owned by an LODGroup beneath the render source.

  • A DOTS-instanced SpeedTree material. Custom shaders must consume Unity's current DOTS_ST_WindParam* and history DOTS_ST_WindHistoryParam* properties.

All wind-enabled renderers in one render source must belong to the same LODGroup and use compatible wind data. Split renderers into separate render prototypes when they use different wind assets, geometry, bounds, or LODGroups.

Flora applies this support to Terrain trees, scene-backed Instance Renderers, Instance Containers, and instances created through the runtime API.

Sampling modes

A wind proxy has a world position. This position matters when a WindZone produces position-dependent wind.

Mode
Sampling position
Use when

Per Prototype

World origin

Wind is global or directional and maximum batching is the priority. This is the default.

Per Terrain

Center of each Terrain

Terrain trees need different samples across position-dependent wind.

Per Instance

The Instance Renderer's wind anchor, or its transform when no anchor is assigned

Individual scene-backed trees need position-dependent wind.

More sampling scopes create more hidden proxies, render-prototype variants, BatchRendererGroup bindings, and wind parameter uploads. Prefer Per Prototype unless the scene depends on position-dependent wind.

Performance: Use Per Instance only for a limited number of scene-backed trees that require position-dependent wind. Every Instance Renderer in this mode creates a separate hidden wind proxy and rendering binding, which reduces batching and adds GameObject, Unity wind-evaluation, memory, and upload overhead. For forests or repeated vegetation, prefer Per Prototype.

Instance Containers and instances created directly through the runtime API use shared per-prototype sampling at the world origin. They do not currently expose a per-container or per-instance sampling override.

Terrain trees

Open the Scene Settings and select Global > Terrain Foliage > Trees > Terrain Wind Proxies:

  • Per Prototype shares wind between matching tree render prototypes.

  • Per Terrain samples separately at the center of each Terrain. All instances of a matching tree prototype on that Terrain share its terrain-positioned sample.

Terrain trees do not create per-tree wind proxies. With Per Terrain, proxy and binding cost scales with the number of distinct wind prototypes on each Terrain.

Changing this setting refreshes tracked terrain foliage automatically.

Scene-backed instances

Use Scene Settings > Global > SpeedTree Wind > Scene Wind Proxies to set the default for scene-backed FloraInstanceRenderer components:

  • Per Prototype shares wind between matching render prototypes.

  • Per Instance samples wind at each Instance Renderer.

An individual Instance Renderer can choose Use Scene Settings, Per Prototype, or Per Instance. When using Per Instance, assign Proxy Anchor to sample at another transform; leave it unassigned to use the component's transform.

Runtime changes refresh the affected registrations. Moving a Terrain, Instance Renderer, or assigned proxy anchor also moves its positioned proxy.

Diagnose wind support

Open the Rendering Inspector, select a render prototype, and check SpeedTree Wind LODs. Each LOD also reports SpeedTree Wind: Supported or Not present.

If Flora does not enable wind:

  1. Confirm the imported source has a Tree component with wind and a valid wind asset.

  2. Confirm the wind renderer is enabled and belongs to an LODGroup beneath the registered render source.

  3. Confirm every wind-enabled LOD uses compatible wind data and the same owning LODGroup.

  4. Confirm every material supports DOTS instancing.

Flora logs a warning and disables wind when it finds a wind renderer without an owning LODGroup. Incompatible wind renderers in one render source produce an error that identifies the affected LODs and renderers.

Last updated