Presentation is loading. Please wait.

Presentation is loading. Please wait.

Visibility Culling using Hierarchical Occlusion Maps Hansong Zhang, Dinesh Manocha, Tom Hudson, Kenneth E. Hoff III Presented by: Chris Wassenius.

Similar presentations


Presentation on theme: "Visibility Culling using Hierarchical Occlusion Maps Hansong Zhang, Dinesh Manocha, Tom Hudson, Kenneth E. Hoff III Presented by: Chris Wassenius."— Presentation transcript:

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


Download ppt "Visibility Culling using Hierarchical Occlusion Maps Hansong Zhang, Dinesh Manocha, Tom Hudson, Kenneth E. Hoff III Presented by: Chris Wassenius."

Similar presentations


Ads by Google