culling - university of california, san diego · view frustum culling using spheres •...

28
Culling Computer Graphics CSE 167 Lecture 12

Upload: others

Post on 06-Aug-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

Culling

Computer GraphicsCSE 167

Lecture 12

Page 2: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

CSE 167: Computer graphics

• Culling– Definition: selecting from a large quantity– In computer graphics: selecting primitives (or batches of primitives) that are visible

• If culling is performed early in the graphics pipeline, then rejected invisible objects are not fetched, transformed, rasterized, or shaded

CSE 167, Winter 2018 2

Page 3: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

Types of culling

• View frustum culling• Backface culling• Contribution (or small object) culling• Degenerate culling• Occlusion culling

CSE 167, Winter 2018 3Based on slides courtesy of Jurgen Schulze

Page 4: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

View frustum culling

• Triangles outside of view frustum are off‐screen– Performed on canonical view volume

CSE 167, Winter 2018 4Images: SGI OpenGL Optimizer Programmer's Guide

Page 5: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

View frustum culling

• Rendering Optimizations ‐ Frustum Culling – https://www.youtube.com/watch?v=kvVHp9wMAO8

• View Frustum Culling Demo – https://www.youtube.com/watch?v=bJrYTBGpwic

CSE 167, Winter 2018 5

Page 6: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

Bounding volumes

• How to cull objects consisting of may polygons? 

• Intersect boundingvolume with view frustum instead of each primitive

• Simple shape that completelyencloses an object

CSE 167, Winter 2018 6

Page 7: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

Bounding volumes

• Commonly, a sphere or cuboid– Easier to calculate culling for spheres– Easier to calculate tight fits for cuboids (boxes)

• Cull bounding box– Box is smallest box containing the entire object– Simple approach: rectangular box, parallel to object space coordinate planes

• May not be tightest fit

CSE 167, Winter 2018 7

Page 8: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

View frustum culling• Frustum is defined by 6 planes• Each plane divides space into “outside”, “inside”

• Check each object against each plane– Outside, inside, intersecting

• If outside all planes– Outside the frustum

• If inside all planes– Inside the frustum

• Else, partially inside frustum– Intersecting the frustum

CSE 167, Winter 2018 8

View frustum

Page 9: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

•p

• x

Distance to plane

• A plane is described by a point p on the plane and a unit normal n

• Find the (perpendicular) distance from point xto the plane

CSE 167, Winter 2018 9

rn

Page 10: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

•p

• x

Distance to plane

• The distance is the length of the projection of (x‐p) onto n

CSE 167, Winter 2018 10

 dist x p u ruuuuuu

rn

rn xpu ruuuu

Page 11: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

Distance to plane

• The distance has a sign (oriented plane)– Positive on the side of the plane the normal points to– Negative on the opposite side– Zero exactly on the plane

• Divides 3D space into two infinite half‐spaces

CSE 167, Winter 2018 11

•p dist(x) x p

u ruuuuuurn

rn Positive

Negative

• x

Page 12: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

Distance to plane

• Simplification

• Where d is distance from the origin to the plane• d is independent of x• We can represent a plane with just d and n

CSE 167, Winter 2018 12

Page 13: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

Frustum with oriented planes

• Normal of each plane points outside of frustum– Outside is positive distance

– Inside is negative distance

CSE 167, Winter 2018 13

Page 14: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

Sphere‐plane test

• For sphere with radius r and origin x, test the distance to the origin, and see if it is beyond the radius

• Three cases:dist(x) > r

• Completely abovedist(x) < ‐r

• Completely below‐r < dist(x) < r

• Intersects

CSE 167, Winter 2018 14

rn Positive

Negative

Page 15: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

View frustum culling using spheres

• Pre‐compute the normal n and value d for each of the six planes.

• Given a sphere with center x and radius r• For each of the six clipping planes

– If dist(x) > r, then sphere is outside (terminate loop)– Else if dist(x) < ‐r, then add 1 to count

• (Alternatively, set a flag if dist(x) ≥ ‐r)

• If we did not terminate the loop early, check the count– If the count is 6 (or flag was not set), then the sphere is completely inside

– Otherwise, the sphere intersects the frustum

CSE 167, Winter 2018 15

Page 16: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

View frustum culling using spheres

• Math for Game Developers ‐ Frustum Culling – https://www.youtube.com/watch?v=4p‐E_31XOPM

CSE 167, Winter 2018 16

Page 17: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

View frustum culling groups of objects

• Able to cull a whole group quickly• But, if the group is partly in and partly out, able to cull individual objects

CSE 167, Winter 2018 17

Page 18: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

View frustum culling using hierarchical bounding volumes

• Given hierarchy of objects• Bounding volume of each node encloses the bounding volumes of all its children

• Start by testing the outermost bounding volume– If it is entirely outside, do not draw the group at all– If it is entirely inside, draw the whole group

CSE 167, Winter 2018 18

Page 19: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

View frustum culling using hierarchical bounding volumes

• If the bounding volume is partly inside and partly outside– Test each child’s bounding volume individually– If the child is in, then draw it; if it is out, then cull it; if it is partly in and partly out, then recurse

– If recursion reaches a leaf node, then draw it normally

CSE 167, Winter 2018 19

Page 20: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

Backface culling• Consider triangles as “one‐sided” (oriented triangle) and only visible from the “front”

• Closed objects– If the “back” of the triangle is facing away from the camera, it is not visible

– Gain efficiency by not drawing it (culling)– Roughly 50% of triangles in a scene are back facing

CSE 167, Winter 2018 20

Page 21: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

Backface culling

• Convention: triangle is front facing if vertices are ordered counterclockwise

CSE 167, Winter 2018 21

p0

p1

p2

p0

p1

p2Front-facing Back-facing

Page 22: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

Backface culling

• Compute triangle normal after projection (homogeneous division)

• If the third component of n negative, then front‐facing; otherwise, back‐facing– Remember: projection matrix is such that homogeneous division flips sign of third component

CSE 167, Winter 2018 22

Page 23: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

Backface culling

CSE 167, Winter 2018 23

Without backface culling With backface culling

Page 24: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

Backface culling• OpenGL allows one‐ or two‐sided triangles

– One‐sided triangles• glEnable(GL_CULL_FACE); glCullFace(GL_BACK)

– Two‐sided triangles (no backface culling)• glDisable(GL_CULL_FACE)

CSE 167, Winter 2018 24

glDisable(GL_CULL_FACE);   glEnable(GL_CULL_FACE); 

Page 25: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

Contribution (or small object) culling

• Object projects to less than a specified size– Cull objects whose screen‐space bounding box is less than a threshold number of pixels, as these objects do not contribute significantly to the final image

25CSE 167, Winter 2018

Page 26: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

Degenerate culling

• Projected triangle is degenerate– Normal n = 0 (plane at infinity, not really degenerate)

– All vertices in a straight line– All vertices in the same place

CSE 167, Winter 2018 26

Source: Computer Methods in Applied Mechanics and Engineering, Volume 194, Issues 48–49

Page 27: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

Occlusion culling

• Geometry hidden behind occluder cannot be seen– Many complex algorithms exist to identify occluded geometry

CSE 167, Winter 2018 27

Images: SGI OpenGL Optimizer Programmer's Guide

Page 28: Culling - University of California, San Diego · View frustum culling using spheres • Pre‐compute the normal n and value d for each of the six planes. • Given a sphere with

Occlusion culling

• Umbra 3 Occlusion Culling explained – https://www.youtube.com/watch?v=5h4QgDBwQhc

28CSE 167, Winter 2018