The 3D Handbook
Key term

Vertex animation textures (VAT)

Baking a simulation or animation into textures that a vertex shader plays back on a static mesh; how Houdini's Labs VAT and Blender's OpenVAT export them, how Unreal and Unity play them back, and what they are used for.

animationshadershoudiniblenderoptimisationvfx

A vertex animation texture (VAT) stores an animation or simulation as pixels: each pixel holds where one vertex should be in one frame, and a vertex shader reads those pixels to move a static mesh. SideFX describes its VAT exporter as a tool for "complex real-time effects" such as soft-body deformation, rigid-body dynamics, remeshed fluids and particle sprites (Houdini documentation: Labs Vertex Animation Textures 3.0 render node).

Because the motion lives in textures and the shader, the engine treats the mesh as static. SideFX notes this gives a lighter CPU cost than skeletal animation (Houdini documentation: Labs Vertex Animation Textures 3.0 render node), and Pingle Studio's head of technical art puts it as "for the CPU, such geometry is perceived as completely static" (Pingle Studio blog: How to Breathe Life into Your Game Characters…).

#How the data is laid out

The exporter writes the mesh once and one or more textures beside it. In the simplest layout, every vertex gets a column and every frame a row; the pixel colour stores the vertex position as RGB. Blender's OpenVAT add-on writes positions (and optionally normals) into image pixels frame by frame and saves a JSON file with "min/max per channel for accurate reconstruction", because colour values must be remapped back into real positions (Blender Extensions: OpenVAT).

Left, a small flag-like mesh of eight numbered vertices with vertex 5 highlighted in orange. Right, an 8 by 6 pixel grid labelled position texture; columns are vertex indices 0 to 7, rows are frames 0 to 5. Column 5 is outlined in orange and the pixel at column 5, frame 2 is filled orange.
One column per vertex, one row per frame. The shader looks up its own column (stored in an extra UV channel) and the row for the current time.Diagram by the handbook author

Houdini's Labs VAT 3.0 node offers four modes, each with different textures (Houdini documentation: Labs Vertex Animation Textures 3.0 render node):

Mode Use Main textures
Soft-Body Deformation Same topology every frame: cloth, flags, squash and stretch Position, Rotation (normals and tangents)
Rigid-Body Dynamics Packed pieces: destruction, falling debris Position and rotation per piece
Dynamic Remeshing (Fluid) Topology changes per frame: liquids Position, Rotation, plus a Lookup Table
Particle Sprites Points rendered as cards Position and colour

Precision matters. SideFX recommends HDR textures "if your performance budget can afford it", and offers to split positions across two 8-bit textures when an engine lacks 16- or 32-bit support (Houdini documentation: Labs Vertex Animation Textures 3.0 render node). OpenVAT exports "16-bit PNG or EXR (half-float)" (Blender Extensions: OpenVAT).

#What VATs are used for

Part of Isaac Oster's editor tool. This section calls the AnimToTexture plugin to bake each animation into textures; earlier sections create the static mesh and material instance it plays on.Isaac Oster, via ArtStation
Each Niagara particle is one zombie. Notice that the HLSL picks which baked animation to play, so variety comes from data rather than from extra skeletal meshes.Isaac Oster, via ArtStation

#How to make one

Houdini (Labs VAT 3.0) to Unreal or Unity

  1. Build or simulate the effect, for example an RBD fracture of a wall, and cache it.
  2. Add a Labs Vertex Animation Textures ROP. Set Mode (Rigid for the wall), Target Engine, the Start/End frames and the input geometry, and check the Input tab requirements for that mode (Houdini documentation: Labs Vertex Animation Textures 3.0 render node).
  3. Choose texture format: HDR if the budget allows; for rigid bodies, SideFX recommends Very High pivot accuracy (Houdini documentation: Labs Vertex Animation Textures 3.0 render node).
  4. Set the export path and asset name and press Render All. In Fluid mode, render the First Pass, then switch to Second Pass and render again (Houdini documentation: Labs Vertex Animation Textures 3.0 render node).
  5. Import the mesh and textures into the engine and use the matching shaders from the node's Real-Time Shaders section or its "Unreal Engine Plugin and Guides" button (Houdini documentation: Labs Vertex Animation Textures 3.0 render node; SideFX tutorials: Vertex Animation Textures in Unreal). SideFX's Soft-Body mode needs only "a single FBX file, a single material, and a single set of textures" (80 Level: A Complete Guide on SideFX's Vertex Animation…).
  6. Scrub the material's time or frame parameter and compare against the Houdini playback. Users on SideFX's tutorial page report fixing flicker in UE5 by enabling full-precision UVs on the static mesh and disabling Nanite for it (SideFX tutorials: Vertex Animation Textures in Unreal); treat this as community advice.

Blender (OpenVAT)

  1. Install OpenVAT (Blender 4.2 LTS or newer) from Preferences (Blender Extensions: OpenVAT).
  2. Select the animated mesh or collection and choose an encoding type, frame range, normal packing and output formats (Blender Extensions: OpenVAT).
  3. Click Encode Vertex Animation Texture; a preview object appears that you can scrub to check the result (Blender Extensions: OpenVAT).
  4. In Unity, install the OpenVAT package and use Tools > OpenVAT to set up materials and prefabs; set texture compression to RGB 16 or Automatic and match the max size to the exported dimensions (Blender Extensions: OpenVAT).
  5. In Unreal 5, import the textures with RGB16 compression; OpenVAT says it works best with forward rendering and that lit materials may show lighting issues without it (Blender Extensions: OpenVAT).

#Video tutorials

#Use in recent games

#In different tools

Related: shaders for artists · instancing · wind and world position offset · channel packing · bit depth and banding · the technical artist

#Further reading and watching

References

  1. SideFX · Labs Vertex Animation Textures 3.0 render node · Houdini documentation · docs · accessed 2026-10-22
  2. Ruslan Cherevychnyi (Pingle Studio) · How to Breathe Life into Your Game Characters Using Vertex Animation Technology · Pingle Studio blog, 2023 · article · accessed 2026-10-22
  3. OpenVAT contributors · OpenVAT · Blender Extensions · tool · accessed 2026-10-22
  4. Mohamad Salame (SuperNatural Studios) · Vertex Animation Textures for Crowds · SideFX talks · talk · accessed 2026-10-22
  5. Isaac Oster · Zombie Horde with Vertex Animated Textures and HLSL in Niagara · ArtStation, 2025 · web · accessed 2026-10-22
  6. Simon Verstraete (SideFX) · Vertex Animation Textures in Unreal · SideFX tutorials, 2021 · course · accessed 2026-10-22
  7. Theodore McKenzie · A Complete Guide on SideFX's Vertex Animation Textures Tool · 80 Level, 2021 · article · accessed 2026-10-22
  8. CG-SCHOOL · VAT - Unreal Engine 5. Vertex Animation Texture Workflow with native AnimToTexture Plugin. Tutorial · YouTube · video · accessed 2026-10-22

Last updated 2026-10-22