culling - university of california, san diego · view frustum culling using spheres •...
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/9.jpg)
•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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/10.jpg)
•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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/25.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/26.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/27.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042712/5f96632b4c6fb54e840ac413/html5/thumbnails/28.jpg)
Occlusion culling
• Umbra 3 Occlusion Culling explained – https://www.youtube.com/watch?v=5h4QgDBwQhc
28CSE 167, Winter 2018