Shawn Hargreaves Blog
Definition: Manually editing per-vertex color values to approximate static lighting or increase the perception of texture variety.
Usage: "Have you finished raiding level 3 yet?"
'twas long before shaders.
'twas long before realtime lighting.
'twas before even static lightmaps.
'twas the days of 32x32 texture maps, with just a few hundred giant triangles to build an entire level.
'twas the days of the Nintendo 64.
Static vertex colors were an important part of making graphics look good on such a limited machine:
With such low triangle counts, automatically calculated lighting didn't work. There just weren't enough vertices, so something like a torch could be missed entirely if its pool of light happened to fall in the gap between two vertices (you know you are dealing with low poly geometry when the ratio between triangle size and spacing of torches approaches the Nyquist frequency!) Good results required artistic judgment, sometimes approximating an area of brightness to the nearest vertex, other times moving either the light or vertex to match the other.
So we made our poor artists go through every level in the game, manually choosing a color for every single vertex (but on the plus side, the geometry was so simple that there weren't actually that many vertices involved :-)
This editing process was originally known as "gouraud shading", which by a variant of Cockney rhyming slang became "goo-raid shading" and then just "raiding".
Although technology has moved on since then, I think manually tinting vertices remains an underappreciated and underused option. It's an oldie-but-goodie that offers extremely cheap yet useful visual control. We used this in MotoGP to increase texture variety, doing things like tinting the same grass texture a rich deep green at the base of a hill, vs. a paler more washed out yellow near the top.
I did a lot of that for Pinball League :)
And at the end I baked radiocity from Lightwave.
Thumbs up for this one - definately. Now get Microsoft to see the wisdom of our ways :)
We called it "per-vertex ambient occlusion" :-)