From feedback of artists and other developers, it seems we have to continue
supporting both per-vertex and per-corner colors. Particularly for interop with
game engines per-corner is still important.
For this reason we should make sculpt and vertex paint mode support painting
both types.
In this patch, there is a single Mesh.vertex_colors collection containing all
color attributes, and a single UI panel listing them. This is basically just a
subset of Mesh.attributes, and the items have the same type. The attributes
may be per-vertex or per-corner, and they may also be stored with byte or
float precision.
Almost nothing actually works in this patch yet, mainly the Python API has been
defined and Cycles export was updated to support it.
This breaks Python API compatibility in two ways: vertex colors may not either
be per-vertex or per-corner, and values are always exposed in linear color space
(rather than encoded in sRGB). Besides that, Mesh.vertex_colors functions and
properties will be compatible.
Still much work to do:
- Make .active and .active_render properties work (across domains)
- Update operators in Vertex Colors panel to work with all these changes
- Workbench and eevee support for byte per-vertex and float per-corner attributes
- Sculpt mode support for per-corner and byte attributes
- Vertex paint mode support for per-vertex and float attributes
- Update exporters and importers
Depends on D8200