Title: Culling Techniques
1Culling 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
2Culling Overview
- Backface culling
- Hierarchical view-frustum culling
- Portal culling
- Detail culling
- Occlusion culling
3Culling examples
4Backface 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)
5Backface culling (contd)
- Often implemented for you in the API
- OpenGL glCullFace(GL_BACK)
- How to determine what faces away?
- First, must have consistently oriented polygons,
e.g., counterclockwise
2
2
0
1
0
front facing
back facing
1
6How to cull backfaces
1
2
back
2
eye
1
front
0
0
front
back
screen space
eye space
7View-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 BVs and their
containing geometry
8Can we accelerate VF culling further?
- Do what we always do in graphics
- Use a hierarchical approach, e.g, the
scene graph - Which stages benefits?
- Geometry and Rasterizer
- Bus between CPU and Geometry
9Example of Hierarchical View Frustum Culling
camera
10Culling examples
11Cells and Portals
- Airey90, Teller91, Luebke95
12Cells 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.
13Determining 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
14Cells 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 - Pre-compute visibility among cells
- During viewing (e.g., walkthrough phase), use the
pre-computed potentially visible polygon set
(PVS) of each cell to speed-up rendering
15Determining Adjacent Information
16Cell-to-Cell Visibility
- For Each Cell Find Stabbing Tree
17Compute Cells Visible From Each Cell
Linear programming problem
18Cell-to-Region Visibility
- The cell-to-region visibility is a subset of the
cell-to-cell visibility for the current cell.
- 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
19Cell-to-Region Visibility
- The cell-to-object visibility is a list of those
objects that are in the visible regions.
20Image Space Cells and Portals (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
21Top View Showing the Recursive Clipping of the
View Volume
22Portal Culling
Images courtesy of David P. Luebke and Chris
Georges
- Average culled 20-50 of the polys in view
- Speedup from slightly better to 10 times
23Portal culling example
- In a building from above
- Circles are objects to be rendered
24Portal 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
25Portal overestimation
actual portal
overestimated portal
26Portal 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 objects
- Which stages benefits?
- Geometry, Rasterizer, and Bus
- Source (for Performer-based pfPortal)
http//www.cs.virginia.edu/luebke/
27Replacing 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
28Portal Images
29Simple Example
30Simple Example
31Simple Example
32Creating Portal Images
Ideal portal image would be one sampled from the
current eye position
portal
eye
33Creating Portal Images
Reference COPs
Display one of a large number of pre-computed
images (120)
34Creating Portal Images
Reference COPs
or Warp one of a much smaller number of
reference images
portal
35Example Rendering
Geometry
Final Scene
Image
36Discussion 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
37VISUALIZE fxs Occlusion Culling Algorithm
- 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
38VISUALIZE fxs Occlusion Culling Algorithm
(contd)
- 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
39Real-Time Rendering?
- In computer graphics, real-time is used in a
soft way say gt30 fps for most frames - In other contexts, its a tougher requirement
the framerate must never be lt30 fps, i.e.,
constant framerate - What can we do?
- Reactive LOD algorithm
- Reactive detail culling
- Reactive visual quality
40Resources and Pointers
- http//www.realtimerendering.com
- Journal 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