Techsets are rather simple and there is not much to know about them really. They just define different techniques for different lighting/rendering states within the game.
There is one thing thats kinda tricky tho, … knowing what states are needed and what they are needed for.
1. Techset Suffixes
Different suffixes and multiple techsets might be needed, depending on where you use your material.
2. Techsets for ShaderModel 2
Like stated in the introduction: Techsets in root\raw\techsets will be used by GPUs running ShaderModel 3, but CoD4 also supports ShaderModel 2
so you have to create copies of your techsets and place them into root\raw\techsets\sm2 (otherwise get’ll errors when linking your fastfile).
These will obv. not work on SM2 hardware but I personally do not care about that.
3. Assigning Techniques
Only a single technique can be assigned to a state but multiple states can be assigned to a single technique.
Not defining a state used by the game results in .. ? (unsure)
2D only techsets
"Model techsets with prefix "mc_"
World techsets with suffix "wc_"
Sky techsets with suffix "wc_"
4. Additional Information / Engine Background (SM / HSM)
Using the l_sm prefix for techsets allows the engine to remap it to a l_hsm (hardware shadowmapping) techset if cod4 detects that your GPU supports HSM.
This means that you need to have the same techset name but prefixed with l_hsm. Linker will throw an error if you don’t.
Example: most, if not all cod4 weapons use the l_sm_r0c0s0 techset. If your GPU supports HSM, the engine will now look for the l_hsm prefixed techset. Since this example is about models, the engine will look for the mc prefix. That means that the actual techset being used is mc_l_hsm_r0c0s0.