Vertex Colors
Vertex colors are the cheapest per-pixel mask you can ship: data painted in your DCC tool, stored on the mesh, and read for free during the vertex stage. Genesis exposes them as tints, layer masks, vertex-animation amplitude, and dissolve gradients.
When to use it
- Layer masks — paint moss, dirt, or snow weights in Blender or Polybrush.
- Wind amplitude — store sway strength per vertex on foliage.
- Tint variation — randomize prop colors without instancing.
- Dissolve gradients — control the dissolve direction from per-vertex data.
Difference from mask textures
How it works
Genesis reads the vertex color in the vertex stage, optionally selects a channel via _VertexColorChannel, and forwards it to the fragment for masking or to the vertex-animation evaluator for amplitude. No texture sample is required.
Properties
Usage
- Paint vertex colors in Blender (a vertex color layer), Maya (a color set), or Polybrush.
- Confirm the mesh has them: select the asset and look for “Has Vertex Colors” in the Mesh Info.
- In Genesis, enable Use Vertex Color and pick the channel and mode.
- For wind, set Mode to WindAmplitude and paint the sway strength directly on the mesh.
material.SetFloat("_UseVertexColor", 1f);
material.SetFloat("_VertexColorChannel", 0); // R
material.SetFloat("_VertexColorMode", 2); // WindAmplitudeTips & gotchas
- Unity primitives have no vertex colors; only imported or painted meshes do.
- Vertex color interpolates across the triangle, so masks soften by triangle size. Subdivide for sharper masks.
- Vertex colors are not gamma-corrected. In a linear project, the values you painted are the values you get.
- Static batching strips per-renderer colors — use GPU instancing for unique tints per instance.
Related
- Layer Textures — the primary consumer of vertex masks.
- Vertex Animation — vertex R drives wind amplitude.
- Dissolve — vertex color as a dissolve gradient.
- Mesh Utility — paint and verify vertex colors in-editor.
Last updated on