Download presentation
Presentation is loading. Please wait.
Published byFlorence Sherman Modified over 9 years ago
1
Visibility Culling using Hierarchical Occlusion Maps Hansong Zhang, Dinesh Manocha, Tom Hudson, Kenneth E. Hoff III Presented by: Chris Wassenius
2
Outline ● Introduction ● Related Work ● Method ● Results ● Conclusion / Future work
3
Introduction ● GPU power has increased year after year ● So has the size of models... ● Need acceleration algorithms – Visibility culling – Level of detail – texturing
4
Introduction
5
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
6
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
7
Method ● Features – Generality ● No restriction on types of occluders – Occluder Fusion ● combines a “forest” of small and/or disjoint occluders – Significant Culling
8
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
9
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
10
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
11
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
12
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)
13
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
14
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
15
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.
16
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
17
Method Approximate Visibility Culling
18
Method ● Depth Test vs. Overlap Test X Y
19
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
20
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
21
Method ● Occluder selection to form Occluder Database (preprocessing step) – Size ● small objects typically don't serve as good occluders – Redundancy – Complexity
22
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)
23
Results
24
635,252 polygons 82.7 % culled
25
Conclusion and Future Work ● Pros – Good visibility culling algorithm for large models with large depths – Works well with arbitrary models ● Cons – Fairly large overhead
26
Conclusion and Future Work ● Integrate LOD ● Occlusion preserving simplification
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.