Here we have a couple of screenshots from the visibility algorithm that I
am developing here at Davilex. The algorithm is a combination of an adaptive
octree for spatial subdivision and a c-buffer for occlusion testing. About
the shots: The first one (top left) shows the scene, rendered normally. The
one in the top-right corner shows the c-buffer: 'Red' means occluded. Note
that I don't just draw every single polygon in this buffer, but just the
large occluders. Also note that I normally use a lower resolution c-buffer,
but that doesn't look as good for an IOTD. :) The green lines are the
boundaries of the adaptive octree nodes, the blue lines (hard to see) are
the bounding boxes of the detail meshes.
The two images on the bottom side of the image show the scene rendered in
wireframe mode, with and without culling.
This is a conservative culling algorithm; as soon as a part of a mesh is
visible, it's drawn completely. This ensures minimal culling costs,
resulting in optimal performance on today's hardware. For software
rendering, you might want to try a slightly less conservative algorithm.
Jacco Bikker, a.k.a. 'The Phantom',
Davilex Software (www.davilex.nl)