visiblity: culling and clipping

24
1 Visiblity: Culling and Clipping Computer Graphics COMP 770 (236) Spring 2009 January 21 & 26: 2009

Upload: kyoko

Post on 09-Feb-2016

55 views

Category:

Documents


0 download

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

TRANSCRIPT

Page 1: Visiblity: Culling and Clipping

1

Visiblity: Culling and Clipping

Computer GraphicsCOMP 770 (236)Spring 2009

January 21 & 26: 2009

Page 2: Visiblity: Culling and Clipping

2

Today’s topics■ Lines and planes■ Culling

° View frustum culling° Back-face culling° Occlusion culling° Hierarchical culling

■ Clipping

Page 3: Visiblity: Culling and 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

Page 4: Visiblity: Culling and Clipping

4

Culling example

■ Power plant model° 13 M triangles° 1.7 M triangles - gutted

version show here with no internal pipes

Page 5: Visiblity: Culling and Clipping

2/05/07 5

Culling example

Full model1.7 Mtris

View frustum culling1.4 Mtris

Occulsion culling89 Ktris

Page 6: Visiblity: Culling and Clipping

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

d

(0,0)

x y

x y

nx n y d 0x

[n n d] y 0 l p 01

p pM 1l l M

l p 0

nn

Page 7: Visiblity: Culling and Clipping

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

d

(0,0)

l p 0

l p 0

l p 0

Page 8: Visiblity: Culling and Clipping

8

Testing objects for containment

Outside Straddling Inside

Page 9: Visiblity: Culling and Clipping

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

Page 10: Visiblity: Culling and Clipping

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

Page 11: Visiblity: Culling and Clipping

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 childrennot visitedvisited

Inside Indeterminate

Indeterminate

Indeterminate OutsideInsideInside

Page 12: Visiblity: Culling and Clipping

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

Page 13: Visiblity: Culling and Clipping

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.

Page 14: Visiblity: Culling and Clipping

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

Page 15: Visiblity: Culling and Clipping

15

Winding order test

■ Back-faces have a clockwise vertex ordering when viewed from outside.

■ Typically used by graphics hardware during triangle setup

Page 16: Visiblity: Culling and Clipping

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

Page 17: Visiblity: Culling and Clipping

2/05/07 17

Occlusion culling with occlusion queries■ Render objects visible in previous frame

(occlusion representation)

Page 18: Visiblity: Culling and Clipping

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

Page 19: Visiblity: Culling and Clipping

2/05/07 19

Occlusion culling with occlusion queries■ Re-enable color writes■ Render newly visible objects

Page 20: Visiblity: Culling and Clipping

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 )

Page 21: Visiblity: Culling and Clipping

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

Page 22: Visiblity: Culling and Clipping

22

Clipping against a convex region

■ Sutherland-Hodgman° Just clip against one edge at

a time

Page 23: Visiblity: Culling and Clipping

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 1 x

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

Page 24: Visiblity: Culling and Clipping

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