40
Culling Techniques Culling Techniques “To cull” means “to select from group” In graphics context: do not process data that will not contribute to the final image The “group” is the entire scene, and the selection is a subset of the scene that we do not consider to contribute

Culling Techniques “To cull” means “to select from group” In graphics context: do not process data that will not contribute to the final image The “group”

Embed Size (px)

Citation preview

Culling TechniquesCulling Techniques

“To cull” means “to select from group” In graphics context: do not process data

that will not contribute to the final imageThe “group” is the entire scene, and the

selection is a subset of the scene that we do not consider to contribute

Culling: OverviewCulling: Overview

Backface cullingHierarchical view-frustum cullingPortal cullingDetail cullingOcclusion culling

Culling examplesCulling examples

view frustum detail

backface

portal occlusion

Backface CullingBackface Culling

Simple technique to discard polygons that faces away from the viewer

Can be used for: – closed surface (example: sphere)– or whenever we know that the backfaces never

should be seen (example: walls in a room)

Two methods (screen space, eye space)Which stages benefits? Rasterizer, but

also Geometry (where test is done)

Backface culling (cont’d)Backface culling (cont’d)

Often implemented for you in the APIOpenGL: glCullFace(GL_BACK);How to determine what faces away?First, must have consistently oriented

polygons, e.g., counterclockwise

0

1

2

front facing0

1

2

back facing

How to cull backfacesHow to cull backfaces

screen space

1

0

2

front

01

2

back

front

backeye

eye space

View-Frustum CullingView-Frustum Culling

Bound every “natural” group of primitives by a simple volume (e.g., sphere, box)

If a bounding volume (BV) is outside the view frustum, then the entire contents of that BV is also outside (not visible)

Avoid further processing of such BV’s and their containing geometry

Can we accelerate VF culling Can we accelerate VF culling further?further?

Do what we always do in graphics…Use a hierarchical approach, e.g,

the scene graphWhich stages benefits?

– Geometry and Rasterizer – Bus between CPU and Geometry

Example of Hierarchical View Example of Hierarchical View Frustum CullingFrustum Culling

root

camera

Culling examplesCulling examples

view frustum detail

backface

portal occlusion

Cells and PortalsCells and Portals

[Airey90, Teller91, Luebke95]

Cells and PortalsCells and Portals

For each cell, create a list (set) of potentially visible objects (or PVS) from any viewpoint in the cell.

During run-time:– Determine cell of the current eye-point and gets

its PVS.– Cull down this list by clipping to the viewing

frustum.– Render this set.

Determining the PVSDetermining the PVS

Two options:– Static (preprocessing stage)

Cell-to-cell visibility Cell-to-region visibility Cell-to-object visibility Leads to very large and complicated data structures.

– Dynamic (dependent on the viewing frustum) Eye-to-cell Eye-to-region Eye-object

CellsCells andand PortalsPortals(Teller and Sequin, SIG 91)(Teller and Sequin, SIG 91)

Decompose space into convex cellsFor each cell, identify its boundary edges

into two sets: opaque or portalPre-compute visibility among cellsDuring viewing (e.g., walkthrough phase),

use the pre-computed potentially visible polygon set (PVS) of each cell to speed-up rendering

Determining Adjacent InformationDetermining Adjacent Information

Cell-to-Cell VisibilityCell-to-Cell Visibility

For Each Cell Find Stabbing Tree

Compute Compute CCells ells VisibleVisible From From EachEach CCellell

S•L 0, L LS•R 0, R RLinear programming problem:

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)

Cell-to-Region VisibilityCell-to-Region Visibility

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

The cell-to-region visibility is a subset of the cell-to-cell visibility for the current cell.

Cell-to-Region VisibilityCell-to-Region Visibility

The cell-to-object visibility is a list of those objects that are in the visible regions.

Image Space Cells and PortalsImage Space Cells and Portals ((Luebke and Georges, I3D 95)Luebke and Georges, I3D 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

Top View Showing Top View Showing tthe Recursivehe Recursive Clipping Clipping of the View Volumeof the View Volume

Portal CullingPortal CullingImages courtesy of David P. Luebke and Chris Georges

Average: culled 20-50% of the polys in view Speedup: from slightly better to 10 times

Portal culling examplePortal culling example In a building from above Circles are objects to be rendered

Portal Culling AlgorithmPortal Culling Algorithm

Divide into cells with portals (build graph)For each frame:

– Locate cell of viewer and init 2D AABB to whole screen

– * Render current cell with VF cull w.r.t. AABB– Traverse to closest cells (through portals)– Intersection of AABB & AABB of traversed portal– Goto *

Portal overestimationPortal overestimation

To simplify:

actual portal overestimated portal

Portal Culling AlgorithmPortal Culling Algorithm

When to exit:– When the current AABB is empty– When we do not have enough time to render a

cell (“far away” from the viewer)

Also: mark rendered objectsWhich stages benefits?

– Geometry, Rasterizer, and Bus

Source (for Performer-based pfPortal): http://www.cs.virginia.edu/~luebke/

Replacing Geometry with ImagesReplacing Geometry with Images

Algorithm– Select subset of model– Create image of the subset– Cull subset and replace with image

Why?– Image displayed in (approx.) constant time– Image reused for several frames

Portal ImagesPortal Images

[Aliaga97]

Simple ExampleSimple Example

Simple ExampleSimple Example

Simple ExampleSimple Example

Creating Portal ImagesCreating Portal Images

portaleye

Ideal portal Ideal portal image would be image would be one sampled one sampled from the current from the current eye positioneye position

Creating Portal ImagesCreating Portal Images

Reference COPs

Display one of a large number of pre-computed images (~120) portal

Creating Portal ImagesCreating Portal Images

portal

Reference COPs

or…

Warp one of a much smaller number of reference images

Example RenderingExample Rendering

Final Scene

Geometry

Image

+ =

Discussion on Object Space 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

VISUALIZE fx’s Occlusion Culling VISUALIZE fx’s Occlusion Culling AlgorithmAlgorithm

Algorithm (extension to OpenGL):– Scan convert faces of object, typically bounding

box of complex object, but do not write Z– Get boolean which says if there was a Z-value

from scan conversion that was closer than that of the Z-buffer (NVIDIA: get pixels seen count)

– If seen, render complex object

VISUALIZE fx’s Occlusion Culling VISUALIZE fx’s Occlusion Culling Algorithm (cont’d)Algorithm (cont’d)

Implications:– If an object is occluded, then we gain (hopefully)

a lot of performance since we only scan convert one Bounding Box (BB) instead of the entire object

– If BB is not occluded, then we have to render the object, and we lose a little performance

Drawing order matters: drawing front-to-back gives more occlusion

Real-Time Rendering?Real-Time Rendering? In computer graphics, “real-time” is used

in a soft way: say >30 fps for most frames

In other contexts, it’s a tougher requirement: the framerate must never be <30 fps, i.e., constant framerate

What can we do?– Reactive LOD algorithm– Reactive detail culling– Reactive visual quality

Resources and PointersResources and Pointers

http://www.realtimerendering.comJournal of Graphics Tools

– http://www.acm.org/jgt/– source for projected screen area of box– intersection test routines– occlusion culling

http://www.magic-software.com