Skip to content

Glossary

What is a Vertex Animation Texture?

A Vertex Animation Texture — VAT — is motion recorded into a texture instead of computed at runtime. Each frame of an animation is stored as a row of pixels, one per moving thing, and a material reads that texture in the vertex shader to push vertices into position.

The point is cost. Playback needs no skeletal mesh, no simulation, and no per-instance CPU work — a VAT is a static mesh and a material — so the same animation can be drawn hundreds of times for close to the price of drawing it once. That is why VATs are used for crowds, destruction, and effects that appear many times at once.

The trade is that the motion is fixed at bake time. A VAT replays exactly what was captured, every time, which is a limitation for gameplay-reactive motion and an advantage for anything that has to land identically on every take.


The technique

Term Meaning
Bake Recording a simulation or animation into textures. Done once, in the editor. See Baker panel.
Unit The thing a bake stores motion for — a rigid-body piece, a mesh vertex, or a particle, depending on the bake type.
Rest pose The pose every stored movement is measured from. A VAT stores offsets from it, never absolute positions.
Frame One captured moment. Playback interpolates between frames, so the number driving it need not be whole.
Frame Step Storing every Nth frame instead of all of them. Fewer frames, smaller textures, same playback duration.
Seamless loop A bake whose last frame blends back into its first, so a cycle repeats without a hitch. See Auto-trim loop.

What a bake produces

Term Meaning
Data asset The UVATAsset holding everything the material needs — frame count, rate, unit count and the textures. This is what you assign to a decode node.
Playback mesh The static mesh generated by the bake. Place this in the level, not your original.
Position texture Where each unit is on each frame, as an offset from the rest pose.
Normal/tangent texture Surface orientation per frame, so lighting follows the deformation. Soft Body and Fluid bakes.
Rotation texture A rotation per piece per frame. Rigid Body bakes only.
Unit Count How many units a bake stores. Needed when setting up Niagara playback.
Max Displacement The furthest any unit travelled during the bake. The material uses it to decode distances.

In the material

Term Meaning
Decode node The material node that reads a VAT and outputs the movement. One per bake type.
World Position Offset (WPO) Unreal's material output that moves vertices. Every VAT drives it.
Vertex Interpolator A material node forcing evaluation in the vertex shader. Required on every decode node's Normal output.
Frame input The number deciding which frame you see. Drive it from Time, or from the CPU. See Driving playback.
Custom Primitive Data Per-actor float values readable in a material without a material instance. How CPU-driven playback passes the frame number.
Motion vectors What temporal anti-aliasing uses to know where a pixel was last frame. A VAT driven from the CPU needs PrevFrame connected to report them.
Tangent Space Normal A material setting deciding what space the Normal output is in. Each decode node requires a specific value and refuses to compile otherwise.

Sources you can bake from

Term Meaning
Chaos Unreal's physics and destruction system. Rigid Body and Soft Body bakes capture it running in the editor.
Geometry Collection A Chaos fracture asset. One source for a Rigid Body bake.
Geometry Cache An imported Alembic (.abc) cache. Sampled straight from the asset, with no play session. See Importing an Alembic cache.
Alembic An interchange format for baked geometry, exported from Houdini, Blender, Maya and others.
Niagara Unreal's effects system. The source for a Particle bake, and how particle VATs play back.
Persistent IDs A Niagara setting giving each particle an identity that survives between frames. Required for a Particle bake.

Playback options

Term Meaning
Instanced (ISM) A Rigid Body bake where every piece shares one mesh, drawn GPU-instanced.
Nanite Unreal's virtualised geometry. Must be chosen at bake time — it cannot be enabled on a baked mesh afterwards.
LODs Reduced-detail versions of the playback mesh. Generate them in the baker; the engine's own simplifier corrupts a baked mesh.
Texture precision How many bits each stored value gets — 24, 64 or 128. Higher is more accurate and larger.