Filtern
Dokumenttyp
- Bachelorarbeit (4)
- Dissertation (1)
Schlagworte
- Line Space (5) (entfernen)
Institut
- Institut für Computervisualistik (5) (entfernen)
Die folgende Arbeit analysiert die Funktionsweise und Programmiermöglichkeiten von Compute Shadern. Dafür wird zunächst in Kapitel 2 eine Einführung in Compute Shader gegeben, in der gezeigt wird, wie diese funktionieren und wie sie programmiert werden können. Zusätzlich wird das Zusammenspiel von Compute Shadern und OpenGL 4.3 anhand zweier einführender Beispiele gezeigt. Kapitel 3 beschreibt dann eine N-Körper Simulation, welche implementiert wurde um die Rechenleistung von Compute Shadern und den Einsatz von gemeinsamen Speicher zu zeigen. Danach wird in Kapitel 4 gezeigt, inwiefern sich Compute Shader für physikalische Simulationen eignen und wo Probleme auftauchen können. In Kapitel 5 wird ein eigens konzipierter und entwickelter Algorithmus zur Erkennung von Linien in Bildern beschrieben und anschließend mit der Hough Transformation verglichen. Zuletzt wird in Kapitel 6 ein abschließendes Fazit gezogen.
Die Raytracing-Beschleunigung durch dedizierte Datenstrukturen ist schon lange ein wichtiges Thema der Computergrafik. Im Allgemeinen werden dafür zwei unterschiedliche Ansätze vorgeschlagen: räumliche und richtungsbezogene Beschleunigungsstrukturen. Die vorliegende Arbeit stellt einen innovativen kombinierten Ansatz dieser beiden Bereiche vor, welcher weitere Beschleunigung der Strahlenverfolgung ermöglicht. Dazu werden moderne räumliche Datenstrukturen als Basisstrukturen verwendet und um vorberechnete gerichtete Sichtbarkeitsinformationen auf Basis von Schächten innerhalb einer originellen Struktur, dem Line Space, ergänzt.
Im Laufe der Arbeit werden neuartige Ansätze für die vorberechneten Sichtbarkeitsinformationen vorgeschlagen: ein binärer Wert, der angibt, ob ein Schacht leer oder gefüllt ist, sowie ein einzelner Vertreter, der als repräsentativer Kandidat die tatsächliche Oberfläche approximiert. Es wird gezeigt, wie der binäre Wert nachweislich in einer einfachen, aber effektiven Leerraumüberspringungs-Technik (Empty Space Skipping) genutzt wird, welche unabhängig von der tatsächlich verwendeten räumlichen Basisdatenstruktur einen Leistungsgewinn beim Raytracing von bis zu 40% ermöglicht. Darüber hinaus wird gezeigt, dass diese binären Sichtbarkeitsinformationen eine schnelle Technik zur Berechnung von weichen Schatten und Umgebungsverdeckung auf der Grundlage von Blockerapproximationen ergeben. Obwohl die Ergebnisse einen gewissen Ungenauigkeitsfehler enthalten, welcher auch dargestellt und diskutiert wird, zeigt sich, dass eine weitere Traversierungsbeschleunigung von bis zu 300% gegenüber der Basisstruktur erreicht wird. Als Erweiterung zu diesem Ansatz wird die repräsentative Kandidatenvorberechnung demonstriert, welche verwendet wird, um die indirekte Lichtberechnung durch die Integration von kaum wahrnehmbaren Bildfehlern signifikant zu beschleunigen. Schließlich werden Techniken vorgeschlagen und bewertet, die auf zweistufigen Strukturen und einer Nutzungsheuristik basieren. Diese reduzieren den Speicherverbrauch und die Approximationsfehler bei Aufrechterhaltung des Geschwindigkeitsgewinns und ermöglichen zusätzlich weitere Möglichkeiten mit Objektinstanziierungen und starren Transformationen.
Alle Beschleunigungs- und Speicherwerte sowie die Näherungsfehler werden gemessen, dargestellt und diskutiert. Insgesamt zeigt sich, dass durch den Line Space eine deutliche Erhöhung der Raytracing Leistung auf Kosten eines höheren Speicherverbrauchs und möglicher Annäherungsfehler erreicht wird. Die vorgestellten Ergebnisse zeigen damit die Leistungsfähigkeit des kombinierten Ansatzes und eröffnen weitere Möglichkeiten für zukünftige Arbeiten.
In dieser Arbeit werden zwei Verfahren zur Berechnung der globalen Beleuchtung vorgestellt. Das Erste ist eine Erweiterung von Reflective Shadow-Maps um einen Schattentest, womit Verdeckungsbehandlung erreicht wird. Das zweite Verfahren ist ein neuer, auf Light-Injection basierender, bidirektionaler Ansatz. Dabei werden Strahlen aus Sicht der Lichtquelle verfolgt und in der Linespace Datenstruktur in Schächten gespeichert, die eine Diskretisierung der Raumrichtungen darstellen. Die Linespaces sind dabei in ein Uniform Grid eingebettet. Beim Auslesen der vorberechneten indirekten Beleuchtung sind im Idealfall keine Traversierung der Datenstruktur und keine weitere Strahlverfolgung mehr notwendig. Damit wird eine Varianzreduzierung und eine schnellere Berechnung im Vergleich zu Pathtracing erzielt, wobei sich insbesondere Vorteile in stark indirekt beleuchteten Bereichen und bei Glas ergeben. Die Berechnung der globalen Beleuchtung ist allerdings approximativ und führt zu sichtbaren Artefakten.
Diese Arbeit zeigt eine neue Technik der Computergrafik zur Simulation von globaler Beleuchtung durch Path Tracing in Echtzeit. Das Path Tracing wird dafür mit Compute Shadern auf der Grafikkarte (GPU) realisiert, um das Rendering hoch parallelisiert auszuführen. Zur Beschleunigung der Strahlverfolgung wird dabei der
Line Space in verschiedenen Varianten als Datenstruktur verwendet, um leere Bereiche in der Szene schneller zu überspringen. Der Line Space speichert Szeneninformationen basierend auf einer Voxelisierung in richtungsabhängige Shafts und wird sowohl auf der GPU generiert, als auch traversiert. Mit diesem Verfahren kann eine Szene physikalisch korrekt indirekt beleuchtet und mit weichen Schatten schattiert werden. Außerdem kann das Path Tracing damit weitgehend unabhängig von der Polygonanzahl mit über 100 Bildern pro Sekunde klar in Echtzeit durchgeführt werden und ist somit deutlich schneller als mit einem vergleichbaren Voxel-Gitter. Die Bildqualität wird davon nicht negativ beeinflusst und die Schattenqualität ist in den meisten Fällen deutlich besser als bei der Verwendung von Shadow-Mapping.
In dieser Arbeit werden Methoden und Maße getestet, nach denen beim Pathtracing eine Auswahl zwischen Line Space und Bounding Volume Hierarchie getroffen werden kann, die die Vorteile der beiden Datenstrukturen ausnutzen. Die Strukturen sind innerhalb der Bounding Box jedes Objekts (Objektlokal) definiert und jeder Line Space enthält in den Shafts jeweils eine Kandidaten-ID. Als Implementations- basis dient ein eigenes C++ und OpenGL Framework, in dem das Pathtracing und die Line Space Generierung über Compute Shader stattfindet. Die Maße schließen die Wahrscheinlichkeitsverteilung, die Effektabhängigkeit, sowie einen Distanz- grenzwert ein und werden gegen verschiedene Szenen getestet. Die Ergebnisse zeigen in den meisten Situationen einen deutlichen Geschwindigkeitszuwachs bei teils nur geringen visuellen Unterschieden, wobei das Wahrscheinlichkeitsmaß die qualitativ hochwertigsten Bilder für den gegebenen Leistungszuwachs erbringt. Die grundlegenden Probleme des Line Space im Vergleich mit der BVH, nämlich der hohe Speicherverbrauch und die lange Generierungszeit, bleiben aber trotz der objektlokalen Struktur, der minimalen Datenmenge pro Shaft und der Compute Shader Implementierung, erhalten.