Unreal Character Model Compendium

This is an advanced technique that is not required to create characters.


Vertex Colors are a useful tool for storing extra data in your Mesh, and manipulating the look per-vertex.

What are Vertex Colors?

Vertex Colors are RGB color information that are stored on the vertices of a Mesh. They are widely supported across virtually every 3D Package and game engine.

Vertex Colors were originally a rudimentary method of coloring Meshes, and you can still use them like this. Here is an example of a Material that tints a Texture with the color from Vertex Colors:

Storing arbitrary data

Vertex Colors can also be used to store arbitrary data in a Mesh. We have an R, G, and B channel, and each of these 3 channels can store a value between 0.0 and 1.0. That allows us to store 3 float values.

For example, you might store:

  • R channel - a bias for lighting, to make some areas brighter or darker (the image at the top of the page demonstrates this)
  • G channel - a multiplier on a particular Material property
  • B channel - a mask on a Vertex Shader effect that offsets vertices

What you can store is entirely up to you and how you author your Materials/Shaders. The examples above are not built-in features, but examples of what is possible.

Per-Face-Corner

Despite the name, Vertex Colors are actually stored per-face-corner, not per-vertex. This means that adjacent faces can have different colors, with a hard line between them.

When to Use Vertex Colors

Vertex Colors are not something all Meshes are going to make use of. But it’s good to understand how they work and keep them as a tool in your back pocket.

When crafting the look of your Mesh, Animations, or Materials, keep Vertex Colors in mind when the effect you’re producing depends on vertices, not pixels. Vertex Shader effects that move vertices are an especially good use-case for Vertex Colors, because you get to precisely apply information to the vertices themselves.