Here's a few shots from the Quake3 level rendering of my engine, OGRE
(Object-oriented Graphics Rendering Engine).
I know what you're thinking: ok, ok, another Q3A level renderer, yadayadayada...
but what makes OGRE a little different is that it's a highly abstracted OO
engine which is not designed around BSP scene management, or even indoor
rendering - it's designed to be scene oriented rather than level structure
oriented, with a class hierarchy dealing with specialisations like using BSPs in
an indoor environment. All the features used in the rendering of the Q3 level
(material/shader management, geometry buffers, texture loading, curved surfaces)
are all generalised and just used by the indoor implementation - this does lead
to a bit of conversion overhead as it loads the BSP though.
If you don't want to, you don't have to know that OGRE is using BSPs internally
for indoor rendering, just use the top-level interface which is the same for any
scene manager, and just give OGRE a hint that you're going to render an indoor
scene and it will do all the optimisations internally. Frame rates are pretty
good but little optimisation has occurred yet beyond the general culling
algorithms so there's room for more. To be honest though I'm pretty pleased with
the results - one of the main reasons I implemented a Q3A renderer in the engine
is to see whether OGRE's abstracted architecture could handle a large complex
scene at a fair speed. I think it does pretty well.
OGRE also abstracts the platform and 3D API - it currently it runs on Win32
under DirectX, but the interface exposes nothing of that - again subclasses deal
with the specifics and I've deliberately tried to ensure that the interface will
map onto OpenGL easily (probably more easily than DX to be honest! - hmm).
Take a look at http://ogre.sourceforge.net if you like: all source is freely
available for non-commercial use.