Download presentation
Presentation is loading. Please wait.
1
Frustum Culling in OpenGL
Ref: MarkMoley.com Fall 2006 revised
2
Culling Techniques Fall 2006 revised
3
Outline Introduction Frustum Plane Extraction
View Frustum Plane Equation Frustum Plane Extraction Frustum/Point/Sphere Inclusion Tests Fall 2006 revised
4
Definition (View Frustum)
the volume of space that includes everything visible from a given viewpoint defined by six planes arranged in the shape of a pyramid with the top chopped off If a point is inside this volume then it's in the frustum and it's visible, and vice versa Visible here mean potentially visible. It might be behind another point that obscures it, but it's still in the frustum. … the scope of occlusion culling Fall 2006 revised
5
View Frustum (cont) Fall 2006 revised
6
Definition (Plane) Divide the space into two halves; extends to infinity any given point is (in front of | behind | on) the plane. In R3, a plane is defined by four numbers: A plane equation: Ax + By + Cz +D = 0 Fall 2006 revised
7
Plane Equation Fall 2006 revised
8
Normalized Plane Equation
Fall 2006 revised
9
Frustum Culling Idea: Tasks:
If object is not in frustum, do not send it through pipeline (it is not visible) Wrap the object in a bounding volume; test the bounding volume against frustum (in world coordinate system) Sphere, bounding boxes, … Tasks: Frustum plane extraction Inclusion tests for different bounding volumes Fall 2006 revised
10
Frustum Plane Extraction
The rendering pipeline: P M s u t In frustum culling, s is usually a point on BV, in world coordinate Fall 2006 revised
11
Rendering Pipeline (cont)
M s u t c : product of PM In OpenGL,clip volume is [-1,1]3 Fall 2006 revised
12
Frustum Plane Extraction (Left)
ux uy -1 1 Left Fall 2006 revised
13
Left Plane (cont) The left plane in clip coordinate:
ux uy -1 1 Left The left plane in clip coordinate: The corresponding equation in world coordinate: Fall 2006 revised
14
Frustum Plane Extraction (Right)
ux uy -1 1 Right Fall 2006 revised
15
Right Plane (cont) The right plane in clip coordinate:
ux uy -1 1 Right The right plane in clip coordinate: The corresponding equation in world coordinate: Fall 2006 revised
16
Summary Fall 2006 revised
17
The valid sides of all halfspaces are > 0
PointInFrustum Test A point in frustumin all 6 halfspaces The valid sides of all halfspaces are > 0 Fall 2006 revised
18
SphereInFrustum Test PointInOffsetFrustum Test
Minkowski sum of sphere and frustum Fall 2006 revised
19
Minkowski Sum Coordinate dependent! Fall 2006 revised
20
Signed Distance to Left Plane
Plane equations are further normalized to facilitate distance computation ux uy -1 1 Left d<0 Fall 2006 revised
21
Remarks Use bounding spheres
Can be conservative if the object is slender Use hierarchical bounding volume where appropriate (see next page) BoxInFrustum: complicated and expensive AABB: already so OBB: more so Fall 2006 revised
22
How can bounding volume hierarchies help?
View-frustum culling Ray-tracing Collision detection Fall 2006 revised
23
How can bounding volume hierarchies help?
View-frustum culling Ray-tracing Collision detection Fall 2006 revised
24
How can bounding volume hierarchies help?
View-frustum culling Ray-tracing Collision detection Fall 2006 revised
25
How can bounding volume hierarchies help?
View-frustum culling Ray-tracing Collision detection Fall 2006 revised
26
Example (Culling Off: FPS 15.5)
Fall 2006 revised
27
Example (Culling On: FPS 31.0)
Fall 2006 revised
28
Portal rendering World coordinates?! Plane representation in R3
Epilogue Portal rendering World coordinates?! Plane representation in R3 Fall 2006 revised
29
Indoor Scenes Similar to building walkthrough
Occlusions in scene are common (culling important) Geometric database can be huge; preprocessing is required to facilitate smooth viewing Fall 2006 revised
30
Preprocessing for Indoor Scenes
Potential visible set (PVS) only load the rooms that are visible from the current room Fall 2006 revised
31
Portal Rendering M R K L Ki B C E 1 2 3 4 5 6 7 8 M B 1 4 E 2 C 7 3 6
Fall 2006 revised Ki
32
Portal Rendering only render the other rooms in PVS if the “portal surfaces” are in sight Fall 2006 revised
33
But aren’t s local coordinates?
Earlier, we said… P M s u t But aren’t s local coordinates? Fall 2006 revised
34
Recall Pipeline… Modelview Matrix Fall 2006 revised world coordinates
Transform Viewing Modelview Matrix world coordinates Fall 2006 revised
35
Frustum Culling Scenario
the scene is (mostly) static and specified in their world coordinate (the modeling transform is identity) the viewer navigates around them, changing the viewing transform only Fall 2006 revised
36
Therefore … I t u s t = PMs M : viewing transform s : world coordinate
Model Transform Viewing Modelview Matrix world coordinates I t u s t = PMs M : viewing transform s : world coordinate Fall 2006 revised
37
Verification L R X Z x–z+10 –x–z+10 Fall 2006 revised
38
Supplement: Representing a Plane in R3
x: pivot variable Fall 2006 revised
39
Plane in R3 (cont) n x p Fall 2006 revised
40
Summary Algebraic equation Parametric equation Vector equation
Depending on the application, select the most suitable equation In/out test Projection … Fall 2006 revised
41
Screen-Space Bounding Box (SSBB)
Useful in GPU-assisted collision detection applications Screen-Space Bounding Box (SSBB) Compute and display the screen-space bounding box of an AABB (axis-aligned bounding box) Convert world coordinates to clip coordinates, perspective-divide to get normalized device coordinate (and then window coordinates) Fall 2006 revised
42
Display Viewing Frustum
Useful for projective texturing (showing where the projector is) Useful for illustrating frustum culling Given [-1,1]3 clip coordinates, determine their corresponding world coordinates to render Fall 2006 revised
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.