Vertex Colours is it only for low-poly?

The best way to send a lot of data to the GPU will be through vertex data or a texture. If you want to store these ids as texture data it may be tricky, otherwise you may as well use the vertex colors directly. Even 15 year old GPUs have hundreds and hundreds of threads to operate on, processing this kind of information what it’s built for and the GPU will chew it up fast. If you are using vertex colors or find it even more difficulty to use vertex IDs to pick out another color from a list, maybe using UVs isn’t a bad option, it uses less data than the former and only slightly more than the latter.

Putting this all together we end up back at square one, Kaykit uses a very small swatch/color palette texture and UV (instead of vertex color) data to pick from that texture. Color swaps only require changing the swatch. I hope this exercise maybe builds some trust and understanding of why low-poly models would use swatch textures.

  1. Color palette textures can be tiny, one pixel per color used
  2. UV data is four bytes less per vertex and more commonly used for textures
  3. Some engines can omit vertex colors entirely, saving plenty of space per vertex
  4. Changing textures is easier than changing vertex data for users and the GPU
2 Likes