The attempt is going to be to have a tbm that can have multiple versions of the same effect. The code will parse the tbm and get the best version that the hardware appears to accept. It's just going to be a matter of whether or not someone writes a shader in that version for that particular effect. There won't be different tbms for each version of each effect, it will all be in the tbm for that effect. That will hopefully make it easy to not only keep track of but also upgrade and modify in the future. At first it's going to be 2.0+, then I'll add some more code to support other languages/versions where possible.
The basic idea would be to have a
bloom.fsh ("Freespace SHader", the extension will probably change though, to close to "fish"

) which would have a section for each shader language/version that someone makes, and then be split into vertex and fragment sections. The code will initially handle any number of different versions in the tbm (just to maintain backwards compatibility for improved effects), even if the game wouldn't be able to actually use them.
There will be a tbm for fullscreen effects, which would call the .fsh files, and those would be executed on a fullscreen basis (ie, bloom effects, sharpen effects, etc). Then you will also be able to have ship/weapon tbl entries for shaders for a specific ship model or weapon, these would typically be something that doesn't require the framebuffer to work out (unlike the bloom effect). Then I also want to either create a new table for general effect shaders (explosions, warp, etc.) or try to incorporate that into the existing tbls for those things.
There is time to work all of that out though. The first test will be more limited, mainly the fullscreen effects and some basic ship-specific shader support. If that goes well then the rest of the details will be finalized (obviously with mod support and a fair bit of input from DaBrain, Wanderer, Axem, ..., etc.). Then there will probably be one more test build after that which will have more shader support, then it will hit CVS.