SlideServe
Menu
Préférences
© SlideServe · v2026

Visibility Culling

joelle-moore avatar
19 diapositives · 389 Views · Nov 15, 2014

Visibility Culling. Visibility Culling. Back face culling View-frustrum culling Detail culling Occlusion culling. Construct bounding volumes (BVs) Create hierarchy BV/V-F intersection tests. View-Frustum Culling. Remove objects that are outside the viewing frustum.

Visibility Culling - slide 1
01 / 19Visibility Culling
1 / 17

Télécharger la présentation

Visibility Culling
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Visibility Culling

  2. Visibility Culling • Back face culling • View-frustrum culling • Detail culling • Occlusion culling

  3. Construct bounding • volumes (BVs) • Create hierarchy • BV/V-F intersection • tests View-Frustum Culling • Remove objects that are outside the viewing frustum Mostly done in “Application Stage”

  4. View-Frustum Culling (2) • Culling against bounding volumes to save time • Bounding volumes – AABB, OBB, Spheres, etc. – easy to compute, as tight as possible Sphere OBB AABB

  5. View-Frustum Culling (3) • Often done hierarchically to save time In-order, top-down traversal and test

  6. View-Frustum Culling (4) • Two popular hierarchical data structures – BSP Tree and Octree Axis-Aligned BSP Polygon-Aligned BSP Intersecting?

  7. View-Frustum Culling (5) • Octree • A parent has 8 childrens • Subdivide the space until the • number of primitives within • each leaf node is less than a • threshold • In-order, top-down traversal

  8. Detail Culling • A technique that sacrifices quality for speed • Base on the size of projected BV – if it is too small, discard it. • Also often done hierarchilcally Always helps to create a hierarchical structure, or scene graph.

  9. Occulusion Culling • Discard objects that are occluded • Z-buffer is not the smartest algorithm in the world (particularly for high depth- complexity scenes) • We want to avoid the processing of invisible objects

  10. Occlusion Culling (2) • G: input graphics data • Or: occlusion representation • The problem: • algorithms for isOccluded() • Fast update Or OcclusionCulling (G) Or = empty For each object g in G if (isOccluded(g, Or)) skip g else render (g) update (Or) end End

  11. Hierarchical Visibility • Object-space octree • Primitives in a octree node are hidden if the octree node (cube) is hidden • A octree cube is hidden if its 6 faces are hidden polygons • Hierarchical visibility test:

  12. Hierarchical Visibility (obj-sp.) From the root of octree: • View-frustum culling • Scan conversion each of the 6 faces and perform z-buffering • If all 6 faces are hidden, discard the entire node and sub-branches • Otherwise, render the primitives here and traverse the front-to-back children recursively A conservative algorithm – why?

  13. Hierarchical Visibility (obj-sp.) • Scan conversion the octree faces can be expensive – cover a large number of pixels (overhead) • How can we reduce the overhead? • Goal: quickly conclude that a large polygon is hidden • Method: use hierarchical z-buffer !

  14. Hierarchical Z-buffer An image-space approach • Create a Z-pyramid 1 value ¼ resolutin ½ resolution Original Z-buffer

  15. 1 0 6 0 3 1 2 • 6 9 3 9 1 2 9 2 9 1 2 2 Hierarchical Z-buffer (2) ?

  16. Hierarchical Z-buffer (3) Isoccluded(g, Zp) near z = nearZ(BV(g)) if (near Z behind Zp_root.z) return true else return ( Isoccluded(g,Zp.c[0]) && Isoccluded(g,Zp.c[1]) && Isoccluded(g,Zp.c[2]) && Isoccluded(g,Zp.c[3]) ) end

  17. Hierarchical Z-buffer (4) update Visibility (OctreeNode N) if (isOccluded (N, Zp) then return; for each primitive p in N render and update Zp end for each child node C of N in front-to-back order Visibility ( C ) end

  18. Some Practical Issues • A fast software algorithm • Lack of hardware support • Scan conversion • Efficient query of if a polygon is visible (without render it) • Z feedback

  19. Combining with hardware • Utilizing frame-to-frame coherence • First frame – regular HZ algorithm (software) • Remember the visible octree nodes • Second frame (view changes slightly) • Render the previous visible nodes using OpenGL • Read back the Z-buffer and construct Z-pyramid • Perform regular HZ (software) • What about the third frame? • Utilizing hardware to perform rendering and Z-buffering – considerably faster