Description:
I implemented the Hierarchal Occlusion Map algorithm as described in
this academic paper published by the University of North Carolina.
Video:
Objects colored in white have been selected as occluders.
The red areas in the lower left of the screen represent the
occlusion maps at increasingly lower levels of resolution.
Constructing a database of good potential occluders::
Done once at startup, potential occluders are selected based on
whether the area of any one of their sides meets a minimum
area requirement. The reason I chose this method instead of just
volume is because a "billboard" shaped object might have low volume
but still serve as an excellent occluder.
Selecting occluders each frame::
I choose occluders from the potential occluder list
based on their distance from the eyepoint. Those which
are chosen are automatically drawn. Those which are not
chosen as occluders for the current frame go through
the culling tests just like the rest of the objects.