Title: Visibility Culling
1Visibility Culling
David Luebke Computer Science Department Universit
y of Virginia ltluebke_at_cs.virginia.edugt
2Recap General Occlusion Culling
- When cells and portals dont work
- Trees in a forest
- A crowded train station
- Need general occlusion culling algorithms
- Aggregate occlusion
- Dynamic scenes
- Non-polygonal scenes
3RecapGeneral Occlusion Culling
- Ill discuss two algorithms
- Hierarchical Z-Buffer
- Ned Greene, SIGGRAPH 93
- Hierarchical Occlusion Maps
- Hansong Zhang, SIGGRAPH 97
4Recap Hierarchical Z-Buffer
- Replace Z-buffer with a Z-pyramid
- Lowest level full-resolution Z-buffer
- Higher levels each pixel represents the maximum
depth of the four pixels underneath it - Basic idea hierarchical rasterization of the
polygon, with early termination where polygon is
occluded
5Hierarchical Z-Buffer
- Idea test polygon against highest level first
- If polygon is further than distance recorded in
pixel, stopits occluded - If polygon is closer, recursively check against
next lower level - If polygon is visible at lowest level, set new
distance value and propagate up
6Hierarchical Z-Buffer
- Z-pyramid exploits image-space coherence
- Polygon occluded in a pixel is probably occluded
in nearby pixels - HZB also exploits object-space coherence
- Polygons near an occluded polygon are probably
occluded
7Hierarchical Z-Buffer
- Exploiting object-space coherence
- Subdivide scene with an octree
- All geometry in an octree node is contained by a
cube - Before rendering the contents of a node, render
the faces of its cube (i.e., query the Z-pyramid) - If cube faces are occluded, ignore the entire node
8Hierarchical Z-Buffer
- HZB can exploit temporal coherence
- Most polygons affecting the Z-buffer last frame
will affect Z-buffer this frame - HZB also operates at max efficiency when
Z-pyramid already built - So start each frame by rendering octree nodes
visible last frame
9Hierarchical Z-BufferDiscussion
- HZB needs hardware support to be really
competitive - To date, hardware vendors havent bought in
- Z-pyramid (and hierarchies in general) unfriendly
to hardware - Unpredictable Z-query times generate bubbles in
rendering pipe - But there is a promising trend
10Hierarchical Z-Buffer
- Hardware beginning to support Z-query operation
- Allows systems to exploit
- Object-space coherence (bounding boxes)
- Temporal coherence (last-rendered list)
- Systems Im aware of
- HP Visualize-fx graphics
- SGI Visual Workstation products
- An aside applies to cell-portal culling!
11Hierarchical Occlusion Maps
- A more hardware-friendly general occlusion
culling algorithm - Two major differences from HZB
- Separates occluders from occludees
- Decouples occlusion test into an depth test and a
overlap test
12HierarchicalOcclusion Maps
- Occluders versus occludees
Blue parts occluders Red parts occludees
13Hierarchical Occlusion Maps
Depth Overlap
Occlusion
14Hierarchical Occlusion Maps
- Representation of projection for overlap test
occlusion map - Corresponds to a screen subdivision
- Records average opacity per partition
- Generate by rendering occluders
- Record pixel opacities (i.e., coverage)
15Occlusion Maps
Rendered Image
Occlusion Map
16Occlusion Map Pyramid
64 x 64
32 x 32
16 x 16
17Occlusion Map Pyramid
18Occlusion Map Pyramid
- Analyzing cumulative projection
- A hierarchical occlusion map (HOM)
- Generate by recursive averaging (once per frame)
- Records average opacities for blocks of multiple
pixels, representing occlusion at multiple
resolutions - Construction can be accelerated by texture
hardware
19Overlap Tests
- Query is projection of occludee inside
cumulative projection of occluders? - Cumulative projection occlusion pyramid
- Ocludee projection expensive in general
- Overestimate ocludee with 3-D bounding box
- Overestimate projection of 3-D bounding box with
2-D bounding rectangle in screen-space
20Overlap Tests
- Hierarchical structure enables some
optimizations - Predictive rejection
- Terminate test when it must fail later
- Conservative rejection
- The transparency threshold
- Aggressive Approximate Culling
- Ignore objects barely visible through holes
- The opacity threshold
21Aggressive Approximate Culling
22Hierarchical Occlusion Maps
- Not discussed here
- Depth test
- Depth estimation buffer
- Modified Z-buffer
- Selecting occluders
- For more details, see attached excerpt from
Hansong Zhangs dissertation
23HOM Discussion
- Provides a robust, general, hardware-friendly
occlusion culling algorithm - Supports dynamic scenes
- Supports non-polygonal geometry
- Not many hardware assumptions
24HOM Discussion
- Efficient coding, careful tuning a must
- Fairly high per-frame overhead
- Needs high depth complexity, good occluder
selection to be worthwhile - UNCs MMR system
25Visibility Culling Discussion
- When is visibility culling worthwhile?
- When scene has high depth complexity
- Examples architectural walkthroughs, complex CAD
assemblies, dense forest - Non-examples terrain, single highly-tesselated
object (e.g., a radiositized room)
26Visibility CullingDiscussion
- How does visibility culling compare to
- Level-of-detail
- Reduces geometry processing
- Helps transform-bound apps
- Visibility culling
- Reduces geometry and pixel processing
- Helps transform- and fill rate-bound apps
- Texture / Image representations
- Reduces geometry and pixel processing
- Incurs texture/image processing costs
27Visibility Culling Discussion
- How does visibility culling interact with level
of detail? - Fairly seamless integration generally a win
- One issue visibility of simplified model may
differ from original model requires some care - LODs can speed up occluder selection and rendering
28Visibility Culling Discussion
- How does visibility culling interact with texture
and image-based representations? - Texture/image reps generally replace far-field
geometry - Involves an implicit occlusion culling step
- Reduces scene depth complexity, decreasing the
utility of visibility culling - If near-field geometry still includes complex
heavily-occlusive assemblies, still a win
29Visibility CullingDiscussion
- How much culling effort is appropriate?
- Cells and portals relatively cheap, with large
potential speedups - Hierarchical occlusion maps relatively costly,
carefully weigh potential gains - Multiple processors allow much more aggressive
culling calculation - Pipelining culling calculations, Performer-style,
allows cull time render time - Tradeoff one frame increased latency
30Summary
- The basic, very powerful idea
- Rapidly compute a potentially visible set
- Let hardware handle the rest
- For many scenes, visibility culling is a simple
way to get huge speedups - View-frustum culling always a must
- For scenes with high depth complexity, occlusion
culling can be a big win
31Summary
- Architectural models visibility is practically a
solved problem - Cells and portals work well
- Cull-box portal culling simple, fast
- Line-stabbing elegant, powerful
32Summary
- Occlusion culling of general models still a
largely open problem - Important issues
- Dynamic scenes
- Aggregate occlusion effects
33Summary
- General occlusion culling algorithms
- Hierarchical Z-buffer
- A simple, truly elegant algorithm
- But doesnt seem amenable to hardware
- Hierarchical occlusion maps
- More complicated, difficult to code tune
- Better suited to current hardware
- Lends itself well to aggressive culling
- Fairly high overhead, only worthwhile with high
depth complexity - Promising trend in hardware