You could (in theory) encode all your colours/gradients as a curve or 1dLUT , mark up the various different "material IDs" with vertex color and offset them with parameters on the material instance to index into the curve. bit of a waste of effort though imo :D