FromPoint Occlusion Culling Chapter 23 1 Talk Outline

  • Slides: 48
Download presentation
From-Point Occlusion Culling Chapter 23 1

From-Point Occlusion Culling Chapter 23 1

Talk Outline • Image space methods – Hierarchical Z-Buffer – Hierarchical occlusion maps –

Talk Outline • Image space methods – Hierarchical Z-Buffer – Hierarchical occlusion maps – Some other methods • Object space methods – General methods • Shadow frusta, BSP trees, temporal coherent visibility – Cells and portals 2

What Methods are Called Image-Space? • Those where the decision to cull or render

What Methods are Called Image-Space? • Those where the decision to cull or render is done after projection (in image space) Decision to cull Object space hierarchy View volume 3

Ingredients of an Image Space Method • An object space data structure that allows

Ingredients of an Image Space Method • An object space data structure that allows fast queries to the complex geometry Space partitioning Hierarchical bounding volumes Regular grid 4

An Image Space Representation of the Occlusion Information • Discrete – Z-hierarchy – Occlusion

An Image Space Representation of the Occlusion Information • Discrete – Z-hierarchy – Occlusion map hierarchy • Continuous – BSP tree – Image space extends 5

General Outline of Image Space Methods • During the in-order traversal of the scene

General Outline of Image Space Methods • During the in-order traversal of the scene hierarchy do: – compare each node against the view volume – if not culled, test node for occlusion – if still not culled, render objects/occluders augmenting the image space occlusion • Most often done in 2 passes – render occluders – create occlusion structure – traverse hierarchy and classify/render 6

Testing a Node for Occlusion • If the box representing a node is not

Testing a Node for Occlusion • If the box representing a node is not visible then nothing in it is either • The faces of the box are projected onto the image plane and tested for occlusion occluder hierarchical representation 7

Testing a Node for Occlusion • If the box representing a node is not

Testing a Node for Occlusion • If the box representing a node is not visible then nothing in it is either • The faces of the box are projected onto the image plane and tested for occlusion occluder hierarchical representation 8

Hierarchical Test 9

Hierarchical Test 9

Differences of Algorithms • The most important differences between the various approaches are: –

Differences of Algorithms • The most important differences between the various approaches are: – the representation of the (augmented) occlusion in image space and, – the method of testing the hierarchy for occlusion 10

Hierarchical Z-Buffer (HZB) (Greene and Kass, SIG 93) • An extension of the Z-buffer

Hierarchical Z-Buffer (HZB) (Greene and Kass, SIG 93) • An extension of the Z-buffer VSD algorithm • It follows the outline described above • Scene is arranged into an octree which is traversed top-to-bottom and front-to-back • During rendering the Z-pyramid (the occlusion representation) is incrementally built • Octree nodes are compared against the Zpyramid for occlusion 11

The Z-Pyramid • The content of the Z-buffer is the finest level in the

The Z-Pyramid • The content of the Z-buffer is the finest level in the pyramid • Coarser levels are created by grouping together four neighbouring pixels and keeping the largest z-value • The coarsest level is just one value corresponding to overall max z 12

The Z-Pyramid = furthest = closer = closest Objects are rendered Depth taken from

The Z-Pyramid = furthest = closer = closest Objects are rendered Depth taken from the z-buffer by d i m a r y p Construct each f o x a m g takin 4 13

Using The Z-Pyramid = furthest = closer = closest 14

Using The Z-Pyramid = furthest = closer = closest 14

Maintaining the Z-Pyramid • Ideally every time an object is rendered causing a change

Maintaining the Z-Pyramid • Ideally every time an object is rendered causing a change in the Z-buffer, this change is propagated through the pyramid • However this is not a practical approach 15

More Realistic Implementation • Make use of frame to frame coherence – at start

More Realistic Implementation • Make use of frame to frame coherence – at start of each frame render the nodes that were visible in previous frame – read the z-buffer and construct the zpyramid – now traverse the octree using the z-pyramid for occlusion but without updating it 16

HZB: Discussion • It provides good acceleration in very dense scenes • Getting the

HZB: Discussion • It provides good acceleration in very dense scenes • Getting the necessary information from the Z-buffer is costly • A hardware modification was proposed for making it real-time 17

Hierarchical Occlusion Maps (Zhang et al, SIG 97) • Similar idea to HZB but

Hierarchical Occlusion Maps (Zhang et al, SIG 97) • Similar idea to HZB but – they separate the coverage information from the depth information, two data structures • hierarchical occlusion maps • depth (several proposals for this) • Two passes – render occluders and build HOM – render scene hierarchy using HOM to cull 18

What is the Occlusion Map Pyramid? • A hierarchy of occlusion maps (HOM) •

What is the Occlusion Map Pyramid? • A hierarchy of occlusion maps (HOM) • At the finest level it’s just a bit map with – 1 where it is transparent and – 0 where it is opaque (ie occluded) • Higher levels are half the size in each dimension and store gray-scale values • Records average opacities for blocks of pixels • Represents occlusion at multiple resolutions 19

Occlusion Map Pyramid 64 x 64 32 x 32 16 x 16 20

Occlusion Map Pyramid 64 x 64 32 x 32 16 x 16 20

How is the HOM Computed? • Clear the buffer to black • Render the

How is the HOM Computed? • Clear the buffer to black • Render the occluders in pure white (no lighting, textures etc) • The contents of the buffer form the finest level of the HOM • Higher levels are created by recursive averaging (low-pass filtering) • Construction accelerated by hardware bilinear interpolation or texture maps / mipmaps 21

Occlusion Map Pyramid 22

Occlusion Map Pyramid 22

Overlap Tests • To test if the projection of a polygon is occluded –

Overlap Tests • To test if the projection of a polygon is occluded – find the finest-level of the pyramid whose pixel covers the image-space box of the polygon – if fully covered then continue with depth test – else descend down the pyramid until a decision can be made 23

Resolving Depth Image plane The plane Occluders Viewing direction The point with nearest depth

Resolving Depth Image plane The plane Occluders Viewing direction The point with nearest depth A Or: uniform subdivision of image with separate depth at each partition Or even: just the Z-buffer content Either: a single plane at furthest point of occluders This object passes the depth test Transformed view-frustum Image plane D. E. B. Viewing direction Occluders Bounding rectangle at farthest depth B A Bounding rectangle at nearest depth 24

Aggressive Approximate Culling 0 1 2 3 4 25

Aggressive Approximate Culling 0 1 2 3 4 25

HP Hardware implementation • Before rendering an object, scanconvert its bounding box • Special

HP Hardware implementation • Before rendering an object, scanconvert its bounding box • Special purpose hardware used to determine if any of the covered pixels passed the z-test • If not the object is occluded 26

Simplified Occlusion Map • Read top half of the buffer to use as an

Simplified Occlusion Map • Read top half of the buffer to use as an occlusion map • Project top of cell to image space • Simplify projection to a line • Test if any pixel along line is visible 29

Discussion on Image Space • Advantages (not for all methods) – hardware acceleration –

Discussion on Image Space • Advantages (not for all methods) – hardware acceleration – generality (anything that can be rendered can be used as an occluder) – robustness, ease of programming – option of approximate culling • Disadvantages – hardware requirements – overheads 30

Object Space Methods • Visibility culling with large occluders – Hudson et al, So.

Object Space Methods • Visibility culling with large occluders – Hudson et al, So. CG 97 – Bittner et al, CGI 98 – Coorg and Teller, So. CG 96 and I 3 D 97 • Cells and portals – Teller and Sequin, Siggraph 91 – Luebke and Georges, I 3 D 95 31

Occlusion Using Shadow Frusta (Hudson et al, So. CG 97) Occluder A Viewpoint C

Occlusion Using Shadow Frusta (Hudson et al, So. CG 97) Occluder A Viewpoint C B 32

Assuming we can Find Good Occluders • For each frame – form shadow volumes

Assuming we can Find Good Occluders • For each frame – form shadow volumes from likely occluders – do view-volume cull and shadow-volume occlusion test in one pass across the spatial sub-division of the scene – each cell of the sub-division is tested for inclusion in view-volume and non-inclusion in each shadow volume 33

Occluder Test • Traverse the scene hierarchy top down • Overlap test (cell to

Occluder Test • Traverse the scene hierarchy top down • Overlap test (cell to shadow volume) is performed in 2 D – when the hierarchy uses an axis-aligned scheme (eg kd-trees, bounding boxes etc) then a very efficient overlap test is presented 34

Occlusion Trees (Bittner et al, CGI 98) • Just as before – scene represented

Occlusion Trees (Bittner et al, CGI 98) • Just as before – scene represented by a hierarchy (kd-tree) – for each viewpoint • select a set of potential occluders • compare the scene hierarchy for occlusion • However, unlike the previous method – the occlusion is accumulated into a binary tree – the scene hierarchy is compared for occlusion against the tree 35

Create shadow volume of occluder 1 Tree 1 O 2 View point 2 out

Create shadow volume of occluder 1 Tree 1 O 2 View point 2 out O 1 out 2 O 1 out IN 1 O 3 36

Insert occluder 2 and augment tree with its shadow volume Tree 4 1 O

Insert occluder 2 and augment tree with its shadow volume Tree 4 1 O 2 View point 3 O 3 out 4 out 1 O 1 3 2 O 1 2 out IN O 2 out IN 37

And so on until all occluders are added Tree 4 O 2 View point

And so on until all occluders are added Tree 4 O 2 View point 1 O 4 2 3 5 1 O 3 3 2 O 1 out O 2 out O 3 out IN 4 out 6 out out IN IN 38

Check occlusion of objects T 1 and T 2 by inserting them in tree

Check occlusion of objects T 1 and T 2 by inserting them in tree Tree 4 1 O 2 View point 2 3 T 2 1 O 3 3 2 O 1 5 6 out O 2 out O 3 out IN 4 out T 1 O 1 out IN IN 39

Occluder selection • This is a big issue relevant to most occlusion culling algorithms

Occluder selection • This is a big issue relevant to most occlusion culling algorithms but particularly to the last two • At pre-processing – Identify likely occluders for a cell • they subtend a large solid-angle – Test likely occluders • use a sample of viewpoints and compute actual shadow volumes resulting • At run time – locate the viewpoint in the hierarchy and use the occluders associated with that node 40

Metric for Comparing Occluder Quality Occluder quality: (-A *(N • V)) / ||D||2 A

Metric for Comparing Occluder Quality Occluder quality: (-A *(N • V)) / ||D||2 A : the occluder’s area N : normal V : viewing direction D : the distance between the viewpoint and the occluder center 41

Cells and Portals (Teller and Sequin, SIG 91) • Decompose space into convex cells

Cells and Portals (Teller and Sequin, SIG 91) • Decompose space into convex cells • For each cell, identify its boundary edges into two sets: opaque or portal • Precompute visibility among cells • During viewing (eg, walkthrough phase), use the precomputed potentially visible polygon set (PVS) of each cell to speed-up rendering 42

Determining Adjacent Information 43

Determining Adjacent Information 43

For Each Cell Find Stabbing Tree 44

For Each Cell Find Stabbing Tree 44

Compute Cell Visible From Each Cell Linear programming problem: S • L 0, S

Compute Cell Visible From Each Cell Linear programming problem: S • L 0, S • R 0, L L R R Find_Visible_Cells(cell C, portal sequence P, visible cell set V) V=V C for each neighbor N of C for each portal p connecting C and N orient p from C to N P’ = P concatenate p if Stabbing_Line(P’) exists then Find_Visible_Cells (N, P’, V) 45

Eye-to-Cell Visibility • The eye-to-cell visibility of any observer is a subset of the

Eye-to-Cell Visibility • The eye-to-cell visibility of any observer is a subset of the cell-to-cell visibility for the cell containing the observer • A cell is visible if – cell is in VV – all cells along stab tree are in VV – all portals along stab tree are in VV – sightline within VV exists through portals 46

Image Space Cells and Portals (Luebke and Georges, I 3 D 95) • Instead

Image Space Cells and Portals (Luebke and Georges, I 3 D 95) • Instead of pre-processing all the PVS calculation, it is possible to use image-space portals to make the computation easier • Can be used in a dynamic setting 47

Top View Showing the Recursive Clipping of the View Volume 48

Top View Showing the Recursive Clipping of the View Volume 48

Discussion on Object Space • Visibility culling with large occluders – good for outdoor

Discussion on Object Space • Visibility culling with large occluders – good for outdoor urban scenes where occluders are large and depth complexity can be very high – not good for general scenes with small occluders • Cells and portals – gives excellent results IF you can find the cells and portals – good for interior scenes – identifying cells and portals is often done by hand • General polygons models “leak” 49

Conclusion • There is a very large number of pointvisibility algorithms • Image space

Conclusion • There is a very large number of pointvisibility algorithms • Image space are becoming more and more attractive • Specialised algorithms should be preferred if speed is most important factor 50