introduction to massive model visualization

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

Upload: pjcozzi

Post on 13-Jan-2015

1.703 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Introduction To Massive Model Visualization

Introduction to Massive Model Visualization

Patrick Cozzi

Analytical Graphics, Inc.

Page 2: Introduction To Massive Model Visualization

Contents

Minimal computer graphics background Culling Level of Detail (LOD) Memory Management Videos throughout

Page 3: Introduction To Massive Model Visualization

Computer Graphics Background

Goal: Convert 3D model to pixels 3D models are composed of triangles

Page 4: Introduction To Massive Model Visualization

Computer Graphics Background

1 triangle = 3 vertices Gross over simplification: 3 floats per vertex

(x0, y0, z0)

(x1, y1, z1) (x2, y2, z2)

Page 5: Introduction To Massive Model Visualization

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

Page 6: Introduction To Massive Model Visualization

Computer Graphics Background

CPU GPU Monitor

Vertex Processing

Geometry Processing

Fragment Processing

PCIe Bus

Color

Depth

Stencil

Page 7: Introduction To Massive Model Visualization

Computer Graphics Background

Visible Surfaces

Page 8: Introduction To Massive Model Visualization

Example Massive Models

Procedurally generated model of Pompeii: ~1.4 billion polygons.Image from [Mueller06]

Page 9: Introduction To Massive Model Visualization

Example Massive Models

Boeing 777 model: ~350 million polygons.Image from http://graphics.cs.uni-sb.de/MassiveRT/boeing777.html

Page 10: Introduction To Massive Model Visualization

Example Massive Models

Page 11: Introduction To Massive Model Visualization

Trends

No upper bound on model complexity– Procedural generation– Laser scans and aerial imagery– Imagery

Image from [Lakhia06]

Page 12: Introduction To Massive Model Visualization

Trends

High GPU throughput– At least 10-200 million triangles per second

Widen gap between processor and memory performance

CPU – GPU bottleneck

Page 13: Introduction To Massive Model Visualization

Goal

output-sensitivity: performance as a function of the number of pixels rendered, not the size of the model

Page 14: Introduction To Massive Model Visualization

View Frustum Culling

Use bounding volume: spheres, AABBs, OOBBs, etc

culled

rendered

culled

culled

rendered

rendered

Page 15: Introduction To Massive Model Visualization

View Frustum Culling

0

1

2

3

45

0 1

3 42

5

Page 16: Introduction To Massive Model Visualization

View Frustum Culling

0

1

2

3

45

0 1

3 42

5

Page 17: Introduction To Massive Model Visualization

View Frustum Culling

Demo

Page 18: Introduction To Massive Model Visualization

Occlusion Culling

Effective in scenes with high depth complexity

culled

Page 19: Introduction To Massive Model Visualization

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

Page 20: Introduction To Massive Model Visualization

Hardware Occlusion Queries

From-point visibility that handles general scenes with arbitrary occluders and occluder fusion

How?– Use the GPU

Page 21: Introduction To Massive Model Visualization

Hardware Occlusion Queries

Render occluders Render object’s BV using HOQ Render full object based on result

Page 22: Introduction To Massive Model Visualization

Hardware Occlusion Queries

CPU stalls and GPU starvation

Draw o1 Draw o2 Draw o3

Draw o1 Draw o2 Draw o3

CPU

GPU

Query o1

Query o1

Draw o1

Draw o1

-- stall --

-- starve --

CPU

GPU

Page 23: Introduction To Massive Model Visualization

Is Culling Enough?

Page 24: Introduction To Massive Model Visualization

Is Culling Enough?

Page 25: Introduction To Massive Model Visualization

Hardware Occlusion Queries

Demo

Page 26: Introduction To Massive Model Visualization

Level of Detail

Generation: less triangles, simpler shader Selection: distance, pixel size Switching: avoid popping

Discrete, Continuous, Hierarchical

Page 27: Introduction To Massive Model Visualization

Discrete LOD

3,086 Triangles 52,375 Triangles 69,541 Triangles

Page 28: Introduction To Massive Model Visualization

Discrete LOD

Not enough detail up close

Too much detail in the distance

Page 29: Introduction To Massive Model Visualization

Continuous LOD

edge collapse

vertex split

Image from [Luebke01]

Page 30: Introduction To Massive Model Visualization

Hierarchical LOD

1 Node 3,086 Triangles

4 Nodes

9,421 Triangles

16 Nodes

77,097 Triangles

Page 31: Introduction To Massive Model Visualization

Hierarchical LOD

1 Node 3,086 Triangles

4 Nodes

9,421 Triangles

16 Nodes

77,097 Triangles

Page 32: Introduction To Massive Model Visualization

Hierarchical LOD

visit(node) { if (computeSSE(node) < pixel tolerance) { render(node); } else { foreach (child in node.children) visit(child); } }

Node Refinement

Page 33: Introduction To Massive Model Visualization

Hierarchical LOD

Page 34: Introduction To Massive Model Visualization

Hierarchical LOD

Page 35: Introduction To Massive Model Visualization

Hierarchical LOD

Demo

Page 36: Introduction To Massive Model Visualization

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?

Page 37: Introduction To Massive Model Visualization

Memory Management

Out-of-Core Compression Cache Coherent Layouts

Page 38: Introduction To Massive Model Visualization

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); } }

Page 39: Introduction To Massive Model Visualization

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

Page 40: Introduction To Massive Model Visualization

Out-of-Core Prefetching

Reduce geometry cache misses Predict and load required nodes

Page 41: Introduction To Massive Model Visualization

Out-of-Core Prefetching

Predict camera position [Correa03]

v

v’

f

f’

Page 42: Introduction To Massive Model Visualization

Out-of-Core Prefetching

0 1

2 3

4 5

6 7

[Varadhan02]– Coherence of Front– Prefetch ascendants/descendants– Prefetch with enlarged view frustum– Prioritize

Page 43: Introduction To Massive Model Visualization

Compression

“Size is Speed” Geometric

– Vertices, Indices– I/O and Rendering Performance

Texture– Performance or Quality

RenderDisk De/re-compress

Page 44: Introduction To Massive Model Visualization

Cache Coherent Layouts

Vertex Shader

Post VS Cache

Pre VS Cache

GPU Main Memory

Primitive Assembly

ReorderTriangles

ReorderVertices

Reorder vertices and indies to maximize GPU cache hits

Page 45: Introduction To Massive Model Visualization

Cache Coherent Layouts

Minimize ACMR– Average Cache Miss Ratio

Cache Oblivious [Yoon05] Linear Time [Sander07]

Page 46: Introduction To Massive Model Visualization

Not Covered Today

Clustered backface culling IBR Sorting Batching Ray Tracing

Page 47: Introduction To Massive Model Visualization

Summary

Combine culling, LOD, and out-of-core techniques

Keep the CPU and GPU busy Exploit Coherence: Spatial and

Temporal