Aquí ya hay respuestas sólidas: solo quiero intervenir con una forma más común de ver los colores de vértice utilizados:
Diversos colores de objeto (u otros atributos) dentro de una sola llamada de lote / extracción
Verá esto utilizado en la representación de sistemas de partículas, texto y sprites en lotes (generalmente atlased).
Imagine que tiene un emisor de partículas que genera partículas con un color de inicio aleatorio, o que se desvanecen a 0 alfa durante la vida útil de las partículas. Si tuviéramos que usar uniformes de sombreado para enviar estos datos de color, necesitaríamos dibujar cada partícula de diferentes colores en su propia llamada de dibujo, haciendo que el sistema de partículas sea mucho más costoso. En cambio, podemos hornear estos colores en los datos de vértice de las partículas y renderizar todo el lote en una sola llamada.
Parece que Unity utiliza esta técnica para la variación del color de las partículas, así como para colorear caracteres individuales en TextMesh o Sprites renderizados juntos en un lote.
Creo que puede hacer algo similar con la creación de instancias de geometría, pero no sé cómo se comparan los dos en rendimiento. Es posible que hoy hacer este tipo de ajustes instanciados a través de los colores de vértice sea más una suspensión para admitir hardware anterior a OpenGL 3.1 / DX9 como algunos dispositivos móviles, en lugar de una mejor práctica para las PC modernas. Agradecería los comentarios de personas que han realizado más ajustes de rendimiento con lotes e instancias para ayudar a aclarar si estas técnicas han reemplazado los colores de vértice para este propósito. :)