I’m about 90% there with Q3A shader loading now. OGRE interprets the Quake3 shader scripts and turns them into an equivalent OGRE Material class when they are required by the geometry. Most custom shaders are now being rendered, including animated multilayer flames, sky domes, transparent layers and all such niceties. Altogether it’s looking far more solid and more fit for a demo.

The frame rate is still good – OGRE’s automatic use of multitexturing pays off since a 3-pass Q3A shader is actually done in 2 passes on a GeForce2 (2 texture units) and 1 on a GeForce3 (4 texture units). All the map editing docs suggest Q3A does multipass all the time, using one pass per shader layer, but I’m sure this can’t be right – I bet Carmack is doing some multitexture optimisation under the surface the same as I am (the odds of me thinking of an optimisation approach he missed are pretty steep ;).

I just have a bit more bug fixing to do before the next snapshot (and demo release) as a few select shaders are causing problems, and I’d like to try to get a few more texture effects going (like warping / scrolling). Q3DM10 in particular looks awful, it’s chocka with texture effects and OGRE just isn’t coping at the moment! I’ll work on this over the weekend.