Download presentation
Presentation is loading. Please wait.
Published byAnika Petitt Modified over 9 years ago
1
Introduction to Massive Model Visualization Patrick Cozzi Analytical Graphics, Inc.
2
Contents Minimal computer graphics background Culling Level of Detail (LOD) Memory Management Videos throughout
3
Computer Graphics Background Goal: Convert 3D model to pixels 3D models are composed of triangles
4
Computer Graphics Background 1 triangle = 3 vertices Gross over simplification: 3 floats per vertex (x 0, y 0, z 0 ) (x 1, y 1, z 1 )(x 2, y 2, z 2 )
5
Computer Graphics Background Triangles go through graphics pipeline to become pixels View parameters define the size and shape of the world viewer near plane far plane
6
Computer Graphics Background CPUGPUMonitor Vertex Processing Geometry Processing Fragment Processing PCIe Bus Color Depth Stencil
7
Computer Graphics Background Visible Surfaces
8
Example Massive Models Procedurally generated model of Pompeii: ~1.4 billion polygons. Image from [Mueller06]
9
Example Massive Models Boeing 777 model: ~350 million polygons. Image from http://graphics.cs.uni-sb.de/MassiveRT/boeing777.html
10
Example Massive Models
11
Trends No upper bound on model complexity – Procedural generation – Laser scans – Aerial imagery Image from [Lakhia06]
12
Trends High GPU throughput – At least 10-200 million triangles per second Widen gap between processor and memory performance CPU – GPU bottleneck
13
Goal output-sensitivity: performance as a function of the number of pixels rendered, not the size of the model
14
View Frustum Culling Can be slower than brute force. When? culled rendered culled rendered
15
Bounding Volumes Spheres Axis aligned bounding boxes Object oriented bounding boxes Hybrids
16
View Frustum Culling 0 1 2 3 45 01 34 2 5
17
0 1 2 3 45 01 34 2 5
18
Demo
19
Occlusion Culling Effective in scenes with high depth complexity culled
20
Occlusion Culling From-region or from-point Most are conservative Occluder Fusion Difficult for general scenes with arbitrary occluders. So make simplifying assumptions: – [Wonka00] – urban environments – [Ohlarik08] – planets and satellites
21
Hardware Occlusion Queries From-point visibility that handles general scenes with arbitrary occluders and occluder fusion How? – Use the GPU
22
Hardware Occlusion Queries Render occluders Render object’s BV using HOQ Render full object based on result
23
Hardware Occlusion Queries CPU stalls and GPU starvation Draw o1Draw o2Draw o3 Draw o1Draw o2Draw o3 CPU GPU Query o1 Draw o1 -- stall -- -- starve -- CPU GPU
24
Hardware Occlusion Queries Demo
25
Is Culling Enough?
27
Level of Detail Generation: less triangles, simpler shader Selection: distance, pixel size Switching: avoid popping Discrete, Continuous, Hierarchical
28
Simplification Operations edge collapse Also Vertex Merge Vertex Removal Cell Collapse See [Luebke01]
29
Discrete LOD 3,086 Triangles 52,375 Triangles69,541 Triangles
30
Discrete LOD Not enough detail up close Too much detail in the distance
31
Continuous LOD edge collapse vertex split Image from [Luebke01]
32
Hierarchical LOD 1 Node 3,086 Triangles 4 Nodes 9,421 Triangles 16 Nodes 77,097 Triangles
33
Hierarchical LOD 1 Node 3,086 Triangles 4 Nodes 9,421 Triangles 16 Nodes 77,097 Triangles
34
Hierarchical LOD visit(node) { if (computeSSE(node) < pixel tolerance) { render(node); } else { foreach (child in node.children) visit(child); } Node Refinement
35
Hierarchical LOD
37
Demo
38
Hierarchical LOD Easy to – Add view frustum culling – Add occlusion culling via HOQs Render front to back – Use VMSSE to drive refinement Requires preprocessing Is Culling + HLOD enough?
39
Memory Management Out-of-Core Compression Cache Coherent Layouts
40
Out-of-Core HLOD visit(node) { if ((computeSSE(node) < pixel tolerance) || (not all children resident)) { render(node); foreach (child in node.children) requestResidency(child); } else { foreach (child in node.children) visit(child); }
41
Out-of-Core HLOD Multithreaded – Disk reads – Decompression, normal generation, etc Cache management – Prioritize reads, e.g. distance from viewer – Replacement policy Skeleton in memory? – BV, error metric, parent – child relationships
42
Out-of-Core Prefetching Reduce geometry cache misses Predict and load required nodes
43
Out-of-Core Prefetching Predict camera position [Correa03] v v’ f f’
44
Out-of-Core Prefetching 01 23 45 67 [Varadhan02] – Coherence of Front – Prefetch ascendants/descendants – Prefetch with enlarged view frustum – Prioritize
45
Compression “Size is Speed” Geometric – Vertices, Indices – I/O and Rendering Performance Texture – Performance or Quality RenderDiskDe/re-compress
46
Cache Coherent Layouts Vertex Shader Post VS Cache Pre VS Cache GPU Main Memory Primitive Assembly Reorder Triangles Reorder Vertices Reorder vertices and indies to maximize GPU cache hits
47
Cache Coherent Layouts Minimize ACMR – Average Cache Miss Ratio Cache Oblivious [Yoon05] Linear Time [Sander07]
48
Not Covered Today Dynamic Scenes Clustered backface culling IBR, Mapping Sorting Batching Ray Tracing
49
Summary Combine culling, LOD, and out-of-core techniques Keep the CPU and GPU busy Exploit Coherence: Spatial and Temporal
50
For More Information [Gobbetti08] – Technical Strategies for Massive Model Visualization [Luebke01] – A Developer’s Survey of Polygonal Simplification Algorithms My email: pjcozzi@siggraph.org
51
About Analytical Graphics, Inc COTS software for national security and space professionals Rated best place to work: 2004-2006. 3 rd in 2007.
53
Questions ?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.