visibility culling using hierarchical occlusion maps hansong zhang, dinesh manocha, tom hudson,...

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

Upload: florence-sherman

Post on 17-Dec-2015

227 views

Category:

Documents


0 download

TRANSCRIPT

Visibility Culling using Hierarchical Occlusion Maps

Hansong Zhang, Dinesh Manocha, Tom Hudson, Kenneth E. Hoff III

Presented by:Chris Wassenius

Outline

● Introduction

● Related Work

● Method

● Results

● Conclusion / Future work

Introduction

● GPU power has increased year after year

● So has the size of models...

● Need acceleration algorithms – Visibility culling

– Level of detail

– texturing

Introduction

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

Approximate Visibility Culling

Method

● Depth Test vs. Overlap Test

X

Y

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)

Results

Results

635,252 polygons

82.7 % culled

Conclusion and Future Work

● Pros– Good visibility culling algorithm for large models

with large depths

– Works well with arbitrary models

● Cons– Fairly large overhead

Conclusion and Future Work

● Integrate LOD

● Occlusion preserving simplification