So my continued march into insanity has meant there are now two versions of the engine while I prepare a demo for revealing the game I'm currently working on (for which time is short!)
In a separate branch, I've essentially spun off removing lots of "obsolete" code and started simplifying parts of the engine, which also aligns it more closely with how Red Faction's engine works, which I've been using as something of a guideline more recently for my own tech, even going as far as adding support for Red Faction's level format (albeit with geometry flipped for now).
As much of the portal visibility handling side of the engine is yet to be reintroduced following a massive rewrite of the world rendering path, I ended up with a worst-case scenario here when it came to overall geometry density and quantity of lights in the scene due to a lack of visibility culling.
That said, it ended up serving as a great opportunity to make optimisations, so not only is it the worst-case scenario, but the engine now does a reasonable job dealing with it - particularly with all those lights, which the engine currently handles dynamically (support for lightmaps is on my list).
Below are some screenshots showing normal and specular maps.
And earlier in the year I added support for stencil shadow volumes which had been on my list of things to do for a while, and recently introduced some optimisations there too. There are still some limitations I need to resolve though, such as the fact that the stencil shadow volumes are not cached, so it has to generate all the geometry again every frame, but it's obviously not high up my list for the demo I'm currently working on.