A collage featuring four digital art pieces on a blue background: a crowd of blue figures, a texture graph, a 3D figure running on a surface, a grassy terrain with a blue sphere, and a textured white sheet with a patterned edge.

OpenVAT Adds VAT Encoding to Blender—Real-Time Asset Ready

OpenVAT encodes animated Blender geometry into VATs with normals, PNG/EXR output and real‑time engine support for Unity, Unreal, and Godot.

Luke Stilson, known as sharpened, has released OpenVAT, a Blender add‑on that encodes vertex animation textures (VATs) directly from animated geometry via Geometry Nodes. VATs store per‑frame vertex positions—and optionally normals—in textures for real‑time playback in game engines.

What Are VATs?

Vertex Animation Textures (VATs) are a technique for encoding the animation of 3D mesh geometry directly into 2D image textures. In a typical VAT workflow, every vertex’s position for each animation frame is packed into a texture, with the red, green, and blue channels usually representing the X, Y, and Z coordinates. At runtime, a custom shader reads the texture and moves each vertex to its stored position for the current frame—completely on the GPU. This approach bypasses traditional CPU-based animation systems, enabling high-efficiency playback even for scenes with complex geometry or dense vertex counts.

VATs are particularly valuable in real-time engines like Unity, Unreal Engine, or Godot, where conventional skeletal or rig-based animation can be too heavy, or simply not applicable—such as with fluid simulations, procedural destruction, or crowds, where vertex movement doesn’t follow bones. By storing both position and, optionally, normal vectors in textures, VATs allow highly detailed, non-rigged animations to play back smoothly in real time, using only shaders. This workflow does require custom export tools and compatible shaders for interpretation, so it’s best suited to technical artists and studios familiar with shader-based animation pipelines.

VAT Export for Real‑Time Engines

OpenVAT supports exporting VATs for Unity, Unreal Engine, and Godot. It offers both packed normals (combined position + normal maps) and separate normal textures. Frame‑based capture from Geometry Nodes is supported, with arbitrary attribute encoding via custom RGB plus optional scalar channels.

Output Formats & Workflow

Output formats include high‑quality 16‑bit PNG or half‑float EXR, and mesh exports in FBX or glTF/.glb. Users can auto‑generate a preview scene inside Blender and select whether transforms are baked in world or object space. A proxy “bind pose” object is used to calculate deltas.

Engine Integrations

Unity users can install the OpenVAT Unity package, point to the VAT folder, and use the custom panel under Tools > OpenVAT. For Unreal Engine 5, the add-on works in non‑forward rendering mode, but requires RGB16 compression, proper edge‑splitting on mesh, and a drop‑in of the VAT tools into the project Content. Godot support is provided via starter scripts, though manual assignment of min/max metadata to shaders is necessary.

Recent Updates & User Feedback

Version 1.0.3, released April 29, 2025, added EXR export, custom frame‐range, world/object space selection, GLTF export, attribute stripping, collection combining, and edge splitting for normal safety. Users on Blender Extensions report smooth texture usage and active development.

Utility & Production Notes

OpenVAT is aimed at technical artists, shader developers, and studios wanting to bake procedural, simulation, or destruction animation into VATs for engine playback. It can reduce reliance on heavy Alembic caches and enable shader-driven VFX. However, as always: test new tools in your own pipeline before using in live production environments—especially for stability with normals and world‑space outputs.

OpenVAT is free, GPL‑licensed, and available on Blender Extensions and GitHub.



// OpenVAT on Blender Extensions
// OpenVAT on Github