Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to Massive Model Visualization Patrick Cozzi Analytical Graphics, Inc.

Similar presentations


Presentation on theme: "Introduction to Massive Model Visualization Patrick Cozzi Analytical Graphics, Inc."— 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 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?

26

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

36

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.

52

53 Questions ?


Download ppt "Introduction to Massive Model Visualization Patrick Cozzi Analytical Graphics, Inc."

Similar presentations


Ads by Google