370 likes | 614 Views
Objekt-Hierarchien für effiziente Rendering - Algorithmen. Interdisziplinäre Forschungsgespräche TU Braunschweig Gordon Müller. Überblick. Die Rendering-Pipeline Beschleunigungstechniken Objekt-Hierarchien Culling-Algorithmen Konstruktion Anwendungen Viewer-Architektur Zusammenfassung.
E N D
Objekt-Hierarchienfür effizienteRendering-Algorithmen Interdisziplinäre Forschungsgespräche TU Braunschweig Gordon Müller
Überblick • Die Rendering-Pipeline • Beschleunigungstechniken • Objekt-Hierarchien • Culling-Algorithmen • Konstruktion • Anwendungen • Viewer-Architektur • Zusammenfassung
Rasterisierung Geometrie Anwendung Die Rendering-Pipeline „A chain is no stronger than its weakest link“
Die Anwendungs-Stufe • Vollständige Kontrolle durch Anwendungsprogrammierer • Generierung der Rendering-Primitive: Punkte, Linien, Dreiecke, ... • Performance: Beschleunigung durch • Reduktion der Zahl generierter Primitive • schnellere Generierung der Primitive Software
Lightning Projection Clipping Screen Mapping Die Geometrie-Stufe • Ausführung pro Polygon bzw. pro Vertex • Mehrere funktionale Stufen • Performance: Ca. 100 float Opera-tionen pro Vertex / 1 Lichtquelle Model& View Transform Hardware
Die Rasterisierungs-Stufe • Ausführung pro Pixel • Färbung der Pixel in Abhängigkeit transformierter Vertizes, Farben, Texturkoordinaten, ... • Texturierung • Sichtbarkeitsbestimmung durch z-buffering • Performance: limitiert durchSpeicherbandbreite Hardware
Beschleunigungstechniken 1 • Attrappen
Beschleunigungstechniken 2 • LOD (level of detail)
V3 I2 V5 V2 I7 V1 V4 V3 I0 T3 T1 T1 T2 T1 I6 T3 T4 T0 T0 T3 I1 I3 T0 V0 T2 T5 T2 V5 V1 T6 V4 V2 I5 I4 V0 Beschleunigungstechniken 3 • Optimierte Datenstrukturen triangle strip triangle fan mesh
occluded culled frustum Beschleunigungstechniken 4 • Culling = „select from the flock“ • Backface Culling • View frustum Culling • Occlusion Culling • Portal Culling / PVS • Detail Culling
5 6 1 3 7 7 4 2 8 6 8 5 3 4 1 2 View-Frustum-Culling mit Objekthierarchien • Beim Traversieren einer Objekt-Hierarchie wird in jedem inneren Szenenknoten ein Sichtbarkeitstest unter Verwendung von Hüllkörpern durchgeführt.
Occlusion Algorithmus OcclusionCulling (G): OR = empty for each object gG if not (isOccluded(g, OR)) Render(g) Update(OR, g) end end
1 0 6 • 0 3 1 2 • 9 1 2 • 9 1 2 2 7 6 9 2 max max 9 Hierarchischer Z-Buffer Reduktion der Anzahl der Pro-Pixel-Operationen
HierarchischesOcclusion-Culling 1 HOcclusionCulling (N) if not (isOccluded(NBV, OR)) for each primitive pN Render(p) Update(OR, p) end for each child node CN HOcclusionCulling (C) endOR = empty end HOcclusionCulling(root)
HierarchischesOcclusion-Culling 2 HOcclusionCulling (N) if not (isOccluded(NBV, OR)) for each primitive pN Render(p) Update(OR, p) end for each child node CN in front-to-back order HOcclusionCulling (C) endOR = empty end HOcclusionCulling(root)
HierarchischesOcclusion-Culling 3 HOcclusionCulling (N) if not (isOccluded(NBV, OR)) for each primitive pN Render(p) Update(OR, p) end for each child node CN in front-to-back order HOcclusionCulling (C) endOR = sampled end HOcclusionCulling(root)
Elimination unnötiger Tests • „Problemfall“ isOccluded() == false CPU/Graphik-Resourcen verschwendet • Idee: Ausnutzung zeitlicher Kohärenz • Implementation: Dynamische Aktivierung/De-aktivierung innerer Knoten der Hierarchie für Occlusion-Tests
Hierarchie-Konstruktion • Motivation: • Optimierte Objekthierarchien sind notwendig für effizientes räumliches Retrieval • 3D-Modelle sind oftmals unstrukturiert • Evtl. vorhandene Hierarchien sind typischerweise suboptimal für konkrete Rendering-Algorithmen • Idee: • Automatische Hierarchiegewinnung
B 2 B 1 B Hierarchie-Konstruktion 2 • Innere Kosten eines Strahlschnitts mit einer Hüllkörperhierarchie:
Hierarchie-Konstruktion 3 • Approximation durch Greedy-Optimierung • Sortiere die Objekte entlang der Koordinatenachsen • Minimiere vereinfachte (lokale) Kostenfunktion • Divide and conquer
Hierarchie-Konstruktion 4 • Keine feste Unterteilungsposition, nicht notwendig balancierte Bäume! • Automatische Hierarchiegewinnung • Enganliegende Hüllkörper, Trennung entfernter Objekte • Geringer Konstruktionsaufwand: O(n logn)
Anwendungen für Objekthierarchien • Culling • Raytracing • Radiosity • Navigation
Raytracing • Konstruktion einer Objekt-Hierarchie • Identifikation uniformer Regionen durch Klassifikation von Sub-Szenen • Lokale Raumunterteilung uniformer Regionen
512x512 512x512 512x512 Raytracing Ergebnisse
local transfer direction R e c e i v e r clusteredtransfer S o u r c e Radiosity mit Clustering Benutze die selbe Datenstruktur für Sichtbarkeitstest und den Energietransfer
Navigation • Basierend auf Ray Casting Funktionalität
3D Viewer • Integration effizienter Rendering-Algorithmen in ein erweiterbares Visualisierungssystem • Effiziente Interaktion / Navigation • Berücksichtigung dynamischer Geometrie • Stereo-Projektion • Paralleles Rendering (multi-threaded + network)
Objekt-Interface • Methoden • void render(view, coherency&) • box boundingBox() • bool intersect(ray, intersection&) • float costs(cost_type); • Input • VRML97 (subset)
static optimize thread optimized graph potentially dynamic update thread optimized graph dynamic buffer list list Dynamische Hierarchie-Adaption
Zusammenfassung • Effiziente Algorithmen zur Hierarchie-gewinnung für grosse 3D-Modelle • Optimierte Sichtbarkeitsalgorithmen • Ausnutzung zeitlicher Kohärenz • Erweiterbares multi-threaded Framework
Ausblick • Volumenbasierte Kollisionserkennung • Optimierte Algorithmen für Spezialfälle • Molekül-Visualisierung • Stadtvisualisierung (2½D Geometrie) • Integration neuer Objekttypen (z.B. Subdivision Surfaces)