Upload
felicia-reilly
View
32
Download
0
Embed Size (px)
DESCRIPTION
Visiblity: Culling and Clipping. Computer Graphics COMP 770 (236) Spring 2009 January 21 & 26: 2009. Today’s topics. Lines and planes Culling View frustum culling Back-face culling Occlusion culling Hierarchical culling Clipping. What are culling and clipping?. Culling - PowerPoint PPT Presentation
Citation preview
1
Visiblity: Culling and Clipping
Computer GraphicsCOMP 770 (236)Spring 2009
January 21 & 26: 2009
2
Today’s topics
■ Lines and planes■ Culling
° View frustum culling° Back-face culling° Occlusion culling° Hierarchical culling
■ Clipping
3
What are culling and clipping?
■ Culling° Throws away entire objects and primitives
that cannot possibly be visible° An important rendering optimization (esp.
for large models)
■ Clipping° “Clips off” the visible portion of a primitive° Simplifies rasterization ° Used to create “cut-away” views of a
model
4
Culling example
■ Power plant model° 13 M triangles° 1.7 M triangles - gutted
version show here with no internal pipes
2/05/07 5
Culling example
Full model1.7 Mtris
View frustum culling1.4 Mtris
Occulsion culling89 Ktris
6
■ Implicit equation for line (plane):
■ If is normalized then d gives the distance of the line (plane) from the origin along
■ Transforming points and lines with transformation M: points: lines:
Lines and planes
n̂
d
(0,0)
x y
x y
nx n y d 0
x
[n n d] y 0 l p 0
1
p pM 1l l M
l p
0
n
n
2/05/07 7
■ Lines (planes) partition 2D (3D)space:° positive and negative half spaces
■ The union of negative half-spacesdefines a convex region
Lines and planes
n̂
d
(0,0)
l p 0
l p 0
l p
0
8
Testing objects for containment
Outside Straddling Inside
2/05/07 9
Conservative testing
Outside
rc
l c r Indeterminate
r l c r
rc
Insidel c r
rc
■ Use cheap, conservative bounds for trivial cases■ Can use more accurate, more expensive tests for
ambiguous cases if needed
2/05/07 10
View frustum culling
■ Test objects against planes defining view frustum
■ How do you compute them?
■ Other planes can be computed similarly
-1 11
-1
M
l [1 0 1] t
c1 c3l l (m m ) Mcolumn 1- column 3
2/05/07 11
Hierachical culling
■ Culling needs to be cheap!■ Bounding volume hierarchies accelerate culling by trivially
rejecting/accepting entire sub-trees at a time■ Simple algorithm:
while( node is indeterminate ) recurse on children
not visitedvisited
Inside Indeterminate
Indeterminate
Indeterminate OutsideInsideInside
2/05/07 12
Back-face culling
■ Special case of occlusion - convex self-occlusion° for closed objects (has well-defined inside and
outside) some parts of the surface must be blocked by other parts of the surface
■ Specifically, the backside of the object is not visible
13
Manifold
■ Back-face culling can be applied to any orientable two-manifold.
■ Orientable two-manifolds have the following properties.1. All points on the surface are locally like a plane. No holes,
cracks, or self-intersections. 2. Boundary partitions 3D space into interior and exterior regions
■ In our case, manifolds will be composite objects made of many primitives, generally triangles.
■ Back-face culling eliminates a subset of these primitives. ° Assumes that you are outside of all objects.
2/05/07 14
Face plane test
■ Compute the plane for the face:
■ Cull if eye point in the negative half-space
1 0 2 0n (v v ) (v v )
0v
1v2v
0d n v
15
Winding order test
■ Back-faces have a clockwise vertex ordering when viewed from outside.
■ Typically used by graphics hardware during triangle setup
2/05/07 16
Back-face culling in OpenGL
if (cull): glFrontFace(GL_CCW) # define winding order glEnable(GL_CULL_FACE) # enable Culling glCullFace(GL_BACK) # which faces to cull else: glDisable(GL_CULL_FACE)
■ Can cull front faces or back faces■ Back-face can sometimes double performance
front-face culling
2/05/07 17
Occlusion culling with occlusion queries
■ Render objects visible in previous frame (occlusion representation)
2/05/07 18
Occlusion culling with occlusion queries■ Turn off color and depth writes. ■ Render object bounding boxes with occlusion
queries.° An occlusion query returns the number of visible pixels
newly visible
2/05/07 19
Occlusion culling with occlusion queries■ Re-enable color writes■ Render newly visible objects
20
Clipping a line segment against a line■ First check endpoints against the plane. If
they are on the same side, no clipping is needed
■ Interpolate to get new point
■ Vertex attributes interpolated the same way
0p
1p
p
l
0 1 0p p t(p p )
l p 0
0 1 0
0
1 0
l (p t(p p )) 0
( l p )t
l (p p )
21
Clipping a polygon against a line
■ Traverse edges■ Keep edges that are
entirely inside■ Create new point when
we exit■ Throw away edges
entirely outside■ Create new point and
new edge when we enter
22
Clipping against a convex region
■ Sutherland-Hodgman° Just clip against one edge at
a time
2/05/07 23
Homogeneous clipping
■ NDC simplify view frustum clipping■ Clip after applying projection matrix, but before
the divide by w° clip coordinates
■ Easy in/out test and interpolation. Other coordinates treated exactly the same way
-1 1x
w
w 1
w xw xw x w
xl x
i i i
0 0
0 0 1 1
l [1 1 0]
v [x w 1]
w xt
(w x ) (w x)
T0v
1v
Add extra coordinateso we can use our lineequation
2/05/07 24
Culling and clipping in therendering pipeline
Culling done by application
View frustum clipping on clip coordinates.Back-face culling done in setup phaseof rasterization.
Eye coordinates. View frustum clipping andback-face culling can be done here