Rendering großer Punktwolken mittels Out-of-Core LOD-Hierarchien

Ähnliche Dokumente
TECHNISCHE UNIVERSITÄT DRESDEN. Diplomarbeit

Algorithmen und Datenstrukturen Bereichsbäume

Seminar Game Development Game Computer Graphics. Einleitung

Grundlegende Algorithmen

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

Überblick Echtzeit-Rendering. Uwe Domaratius

OpenCL Implementierung von OpenCV Funktionen

Point Rendering. Diplomarbeit

Programmierbeispiele und Implementierung. Name: Michel Steuwer

(13) Hot Topics. Vorlesung Computergrafik T. Grosch

Optimierte Indexstruktur für Flashspeicher: Lazy-Adaptive Tree

MF Breadcrumbs. Sergej Schefer & Fabian Marx

Teil III. Grundlagen der Computergrafik

Seminar Komplexe Objekte in Datenbanken

Einführung in Hauptspeicherdatenbanken

Prozesse und Scheduling

! DBMS organisiert die Daten so, dass minimal viele Plattenzugriffe nötig sind.

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Game Engine Architecture and Development. Platform Unabhängiger Code Multi Threading in Game Engines Profiling

Eine Einführung Computergrafik SS14 Timo Bourdon

OpenGL. (Open Graphic Library)

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Kapitel VI. Speicherverwaltung. Speicherverwaltung

Entwicklung von Partitionierungsstrategien im Entwurf dynamisch rekonfigurierbarer Systeme

B-Bäume I. Algorithmen und Datenstrukturen 220 DATABASE SYSTEMS GROUP

:= Modellabbildung. Bildsynthese (Rendering) Bildsynthese

Leistungsanalyse von Rechnersystemen

GPU-basiertes Volumenrendering von multimodalen medizinischen Bilddaten in Echtzeit

Rendering Grundlagen Autodesk Maya. Grundlagen. Version Ingo Clemens brave rabbit

Grundlagen der Rechnerarchitektur

Multicore Herausforderungen an das Software-Engineering. Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück

Redundant Array of Inexpensive Disks

Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter

Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha Scherrer. Grundlagen der Programmierung (CS101) - Blatt 8 Theorie [4 Punkte] - Praxis [12 Punkte]

Was machen wir heute? Betriebssysteme Tutorium 12. Organisatorisches. Frage 12.1.a. Programmieraufgaben Vorstellung. Antwort

wichtigstes Betriebsmittel - neben dem Prozessor: Speicher

Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit. Direct 3D-Output für ein Rendering Framework

Tutorium Algorithmen & Datenstrukturen

DBS: Administration und Implementierung Klausur

Multimedia/Graphics Libraries & Systems

Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008

Das SR4 bietet eine Reihe von Verbesserung und behebt kleinere bekannte Probleme aus den Bereichen:

Terrain-Rendering mit Geometry Clipmaps

EndTermTest PROGALGO WS1516 A

Zeitkritisches Rendering mittels perspektivischer Suche

IO Performance - Planung Messung, Optimierung. Ulrich Gräf Principal Sales Consultant Oracle Deutschland B.V. und Co. KG

CBLOCK: An Automatic Blocking Mechanism for Large-Scale De-duplication Tasks. Cathleen Ramson, Stefan Lehmann LSDD SS

3D webservices - where do we stand? Emmanuel Belo emmanuel.belo@camptocamp.com


Nachtrag zu binären Suchbäumen

Punktbasiertes Rendering mit modernen Grafikkarten

IO Performance in virtualisierten Umgebungen

(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT

IBM DB2 für Linux/Unix/Windows Monitoring und Tuning

Wegweiser. Gegenstand und Begriffe. Dateien und Verzeichnisse. Implementationsaspekte. Ablauf eines Dateizugriffs. Plattenspeicher

Datenstrukturen & Algorithmen

... Client 1. Request. Reply. Client 2. Server. Client n. Günther Bengel Grundkurs Verteilte Systeme 3. Auflage Vieweg Verlag 2004 ISBN

Erster Schritt mit Mocha:

Terrain Rendering mit Hardware Tessellation unter DirectX 11


Satellite S50-B-150 und Satellite S50-B-14X überzeugen mit neuer. Satellite S50D-B-102: Top ausgestattet mit performanter AMD APU

(1) 3D Engines. Vorlesung Computergraphik 2 D. Grüntjens Folien: Stefan Rilling / D. Grüntjens KOBLENZ LANDAU

Modellierung und Animation eines Autos aus Lego-Bausteinen mit LightWave 6

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Hochleistungsberechnungen für Industrie und Weltraum

Eine Einführung in die Architektur moderner Graphikprozessoren

VMware vsphere 6.0 Neuigkeiten und neue Features

Grundlagen der Spieleprogrammierung

6. Algorithmen der Computer-Geometrie

Asteroids3D Seminar: Game Programming. Anita Dieckhoff, Pedro Flemming, Jan Ole Vollmer Betreuung: Christine Lehmann

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

HEINZ NIXDORF INSTITUT Fakultät für Elektrotechnik, Informatik und Mathematik. Seminar»Verteilte Algorithmen«Wintersemester 2006/2007

OPERATIONEN AUF EINER DATENBANK

3D Streaming von Bild- und Volumendaten

Kunst der Spieleprogrammierung. The END. Playful Design. (c) 2013, Peter Sturm, Universität Trier

Hochschule Bremen. Rechnerstrukturen Labor WS 04/05 I7I. Thema: Grafikkarten. Laborbericht. Datum

Computer Graphik I Intro

VRML Tools. Markus Czok, Carsten Rohde

1.549,- Terra Mobile Industry 1580 extrem robustes 15 Notebook mit serieller Schnittstelle

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant?

16. All Pairs Shortest Path (ASPS)

Martin Fiedler. Occlusion Culling

Jörn Loviscach Hochschule Bremen

Einleitung Grundlagen Protokollumsetzung Implementierung in ns-2 Zusammenfassung. Diplomverteidigung

Die Bildbearbeitungssprache Halide

GPU Programmierung. Thorsten Grosch

Systemanforderungen Release 2016

ARM Cortex-M Prozessoren. Referat von Peter Voser Embedded Development GmbH

Hardware Tessellation in DirectX11 zur Berechnung von Levels of Detail in Echtzeitanwendungen

Ein Laufzeitsystem für hochgradig parallele Simulationen

Multimediaschnittstelle. Microsoft DirectShow

Projektseminar Parallele Programmierung

Die Marvel, ein gedrosselter Supercomputer

Proseminar Rechnerarchitekturen. Parallelcomputer: Multiprozessorsysteme

Suchen und Sortieren (Die klassischen Algorithmen)

SPARC LDom Performance optimieren

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 8, Donnerstag 11.

Datenstrukturen in Java

Rechnerstrukturen. 6. System. Systemebene. Rechnerstrukturen Wintersemester 2002/03. (c) Peter Sturm, Universität Trier 1. Prozessor.

Vorlesung: Technische Informatik 3

Transkript:

Rendering großer Punktwolken mittels Out-of-Core LOD-Hierarchien Stefan Koppitz TU Dresden Fakultät Informatik Institut für Computergrafik und Visualisierung 26. August 2009

1 Einführung 2 Level-of-Detail 3 Sequentialisierung 4 Out-of-Core 5 Ergebnisse 6 Outro

Motivation Beim Scannen von 3D-Objekten können extrem große Punktwolken entstehen Ziel ist diese großen Punktwolken (> 500 MB) interaktiv hochqualitativ darzustellen 3D-Scanning

Aufgabe 1 Interaktivität durch LOD-Hierarchie (Octree, Kd-Baum,...) LOD-Auswahl, Culling und Rendering auf GPU blickpunktabhängige, adaptive LOD-Auswahl Entlastung der CPU 2 Sehr große Punktwolken + LOD-Hierachie passen nicht in Haupt-/Videospeicher, deswegen Komprimierung Out-of-Core Techniken (Swapping, Caching) Sequentielle Verarbeitung 3 Hochqualitative Darstellung durch EWA-Splatting aus Großen Beleg

EWA-Splatting Durch Kreise bzw. Ellipsen (sogenannte Splats) wird Objektoberfläche approximiert Splat s i besteht aus Position p i Normale n i Binormale s i Tangente t i Farbe c i Radius r i GPU-beschleunigt Per-Pixel Beleuchtung Antialiasing

LOD-Hierarchie: Aufbau Quadtree LOD-Hierarchie H mit Knoten N i mit Elternknotenindex p i Index des ersten Kindknotens first i Anzahl der Kindknoten n i Surfel Halbwinkel des Normalenkegels θ i

LOD-Hierarchie: Konstruktion Top-Down: speicher- und zeitineffizient Bottom-Up: speicher- und zeiteffizient, Tiefe schätzen Inkrementell: bei großen Buckets sehr effizient Centroid-Berechnung am aufwendigsten Konstruktion

LOD-Hierarchie: LOD-Auswahl Anfang der Rekursion bei Wurzel Sichtbarkeitsberechnung Bildraumfehler e (mit Objektabstand d i, Bildraumtoleranz ε) e = A i /d 2 i Ende der Rekursion bei e ε Quadtree

LOD-Hierarchie: Culling Culling Frustum Culling: γ α>ω Backface Culling: β + θ<90 n i θ i β p i r i γ α ω p i v z v z

Intervalltest CPU entlasten und GPU fordern GPU ist Stream-Prozessor mit paralleler und sequentieller Verarbeitung Rekursiver Test auf GPU daher nur ineffizient ausführbar Lösung ist Sequentialisierung der LOD-Hierarchie H Dazu Ersetzung des rekursiven Tests durch Intervalltest

Split-Distanz Untere Schranke des Intervalls ist Split-Distanz d min Berechnet sich aus Split-Test: ε > e (1) ε > πr 2 d 2 (2) ε d > r π (3) d min = r π Intervalltest Teil 1: d > d min

Split-Distanz Untere Schranke des Intervalls ist Split-Distanz d min Berechnet sich aus Split-Test: ε > e (1) ε > πr 2 d 2 (2) ε d > r π (3) d min = r π Intervalltest Teil 1: d > d min

Split-Distanz Untere Schranke des Intervalls ist Split-Distanz d min Berechnet sich aus Split-Test: ε > e (1) ε > πr 2 d 2 (2) ε d > r π (3) d min = r π Intervalltest Teil 1: d > d min

Merge-Distanz Obere Schranke des Intervalls ist Merge-Distanz d max Entspricht Abbruchkriterium der Rekursion Verhindert redundante Darstellung { dmax n d p min = + p n p p falls n N I n N L, falls n = n R. (4) Intervalltest Teil 2: d < d max Ersetzung des rekursiven Test durch Intervalltest d min < d < d max auf Liste L

Merge-Distanz Obere Schranke des Intervalls ist Merge-Distanz d max Entspricht Abbruchkriterium der Rekursion Verhindert redundante Darstellung { dmax n d p min = + p n p p falls n N I n N L, falls n = n R. (4) Intervalltest Teil 2: d < d max Ersetzung des rekursiven Test durch Intervalltest d min < d < d max auf Liste L

Merge-Distanz Obere Schranke des Intervalls ist Merge-Distanz d max Entspricht Abbruchkriterium der Rekursion Verhindert redundante Darstellung { dmax n d p min = + p n p p falls n N I n N L, falls n = n R. (4) Intervalltest Teil 2: d < d max Ersetzung des rekursiven Test durch Intervalltest d min < d < d max auf Liste L

Sequentialisierung a) LOD-Hierarchie H, b) Sequentielle LOD-Hierarchie S

LOD-Auswahl Bsp. 1 a) LOD-Hierarchie H, b) Sequentielle LOD-Hierarchie S

LOD-Auswahl Bsp. 2 a) LOD-Hierarchie H, b) Sequentielle LOD-Hierarchie S

LOD-Auswahl Bsp. 3 a) LOD-Hierarchie H, b) Sequentielle LOD-Hierarchie S

Sequenz Räumliche Kohärenz erhalten Aufbau der sequentiellen Liste L nach Breath-First Kriterium Dazu pro Surfel s i (l i,z i )-Paar speichern l i als Schichtindex z i als Morton-Code Sortierung der Liste L nach (l,z)-paar

Schichtindex l i als längste Länge des Pfades argmax j ( P j ) P j sind alle von n i ausgehenden zu Blattknoten verlaufenden Pfade Beispiel für Quadtree

Morton-Code Bildet n-dimensionalen Punkt auf 1-dimensionalen Wert ab Beschreibt z-kurve über Daten Schnell durch Verzahnung von Bits berechenbar Beispiel für Quadtree

Blockbildung Verarbeitung pro Surfel ineffizient Einteilung der Sequenz L in B Blöcke mit Kapazität c Beginn bei Schicht l i mit S i c Nach Blockbildung Sortierung nach d max Abbruch der Iteration, wenn d > d max Beispiel für Quadtree

LOD-Auswahl Grobe Vorauswahl auf CPU mit min{d} = ε (d 0 + r 0 ) > d i min max{d} = ε (d 0 r 0 ) < d i max wählt Blöcke B 1 B = {b lo,...,b hi } aus CPU-Culling

LOD-Auswahl Grobe LOD-Auswahl (Blöcke) auf CPU mit Intervalltest d i min < ε (d i + r i ) d i max > ε (d i r i ) wählt Blöcke B 2 B 1 aus Blöcke B 2 an Grafikkarte schicken, falls nicht vorhanden Feingranulare LOD-Auswahl (Surfels) auf GPU mit Vertex Shader Parallele Verarbeitung der Surfels

Probleme Große Punktwolke meint Punktwolke passt in RAM, Verarbeitung zeitaufwändig Punktwolke passt in RAM, LOD-Hierarchie nicht Punktwolke und LOD-Hierarchie passen nicht in RAM Speicherhierarchie Geschwindigkeitslücke zwischen RAM (> 1 ns) und Festplatte (> 1ms) Ziel: Minimierung der E/A-Kommunikation

Out-of-Core Techniken Auslagerung der gesamten LOD-Hierarchie auf Festplatte Laden von benötigten Teilen in Haupt-/Videospeicher (Cache) mit Hilfe von Seitenersetzungsstrategien möglich durch Memory-Mapped Files des Betriebssystems Out-Of-Core Algorithmen (STXXL, TPIE, LEDA-SM) Out-of-Core Technik

STXXL Asynchrone Lese- u. Schreiboperationen De-/Allokation von Speicherblöcken, Caching OOC-Algorithmen (z. B. Sortieren), OOC-Datenstrukturen (stack, queue, vector und priority queue) Out-of-Core Technik

Cache VRAM-Cache: Speicherung von zuletzt gerenderten Blöcken Umsetzung durch Vertex Buffer Objects in OpenGL Ausnutzung der Frame-zu-Frame-Kohärenz RAM-Cache: Speicherung der zuletzt besuchten Blöcken Umsetzung durch STXXL LRU-Strategie

Mammoth Modulares System zur Darstellung und Bearbeitung von extrem großen Punktwolken Sprachen: C++, GLSL Bibliotheken: Qt 4.4.3, OpenGL, POSIX Threads Plugin-Konzept für Renderer, Dateiformate und Tools

Vorverarbeitung Pipeline OOC-Vorverarbeitung in 3 Schritten durch Streaming implementiert

Rendering Pipeline OOC-Rendering in 2 Schritten mit Caching Multi-Threading: 1 Thread für GUI, 1 Thread für Rendering, > 1 Threads für E/As

Geometrie-Cache-Manager Analogon zu Hauptspeicher-Cache auf Serverseite Minimierung des Speichertransfers Vertex Buffer Objects ermöglichen dynamische Updates des VRAM Speicherlayout eines Surfel mit Interleaved Array im Format GL T2F C4F N3F V3F Position in 3 Floats V3F Tangente in 3 Floats N3F Binormale in 2 Floats T2F +4.FloatC4F Farbe in 1. Float C4F Split-Distanz in 2. Float C4F Merge-Distanz in 3. Float C4F

Modelle Modell # Punkte Größe MB David 28.184.526 1.100 Lucy 14.027.872 508 Asian Dragon 3.609.600 130 Female 302.948 13

Ergebnisse: Zeitkosten bei Vorverarbeitung Modell Female Asian Dragon Lucy David T 1 00:00:03 00:01:22 00:08:07 00:10:31 T 2 00:00:04 00:21:24 01:33:00 02:27:51 T 3 Seq 00:00:04 00:03:35 00:17:41 00:25:12 Blk 00:00:00 00:00:11 00:00:58 00:01:56 T 1 Zeitfür Laden und Berechnung der Surfelparameter T 2 Zeitfür Erstellung der LOD-Hierarchie T 3 Zeitfür Sequentialisierung und Blockbildung

Ergebnisse: Speicherkosten bei Vorverarbeitung Modell Female Asian Dragon Lucy David S 1 25 302 1.167 2.355 S 2 96 1.208 4.895 9.594 L 2 12 14 24 31 S 3 Seq 28 352 1.413 2.775 Blk 0,32 4 16 31 S 1 Speicher(MB)für Laden und Berechnung der Parameter S 2 Speicher(MB)für Erstellung der LOD-Hierarchie L 2 Anzahl der Hierarchie-Level S 3 Speicher(MB)für Sequentialisierung und Blockbildung

Ergebnisse: Zeikosten bei Rendering Modell Female Asian Dragon Lucy David FPS 72,4 26,5 12,1 6,7 PPF 188.880 464.064 1.208.832 1.969.664 BPF 2.950 7.251 18.888 30.776 CPU 16 16 18 20 GPU 25 43 123 175 FPS Frames pro Sekunde SPS Surfels pro Sekunde BPS Blöcke pro Sekunde CPU/GPU CPU-/GPU-Zeit in ms

Ausblick Speichermanagement (eigener RAM-Cache, Speichern von Pointer) Komprimierung (Delta-Kodierung, Quantisierung) Prefetching Occlusion Culling Dynamischer Octree einfaches Einfügen und Löschen von Punkten Traversierung auf GPU (MegaTexture, Virtual Texture) Paralleler Aufbau auf GPU (CUDA)

Zusammenfassung Ziel ist interaktives (durch Traversierung von LOD-Hierarchien auf der GPU) hochqualitatives (durch EWA-Splatting auf der GPU) Rendering von extrem großen Punktwolken

Vielen Dank für die Aufmerksamkeit! Fragen?