clipping and culling
play

Clipping and Culling Sung-Eui Yoon ( ) ( ) C Course URL: URL - PowerPoint PPT Presentation

CS380: Computer Graphics p p Clipping and Culling Sung-Eui Yoon ( ) ( ) C Course URL: URL http://sglab.kaist.ac.kr/~sungeui/CG/ Class Objectives Class Objectives Understand clipping and culling Understand clipping


  1. CS380: Computer Graphics p p Clipping and Culling Sung-Eui Yoon ( 윤성의 ) ( 윤성의 ) C Course URL: URL http://sglab.kaist.ac.kr/~sungeui/CG/

  2. Class Objectives Class Objectives ● Understand clipping and culling Understand clipping and culling ● Understand view-frustum, back-face culling and hierarchical culling methods culling, and hierarchical culling methods ● Know various possibilities to perform culling and clipping in the rendering culling and clipping in the rendering pipeline 2

  3. Culling and Clipping Culling and Clipping ● Culling Culling ● Throws away entire objects and primitives that cannot possibly be visible cannot possibly be visible ● An important rendering optimization (esp. for large models) g ) ● Clipping ● “Clips off” the visible portion of a primitive p p p ● Simplifies rasterization ● Also, used to create “cut-away” views of a model 3

  4. Culling Example Culling Example Power plant model Power plant model (12 million triangles) 4

  5. Culling Example Culling Example Full model Full model View frustum culling View frustum culling Occulsion culling Occulsion culling 12 Mtris 10 Mtris 1 Mtris 5

  6. Lines and Planes Lines and Planes ● I mplicit equation for line (plane): I li it ti f li ( l ) ˆ n    n x n y d 0 x y   x d         [n n d] y 0 l p 0     x x y y     1 (0,0) ( , )  ● I f is normalized then d gives the distance of the n  n line (plane) from the origin along 6

  7. Lines and Planes Lines and Planes ● Lines (planes) partition 2D (3D) Li ( l ) titi 2D (3D) ˆ n space: ● Positive and negative half spaces ● Positive and negative half-spaces   l l p  0 0 ● The intersection of negative half- d spaces defines a convex region spaces defines a convex region    l p 0 (0,0) ( , ) 7

  8. Testing Objects for Containment Testing Objects for Containment                  Outside Straddling Inside 8

  9. Conservative Testing Conservative Testing r r  c c c  r c c  Indeterminate Inside Outside Ou s de           l c r r l c  r l c  r ● Use cheap conservative bounds for trivial cases ● Use cheap, conservative bounds for trivial cases ● Can use more accurate, more expensive tests for ambiguous cases if needed g 9

  10. Hierarchical Culling Hierarchical Culling ● Bounding volume hierarchies accelerate culling by ● Bounding volume hierarchies accelerate culling by rejecting/ accepting entire sub-trees at a time ● Bounding volume hierarchies (BVHs) ● Object partitioning hierarchies ● Object partitioning hierarchies ● Uses axis-aligned bounding boxes A BVH A BVH 10

  11. Hierarchical Culling Hierarchical Culling ● Simple algorithm: ● Simple algorithm: while( node is indeterminate ) recurse on children Indeterminate not visited not visited visited Inside Indeterminate Inside Inside Indeterminate Outside 11

  12. View Frustum Culling View Frustum Culling ● Test objects against planes defining view Test objects against planes defining view frustum ● How do you compute them? ● How do you compute them? M 1 -1 1 -1   l [1 0 [ 1 ] ] ● Other planes can be computed similarly 12

  13. Back Face Culling Back-Face Culling ● Special case of occlusion - convex self- Special case of occlusion convex self occlusion ● For closed objects (has well-defined inside and ● 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

  14. Face Plane Test Face Plane Test ● Compute the plane for the face:  Compute the plane for the face: v v 2       v n (v  v ) (v   v )  1 1 0 2 0     d d n v n v 0  v 0 ● Cull if eye point in the negative half-space 14

  15. Back-Face Culling in OpenGL Back Face Culling in OpenGL ● Can cull front faces or back faces C ll f t f b k f ● Back-face culling can sometimes double performance performance if (cull): glFrontFace(GL_CCW) # define winding order glEnable(GL_CULL_FACE) lE bl (GL CULL FACE) # # enable Culling bl C lli glCullFace(GL_BACK) # which faces to cull else: glDisable(GL CULL FACE) glDisable(GL_CULL_FACE) You can also do front-face culling! g 15

  16. Clipping a Line Segment against a Line against a Line ● First check endpoints against the plane First check endpoints against the plane ● I f they are on the same side, no clipping is needed needed p  ● I nterpolate to get new point 1            p p t(p p ) l p  0 0 1 0      p  l (p l (p  t(p t(p  p )) p ))  0 0  p 0 0 1 1 0 0    ( l p )  0 t p     l (p l (p  p ) p )  0 l l 1 0 ● Vertex attributes interpolated the same way 16

  17. Clipping a Polygon against a Line Line ● Traverse edges ● Keep edges that are K d th t entirely inside ● Create new point when Create new point when we exit ● Throw away edges ● Throw away edges entirely outside ● Create new point and ● Create new point and new edge when we enter 17

  18. Clipping against a Convex Region Region ● Sutherland Hodgman ● Sutherland-Hodgman ● Just clip against one edge at a time a time 18

  19. Outcodes Outcodes ● The Cohen-Sutherland The Cohen Sutherland clipping algorithm uses outcodes to quickly outcodes to quickly determine the visibility of a primitive ● An outcode is created for each vertex ● I t is a bit vector with a bit I t i bit t ith bit set for each plane the vertex is outside of is outside of ● Works for any convex region g 19

  20. Outcode for Lines Outcode for Lines (outcode1 OR outcode2) == 0 ( t d 1 OR t d 2) 0 line segment is inside ( (outcode1 AND outcode2) != 0 t d 1 AND t d 2) ! 0 line segment is totally outside (outcode1 AND outcode2) == 0 ( t d 1 t d 2) 0 line segment potentially crosses clip region at planes indicated by set bits in at planes indicated by set bits in (outcode1 XOR outcode2) ● False positive ● False positive ● Some line segments that are classified as potentially crossing the clip region actually don’t crossing the clip region actually don t 20

  21. Outcodes for Triangles Outcodes for Triangles Combine outcodes from vertices Co b e outcodes o e t ces (outcode1 OR outcode2 OR outcode3) == 0 triangle is inside (outcode1 AND outcode2 AND outcode3) != 0 triangle is outside triangle is outside (outcode1 AND outcode2 AND outcode3) == 0 triangle potentially crosses clip region 21

  22. Clipping in the Pipeline Clipping in the Pipeline Clip space Clip space 22

  23. View Frustum Clipping View Frustum Clipping ● Points in projective space need to be clipped ● Points in projective space need to be clipped before projection ● Primitives that straddle the z= 0 plane “flip” Primitives that straddle the z 0 plane flip around infinity when projected project then view frustum view frustum draw gives you draw gives you this near plane p we don’t want to see this part clipped point  z 0 eye 23

  24. Clipping in the Clip Space Clipping in the Clip Space ● NDC simplify view frustum clipping ● NDC simplify view frustum clipping ● Clip after applying projection matrix, but before the divide by w y ● clip coordinates    w x w w       l l [1 [1 1 0] 1 0] w x w x x  v l  0  T x v  [x w 1 ] i i i  w 1 1  w x  0 0 t     v (w x ) (w x ) 1 0 0 1 1 x -1 1 24 ● Easy in/ out test and interpolation

  25. Culling and Clipping in the Rendering Pipeline Rendering Pipeline View frustum culling View frustum clipping and pp g back-face culling can be done here Back-face culling done in setup phase Back-face culling done in setup phase of rasterization 25

  26. Class Objectives were: Class Objectives were: ● Understand clipping and culling Understand clipping and culling ● Understand view-frustum, back-face culling and hierarchical culling methods culling, and hierarchical culling methods ● Know various possibilities to perform culling and clipping in the rendering culling and clipping in the rendering pipeline 26

  27. Reading Assignment Reading Assignment ● Read the chapter “Raster Algorithms” Read the chapter “Raster Algorithms” 27

  28. Next Time Next Time ● Triangulating a polygon ● Triangulating a polygon ● Rasterizing triangles ● I nterpolating parameters I t l ti t 28

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend