The 3D Handbook
Topic

Foliage and vegetation

How games build and draw trees, bushes and grass; alpha cards versus modelled leaves, instancing, culling and billboards in Unreal, Unity and Godot, the costs of wind animation, and what Fortnite, Ghost of Tsushima and Horizon Zero Dawn did.

foliagevegetationenvironment-artoptimisationinstancing

Foliage is the umbrella term for the plants in a game world: trees, bushes, grass, flowers and ground cover. It is one of the more difficult parts of a scene to optimise. A forest means thousands of copies of a few assets, leaves full of holes and gaps, and wind moving everything at once. Epic's documentation notes: "High densities of foliage can cause performance issues" (Unreal Engine Documentation: Foliage Mode).

Good vegetation work is half art (shape, colour, believable growth) and half technical discipline (how many, how far, how expensive). This page is about the second half and how it shapes the first. For placing plants by rules instead of by hand, see procedural placement and scattering; for the ground they grow on, see terrain and landscapes; for tree-generating software, see vegetation and procedural tools.

#Layers of vegetation

Think of vegetation in layers, because each one is built and drawn differently.

Layer Typical examples How it is usually drawn
Hero trees The oak by the quest giver Full-detail mesh, close LODs, placed by hand
Forest trees Thousands of pines Instanced meshes, LODs, impostors and billboards far away
Bushes and shrubs Undergrowth Instanced meshes, short cull distance
Grass and ground cover Grass, ferns, flowers Instanced or GPU-generated, culled within tens of metres
Debris Twigs, leaves, pebbles Decals or tiny instances, very short cull distance

#Cards and modelled geometry

Classic game foliage uses cards: flat quads textured with a photo or bake of leaves, with an alpha mask cutting out the leaf shapes. Cards are cheap in triangles but expensive in pixels, because the transparent parts of the quad still cost shading and overdraw (Unreal Engine tech blog: Bringing Nanite to Fortnite Battle Royale in…). Overlapping cards in a bush shade the same screen pixels many times. See opacity, masked and translucent materials and overdraw.

Three panels. A single quad card with three leaf shapes on a grey background, labelled as shading every grey pixel. Four overlapping translucent quads with the shared overlap highlighted as shaded four times. A cluster of small modelled leaf polygons with no empty space.
Cards save triangles but waste pixels; modelled leaves cost triangles but no empty pixels. Which is cheaper depends on the renderer.Diagram by the handbook author

Nanite changes this balance. On Fortnite, Epic found that "masked materials in Nanite incur a significant cost during base pass shading" and that "negative space in the alpha maps adds additional overdraw cost", so "it was usually faster to avoid masked materials and instead rely on increasing triangle counts of the mesh" (Unreal Engine tech blog: Bringing Nanite to Fortnite Battle Royale in…). Its Nanite trees had about 300,000 to 500,000 vertices, against 10,000 to 20,000 for the non-Nanite versions (Unreal Engine tech blog: Bringing Nanite to Fortnite Battle Royale in…). See virtualised geometry.

Simplification has a side effect on leaves: Fortnite's trees "would lose their canopies in the distance". Epic's fix, Preserve Area, spreads the lost area over the remaining triangles, and Epic advises enabling it only on foliage that shows the problem (Unreal Engine tech blog: Bringing Nanite to Fortnite Battle Royale in…).

The greyscale split into a seasonal colour channel and a damage and detail channel, so a single texture can be recoloured for every season.Théophile Lebeau, via ArtStation

#Instancing and culling

Foliage depends on instancing: drawing many copies of one mesh in a single call.

#Costs of wind animation

Most foliage moves with World Position Offset (WPO), a material that shifts vertices every frame. It affects almost every other system.

The same approach works in any engine: animate what the player is close to, and freeze or simplify the rest.

#Lighting foliage

Foliage is thin, layered and full of holes, which confuses lighting systems built for solid walls.

#In different engines and tools

Unreal Engine 5 Unity 6 Godot 4
Placement Foliage Mode: Paint, Erase, Fill, Lasso, Single (Unreal Engine Documentation); PCG (see procedural placement and scattering) Terrain trees and details (Unity Manual) MultiMesh (Godot Engine documentation); Terrain3D foliage instancing (GitHub)
Distance control End and Start Cull Distance (Unreal Engine Documentation) Tree Distance, Billboard Start, Detail Distance (Unity Manual) Per MultiMesh, all or nothing (Godot Engine documentation); Terrain3D LODs (GitHub)
Far trees Nanite or LODs and impostors Billboards (Unity Manual) Impostors (Terrain3D shadow impostor) (GitHub)
Scalability foliage.DensityScale (Unreal Engine Documentation) Detail Density Scale (Unity Manual) Chunking by hand

Tree generators such as SpeedTree, The Grove and Unreal's Procedural Vegetation Editor are compared in vegetation and procedural tools.

#Common mistakes

#Further reading and watching

Shows the shape of a modern foliage pipeline (kit, bark texture, engine, portfolio shot) as taught by Jared Sobotta. Watch on YouTube

References

  1. Epic Games · Foliage Mode · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
  2. Epic Games · Bringing Nanite to Fortnite Battle Royale in Chapter 4 · Unreal Engine tech blog · article · accessed 2026-10-21
  3. Unity Technologies · Terrain settings reference · Unity Manual, 2026 · docs · accessed 2026-10-21
  4. Cory Petkovsek, Roope Palmroos and contributors · Terrain3D (README) · GitHub, 2026 · tool · accessed 2026-10-21
  5. Théophile Lebeau · Assassin's Creed Shadows : Foliage · ArtStation · web · accessed 2026-10-21
  6. Godot Engine contributors · Optimization using MultiMeshes · Godot Engine documentation (source on GitHub), 2026 · docs · accessed 2026-10-21
  7. Eric Wohllaib (Sucker Punch Productions) · Advanced Graphics Summit: Procedural Grass in 'Ghost of Tsushima' · GDC 2021, 2021 · talk · accessed 2026-10-21
  8. Epic Games · Virtual Shadow Maps · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
  9. Epic Games · Lumen Technical Details · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
  10. Epic Games · Lumen brings real-time global illumination to Fortnite Battle Royale Chapter 4 · Unreal Engine tech blog, 2022 · article · accessed 2026-10-21
  11. 80 Level · The Procedural Nature of the Horizon Zero Dawn · 80 Level, 2017 · article · accessed 2026-10-21
  12. Dekogon Studios · Artstation Learning - Environment Production in UE5 · ArtStation · web · accessed 2026-10-21
  13. CGMA | CG Master Academy · Vegetation and Plants for Games With Jared Sobotta · YouTube, 2022 · video · accessed 2026-10-21

Last updated 2026-10-22