How does teamcolor actually work?
Spring uses an overlay approach to rendering teamcolor. The alpha channel of texture1 is the value of the overlay, when rendered. Therefore, a value of 255 will render the pure team color, minus any change due to the angle of the normal when lit.
Anything in between, you will end up with something less than 255
before the lighting calculation takes place.
This creates some challenges. For example, if you have a pure white area of teamcolor "painted" over an area of the model that has strong contrasts, the high alpha value of the overlay overdraws the underlying texture1 completely, and they will not be seen. Care has to be taken to draw this texture carefully and use the alpha values wisely.
Teamcolor, normal RGB, with alpha less than 255
If you use, say, a value of 128,128,128 gray for your teamcolor, it will now show some of the texture underneath. This results in a very "faded" look.
It doesn't actually look much like paint, but you can see some details beneath, so you don't have to re-create your details again in grayscale. This is how most games in Spring are implementing teamcolor, and used in large swatches, it gives the unit a strongly teamcolored appearance.
This
can look good, but it has some major disadvantages, both aesthetic and technical:
1. If you use this method, your models will appear to be mainly teamcolor, from a distance, or they will not have any teamcolor at all, depending on the size of the swatches used. This is because as you get farther and farther away, mipmaps and the fragments combine to reduce the overall size of the teamcolor, along with everything else, and the value changes produced by Spring's lighting model may obscure the hue of the teamcolor significantly. Therefore, to make this approach really work well, it's all about percentage of the model covered- somewhere between 20-50% of the upper surfaces probably need to be covered, to get a good result. For games trying to have a realistic feel, this may not be appropriate.
2. From a technical standpoint, because you're almost never going to see values of 255, in practice, your teamcolor as displayed to the user is going to be quite a bit darker than the pure color that the player chose. And, if players use dark colors, they will end up with teamcolor that is nearly black on most surfaces, after lighting calculations occur.
Teamcolor, RGB 0,0,0, any alpha
Teamcolor with a background of 0,0,0 is whatever value of gray that the alpha channel uses. This produces a very pure set of colors, with a strong, painted look.
However, this comes with some significant disadvantages. Because this is not really making use of texture1, it looks really unrealistic, when compared to textures elsewhere on a model, that have been weathered. If you're not weathering your models, this isn't a problem, of course.
You could mix-and-match, with the first approach, of course, but that would be a lot of work, for relatively minor gain, imo.
Teamcolor, RGB any value, any alpha, plus glowmap
Teamcolor and the red channel of texture 2 interact, because it is rendered on a pass after the teamcolor. The red channel is treated as an 8-bit grayscale, and it uses an overlay rendered without lighting during its rendering pass, to change the value of the texels.
Basically, in this method, teamcolor is treated as a special type of "light", which "emits" a glowing source.
I think this method has a lot of promise, for delivering teamcolor that is accurate to what the user chose, and covers a model widely enough to be instantly recognizable at a distance. It would be better yet, if Spring supported multiple light sources within the main rendering pipeline- then I could just use teamcolored lights to achieve this look, and it would be accurate to Piece positions, which is the primary problem one encounters, when one is dealing with "lights" that are purely on the texture itself.
An example of this method being used can be seen here:
Having tested this a bit, I think the main question is whether or not I want to take the time to rig up AO settings and distortion maps at some point, for completely accurate rendering of the "light", or just airbrush it out, which is a lot faster and will probably look about as good in most practical circumstances.
At any rate... to sum up, it's not that I'm not quite aware of how things work. It's mainly about what I want things to feel like, which is an aesthetic decision, and purely personal.