Phil: DeviceClear2() takes a BBRect type which just tells what part of the screen to clear.
Stuff to think about:
Making volumes 'on the fly' is what's needed next, but also consider that you could precalc volumes for each light for your levels, useful for static lights & geometry.
There's the problem that if your camera goes into a shadow volume the shadows won't get rendered correctly, the solution is the so called 'carmacks reverse' stencil method which I haven't tried.
Stuff to think about:
Making volumes 'on the fly' is what's needed next, but also consider that you could precalc volumes for each light for your levels, useful for static lights & geometry.
There's the problem that if your camera goes into a shadow volume the shadows won't get rendered correctly, the solution is the so called 'carmacks reverse' stencil method which I haven't tried.