Wind and world position offset
Animating foliage, cloth and props by moving vertices in the material (World Position Offset, or vertex animation), driven by masks, pivots and a wind signal; cheap per object but with costs for shadows, culling and GI.
World Position Offset (WPO) is a material input that moves a mesh's vertices on the GPU every frame. Epic's definition: it "allows a Material to manipulate the vertices of a mesh in world space" and "is often used for subtle, ambient animation" (Unreal Engine Documentation: Material Inputs). Its most common job in environment art is wind: grass bending, branches swaying and leaves fluttering, without skeletons or simulation on the CPU.
For the bigger picture of foliage cost, see foliage and vegetation.
#How a wind shader is built
A wind material combines three things:
- A wind signal. A direction plus a strength that varies over time and space. Ghost of Tsushima's main wind kept a constant direction and varied its strength with time-varying Perlin noise (Game Developer: Using vorticles to simulate wind in Ghost of…).
- A mask. How much each vertex may move: zero at the roots, more towards the tips. It often comes from vertex colours, UV position or height above the pivot.
- A hierarchy. Trunk, branches and leaves move at different speeds around their own pivots.
Unreal's Pivot Painter 2.0 stores the data this needs in textures: each element's pivot location, basis vectors, "Number of Steps From Root", parent index and bounds (Unreal Engine Documentation: Pivot Painter Tool 2.0). Its sample foliage function supports "hierarchies up to 4 levels deep and 30,000 model elements"; in a tree, the first wind setting drives the trunk, the next the branches, and so on (Unreal Engine Documentation: Pivot Painter Tool 2.0). The tool is a 3ds Max script, tested with 3ds Max 2015 and 2016 (Unreal Engine Documentation: Pivot Painter Tool 2.0).
#Costs of vertex animation
Moving vertices in the shader affects every system that assumed they were still.
- Culling and bounds. "The renderer still uses those original bounds", so large offsets can cause "culling and shadowing errors"; raising the mesh's bounds scale fixes it at a performance cost (Unreal Engine Documentation: Material Inputs).
- Cached shadows. In Unreal's shadows and virtual shadow maps, WPO geometry "always invalidates cached pages every frame", because "the actual displacement is not known until the object is rendered" (Unreal Engine Documentation: Virtual Shadow Maps). The World Position Offset Disable Distance property limits how far away WPO is applied (Unreal Engine Documentation: Virtual Shadow Maps).
- Distance field effects. WPO "may cause self-shadowing artifacts" with mesh distance fields, which are baked from the still mesh (Unreal Engine Documentation: Mesh Distance Fields).
- Lumen. Software ray tracing in Lumen does not support WPO (Unreal Engine Documentation: Lumen Technical Details).
- Vertex count. The offset runs for every vertex. Fortnite's Nanite trees had about 300,000 to 500,000 vertices, against 10,000 to 20,000 for the old versions (Unreal Engine Tech Blog: Bringing Nanite to Fortnite Battle Royale in…).
#Common mistakes
- No mask at the base. Trunks slide across the ground.
- Wind on everything, at every distance. Use a disable distance (Unreal Engine Documentation: Virtual Shadow Maps; Unreal Engine Tech Blog: Bringing Nanite to Fortnite Battle Royale in…).
- Large offsets without bounds. Objects pop out of view at screen edges (Unreal Engine Documentation: Material Inputs).
Related: shaders for artists, instancing, vertex painting and blending, the technical artist.
#Further reading and watching
References
- · Material Inputs · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
- · Using vorticles to simulate wind in Ghost of Tsushima · Game Developer, 2021 · article · accessed 2026-10-21
- · Pivot Painter Tool 2.0 · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
- · Blowing from the West: Simulating Wind in 'Ghost of Tsushima' · GDC 2021 (GDC Vault), 2021 · talk · accessed 2026-10-21
- · Advanced Graphics Summit: Procedural Grass in 'Ghost of Tsushima' · GDC 2021 (GDC Vault), 2021 · talk · accessed 2026-10-21
- · Virtual Shadow Maps · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
- · Mesh Distance Fields · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
- · Lumen Technical Details · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
- · Bringing Nanite to Fortnite Battle Royale in Chapter 4 · Unreal Engine Tech Blog, 2023 · article · accessed 2026-10-21
Also consulted
- · Procedural Grass in 'Ghost of Tsushima' · GDC (YouTube), 2021 · video · accessed 2026-10-21
Pages that link here
- Modeling rocks, trees and terrain pieces Topic
- Mesh decals Topic
- Shaders for artists Topic
- Ray tracing Key term
- Mesh distance fields Key term
- Cascaded shadow maps Key term
- Foliage and vegetation Topic
- Virtualised geometry (Nanite) Topic
Last updated 2026-10-22