This does more work than it should have to since we are reading the color repeatedly, but it's still better than the data being stored per-instance.