I want to short circuit this conversation. This entire CL is all trivial and we've spent more time discussing it than it would have taken me to just implement it myself. 

Final words:

Spectre uses Dart Vector Math for code that computes linear algebra. It does not use vec4 types anywhere else, including constant (uniform) setters.  So, in that sense it's not what you'd expect. A vec4 is a vertex or a point that can be manipulated with common vector math functions, not a container for color values.

An integer is more efficient in terms of storage (just 1 allocation rather than 4), but when being worked on (all the bit-wise masking, etc) causes many objects to be generated.