What are Vertex Colors and When Should You Use Them?
Vertex colors are one of those techniques beginners overlook but professionals use constantly. They're stored directly in the mesh — not in a texture file — and can drive material blending, wind simulation, damage states, and much more, all without any UV layout required.
What are Vertex Colors?
Vertex colors are RGBA color values stored directly on the vertices of a 3D mesh. Unlike textures — which are separate image files sampled via UV coordinates — vertex color data lives inside the mesh file itself. Every vertex can carry a different color value, and the GPU interpolates smoothly between them across each polygon face.
The resolution of vertex colors is limited by vertex count. A mesh with 2,000 vertices can store 2,000 unique color values. This makes them inherently lower resolution than a 2048×2048 texture, but they have significant advantages in specific situations — particularly for effects that need to change at runtime or for assets where setting up UVs would be impractical.
The Four RGBA Channels
Because vertex colors store four independent channels per vertex, a single vertex color pass can carry four completely different pieces of data at once. This is how studios get so much utility from one lightweight system.
Often used for material blend masks, damage states, or heat/fire intensity.
Commonly drives wind/foliage sway, wetness masks, or a second material layer.
Often used for snow accumulation, a third blend layer, or ambient occlusion.
Commonly drives opacity masks, dirt accumulation, or a fourth data channel.
These are conventions, not rules — you can assign any data to any channel. What matters is that your shader reads each channel and knows what to do with it. Document your channel assignments clearly, especially on a team, so everyone knows which channel drives which effect.
Vertex Colors vs Textures
Vertex colors and textures are complementary tools — not competing ones. Understanding what each does well helps you decide which to reach for.
| Property | Vertex Colors | Textures |
|---|---|---|
| Resolution | Limited by vertex count — low resolution on sparse meshes | Up to 4096×4096 or higher — very high resolution |
| UV required? | No — data attaches directly to verts | Yes — mesh must be UV unwrapped |
| Memory cost | Very low — stored in mesh data, not VRAM | Higher — loaded into GPU texture memory |
| Editable at runtime? | Yes in some engines — can be modified during play | Generally not — requires render targets |
| Best for | Broad masks, data-driven effects, blending zones, wind | Fine surface detail, patterns, albedo color, normal maps |
| Works without UVs? | Yes | No |
The most effective assets often use both together. Vertex colors handle the broad, dynamic, data-driven layer. Textures handle the fine visual detail on top. Neither replaces the other.
Common Use Cases
Here are the situations where game artists reach for vertex colors most frequently.
Paint which areas of a stone wall show moss, dirt, or bare rock. The vertex color mask drives a lerp between materials in the shader — smooth transitions with no UV seams.
Alpha channel drives how much wind affects each vertex. Roots and trunks = 0 (no movement). Leaf tips = 1 (full sway). One channel, realistic wind simulation.
Red channel drives a burn or impact overlay that can increase at runtime when the object takes damage — no texture swap or new material required.
Blue channel masks which surfaces accumulate snow (flat tops) or wetness (crevices and puddle areas). Blended dynamically based on weather state.
Bake a quick ambient occlusion pass directly into vertex colors for zero texture cost. Useful for simple background props that don't warrant a full bake.
Landscape systems use vertex colors across all four channels to blend grass, dirt, rock, and mud layers across large terrain meshes — one material, infinite variation.
How to Paint Vertex Colors
Vertex colors are painted directly onto the mesh — no UV unwrapping needed. The workflow varies slightly by tool but the principle is the same everywhere.
Vertex Paint mode
Switch from Object Mode to Vertex Paint using the header dropdown. Select which color attribute to paint in the Properties panel. Paint directly onto the mesh surface. Each channel (R, G, B, A) can be isolated and painted independently. Export as FBX or GLTF — both formats preserve vertex color data on export.
Mesh Paint tool
Select your static mesh actor in the scene. Open the Mesh Paint mode from the toolbar. Paint vertex colors directly in the viewport without returning to Blender. Useful for art-direction passes after import — especially for landscape material blending.
Polybrush or custom tools
Unity doesn't have built-in vertex paint for static meshes, but the free Polybrush package adds this capability. Alternatively, paint in Blender and export — Unity imports vertex colors from FBX automatically.
Import from Blender
Godot reads vertex colors from imported GLTF files automatically. Paint in Blender, export as GLTF, and access the data in Godot shaders via the COLOR input in the shader language or VisualShader graph.
Vertex Colors and Trumble
Trumble reads vertex color data from imported meshes and displays it in the 3D viewport. If your mesh arrives from Blender with vertex colors already painted, you can see which areas carry which values — useful as a reference when painting PBR textures on top.
A common combined workflow: paint vertex color masks in Blender to define broad material zones (dirt accumulation in recesses, wear on exposed edges). Import into Trumble and use those zones as a visual guide when painting roughness variation and albedo tinting on the same surface areas. The vertex colors handle the dynamic runtime blending; the Trumble-painted texture maps handle the fine visual detail underneath.
Vertex colors handle
Broad blending zones. Dynamic runtime effects. Wind, damage, wetness. Anything that needs to change during play without swapping textures.
Trumble textures handle
Fine surface detail. PBR material properties. Albedo color, normal map depth, roughness variation. Everything the player sees up close.