+ All Categories
Home > Documents > Visibility Culling using Hierarchical Occlusion Maps Hansong Zhang, Dinesh Manocha, Tom Hudson,...

Visibility Culling using Hierarchical Occlusion Maps Hansong Zhang, Dinesh Manocha, Tom Hudson,...

Date post: 17-Dec-2015
Category:
Upload: florence-sherman
View: 224 times
Download: 0 times
Share this document with a friend
26
Visibility Culling using Hierarchical Occlusion Maps Hansong Zhang, Dinesh Manocha, Tom Hudson, Kenneth E. Hoff III Presented by: Chris Wassenius
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


Recommended