Download presentation
Presentation is loading. Please wait.
Published byBasil Melton Modified over 8 years ago
1
7/17/98 HZ Hierarchical Occlusion Maps stolen by Dave Luebke from the Ph.D. Defense presentation of: Hansong Zhang Department of Computer Science UNC-Chapel Hill Hansong Zhang Department of Computer Science UNC-Chapel Hill
2
7/17/98 HZ Visibility Culling Discard objects not visible to the viewer View Point View-frustum culling Back-face culling Occlusion culling View Frustum
3
7/17/98 HZ Hierarchical Occlusion Maps: Overview Blue parts: occluders Red parts: occludees
4
7/17/98 HZ Effective Algorithms Generality –Arbitrary models Speed-up –Significant, fast culling for interactive graphics Portability –Few hardware assumptions –Robustness Generality –Arbitrary models Speed-up –Significant, fast culling for interactive graphics Portability –Few hardware assumptions –Robustness
5
7/17/98 HZ Thesis Statement By properly decomposing the occlusion-culling problem and efficiently representing occlusion, we can obtain effective algorithms and systems for occlusion culling.
6
7/17/98 HZ Observations Want to handle cumulative occlusion View Point A B
7
7/17/98 HZ Observations Want an occlusion representation (OR) Fast to computeFast to compute Fast to useFast to use Want an occlusion representation (OR) Fast to computeFast to compute Fast to useFast to use View Point A B
8
7/17/98 HZ Observations Progressive occlusion culling Initialize OR to null for each object Occlusion test against OR if culled Discard object else Render object Update OR Progressive occlusion culling Initialize OR to null for each object Occlusion test against OR if culled Discard object else Render object Update OR
9
7/17/98 HZ Observations Multi-pass occlusion culling Initialize OR to null; initialize PO to empty for each object Occlusion test against OR If culled Discard object else Render object Add object to PO if PO is large enough Update OR with objects in PO Multi-pass occlusion culling Initialize OR to null; initialize PO to empty for each object Occlusion test against OR If culled Discard object else Render object Add object to PO if PO is large enough Update OR with objects in PO #passes = #updates The set of potential occluders
10
7/17/98 HZ Observations Special case: one-pass occlusion culling Select occluders until PO is large enoughSelect occluders until PO is large enough Update (build) occlusion representationUpdate (build) occlusion representation Occlusion culling & final renderingOcclusion culling & final rendering Special case: one-pass occlusion culling Select occluders until PO is large enoughSelect occluders until PO is large enough Update (build) occlusion representationUpdate (build) occlusion representation Occlusion culling & final renderingOcclusion culling & final rendering
11
7/17/98 HZ Problem Decomposition View Point Z X Y Occlusion = depth + overlap
12
7/17/98 HZ Problem Decomposition Verifying occlusion Overlap testsOverlap tests –Based on representations for projection Depth testsDepth tests –Based on representations for depth Verifying occlusion Overlap testsOverlap tests –Based on representations for projection Depth testsDepth tests –Based on representations for depth
13
7/17/98 HZ Rendered Image Occlusion Map Occlusion Maps
14
7/17/98 HZ Occlusion Maps An occlusion mapAn occlusion map –Corresponds to a screen subdivision –Records average opacity for each partition Can be generated by rendering occludersCan be generated by rendering occluders –Record pixel opacities (pixel coverage) Merge projections of occludersMerge projections of occluders Represent occlusion in image-spaceRepresent occlusion in image-space An occlusion mapAn occlusion map –Corresponds to a screen subdivision –Records average opacity for each partition Can be generated by rendering occludersCan be generated by rendering occluders –Record pixel opacities (pixel coverage) Merge projections of occludersMerge projections of occluders Represent occlusion in image-spaceRepresent occlusion in image-space
15
7/17/98 HZ Occlusion Map Pyramid 64 x 6432 x 3216 x 16
16
7/17/98 HZ Occlusion Map Pyramid
17
7/17/98 HZ Occlusion Map Pyramid Analyzing cumulative projection A hierarchy of occlusion maps (HOM)A hierarchy of occlusion maps (HOM) Made by recursive averaging (low-pass filtering)Made by recursive averaging (low-pass filtering) Record average opacities for blocks of pixelsRecord average opacities for blocks of pixels Represent occlusion at multiple resolutionsRepresent occlusion at multiple resolutions Construction accelerated by hardwareConstruction accelerated by hardware Analyzing cumulative projection A hierarchy of occlusion maps (HOM)A hierarchy of occlusion maps (HOM) Made by recursive averaging (low-pass filtering)Made by recursive averaging (low-pass filtering) Record average opacities for blocks of pixelsRecord average opacities for blocks of pixels Represent occlusion at multiple resolutionsRepresent occlusion at multiple resolutions Construction accelerated by hardwareConstruction accelerated by hardware
18
7/17/98 HZ Overlap Tests Problem: is the projection of tested object inside the cumulative projection of the occluders?Problem: is the projection of tested object inside the cumulative projection of the occluders? Cumulative projection of occluders: the pyramidCumulative projection of occluders: the pyramid Projection of the tested objectProjection of the tested object –Conservative overestimation »Bounding boxes (BB) »Bounding rectangles (BR) of BB’s Problem: is the projection of tested object inside the cumulative projection of the occluders?Problem: is the projection of tested object inside the cumulative projection of the occluders? Cumulative projection of occluders: the pyramidCumulative projection of occluders: the pyramid Projection of the tested objectProjection of the tested object –Conservative overestimation »Bounding boxes (BB) »Bounding rectangles (BR) of BB’s
19
7/17/98 HZ Overlap Tests The basic algorithm Given: HOM pyramid; the object to be tested Compute BR and the initial level in the pyramid Compute BR and the initial level in the pyramid for each pixel touched by the BR for each pixel touched by the BR if pixel is fully opaque continueelse if level = 0 return FALSE elsedescend...
20
7/17/98 HZ Overlap Tests Evaluating opacity: early termination Conservative rejectionConservative rejection Aggressive approximate cullingAggressive approximate culling Predictive rejectionPredictive rejection Evaluating opacity: early termination Conservative rejectionConservative rejection Aggressive approximate cullingAggressive approximate culling Predictive rejectionPredictive rejection
21
7/17/98 HZ Conservative Rejection A low-opacity pixel does not correspond to many high-opacity pixels at finer levelsA low-opacity pixel does not correspond to many high-opacity pixels at finer levels The transparency thresholdThe transparency threshold A low-opacity pixel does not correspond to many high-opacity pixels at finer levelsA low-opacity pixel does not correspond to many high-opacity pixels at finer levels The transparency thresholdThe transparency threshold 1111 10.811 0.9 0.10 0.20.300
22
7/17/98 HZ Aggressive Approximate Culling Ignoring barely-visible objects Small holes in or among objectsSmall holes in or among objects To ignore the small holesTo ignore the small holes –LPF suppresses noise — holes “dissolve” –Thresholding: regard “very high” opacity as fully opaque The opacity threshold: the opacity above which a pixel is considered to be fully opaqueThe opacity threshold: the opacity above which a pixel is considered to be fully opaque Ignoring barely-visible objects Small holes in or among objectsSmall holes in or among objects To ignore the small holesTo ignore the small holes –LPF suppresses noise — holes “dissolve” –Thresholding: regard “very high” opacity as fully opaque The opacity threshold: the opacity above which a pixel is considered to be fully opaqueThe opacity threshold: the opacity above which a pixel is considered to be fully opaque
23
7/17/98 HZ Aggressive Approximate Culling 0 1 234
24
7/17/98 HZ Aggressive Approximate culling Further descent not necessary when fully opaqueFurther descent not necessary when fully opaque –Tests terminated before holes are reached Need different opacity thresholds for each levelNeed different opacity thresholds for each level Further descent not necessary when fully opaqueFurther descent not necessary when fully opaque –Tests terminated before holes are reached Need different opacity thresholds for each levelNeed different opacity thresholds for each level
25
7/17/98 HZ Predictive Rejection Terminate the test knowing it must fail later...Terminate the test knowing it must fail later...
26
7/17/98 HZ Summary: Levels of Visibility The continuum between being visible and non-visible Almost transparent (low opacity) Almost opaque (high opacity) Almost visible Almost non-visible Occlusion Maps Potential Occludees
27
7/17/98 HZ Resolving Depth What’s left of the occlusion test? B A “A occludes B” = “A’s projection contains B’s” + ? B does not occlude any part of A Another interpretation...
28
7/17/98 HZ Resolving Depth Depth representations Define a boundary beyond which an object overlapping occluders is definitely occludedDefine a boundary beyond which an object overlapping occluders is definitely occluded Conservative estimates:Conservative estimates: –A single plane –Depth estimation buffer No-background z-bufferNo-background z-buffer Depth representations Define a boundary beyond which an object overlapping occluders is definitely occludedDefine a boundary beyond which an object overlapping occluders is definitely occluded Conservative estimates:Conservative estimates: –A single plane –Depth estimation buffer No-background z-bufferNo-background z-buffer
29
7/17/98 HZ A single plane The point with nearest depth Occluders Viewing direction This object passes the depth test The plane A Image plane … at the farthest vertex of the occluders
30
7/17/98 HZ Depth Estimation Buffer Like a low-res depth buffer Uniform subdivision of the screenUniform subdivision of the screen A plane for each partitionA plane for each partition Defines the far boundaryDefines the far boundary Updates (i.e. computing depth representation)Updates (i.e. computing depth representation) –Occluder bounding rectangle at farthest depth Depth testsDepth tests –Occudee bounding rectangle at nearest depth Like a low-res depth buffer Uniform subdivision of the screenUniform subdivision of the screen A plane for each partitionA plane for each partition Defines the far boundaryDefines the far boundary Updates (i.e. computing depth representation)Updates (i.e. computing depth representation) –Occluder bounding rectangle at farthest depth Depth testsDepth tests –Occudee bounding rectangle at nearest depth
31
7/17/98 HZ Depth Estimation Buffer Bounding rectangle at nearest depth D. E. B. Occluders A Viewing direction Transformed view-frustum Bounding rectangle at farthest depth B Imageplane
32
7/17/98 HZ Depth Estimation Buffer Trade-off AdvantagesAdvantages –Removes need for strict depth sorting –Speed –Portability DisadvantagesDisadvantages –Conservative far boundary –Requires good bounding volumes Trade-off AdvantagesAdvantages –Removes need for strict depth sorting –Speed –Portability DisadvantagesDisadvantages –Conservative far boundary –Requires good bounding volumes
33
7/17/98 HZ No-Background Z-Buffer The z-buffer from occluder rendering...The z-buffer from occluder rendering... –is by itself an full occlusion representation –has to be modified to support our depth tests “Removing” background depth values“Removing” background depth values –Replace them the “foreground” depth values Captures the near boundaryCaptures the near boundary The z-buffer from occluder rendering...The z-buffer from occluder rendering... –is by itself an full occlusion representation –has to be modified to support our depth tests “Removing” background depth values“Removing” background depth values –Replace them the “foreground” depth values Captures the near boundaryCaptures the near boundary
34
7/17/98 HZ No-Background Z-Buffer D. E. B Occluders N. B. Z A Viewing direction Transformed view-frustum Objects passing the depth tests Imageplane
35
7/17/98 HZ No-Background Z-Buffer Trade-off AdvantagesAdvantages –Captures the near boundary –Less sensitive to bounding boxes DisadvantagesDisadvantages –Assumes quickly accessible z-buffer –Resolution same as occlusion maps (however…) Trade-off AdvantagesAdvantages –Captures the near boundary –Less sensitive to bounding boxes DisadvantagesDisadvantages –Assumes quickly accessible z-buffer –Resolution same as occlusion maps (however…)
36
7/17/98 HZ Occluder Selection Occlusion-preserving simplification (OPS)Occlusion-preserving simplification (OPS) Run-time selectionRun-time selection Visibility pre-processingVisibility pre-processing Occlusion-preserving simplification (OPS)Occlusion-preserving simplification (OPS) Run-time selectionRun-time selection Visibility pre-processingVisibility pre-processing
37
7/17/98 HZ OPS View-independent OPSView-independent OPS X Z
38
7/17/98 HZ OPS View-dependent OPSView-dependent OPS
39
7/17/98 HZ OPS In practice, use traditional, static LOD’sIn practice, use traditional, static LOD’s –More restrictive view-independent OPS –Well-studied and available –Low run-time overhead –Shared with final rendering, no extra memory –Area-preserving [Erikson 98] Conservative OPS (COPS)...Conservative OPS (COPS)... In practice, use traditional, static LOD’sIn practice, use traditional, static LOD’s –More restrictive view-independent OPS –Well-studied and available –Low run-time overhead –Shared with final rendering, no extra memory –Area-preserving [Erikson 98] Conservative OPS (COPS)...Conservative OPS (COPS)...
40
7/17/98 HZ Occluder selection At run time Distance-based selection with a polygon budgetDistance-based selection with a polygon budget Temporal coherenceTemporal coherence Visibility sampling Pre-compute visible objects on a 3-D gridPre-compute visible objects on a 3-D grid Facilitates run-time selectionFacilitates run-time selection At run time Distance-based selection with a polygon budgetDistance-based selection with a polygon budget Temporal coherenceTemporal coherence Visibility sampling Pre-compute visible objects on a 3-D gridPre-compute visible objects on a 3-D grid Facilitates run-time selectionFacilitates run-time selection
41
7/17/98 HZ Implementation A two-pass framework View Frustum Culling Build Occlusion Representation Scene Database Occluder Selection Rendering Occlusion Culling LOD LOD
42
7/17/98 HZ Implementation PipeliningPipelining FinalDraw N OccDraw N +1 OccDraw N FinalDraw N+1 OccDraw N+2 FinalDraw N +1 OccSel N OccSel N+1 OccSel N+2 OccSel N+3 Cull N Cull N+1 Cull N+2
43
7/17/98 HZ Implementation Uses bounding volume hierarchyUses bounding volume hierarchy Active layers of the pyramid: 4x4 - 64x64Active layers of the pyramid: 4x4 - 64x64 ResolutionsResolutions –Occluder rendering - 256x256 –D. E. B. - 64x64 Test platformsTest platforms –SGI Onyx II, 4 195Mhz R10000, InfiniteReality –SGI Onyx I, 4 250MHz R4400, InfiniteReality Uses bounding volume hierarchyUses bounding volume hierarchy Active layers of the pyramid: 4x4 - 64x64Active layers of the pyramid: 4x4 - 64x64 ResolutionsResolutions –Occluder rendering - 256x256 –D. E. B. - 64x64 Test platformsTest platforms –SGI Onyx II, 4 195Mhz R10000, InfiniteReality –SGI Onyx I, 4 250MHz R4400, InfiniteReality
44
7/17/98 HZ Results The city model
45
7/17/98 HZ Results The city model 312,524 polygons312,524 polygons Single CPUSingle CPU 5,000 occluder polygons5,000 occluder polygons Depth estimation bufferDepth estimation buffer Opacity thresholds 1.0Opacity thresholds 1.0 Lighting; display lists; no triangle stripsLighting; display lists; no triangle strips The city model 312,524 polygons312,524 polygons Single CPUSingle CPU 5,000 occluder polygons5,000 occluder polygons Depth estimation bufferDepth estimation buffer Opacity thresholds 1.0Opacity thresholds 1.0 Lighting; display lists; no triangle stripsLighting; display lists; no triangle strips
46
7/17/98 HZ Results
47
7/17/98 HZ Results
48
7/17/98 HZ Results Auxiliary Machine Room (AMR)
49
7/17/98 HZ Results AMR 632,252 polygons632,252 polygons 3 CPUs3 CPUs 25,000 occluder polygons25,000 occluder polygons No-background z-bufferNo-background z-buffer Approximate culling (0.85 for level 64x64)Approximate culling (0.85 for level 64x64) LODLOD Lighting; display lists; no triangle stripsLighting; display lists; no triangle stripsAMR 632,252 polygons632,252 polygons 3 CPUs3 CPUs 25,000 occluder polygons25,000 occluder polygons No-background z-bufferNo-background z-buffer Approximate culling (0.85 for level 64x64)Approximate culling (0.85 for level 64x64) LODLOD Lighting; display lists; no triangle stripsLighting; display lists; no triangle strips
50
7/17/98 HZ Results
51
7/17/98 HZ Results
52
7/17/98 HZ Results
53
7/17/98 HZ Results The power plant model
54
7/17/98 HZ Results The power plant model 15 million triangles15 million triangles 3 CPUs3 CPUs Visibility pre-processing on a 20x20 grid (~15min)Visibility pre-processing on a 20x20 grid (~15min) No-background z-bufferNo-background z-buffer 18,000 occluder polygons18,000 occluder polygons opacity thresholds from 0.85 and upopacity thresholds from 0.85 and up LODLOD The power plant model 15 million triangles15 million triangles 3 CPUs3 CPUs Visibility pre-processing on a 20x20 grid (~15min)Visibility pre-processing on a 20x20 grid (~15min) No-background z-bufferNo-background z-buffer 18,000 occluder polygons18,000 occluder polygons opacity thresholds from 0.85 and upopacity thresholds from 0.85 and up LODLOD
55
7/17/98 HZ Results
56
7/17/98 HZ
57
Conclusion Goals achieved GeneralityGenerality –Any model, any occluder –Occluder fusion Speed-upSpeed-up –Accelerate interactive graphics Ease of implementationEase of implementation –Configurability –Robustness Goals achieved GeneralityGenerality –Any model, any occluder –Occluder fusion Speed-upSpeed-up –Accelerate interactive graphics Ease of implementationEase of implementation –Configurability –Robustness
58
7/17/98 HZ Conclusion Main contributions: Problem decompositionProblem decomposition –Overlap tests and depth tests Occlusion representationsOcclusion representations –Occlusion maps –Depth Estimation Buffer –No-Backgrpund Z-Buffer Main contributions: Problem decompositionProblem decomposition –Overlap tests and depth tests Occlusion representationsOcclusion representations –Occlusion maps –Depth Estimation Buffer –No-Backgrpund Z-Buffer
59
7/17/98 HZ Conclusion Main contributions Hierarchical occlusion mapsHierarchical occlusion maps –Analysis of occlusion at multiple resolutions –High-level opacity estimation –Aggressive approximate culling –Levels of visibility The first occlusion culling algorithm for general models and interactive 3-D graphicsThe first occlusion culling algorithm for general models and interactive 3-D graphics Main contributions Hierarchical occlusion mapsHierarchical occlusion maps –Analysis of occlusion at multiple resolutions –High-level opacity estimation –Aggressive approximate culling –Levels of visibility The first occlusion culling algorithm for general models and interactive 3-D graphicsThe first occlusion culling algorithm for general models and interactive 3-D graphics
60
7/17/98 HZ Future Work Other implementations... PC’s and gamesPC’s and games –How much can be done in software? Integration into hardwareIntegration into hardware –More progressive updates to occlusion representation –Less conservative culling Wide-spread use of occlusion cullingWide-spread use of occlusion culling Other implementations... PC’s and gamesPC’s and games –How much can be done in software? Integration into hardwareIntegration into hardware –More progressive updates to occlusion representation –Less conservative culling Wide-spread use of occlusion cullingWide-spread use of occlusion culling
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.