Hmmm, I figured the version history notes would have laid it out well enough, but here it is a little more in-depth:
Let's say you have a weapon that has two textures; gun_D.dds and Hand_D.dds
The new shader system will look into the HUD.X file and attempt to find out what parts of the model have which textures. So let's say part 1 of the model is given gun_D.dds and the second part of the model was given Hand_D.dds. Once it finds a part that has a texture, it will chop off the end of the texture name and look for other textures to use for shaders.
Example:
Part 2 was determined to have Hand_D.dds as it's texture.
The system will then look for;
1) Hand_N.dds
2) Hand_R.dds
3) Hand_cube.dds
4) Hand_I.dds
5) Hand_S.dds
If it finds one of those, it will put it into the stage index of it's numbering that I've listed above. Obviously, the diffuse texture is placed in stage index 0, but the above textures will be placed in their appropriate stage index as well. So, if it finds Hand_S.dds it will place that in stage index 5.
Please note that if you apply, say, a cube map to the gun, but do NOT have a cube map for the hands, the shader MIGHT use the cube map given to the gun on the Hands, so it's wise to use the same amount of textures for all parts of the model. Illumination maps are a great example of why you want to give everything the same kind of textures. Lets say you want part of your gun to be illuminated and give it an illumination map but the Hands don't have one... the shader might use the gun's illumination map on the Hands because you didn't make one for them.
I am considering expanding this system to be more friendly with all types of shaders, but that also means getting rid of the "_N", "_R", "_S", etc etc naming convention. I was thinking more along the lines of numbering your shader textures based on what stage index they belong in.
So instead of having; Hand_N.dds, Hand_R.dds, Hand_cube.dds, Hand_I.dds, Hand_S.dds
You would have; Hand_1.dds, Hand_2.dds, Hand_3.dds, Hand_4.dds, Hand_5.dds, etc etc etc up to the amoutn of shader textures that you require.
While I am aware that a NAMING convention is useful, in this instance it is very restrictive, because FPSC cannot tell WHAT texture should go into which stage index in order to make your shader work properly.
Let's say you made a shader that needs the following textures (in the following order):
Illumination Map
Cube Map
Specular Map
Now... FPSC is programmed to place the Normal Map first, followed by the Reflection Map, followed by the Cube Map, followed by the Illumination Map, followed by the Specular Map.
If you wanted to use your shader, you would have name your Illumination Map with the "_N" convention, and your Cube Map with the "_R" convention and your Specular Map with the "_cube" convention for FPSC to load them in properly.... that just doesn't make sense, you see.
To answer the question: what changes did I make?
Originally when you gave a weapon a shader, FPSC would look for "gun_N.dds", "gun_R.dds" and "gun_cube.dds".... and then it would apply those to the ENTIRE MODEL with the shader. THis is why Hands were applied with gun shader textures, and scopes were applied with gun shader textures, etc.
I made the system apply the shader on a "per part" basis and not on the model as a whole. I also made it use shader textures that are specific to each part and not only from the "gun_" textures.
Additionally, I have the system look for additional shader textures to be applied. Namely, the Illumination Map (_I) and the Specular Map (_S)
I hope that cleared everything up for you.
[EDIT]
@Avid:
If you don't want to give one of your parts a cube map, you can optionally give it a solid black Reflection Map.
Remember... the shader you specify in the gunspec file will be applied to ALL PARTS of the weapon. This is why, if you have a shader texture for one part, it would be a good idea to give it to ALL parts (though the texture itself may not look the same, obviously) as the shader will be attempting to USE all of those textures, so any missing textures may cause undesireable results.
The one and only,