The shader_model tag is used for opaque materials on object models. It supports features like map animation, detail maps, specularity, self-illumination, and colour change (e.g. for armour ranks/teams).
The base map controls the diffuse colour and transparency of the shader. The RGB diffuse colour is multiplied with the colour change source if used, masked by the multipurpose map's colour change mask. The base map's alpha channel is a transparency mask.
The multipurpose map is an optional bitmap whose individual channels provide greyscale masks for colour change, reflections, self illumination, and detail maps (a technique called channel packing). Channel function depends on the game:
- Red: is an auxiliary mask. It can mask the detail map if the detail mask is set to multipurpose map alpha. Despite the option saying "alpha" in Guerilla it really means the red channel in this context.
- Green: Masks self-illumination, used for lights on the model. The self-illumination is added to diffuse light and then multiplied with diffuse colour, rather than being added after. This means pure black areas of the diffuse map cannot have self-illumination.
- Blue: Masks cube map specular reflections. Pure blue is highest specularity, while black is none.
- Alpha: Masks colour change, such as for armour ranks/teams. Colour sources include the actor_variant, multiplayer colours, and object.
It is a common misconception that multipurpose maps need to be purple due to some stock tags having an identical red and blue channel. However, it is not necessary to have any red channel information if you do not require detail map masking or another channel can serve as the detail map mask.
Channel order is different on the classic Xbox version of the game. Guerilla correctly describes multipurpose maps extracted from Xbox maps:
- Red: Specular reflection mask (modulates reflections)
- Green: Self-illumination mask (adds to diffuse light)
- Blue: Primary change-color mask (recolors diffuse map)
- Alpha: Auxiliary mask
This tag inherits fields from shader which are not shown here. See the parent's page for more information. The following information is unique to the shader_model tag.
Thanks to the following individuals for their research or contributions to this topic:
- Jakey (Discovering that self-illumination is added to diffuse light, not diffuse colour)
- Kavawuvi (Invader tag definitions)
- MosesOfEgypt (Tag structure research)
- t3h lag (Explaining multipurpose map channels)