Upload
florence-sherman
View
224
Download
0
Embed Size (px)
Citation preview
Visibility Culling using Hierarchical Occlusion Maps
Hansong Zhang, Dinesh Manocha, Tom Hudson, Kenneth E. Hoff III
Presented by:Chris Wassenius
Introduction
● GPU power has increased year after year
● So has the size of models...
● Need acceleration algorithms – Visibility culling
– Level of detail
– texturing
Related Work
● Z-buffer
● BSP (Binary Space Partitioning) Trees– creation is time consuming
– not dynamic
● PVS (potentially visible set)– works well for specific models
– doesn't work so well with arbitrary models
Related Work
● Object space algorithms (Coorg and Teller, and Hudson et al. 1996)– convex objects only
– can't combine occluders
● Hierarchical Z-buffer algorithm– Octree and Z-pyramid
– good, but expensive
Method
● Features– Generality
● No restriction on types of occluders
– Occluder Fusion● combines a “forest” of small and/or disjoint occluders
– Significant Culling
Method
● Features (continued)– Portability
– Efficiency ● algorithm only takes a few milliseconds per frame● significant speedup in interactive walkthroughs of models
– Approximate Visibility Culling● able to cull small visible holes in occluders
Method
● Basic Idea– Select objects of the model as occluders
– Create hierarchical occlusion maps (HOM)
– Render objects in the model based on:● overlap test with HOM● depth test
Method
● Construction of the Occlusion Map Hierarchy – Selects occluders from the occluder database
(preprocessing step)● traverses the bounding volume hierarchy of the occluder
database● selects subset, utilizes temporal coherence
– Occluders are rendered in pure white
– Builds hierarchy by averaging pixels
Method
● Occlusion Map– object is projected to
screen, area of projection is made opaque
– each pixel records opacity of a rectangular block in screen space
– opacity: the ratio of the sum of the opaque areas in the block to the total area in the block
Method
● Occlusion Map Hierarchy – Recursively average 2
x 2 blocks of pixels● case use GPU and
CPU● special case of bilinear
interpolation
– Stop at some minimal resolution (e.g. 4 x 4)
Method
● Overlap Test (to see if an object is occluded)– Check opacity of the pixels it overlaps in the HOM
– Exact overlap test is too expensive
– Use screen spaced bounding rectangle for projection
Method
● Overlap test (continued)– uses HOM to accelerate test
– Begins at the level of the hierarchy where the size of a pixel is close to the size of the bounding rectangle
– Examines each pixel that overlaps rectangle● If each pixel is completely opaque, object is overlapped
by occluders● Else recursively descends to higher resolution level
– If all pixels in rectangle are opaque then object is overlapped by occluders
– Else algorithm renders object
Method
● High level opacity estimation– If low resolution map pixel has a low opacity level,
descendants most likely have low opacity levels
– If low resolution map pixel has a high opacity level, descendants most likely have high opacity levels.
Method
● Opacity Threshold– Value at which a pixel is “considered” completely
opaque
– Different threshold for each level in hierarchy
– In effect, specifies the size of allowable holes
Method
● Depth Estimation Buffer– partition screen space and use separate Z-plane for
each region
– estimate depth and position of occluders by projected bounding box
– take furthest z-value of projected rectangle for each occluder
– for each partition, set distance to the furthest occluder
Method
● Depth Test (for a potential occluded objection)– Again, use projected rectangle as aproximation
– Check each partition of the depth estimation buffer that is covered by the rectangle
● if any partition is greater than (further than) rectangle's depth
– object is rendered● otherwise,
– object is not rendered
Method
● Occluder selection to form Occluder Database (preprocessing step)– Size
● small objects typically don't serve as good occluders
– Redundancy
– Complexity
Method
● Dynamic Selection of occluders at run-time– Selects based on distance from view point, size,
and temporal coherence
– limits the amount of selected occluders (can vary per frame)
Conclusion and Future Work
● Pros– Good visibility culling algorithm for large models
with large depths
– Works well with arbitrary models
● Cons– Fairly large overhead