1 / 53

Introduction to Massive Model Visualization

Introduction to Massive Model Visualization. Patrick Cozzi Analytical Graphics, Inc. Contents. Minimal computer graphics background Culling Level of Detail (LOD) Memory Management Videos throughout. Computer Graphics Background. Goal: Convert 3D model to pixels

keira
Download Presentation

Introduction to Massive Model Visualization

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. (x0, y0, z0) (x1, y1, z1) (x2, y2, z2) Computer Graphics Background • 1 triangle = 3 vertices • Gross over simplification: 3 floats per vertex

  5. far plane near plane viewer Computer Graphics Background • Triangles go through graphics pipeline to become pixels • View parameters define the size and shape of the world

  6. Color Depth Stencil Computer Graphics Background PCIe Bus CPU GPU Monitor Vertex Processing Geometry Processing Fragment Processing

  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. culled culled culled View Frustum Culling • Can be slower than brute force. When? rendered rendered rendered

  15. Bounding Volumes • Spheres • Axis aligned bounding boxes • Object oriented bounding boxes • Hybrids

  16. 3 4 5 1 0 2 0 1 3 4 2 5 View Frustum Culling

  17. 3 4 5 1 0 2 0 1 3 4 2 5 View Frustum Culling

  18. View Frustum Culling • Demo

  19. culled Occlusion Culling • Effective in scenes with high depth complexity

  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. CPU Drawo1 Drawo2 Drawo3 GPU Drawo1 Drawo2 Drawo3 CPU Queryo1 -- stall -- Drawo1 GPU Queryo1 -- starve -- Drawo1 Hardware Occlusion Queries • CPU stalls and GPU starvation

  24. Hardware Occlusion Queries • Demo

  25. Is Culling Enough?

  26. 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 Triangles 69,541 Triangles

  30. Discrete LOD Not enough detail up close Too much detail in the distance

  31. Continuous LOD edge collapse Image from [Luebke01] vertex split

  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. Node Refinement Hierarchical LOD visit(node) { if (computeSSE(node) < pixel tolerance) { render(node); } else { foreach (child in node.children) visit(child); } }

  35. Hierarchical LOD

  36. Hierarchical LOD

  37. Hierarchical LOD • 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] f’ v’ v f

  44. Out-of-Core Prefetching • [Varadhan02] • Coherence of Front • Prefetch ascendants/descendants • Prefetch with enlarged view frustum • Prioritize 0 1 4 5 6 7 2 3

  45. Compression • “Size is Speed” • Geometric • Vertices, Indices • I/O and Rendering Performance • Texture • Performance or Quality Disk De/re-compress Render

  46. Reorder Vertices Reorder Triangles Cache Coherent Layouts • Reorder vertices and indies to maximize GPU cache hits GPU Main Memory Pre VS Cache Vertex Shader Post VS Cache Primitive Assembly

  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

More Related