Interaktives Raytracing von Gelände unter ... - Institut für Informatik

25.07.1983 - Universität Rostock. Fakultät für Informatik und Elektrotechnik ...... Technical report, Konrad-Zuse-Zentrum fuer Informationstechnik Berlin, 2011.
12MB Größe 1 Downloads 83 Ansichten
Interaktives Raytracing von Gel¨ ande unter Einhaltung von Qualit¨ atskriterien Diplomarbeit

Universit¨at Rostock Fakult¨at f¨ ur Informatik und Elektrotechnik Institut f¨ ur Informatik Lehrstuhl f¨ ur Computergrafik Prof. Dr.-Ing. Heidrun Schumann Vorgelegt von: Steve D¨ ubel Geboren am: 25.07.1983 Gutachter: Prof. Dr.-Ing. Heidrun Schumann Prof. Dr. Sc. techn. Oliver Staadt Betreuer: Dipl.-Inf. Falko L¨offler Abgabedatum: 08.04.2011

Zusammenfassung Neben der Nutzung von Dreiecksnetz-Hierarchien zur Echtzeit-Darstellung von Gel¨ande ist Raytracing durch neue parallele Hardwareplattformen eine attraktive Alternative. Viele Ans¨atze nutzen Approximationen oder erlauben Rechenungenauigkeiten, um die Echtzeit zu gew¨ahrleisten. Hierdurch wird jedoch die Qualit¨at der Darstellung immens beeintr¨achtigt. In dieser Arbeit werden Koh¨arenz-Arten identifiziert werden, die das Raytracing beschleunigen. Hierzu werden zun¨achst relevante Ans¨atze recherchiert und hinsichtlich Qualit¨at und Rechenzeit beurteilt. Anschließend werden Methoden zu Verbesserung der Qualit¨at des gerenderten Bildes aufgezeigt. Basierend auf dieser Ausarbeitung wird ein Konzept entwickelt und prototypisch umgesetzt, dass eine interaktive Terrainvisualisierung unter Einhaltung von Qualit¨atskriterien mittels Raytracing erm¨oglicht. Von besonderem Interesse sind dabei zum einen die M¨oglichkeiten der Beschleunigung durch Ausnutzung von Koh¨arenz-Arten, zum anderen die Erzeugung einer detaillierten, kontinuierlichen Gel¨andeoberfl¨ache.

Abstract Apart from using triangulated meshes for realtime terrain visualisation, raytracing becomes a promising alternative strategy due to new parallel hardware architectures. Many approaches use approximation algorithms or permit inaccuracies to ensure realtime capability. Thus quality is compromised. In this research project different kinds of coherences are identified. For this purpose different aproaches are investigated and evaluated in regard to quality and computation time. Afterwards methodes improving the quality of the rendered image are characterized. Based on this work, a concept is designed and implemented that allows an interactive terrain rendering in compliance with quality criteria through raytracing. The possibilities of accelerating the process by exploiting coherences and the generation of highly detailed, continuous surfaces are matter of particular interest.

3

Inhaltsverzeichnis 1 Einf¨ uhrung 1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Ziel und Aufbau der Arbeit . . . . . . . . . . . . . . . . . . . . . . . 2 Grundlagen 2.1 Raytracing . . . . . . . . . . 2.2 Aliasing beim Raytracing . . 2.3 Gel¨andedatens¨atze . . . . . 2.4 Aufbau der modernen GPU

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

3 Interaktives Raytracing zur Darstellung von Terraindaten 3.1 Koh¨arenz-Arten f¨ ur das Raytracing . . . . . . . . . . . 3.1.1 Objektraumkoh¨arenz . . . . . . . . . . . . . . . 3.1.2 Bildraumkoh¨arenz . . . . . . . . . . . . . . . . 3.1.3 Strahlenkoh¨arenz . . . . . . . . . . . . . . . . . 3.1.4 Temporale Koh¨arenz . . . . . . . . . . . . . . . 3.2 Level of Detail . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Mipmaps . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Geometry Clipmap . . . . . . . . . . . . . . . . 3.3 Interpolation von Gel¨andeoberfl¨achen beim Raytracing 3.4 Mikrostrukturen . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Bump Mapping . . . . . . . . . . . . . . . . . . 3.4.2 Relief Mapping . . . . . . . . . . . . . . . . . . 3.4.3 Displacement Mapping . . . . . . . . . . . . . . 3.5 Beleuchtungsberechnung . . . . . . . . . . . . . . . . . 3.5.1 Ambient Occlusion Map . . . . . . . . . . . . . 3.5.2 Ambient Aperture Lighting . . . . . . . . . . . 3.5.3 Precomputed Radiance Transfer . . . . . . . . . 4 Problemanalyse und L¨ osungsans¨ atze 4.1 Anforderungsanalyse . . . . . . . 4.2 Probleme und L¨osungsans¨atze . . 4.2.1 Raycasting . . . . . . . . . 4.2.2 Shading . . . . . . . . . . 4.2.3 Zusammenfassung . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . .

. . . . . . . . . . . . . . . . .

. . . . .

. . . .

. . . . . . . . . . . . . . . . .

. . . . .

. . . .

. . . . . . . . . . . . . . . . .

. . . . .

. . . .

. . . . . . . . . . . . . . . . .

. . . . .

. . . .

. . . . . . . . . . . . . . . . .

. . . . .

. . . .

. . . . . . . . . . . . . . . . .

. . . . .

. . . .

. . . . . . . . . . . . . . . . .

. . . . .

9 9 9

. . . .

11 11 12 13 14

. . . . . . . . . . . . . . . . .

17 17 17 20 21 23 24 25 25 27 28 29 29 30 30 31 32 34

. . . . .

37 37 38 38 41 42

5

Inhaltsverzeichnis 5 Konzept zum interaktiven Raytracing von Gel¨ ande unter Einhaltung von Qualit¨ atskriterien 5.1 Pr¨aprozess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 Generierung der Light Map . . . . . . . . . . . . . . . . . . . 5.1.2 Generierung der Maximum und Average Mipmap . . . . . . . 5.2 Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Generierung der Clipmap - Level of Detail im Nahbereich . . . 5.2.2 Generierung der Ray Map . . . . . . . . . . . . . . . . . . . . 5.2.3 Beamtracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.4 Raycasting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.5 Shading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45 47 47 50 51 51 56 57 57 61 65

6 Umsetzung des Raytracers 6.1 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Pr¨aprozess . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.1 Auswahl und Anbindung an die Grafikschnittstelle . 6.3.2 Generierung der Clipmap . . . . . . . . . . . . . . . 6.3.3 Generierung der Ray Map . . . . . . . . . . . . . . 6.3.4 Beamtracing . . . . . . . . . . . . . . . . . . . . . . 6.3.5 Raytracing . . . . . . . . . . . . . . . . . . . . . . . 6.3.5.1 Raycasting . . . . . . . . . . . . . . . . . 6.3.5.2 Shading . . . . . . . . . . . . . . . . . . . 6.3.5.3 Raytracing der Clipmap . . . . . . . . . . 6.4 Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . .

67 67 68 69 69 70 74 75 76 77 77 81 85

7 Zusammenfassung und Ausblick

6

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

91

Abbildungsverzeichnis 2.1 2.2 2.3 2.4

Strahlenverfolgung beim Raytracing . . Ansichtsvolumen eines Pixels . . . . . Bilineare und bikubische Interpolation Die Rendering Pipeline . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

12 13 14 15

3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17

Beispielbild zu Bounding Volume Hierarchie . . . . . . . . . . . Raumaufteilung mittels eines Quadtree . . . . . . . . . . . . . . Der Octree eines 3D Models . . . . . . . . . . . . . . . . . . . . Maximum-Mipmap um Patches eines H¨ohenfeldes . . . . . . . . Unterteilung des Bildraumes beim adaptiven Bildraum-Sampling Veranschaulichung des Verfahrens Vertical Ray Coherence . . . Aufteilung des Heightfields in Tiles . . . . . . . . . . . . . . . . Antialiasing durch Mipmapping . . . . . . . . . . . . . . . . . . Mipmap Pyramide mit Clipmap . . . . . . . . . . . . . . . . . . Die Clipmap um den Betrachter herum . . . . . . . . . . . . . . Uniforme und bin¨are Suche im H¨ohenfeld . . . . . . . . . . . . . Bump und Relief Mapping . . . . . . . . . . . . . . . . . . . . . Bump und Displacement Mapping . . . . . . . . . . . . . . . . . Terrainbeleuchtung unter Ambient Occlusion . . . . . . . . . . . Terrainbeleuchtung unter Ambient Aperture Lighting . . . . . . Cones bei Ambient Aparture Lightening . . . . . . . . . . . . . Terrainbeleuchtung mit Precomputed Raniance Transfer . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

19 19 20 20 21 23 24 25 26 26 28 29 30 32 33 33 34

. . . . . . . . . . . . . . . . . . . . auf . . . . . .

. . . . . . . . . .

45 48 52 55 56 56 58 59 60 60

5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

Pipeline f¨ ur Terrain Raytracer . . . . . . . . . . . . . . . . . . . Erzeugung der Aperture-Kegel im Pr¨aprozess . . . . . . . . . . Seitenansicht der Clipmap . . . . . . . . . . . . . . . . . . . . . Hinzuf¨ ugen der Mikrostruktur . . . . . . . . . . . . . . . . . . . ¨ Linearer Ubergang zwischen zwei Materialien . . . . . . . . . . . Ray Map f¨ ur das Ansichtsvolumen und f¨ ur eine Hemisph¨are . . Das Beamtracing auf der Maximum Mipmap . . . . . . . . . . . Pipeline f¨ ur das Raycasting . . . . . . . . . . . . . . . . . . . . Durch die Maximum Mipmap definierte H¨ ullk¨orper . . . . . . . Verfolgung des Strahles auf dem H¨ohenfeld . . . . . . . . . . . . Die Berechnung des Abstandes zwischen den Mittelpunkten der die Hemisph¨are projizierten Fl¨achen. . . . . . . . . . . . . . . . 5.12 Beleuchtungsberechnung durch Ambient Aparture Lightening . . 5.13 LOD beim Raytracing . . . . . . . . . . . . . . . . . . . . . . . 6.1 6.2

. 63 . 63 . 65

Architektur des Raytracers . . . . . . . . . . . . . . . . . . . . . . . . 67 Die verwendeten Shader in der Raytracing Pipeline. . . . . . . . . . . 70

7

Abbildungsverzeichnis 6.3 6.4

Die Generierung der Clipmap . . . . . . . . . . . . . . . . . . . Die maximale und minimale Entfernung der Datenpunkte aus Clipmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.5 Beispielbilder von Mikrostrukturen . . . . . . . . . . . . . . . . 6.6 Das Ergebnis des Beamtracers: die Depth Map . . . . . . . . . . 6.7 Vergleich des Raytracings mit Beamtracing und ohne. . . . . . . 6.8 Blending bei der Clipmap . . . . . . . . . . . . . . . . . . . . . 6.9 Bildsynthese der Clipmap mit dem restlichen Gel¨ande. . . . . . 6.10 Die approximative, bikubische Interpolation an den Silhouetten 6.11 Einsatz der Mikrostrukturen . . . . . . . . . . . . . . . . . . . . 6.12 Einsatz von Ambient Occlusion und Ambient Aperture Lighting

8

. . der . . . . . . . . . . . . . . . . . .

. 70 . . . . . . . . .

71 74 75 76 83 84 86 88 89

1 Einf¨ uhrung 1.1 Motivation Die computergest¨ utzte Visualisierung von Terrain ist ein aktuell wichtiges Forschungsthema. Das Anwendungsgebiet erstreckt sich von Geobrowsern bis Flugsimulatoren und Computerspielen. Die interaktive Darstellung von Gel¨andedaten bei gleichzeitig hohem Anspruch an Qualit¨at und Detail stellt die Computergrafik dabei vor besondere Herausforderungen. Bei der konventionellen polygonbasierten Darstellung werden H¨ohendaten in Dreiecksnetze umgewandelt und anschließend gerendert. Dabei ist der Aufwand bei gr¨oßeren Datens¨atzen jedoch sehr hoch. H¨aufig u ¨bersteigt sogar die Anzahl der dargestellten Dreiecke die Anzahl der Pixel auf dem Bildschirm. Eine Alternative hierf¨ ur bietet das Raytracing. Unter Ausnutzung verschiedener Beschleunigungsstrategien ist eine Visualisierung auch in Echtzeit m¨oglich [Due10]. Dabei kann das Raytracing direkt auf den H¨ohendaten, ohne eine Umwandlung in Dreiecksnetze erfolgen. Außerdem eignet sich der Algorithmus der Strahlenverfolgung besonders gut f¨ ur die Umsetzung auf parallelen Hardwarearchitekturen. [Kaz07] Jedoch nutzen viele Ans¨atze Approximationen, um das Verfahren zu beschleunigen. So muss beispielsweise das Gel¨ande zwischen gegebenen Datenpunkten interpoliert werden. Dadurch wirken niedrig aufgel¨oste Gel¨andedatens¨atze h¨aufig sehr glatt, strukturlos und unwirklich. Zus¨atzlich k¨onnen Fehler durch Rechenungenauigkeiten und Aliasing-Effekte bei großen Entfernungen zu Minderungen in der Bildqualit¨at f¨ uhren. W¨ahrend f¨ ur die herk¨ommliche Rendering-Pipline bereits eine Vielzahl von Verfahren gegen Aliasing-Effekte und zur Erzeugung von Mikrostrukturen existieren, m¨ ussen solche f¨ ur das Raytracing erst auf Anwendbarkeit und Wirksamkeit untersucht werden. Da das Raytracing ein sehr aufw¨andiger Prozess ist, m¨ ussen außerdem Beschleunigungsstrategien, wie die Ausnutzung von Koh¨arenz-Arten, entwickelt werden.

1.2 Ziel und Aufbau der Arbeit Ziel dieser Diplomarbeit ist es, verschiedene M¨oglichkeiten zur Beschleunigung des Raytracings zu analysieren. Außerdem werden Verfahren zur Verbesserung der Qualit¨at auf Wirksamkeit und Rechenaufwand untersucht. Basierend auf dieser Untersuchung soll ein Konzept f¨ ur ein interaktives System zum Raytracing von Gel¨ande unter Einhaltung bestimmter Qualit¨atskriterien erarbeitet werden, welches parallele Hardwarearchitekturen ausnutzt.

9

1 Einf¨ uhrung Diese Arbeit gliedert sich dabei in sieben Kapitel: Nach der Einleitung erfolgt eine kurze, grundlegende Einf¨ uhrung in die Thematik des Terrain Raytracings. Im dritten Kapitel wird dann der aktuelle Stand der Technik vorgestellt. Die grunds¨atzlichen Probleme und eine Analyse der Ziele sowie L¨osungsans¨atze soll den folgenden, vierten Abschnitt bilden. Anschließend wird ein Konzept entwickelt, dass diese Aufgaben und Probleme adressiert. Die prototypische Implementation eines interaktiven Raytracers nach diesem Konzept wird im sechsten Teil dieser Arbeit beschrieben und die Ergebnisse vorgestellt. Am Ende erfolgt eine Zusammenfassung und Bewertung. Außerdem wird ein Ausblick auf m¨oglich zuk¨ unftige Projekte gegeben.

10

2 Grundlagen In diesem Kapitel sollen die Grundlagen der weiteren Arbeit, des interaktiven Raytracings von Terraindaten unter Einhaltung von Qualit¨atskriterien erl¨autert werden. Im ersten Abschnitt wird daher kurz auf das Raytracing eingegangen und die Methodik dargelegt. Da es das Ziel ist, qualitativ hochwertige Bilder zu generieren, wird im Anschluss die Entstehung von Aliasing-Effekten erl¨autert werden. Darauffolgend sollen die charakteristischen Spezifika von Gel¨ande und der Gel¨andedarstellung vorgestellt werden. Am Ende erfolgt noch eine kurze Einf¨ uhrung in die Architektur moderner Grafikkarten.

2.1 Raytracing Das Raytracing, u ¨bersetzt Strahlenverfolgung, ist ein Verfahren, bei dem Lichtstrahlen durch eine virtuelle Szene traversiert werden, um die Sichtbarkeit und die Beleuchtung von Objekten zu simulieren. Dieser Algorithmus, dessen grunds¨atzliches Prinzip bereits Ende der 60er Jahre von Arthur Appel, Robert Goldstein und Roger Nagel [App68] [Gol71] beschrieben wurde, kann daher in die beiden Schritte der Sichtbarkeitsberechnung, dem sogenannten Raycasting und der Beleuchtungsberechnung, dem Shading, aufgeteilt werden. W¨ahrend in der Natur das Licht von einer Lichtquelle ausgehend in den Raum verteilt wird und dort von Objekten gebrochen, diffus reflektiert und gespiegelt wird, werden die Strahlen beim Raytracing r¨ uckw¨arts, vom Auge zur Lichtquelle verfolgt. Ausgehend von einer virtuellen Kamera werden Strahlen durch die Pixel der Bildebene geschossen und durch die Szene verfolgt. Trifft ein Strahl ein Objekt, so ist es in diesem Pixel sichtbar und das Traversieren kann abgebrochen werden. Anschließend wird die Farbe des Pixels durch das Shading berechnet. Daf¨ ur werden in die Richtung jeder Lichtquelle Schattenstrahlen geschossen. Trifft ein solcher Strahl auf seinem Weg zur Lichtquelle ein weiteres Objekt, so liegt der berechnete Punkt im Schatten dieses Lichtes, ansonsten wird er beleuchtet. Da die Verfolgung des Schattenstrahls f¨ ur jede Lichtquelle einzeln erfolgt, steigt der Aufwand mit jeder weiteren Quelle. Das Bild 2.1 zeigt ein einfaches Beispiel der Strahlenverfolgung durch eine Szene mit nur einer Lichtquelle.

11

2 Grundlagen

Abbildung 2.1: Strahlenverfolgung beim Raytracing: gr¨ une Strahlen f¨ ur die Sichtbarkeitsberechnung, rote Strahlen f¨ ur das Shading

Im Allgemeinen wird nur ein Prim¨arstrahl zur Sichtbarkeitsberechnung und ein Schattenstrahl zur Schattenberechnung geschossen. Douglas Scott Kay und Turner Whitted entwickelten in ihren Ver¨offentlichungen [Kay79] [Whi80] das sogenannte rekursive Raytracing, bei dem auch Transparenz und Spiegelung ber¨ ucksichtigt werden. Hierf¨ ur werden an Punkten, an denen die Strahlen transparente oder spiegelnde Objekte schneiden, Sekund¨arstrahlen geschossen. Dadurch kann der Anteil des Lichts, welcher gebrochen durch die Objekte dringt, beziehungsweise an der Oberfl¨ache gespiegelt wird, simuliert werden. Die Rekursion entsteht dadurch, dass diese Sekund¨arstrahlen ebenfalls wieder auf solche Fl¨achen treffen k¨onnen. Wie tief in dem hierdurch entstehenden Rekursionsbaum abgestiegen wird, h¨angt von der gew¨ unschten Genauigkeit ab. Raytracing kann damit die physikalische Beleuchtung sehr gut approximieren, jedoch ist der Aufwand des Verfahrens sehr groß. Der Hauptanteil der Rechenarbeit w¨ahrend des Raytracing ist die Schnittpunktberechnung, da im klassischen Ansatz jedes Objekt mit jedem Strahl auf einen potentiellen Schnittpunkt getestet werden muss. Whitted [Whi80] stellte fest, dass der Anteil der Gesamtlaufzeit zur Berechnung der Schnittpunkte etwa 75% betr¨agt. Dies kann sich bei komplexeren Szenen sogar auf u ¨ber 90% erh¨ohen. Außerdem besteht ein linearer Zusammenhang zwischen der Anzahl der Objekte in der Szene und der Komplexit¨at der Schnittpunktsuche [Rab08]. F¨ ur zeitkritische Anwendungen muss das Raytracing daher beschleunigt werden.

2.2 Aliasing beim Raytracing Beim einfachen Raytracing wird, wie oben beschrieben, f¨ ur jeden Pixel in der Bildebene ein Sichtbarkeitsstrahl verfolgt. Dieser Strahl hat kein Volumen, ist also unendlich d¨ unn. Ein Pixel hingegen hat eine bestimmte Breite und beschreibt im Ansichtsvolumen einen Pyramidenstumpf mit einem bestimmten Volumen (siehe Bild 2.2). Beim Rendern wird der verfolgte Strahl durch die Mitte des Pixels geschossen, jedoch die gesamte Fl¨ache des Pixels mit dem errechneten Wert eingef¨arbt. Da die Farbe eines Pixels also von nur einem Abtastwert (Sample) stammt, entsteht

12

2.3 Gel¨andedatens¨atze

Abbildung 2.2: Das Ansichtsvolumen eines Pixels (gr¨ un) und der Sichtbarkeitsstrahl (rot)

das sogenanntes Undersampling. Bei der perspektivischen Projektion beschreibt dieser Abtastwert die Farbe des gesamten Bildpunktes umso ungenauer, je tiefer der Strahl in die Szene dringt. Daher sind solche Aliasing-Effekte vor allem bei gr¨oßerer Entfernung zu den dargestellten Objekten, aber auch bei sehr scharfen Objektkanten und Schattengrenzen sichtbar. In der Computergrafik existieren bereits M¨oglichkeiten, diesem Fehler mit dem sogenannten Antialiasing entgegen zu wirken. Nach [Bes02] k¨onnen solche Verfahren in zwei Gruppen eingeteilt werden: analytische und diskrete Methoden: Analytische Algorithmen untersuchen die Beschaffenheit der Szene und filtern hohe Frequenzen vor dem Sampling. Eine h¨aufige Methode ist zum Beispiel das PolygonFiltering. Dabei werden die Kanten der Polygone gesondert behandelt. Ist ein solches Polygon nur teilweise in einem Pixel sichtbar, so wird die Intensit¨at der Farbe in diesem Bildpunkt in Abh¨angigkeit zur sichtbaren Fl¨ache berechnet. So entstehen weiche Kanten. Diskrete Methoden hingegen erh¨ohen die Abtastfrequenz pro Pixel. Eine einfache M¨oglichkeit ist die Anzahl der Strahlen pro Bildpunkt zu erh¨ohen. So werden beim Supersampling [Cro81] mehrere Farbwerte pro Bildpunkt ermittelt und anschließend der Durchschnitt gebildet. Jedoch erh¨oht sich bei dieser Methode der Aufwand proportional zur Anzahl der Strahlen. Beim adaptiven Subsampling [Coo84] hingegen wird nur je ein Strahl an den Eckpunkten eines Pixels verfolgt. Nur wenn diese sich in ihrem Wert unterscheiden, wird der Pixel geteilt und an den neuen Eckpunkten erneut Strahlen geschossen. Dies kann beliebig wiederholt werden, bis die gew¨ unschte Qualit¨at erreicht ist.

2.3 Gel¨ andedatens¨ atze Die einfachste Art Gel¨andedaten zu speichern, ist in Form eines Heightfields (dt. H¨ohenfeld). Dabei werden die Gel¨andepunkte u ¨ber einem zweidimensionalen Gitter (u,v) als H¨ohenwerte abgespeichert. Wird zwischen den Datenpunkten interpoliert, so entsteht eine wohlgeformte Gel¨andeoberfl¨ache. Da die Oberfl¨ache eine st¨ uckweise stetige Funktion u ¨ber u und v bildet, ist es nicht m¨oglich Hinterschnei¨ dungen, Uberh¨ange oder H¨ohlen zu erzeugen. Jedoch ist auch der Speicherbedarf

13

2 Grundlagen bei dieser Art der Gel¨andedarstellung vergleichsweise gering. Die Art der Interpolation zwischen den H¨ohenwerten f¨ ur die Erzeugung der Terrai¨ noberfl¨ache ist f¨ ur die Qualit¨at des gerenderten Bildes entscheidend. Ublicherweise wird die Oberfl¨ache bilinear interpoliert. Daf¨ ur wird in u- und in v-Richtung der H¨ohenwert in linearer Abh¨angigkeit der Entfernung zu den benachbarten H¨ohenpunkten berechnet. Dadurch entstehen sehr glatte, teilweise aber auch unwirklich erscheinende Silhouetten. Eine andere M¨oglichkeit ist die bikubische Interpolation. Hier wird der H¨ohenwert aus den 16 Nachbarwerten gebildet. Daf¨ ur k¨onnen Lagrange-Polynome oder kubische Splines verwendet werden. Obwohl aufwendiger, ¨ erzeugt diese Methode weichere Uberg¨ ange zwischen den Patches wie in Abbildung 2.3(b) zu sehen. Außerdem entstehen weniger sichtbare Artefakte. Im Abschnitt 3.3 wird auf die M¨oglichkeiten der Interpolation zwischen den H¨ohenpunkten beim Raytracing n¨aher eingegangen.

(a)

(b)

Abbildung 2.3: Die H¨ohendaten auf dem regelm¨aßigen Gitter k¨onnen bilinear (a) oder bikubisch (b) interpoliert werden

2.4 Aufbau der modernen GPU Steigende Anforderungen an die Rechentechnik beispielsweise durch die Physik, Meteorologie und Computergrafik haben in vielen dieser Bereiche zur Entwicklung von parallelen Hardwarearchitekturen gef¨ uhrt. Dazu z¨ahlen Mehrkernprozessoren, Multiprozessorsysteme oder auch ganze Cluster von Computersystemen. Insbesondere die Computergrafik kann von der parallelen Verarbeitung sowohl auf Objektraumals auch auf Bildraumebene profitieren. H¨aufig m¨ ussen selbst bei kleinen Szenen eine Vielzahl von Polygonen unabh¨angig voneinander verarbeitet oder beim Shading die Pixel der Bildebene durch entsprechende Algorithmen einzeln modifiziert werden. Dies f¨ uhrte bereits in den 80er Jahren zur Entwicklung von dedizierten Prozessoreinheiten f¨ ur die Grafik, der sogenannten GPU (Graphics Processing Unit). Die urspr¨ unglichen Aufgabe der GPU ist die Abarbeitung der sogenannten Rendering Pipeline (siehe Bild 2.4). Dabei u ¨bernimmt der Vertex Shader die Aufgaben der Geometrieberechnung und der Fragment Shader die Berechnung auf Pixelebene. Nach dem Vertex Shader werden die Pixel mittels einer Rasterisierung f¨ ur den Fragment Shader erzeugt. Auf der Hardware werden die Shader durch eine Vielzahl

14

2.4 Aufbau der modernen GPU

Abbildung 2.4: Die urspr¨ ungliche Rendering Pipeline auf der GPU-Hardware

von SIMD-Prozessorkernen umgesetzt. Diese erm¨oglichen die unabh¨angige, parallele Abarbeitung der Algorithmen und erlauben damit einen besonders hohen Datendurchsatz. Seit den ersten GPUs hat bis in die heutige Zeit eine rasante Entwicklung stattgefunden. Dabei hat sich die Anzahl der Kerne enorm erh¨oht. Je nach Typ liegen mehrere Hundert solcher Shadereinheiten auf der GPU. Auch die Verarbeitung auf der Hardware hat sich ver¨andert. Mit Einf¨ uhrung der programmierbaren Shader war es m¨oglich, die starre Abarbeitung der Rendering Pipeline durch neue Funktionen zu erweitern. Die neuste Generation der Grafikkarten erm¨oglicht sogar die Nutzung der GPU als Streamprozessor beispielsweise f¨ ur wissenschaftliche Berechnungen, die von der hohen Parallelit¨at profitieren k¨onnen. Ein Streamprozessor ist ein Koprozessor, welcher aufgrund seiner parallelen Architektur große Datenstr¨ome effizient verarbeiten kann. Dabei kommen die Programme ohne die Anbindung an die Rendering TM R Pipeline aus. Spezielle APIs, wie NVIDIAs CUDA , die freie Schnittstelle OpenR CL oder Microsofts Direct Compute erm¨oglichen direkten Zugriff auf die einzelnen Shadereinheiten.

15

3 Interaktives Raytracing zur Darstellung von Terraindaten Raytracing in seiner einfachsten Form ist sehr rechenaufwendig und daher nicht f¨ ur zeitkritische Anwendungen geeignet. Daher ist es notwendig, Beschleunigungsstrategien zu verfolgen, um Interaktivit¨at zu gew¨ahrleisten. Im folgenden Kapitel soll deshalb auf Koh¨arenz-Arten eingegangen werden, unter dessen Ausnutzung die Geschwindigkeit erh¨oht werden kann. Neben der Geschwindigkeit liegt der Fokus dieser Arbeit auf qualitativ hochwertige Bilder. Da beim Raytracing bei großen Entfernungen Aliasing-Effekte entstehen k¨onnen und das Gel¨ande außerdem infolge einfacher Oberfl¨achenapproximationen unter naher Betrachtung unrealistisch wirkt (vgl. Abschnitt 2.2 und 2.3), sollen anschließend Level-of-Detail-Methoden vorgestellt werden, welche dem entgegenwirken. Anschließend soll auf die M¨oglichkeiten der Gel¨andeoberfl¨achenerzeugung eingegangen werden. W¨ahrend einfache Methoden zur Interpolation zwischen den einzelnen Punkten eines H¨ohenfeldes hohe Geschwindigkeiten erzielen k¨onnen, sollen hier in Hinblick auf die Qualit¨at andere Methoden vorgestellt werden. Um die Qualit¨at weiter zu erh¨ohen, k¨onnen zus¨atzliche Mikrostrukturen benutzt werden, welche feine Details zur Gel¨andeoberfl¨ache hinzuf¨ ugen. Im dritten Teil dieses Kapitels wird auf solche Methoden eingegangen. Der letzte Abschnitt wird sich schließlich mit der Beleuchtung besch¨aftigen, da erst das Shading dem Gel¨ande einen plastischen und realistischen Eindruck vermittelt.

3.1 Koh¨ arenz-Arten f¨ ur das Raytracing Koh¨arenzen (lat.: cohaerere = zusammenh¨angen) beschreiben die Beziehung der Daten untereinander und in Bezug auf andere Entit¨aten [Gr¨o92]. Diese Zusammenh¨ange zu erkennen und zu nutzen erm¨oglicht es, Strategien zur Beschleunigung zu entwickeln. Koh¨arenz-Arten werden neben dem Rendering auch bei der Computer Vision und der Kollisionserkennung genutzt. F¨ ur das Raytracing unterscheidet man haupts¨achlich zwischen Objektraum- und Bildraumkoh¨arenz, Strahlenkoh¨arenz sowie temporaler Koh¨arenz.

3.1.1 Objektraumkoh¨ arenz Objektraumkoh¨arenzen beschreiben die Beziehung der Elemente der Szene bez¨ uglich ihrer r¨aumlichen Eigenschaften untereinander. Beim Raytracing stellt sich die Frage, wie es vermieden werden kann, dass der Strahl w¨ahrend des Traversierens gegen alle

17

3 Interaktives Raytracing zur Darstellung von Terraindaten Objekte der Szene auf Schnittpunkte getestet werden muss. F¨ ur die Beschleunigung ist es daher von Vorteil m¨oglichst viele Objekte von vornherein auszuschließen. Bounding Voulume Hierarchies Eine M¨oglichkeit schneller zu entscheiden, welche Objekte f¨ ur einen Schnittpunkt in Frage kommen, ist die Verwendung von Bounding Volumes (BV), sogenannter H¨ ullk¨orper. Wie im Abschnitt 2.1 beschrieben, liegt der gr¨oßte Rechenaufwand beim Raytracing in der Schnittpunktsuche, vor allem dann, wenn es sich um komplexe Objekte handelt. Daher verwendet man einfache geometrische Formen, wie eine Kugel oder einen W¨ urfel, welche diese Objekte umschließen und mit denen die Berechnung eines Schnittpunktes sehr viel einfacher ist. So muss beispielsweise bei einer Kugel lediglich der kleinste Abstand des Strahles zum Mittelpunkt errechnet und gegen den Radius getestet werden. Der Schnittpunkttest mit einem Objekt muss dann nur noch erfolgen, wenn das entsprechende BV geschnitten wurde. Der H¨ ullk¨orper sollte dabei die Form des umschlossenen K¨orpers m¨oglichst gut approximieren, um die Anzahl unn¨otiger Tests zu minimieren. Solche optimalen BV zu finden, ist jedoch ein sehr schwieriger Prozess. Außerdem m¨ ussen zus¨atzlich zu den Objekten noch die BV gespeichert werden, was den Speicherverbrauch erh¨oht. Um nun die einzelnen Objekte in Beziehung zu setzten und Koh¨arenzen zu definieren, k¨onnen sogenannte Bounding Volume Hierarchies (BVH) verwendet werden. Dabei werden mehrere benachbarte H¨ ullvolumina mittels eines gr¨oßeren BV zusammengefasst, welche dann ebenfalls in weitere umschließende K¨orper eingebunden werden. Diesen Vorgang wird fortgesetzt bis die gesamte Szene von einem H¨ ullvolumen zusammengefasst wird (siehe Abbildung 3.1). Hierdurch entsteht eine Hierarchie. Bei der Schnittpunktsuche wird nun der Strahl zuerst mit dem obersten BV zum Schnitt gebracht. Existiert ein Schnittpunkt, so wird in dieser Baumstruktur abgestiegen, bis entweder der Strahl kein BV oder Objekte mehr schneidet, oder ein solcher Test in einem Blatt erfolgreich war. Ein solches Verfahren reduziert die Anzahl der Schnittpunkttests pro Strahl im Durchschnitt von O (n) auf eine Komplexit¨at von O (log(n)), wobei n die Anzahl der Objekte in der Szene darstellt [Koe09]. Octree Eine andere M¨oglichkeit besteht darin, den 3D-Raum selbst aufzuteilen und hierdurch die Objektraumkoh¨arenz u ¨ber die Zuordnung zu Teilr¨aumen zu erreichen [Sam90]. Dabei wird die gesamte Szene in einem Quader (im zweidimensionalen Fall in ein Rechteck) eingefasst, welches dann in acht beziehungsweise vier gleich große Zonen eingeteilt wird (siehe Abbildung 3.2). Ist eine solche Zone vollst¨andig mit einem Objekt belegt, so wird der Knoten schwarz markiert, ist er leer, so ist seine Markierung weiß. Ist jedoch nur ein Teil der Zone von einem Objekt bedeckt, so wird der Knoten grau und die Zone wird erneut in gleich große Teile eingeteilt. Die entstehenden Zonen werden entsprechend neu markiert. Dies geschieht so lange, bis entweder nur noch Bl¨atter im Baum existieren, d.h. alle Knoten schwarz oder weiß markiert sind oder aber die gew¨ unschte Tiefe des dabei entstehenden Baumes erreicht sind. Eine solche Datenstruktur nennt man schließlich Octree beziehungsweise im 2D Fall Quadtree. Jedoch m¨ ussen Polygone an den Bereichsgrenzen getrennt werden, was zu Duplikaten und damit zu einem erh¨ohten Speicherbedarf f¨ uhren kann. Ein Octree ist in Abbildung 3.3 dargestellt.

18

3.1 Koh¨arenz-Arten f¨ ur das Raytracing

(a)

(b)

(c)

(d)

Abbildung 3.1: Bounding Box (a) und Bounding Sphere (c) links und die entsprechenden Bounding Volume Hierarchies rechts (b), (d). Zur Beschleunigung des Raytracings in 3D wird nun der Strahl mit dem Octree zum Schnitt gebracht. Anschließend wird dieser durch alle Unterknoten verfolgt, bis auf ein schwarzes Blatt getroffen wird und damit das Objekt, welches der Strahl schneidet, gefunden wurde oder aber der Octree verlassen wurde. Weitere Methoden zur Beschleunigung des Raytracings mittels Octrees wurden in der Arbeit von Vlastimil Havran [Hav11] zusammengefasst.

(a)

(b)

Abbildung 3.2: Die Raumunterteilung mittels eines Quadtree (a) und der dabei entstehende Baum (b)

19

3 Interaktives Raytracing zur Darstellung von Terraindaten

Abbildung 3.3: Der Octree eines 3D Models aus [SL04]

Maximum Mipmap A. Tevs et al. [Tev08] stellten 2008 eine Methode speziell f¨ ur H¨ohenfelder vor, welche Eigenschaften von BVH und Octree vereint: die Maximum Mipmap. Da alle Patches des H¨ohenfeldes die gleiche Ausdehnung (u,v) (siehe Abschitt 2.3) haben und in einem regelm¨aßigen Gitter angeordnet sind, k¨onnen sie mit H¨ ullquadern umschlossen werden, die sich lediglich in der H¨ohe unterscheiden. Dabei wird die zweidimensionale Grundfl¨ache jedoch in gleichgroße Abschnitte, ¨ahnlich eines Quadtrees eingeteilt. Daher braucht in der entstehenden Datenstruktur auch nur der H¨ohenwert abgespeichert zu werden. Anschließend werden jeweils vier H¨ ullk¨orper zu einem gr¨oßeren zusammengefasst, um die n¨achst h¨ohere Ebene zu bilden. Dies wird solange fortgef¨ uhrt, bis die gesamte Szene von einem Quader umschlossen ist und eine Baumstruktur entstanden ist. Die Abbildung 3.4 zeigt eine solche Hierarchie. Das Raytracing erfolgt dann ¨ahnlich der Methodik beim Octree. Der Strahl

Abbildung 3.4: Maximum Mipmap um bilineare Patches. Aus [Tev08]

wird mit dem Wurzelknoten zum Schnitt gebracht und durch die Maximum Mipmap verfolgt. Das Traversieren endet, wenn der Strahl die Mipmap verl¨asst oder aber ein Patch getroffen wurde.

3.1.2 Bildraumkoh¨ arenz ¨ Bildraumkoh¨arenzen beschreiben lokale Ahnlichkeiten der Bildpunkte bez¨ uglich ihrer Eigenschaften, wie Helligkeit oder Farbe. In Bildern existieren h¨aufig homogene Bereiche, in denen diese Eigenschaften ¨ahnlich oder gleich sind. Werden diese identifiziert, so kann dies genutzt werden, um die Bildkonstruktion zu vereinfachen. Neben

20

3.1 Koh¨arenz-Arten f¨ ur das Raytracing dem Raytracing werden solche Koh¨arenzen beispielsweise auch in der Bildkomprimierung angewendet.

Adaptives Bildraum-Sampling Marc Levoy [Lev90] stellte in seiner Arbeit zum Volume Rendering eine Methode vor, Bildraumkoh¨arenzen mittels Raycasting auszunutzen. Dabei wird das zu generierende Bild u ¨ber die Zeit mittels adaptivem Sampling verfeinert. Zuerst wird dabei in einem festgelegtem Abstand zueinander die Szene von Strahlen abgetastet. Die quadratische Region zwischen jeweils vier Strahlen wird daraufhin auf Fehler in der Farbe im Bildraum untersucht. Ist der Farbunterschied der vier Abtastwerte unterhalb eines bestimmten Schwellwertes, so gen¨ ugt eine bilineare Interpolation zwischen den Werten, um die gesamte Region einzuf¨arben. Ansonsten muss der Bereich adaptiv durch weitere Strahlen abgetastet werden. Auch hier findet wieder eine Fehlermessung statt, um die Notwendigkeit einer weiteren Unterteilung absch¨atzen zu k¨onnen. Dieser Algorithmus erlaubt nicht nur die Beschleunigung des Raycastings durch ein gewolltes Undersampling, sondern ¨ erlaubt auch eine schnelle Ubersicht u ¨ber das Bild, w¨ahrend sich die Qualit¨at erst u ¨ber die Zeit verbessert. Das Bild 3.5 zeigt nochmal die Unterteilung des Bildraumes beim adaptiven Sampling.

(a)

(b)

usAbbildung 3.5: Das Bild von Volumendaten einer Str¨omungsberechnung von Fl¨ sigkeiten (a). Die Unterteilung des Bildraumes beim adaptiven Bildraum-Sampling gestattet das Zusammenfassen von homogenen Bildbereichen (b). Diese m¨ ussen mit entsprechend weniger Strahlen abgetastet werden, als inhomogene Bereiche. Aus [AK11]

3.1.3 Strahlenkoh¨ arenz Trifft beim Raytracing ein Strahl auf ein bestimmtes Objekt, so trifft zu einer bestimmten Wahrscheinlichkeit ein benachbarter Strahl das gleiche Objekt. Diese ¨ Uberlegung f¨ uhrt zur Untersuchung von Strahlenkoh¨arenz:

21

3 Interaktives Raytracing zur Darstellung von Terraindaten Beamtracing Paul S. Heckbert et al. stellten 1984 das Beamtracing [PSH84] als Methode vor, welche erst einmal nur Koh¨arenzen im Bildraum ausnutzt. Anstatt, wie beim Raytracing u unne Strahlen durch das Pixelzentrum zu ¨blich, unendlich d¨ schießen, k¨onnen Bereiche der Bildebene zu sogenannten Beams (dt. Srahlenb¨ undel) zusammengefasst und durch die Szene traversiert werden. Bei einem progressiven Beamtracer wird das gesamte Ansichtsvolumen als ein Strahlenb¨ undel durch die Szene verfolgt. Wird ein Objekt getroffen, so werden seine Umrisse aus dem Volumen des Beams entfernt. Bei reflektierenden Oberfl¨achen werden f¨ ur die Beleuchtungsberechnung ebenfalls wieder Strahlenb¨ undel durch den Objektraum verfolgt. Da beim Beamtracing ein ganzes Volumen durch den Raum traversiert wird, kann es auch genutzt werden, um Aliasing-Effekte, die durch Sampling entstehen (vgl. Abschnitt 2.2), zu verhindern. Außerdem wird Beamtracing neben dem Rendering auch in der Erstellung von akustischen Modellen f¨ ur die Simulation von Audiowellen durch den Raum genutzt. Jedoch ist das Verfahren ohne Modifikationen noch aufw¨andiger als das Raytracing [PSH84]. Das Beamtracing kann auch als Beschleunigungsmethode des Raytracings verwand werden. Samuli Laine et al. nutzten in ihrer Arbeit zum Raytracing von Voxel Octrees [SL10] Strahlenkoh¨arenz aus, indem zu der Bildraumkoh¨arenz auch die Beziehungen im Objektraumkoh¨arenz ausgenutzt werden. Dazu wird die Bildebene in gleich große Bereiche aufgeteilt, um diese dann mit einem Strahlenb¨ undel durch die Szene zu verfolgen. Trifft ein solcher Beam auf den Octree, so wird er durch die Knoten des Baumes verfolgt, bis ein Teil des B¨ undels einen Knoten verfehlen w¨ urde. Anschließend erfolgt das eigentliche Raytracing, wobei als Startpunkt des Strahles der Endpunkt des Beams gew¨ahlt wird. So k¨onnen große Bereiche im Raum einfach u ¨bersprungen und die Anzahl der Schnittpunkttests verringert werden.

Vertical Ray Coherence Eine andere Methode Strahlenkoh¨arenz unter Betrachtung der Charakteristik von H¨ohenfeldern auszunutzen, stellten Cheol-Hi Lee et al. in ihrer Arbeit [CHL97] als Vertical Ray Coherence vor. Hierbei wird das H¨ohenfeld mit sogenannten Ray Planes, Halbebenen, welche senkrecht auf dem H¨ohenfeld und parallel zueinander stehen, durchzogen. Aufgrund der perspektivischen Verzerrung und der Kamerafreiheit, m¨ ussen diese jedoch nicht notwendigerweise parallel auf der Bildebene verlaufen. In der Abbildung 3.6(a) wird dies verdeutlicht: Die grau markierte Ray Plane schneidet das H¨ohenfeld und die Projektionsebene senkrecht. Die Schnittfl¨ache mit der Bildebene bildet dabei die sogenannte Ray Line. Alle Strahlen, die dieser Ray Plane entlang verlaufen, k¨onnen entlang der Ray Line von unten nach ¨ oben verfolgt werden. Da das H¨ohenfeld keine Uberh¨ ange oder Hinterschneidungen besitzt (vgl. Abschnitt 2.3), muss der Schnittpunkt des Strahles der entlang der Ray Line h¨oher liegt, auch weiter entfernt sein (vgl. Abbildung 3.6(b)). Also kann der Tiefenwert des Schnittpunkt des darunter liegenden Strahles als Startwert des dar¨ uber liegenden verwendet werden. Hierdurch kann eine große Anzahl an Schnittpunkttests einfach ausgelassen werden und das Verfahren dadurch beschleunigt werden. Es ist jedoch notwendig die Ray Lines und die zugeh¨origen Strahlen in einem ersten Schritt zu identifizieren, um diese anschließend von unten nach oben berechnen zu k¨onnen. Aufgrund perspektivischer Verzerrungen gen¨ ugt es im Allgemeinen nicht die Ray Planes entlang einer Reihe von H¨ohenpunkten in der Datenstruktur zu ge-

22

3.1 Koh¨arenz-Arten f¨ ur das Raytracing nerieren, da nicht alle Bildpunkte von Ray Lines abgedeckt werden. Daher ist es notwendig diese L¨ ucken adaptiv mit weiteren Ebenen zu f¨ ullen oder aber die Pixel mittels Interpolation aus den Nachbarpunkten zu gewinnen.

(a)

(b)

Abbildung 3.6: Veranschaulichung der Ray Planes, welche senkrecht auf dem H¨ohenfeld stehen (a) und die Ray Lines entlang dessen die Strahlen beim Raytracing geschossen und von unten nach oben berechnet werden (b). Aus [CHL97]

3.1.4 Temporale Koh¨ arenz Bei der temporalen Koh¨arenz bezieht man sich auf die Ver¨anderung von Daten u ¨ber mehrere Frames. Sie wird daher auch Frame-to-Frame-Koh¨arenz genannt. So ver¨andert sich im Allgemeinen die Kameraposition beim Explorieren der Szene und damit auch die Sichtbarkeit bei statischen Szenen nur sehr langsam. Um zeitliche Koh¨arenzen ausnutzen zu k¨onnen, ist es notwendig die einzelnen gerenderten Frames nicht einzeln zu betrachten, sondern f¨ ur jedes Bild zus¨atzliche Informationen zwischenzuspeichern, um sie im anschließenden Frame wiederverwenden zu k¨onnen. Im Folgenden sollen zwei Methoden beispielhaft vorgestellt werden, welche diese Art der Koh¨arenz ausnutzen.

Inter-Frame-Animation Mit Hinblick auf Methoden in der Stereoskopie beschrieben S. Adelson et al. [SJA93] ein Verfahren zur Ausnutzung von Raum-Zeit-Koh¨arenzen beim Raytracing. Hierzu wird w¨ahrend des Raytracing jeder gefundene Schnittpunkt und die entsprechende Normale im Weltkoordinatensystem sowie der Beleuchtungswert abgespeichert. Ver¨andert sich w¨ahrend einzelner Frames die Position oder Ausrichtung der virtuellen Kamera, so werden die neuen Positionen der Schnittpunkte, soweit m¨oglich, anhand der Translation bzw. Rotation neu berechnet. F¨ ur Pixel, welche durch diese Transformation nicht bestimmt werden k¨onnen, wird eine neue Strahlenverfolgung angestoßen. F¨ ur diesen Algorithmus wird jedoch vorausgesetzt, dass sich die relative Position der Objekte zur Lichtquelle und damit die Beleuchtungsberechnung der Oberfl¨achen nicht ver¨andert. Es wurde gezeigt,

23

3 Interaktives Raytracing zur Darstellung von Terraindaten dass durch die Anwendung dieses Algorithmus bis zu 54% der verfolgten Strahlen pro Frame eingespart werden k¨onnen. Tile-based Raytracing Einen anderen Ansatz stellte Christian Dick et al. [Dic09] vor, indem er f¨ ur das Raycasting von H¨ohenfeldern die Szene in sogenannte Tiles (dt. Kacheln) fester Gr¨oße aufteilt, welche jeweils einen Bereich des Objektraumes beschreiben. Anstatt das gesamte Terrain im Speicher halten zu m¨ ussen und von den Strahlen traversieren zu lassen, werden bei dieser Methode nur diejenigen Tiles dem Raycaster zur Verf¨ ugung gestellt, in welche die Strahlen tats¨achlich vordringen (siehe Abbildung 3.7). Dies bedeutet, dass nicht sichtbare Bereiche ausgeschlossen werden. Da sich die Sichtbarkeit w¨ahrend der Bewegung der Kamera nur langsam ¨andert, kann der zus¨atzliche Datentransfer beim Laden eines Tiles gering gehalten werden. Vor allem bei sehr großen Szenen kann durch diese Methode der Speicherverbrauch signifikant gesenkt werden.

Abbildung 3.7: Bei der Traversierung des Strahles muss Tile A und D nicht geladen werden, da er nicht in deren Dom¨ane eintritt. Der Strahl schneidet das Gel¨ande im Punkt P.

3.2 Level of Detail Level-of-Detail-Methoden (LOD) verwenden Stufen hohen Details f¨ ur Nahbereiche und gr¨obere Aufl¨osungen f¨ ur die Ferne. Dabei soll zum einen die Komplexit¨at der Szene verringert und auf der anderen Seite Aliasing-Effekte durch Undersampling vermieden werden. So ist es zum Beispiel m¨oglich, ein Objekt, welches aus einer sehr hohen Anzahl an Polygonen besteht, in unterschiedlichen Aufl¨osungstufen abzuspeichern. Ist das Objekt weit entfernt, so nimmt es nur einen sehr kleinen Bereich der Bildebene, im Extremfall vielleicht nur einen Pixel ein. Hier w¨ urde es ausreichen, wenn dieses nur von einer sehr kleinen Zahl von Polygonen beschrieben wird. Wird sich dem Objekt gen¨ahert, so kann die Komplexit¨at und damit die Detailanzahl erh¨oht werden. Ist die Anzahl an Aufl¨osungsstufen zu gering, k¨onnen jedoch dadurch unter Umst¨anden pl¨otzlich auftauchende Details als sogenannte PopingArtefacts wahrgenommen werden. Gerade bei der Gel¨andedarstellung finden LOD-Verfahren Anwendung, da die Szenen meistens sehr groß und komplex sind. Jedoch verwenden die meisten LODVerfahren Dreiecksnetze, die entsprechend der gew¨ unschten Detailstufe h¨oher oder niedriger aufgel¨ost sind. Im Folgenden seien nun einige Methoden vorgestellt.

24

3.2 Level of Detail

3.2.1 Mipmaps Mipmapping ist eine Form des Antialiasing bei der Texturierung und wurde als erstes von William Lance [Wil83] 1983 vorgestellt. Heutzutage ist diese Methodik in der Computergrafik so weit verbreitet, dass es direkt in der Hardware der GPU umgesetzt ist. Die Mipmap (lat. abk.: MIP - multum in parvo = viel auf wenig Platz) ist eine Bildpyramiden des selben Motivs, mit abnehmender Aufl¨osung. Meistens werden jeweils vier benachbarte Texturpunkte auf der n¨achsten Aufl¨osungsstufe zu einem Farbwert mittels Durchschnittsbildung zusammengefasst. Aufgrund des Samplings k¨onnen Oberfl¨achenfarben von Objekten, welche weiter entfernt sind, eine h¨ohere Frequenz haben als die tats¨achliche Aufl¨osung des Bildes gestattet. Statt nur einen zuf¨alligen Abtastwert (sample) als Farbwert zu nehmen, was Aliasing-Effekte wie in Abbildung 3.8(a) erzeugen w¨ urde, wird immer dann auf eine niedrigere Aufl¨osung der Textur zugegriffen, wenn der projizierte Texel nicht mehr groß genug ist, um einen Pixel zu u ¨berdecken. Abbildung 3.8(b) demonstriert ein solches Antialiasing

(a)

(b)

Abbildung 3.8: Aliasing-Effekte bei der Texturierung (a) und Antialiasing durch Mipmapping (b) Aus [SG03]

3.2.2 Geometry Clipmap Heutige Gel¨andedatens¨atze k¨onnen ausreichend aufgel¨ost sein, um selbst feinste Details in der Oberfl¨ache zu beschreiben. Aufgrund der großen r¨aumlichen Ausdehnung von Terrain k¨onnen diese Details nur begrenzt und nur unter naher Betrachtung dargestellt werden. F¨ ur das Rendern von Dreiecksnetzen als Gel¨andeoberfl¨ache existieren daher bereits einige Level-of-Detail-Methoden wie ROAMs [Duc97] und Bin-Trees [Lin96]. Eine weitere Methode stellt die Geometry Clipmap [FL04] dar. Diese ¨ahnelt im Aufbau der von [Tan98] entwickelten Texture Clipmap, welche sichtpunktabh¨angige Teilbereiche sehr großer Mipmaps in eine ¨ahnliche Datenstruktur abbildet. Bei der Geometry Clipmap wird eine Datenpyramide, ¨ahnlich einer Mipmap mit L Stufen gebildet, wobei die unterste Stufe (L-1 ) das Gel¨ande in seiner gr¨oßten Aufl¨osung repr¨asentiert. Nach oben hin werden die einzelnen Punkte zusammengefasst, bis in der obersten Stufe (0 ) ein einzelner H¨ohenpunkt das Gel¨ande repr¨asentiert. Da

25

3 Interaktives Raytracing zur Darstellung von Terraindaten diese Pyramide, bei komplexen Datens¨atzen zu groß f¨ ur den Speicher ist, wird ein quadratischer Bereich als sogenannte Clipmap [Tan98] herausgeschnitten und in den Hauptspeicher geladen (siehe Abbildung 3.9). Der Mittelpunkt dieses Bereiches wird durch die Position des Betrachters im Gel¨ande bestimmt. Dieser hieraus entstehende Datenstapel bildet damit das Gel¨ande um die virtuelle Kamera herum ab (Abbildung 3.10) Trotz der gleichen Gr¨oße im Datenraum, haben die feiner aufgel¨osten

Abbildung 3.9: Die Mipmap Pyramide des Gel¨andes. Der farbliche Ausschnitt stellt die Clipmap dar. Aus [AA05].

Abbildung 3.10: Die Clipmap stellt das Gel¨ande ringf¨ormig um den Betrachter herum dar. Aus [AA05].

Levels der Clipmap eine kleinere r¨aumliche Ausdehnung. Ziel dieser Methodik ist es, die Gr¨oße der zu generierenden Dreiecke im Bildraum m¨oglichst konstant zu halten [AA05]. Um Artefakte an den R¨andern der einzelnen Ringe zu verhindern, werden die Datenausschnitte so ausgew¨ahlt, dass sie sich u ¨berlappen. So k¨onnen ¨ anschließend mittels Blendings weiche Uberg¨ange generiert werden. Bei einer Kamerabewegung m¨ ussen die Daten der Clipmap aktualisiert werden. Dies muss aufgrund ¨ der Uberlappung der r¨aumlichen Daten und unter Ber¨ ucksichtigung einer gewissen Toleranz nicht zwangsl¨aufig bis zur letzten Ebene geschehen. Da sich außerdem die Kamera bei der Exploration der Szene nur langsam ver¨andert (Ausnutzung temporaler Koh¨arenz, vgl. Abschnitt 3.1.4), kann der Datentransfer als Flaschenhals minimiert werden. Mittels View-Frustum-Culling ist es außerdem m¨oglich, noch weitere Daten auszusparen und die Geschwindigkeit der Applikation zu erh¨ohen.

26

3.3 Interpolation von Gel¨andeoberfl¨achen beim Raytracing

3.3 Interpolation von Gel¨ andeoberfl¨ achen beim Raytracing Wie bereits im Abschnitt 2.3 beschrieben, m¨ ussen f¨ ur die Erzeugung einer kontinuierliche Gel¨andeoberfl¨ache aus einem H¨ohenfeld zwischen den einzelnen Datenpunkten sogenannte Patches generiert werden. F¨ ur den einfachsten Fall kann der Patch durch zwei Dreiecke definiert und damit linear gefiltert werden. Diese Art der Oberur grob aufgel¨oste Datens¨atze nur fl¨achenapproximation liefert jedoch vor allem f¨ m¨aßige Ergebnisse. Daher ist es besser, den Patch mittels bilinearer Interpolation zu generieren, wobei sich jeder Oberfl¨achenpunkt durch einfache lineare Interpolation jeweils in die u- und in die v-Richtung errechnet. Neben der bilinearen Interpolation bietet sich f¨ ur hochqualitative Bilder auch die bikubische Interpolation an. Hierf¨ ur wird beispielsweise ein kubischer Spline zwischen den vier Nachbarn in u- und in den vier Nachbarn in v-Richtung gelegt und hieraus der Patch generiert. Unabh¨angig wie der Patch erzeugt wird, muss w¨ahrend des Raytracings das Schnittpunktproblem zwischen Strahl und Patch gel¨ost werden. Dies kann sowohl analytisch als auch approximativ geschehen. Bilineare Interpolation Soll der Schnittpunkt zwischen Strahl und bilinearem Patch analytisch gefunden werden, so muss die parametrische Gleichung des Strahles p~(t) = ~r + t~q ∀t ≥ 0

(3.1)

mit ~r als Startpunkt und ~q als Richtung des Strahles, mit der parametrischen Gleichung des bilinearen Patches p~(u, v) = (uv)(p~11 − p~10 − p~01 + p~00 ) + u(p~10 − p~00 ) + v(p~01 − p~00 ) + p00

(3.2)

mit pij als die vier Nachbarpunkte (u, v, i, j ∈ [0, 1]2 ), gleichgesetzt werden. Dieses Problem mit drei Unbekannten zu l¨osen ist jedoch sehr aufwendig. S. Ramsey et al. [Ram04] schlugen einen effizienteren Weg zur algorithmischen L¨osung vor. Dieser beinhaltet zwar sehr viele Fallunterscheidungen, f¨ uhrt aber zum gleichen exakten Ergebnis. Wesentlich schneller hingegen sind Algorithmen, welche den Schnittpunkt nur approximativ bestimmen. Fabio Policarpo et al. schlugen in ihrer Arbeit zum Relief Mapping [Pol05] eine Kombination aus uniformer, linearen und bin¨aren Suche vor. Hierzu wird f¨ ur die Patches ein H¨ ullk¨orper, eine Bounding Box verwendet. Tritt der Strahl in diese Bounding Box ein, so wird neben dem Eintrittspunkt A auch der Austrittspunkt B berechnet. Anschließend wird der Strahl, wie im Bild 3.11(a) zu sehen, zwischen A und B in eine gewisse Anzahl gleich großer Teilabschnitte geteilt. Von A ausgegangen wird bei jedem Zwischenpunkt getestet, ob der Strahl bereits unterhalb des Patches ist oder nicht. Wird ein solcher Punkt S gefunden, so beginnt die bin¨are Suche. Zwischen dem gefundenen Punkt S und dem zuvor untersuchten Punkt P wird der Punkt R auf halber Strecke markiert (siehe Abbildung 3.11(b). Befindet sich der neu gefundene Punkt unterhalb des Patches, so wird die Strecke P R erneut geteilt, ansonsten ist die Strecke RS Gegenstand der erneuten Suche.

27

3 Interaktives Raytracing zur Darstellung von Terraindaten

(a)

(b)

Abbildung 3.11: Die uniforme (a) und bin¨are Suche (b) im H¨ohenfeld Dieser Prozess kann beliebig oft fortgesetzt werden. Die bin¨are Suche kann nicht den genauen Schnittpunkt ermitteln, ihn jedoch beliebig genau approximieren. Bikubische Interpolation Eine kubische Interpolation nutzt nicht nur die vier direkten, sondern zus¨atzlich die zw¨olf ¨außeren Nachbarn, um einen Oberfl¨achenpunkt zu bestimmen. James T. Kajiya [Kaj82] schlug eine beschleunigte analytische Methode zur L¨osung des Schnittpunktproblems zwischen bikubischen Patch und einem Strahl vor. Jedoch m¨ ussen hierf¨ ur die Nullstellen eines Polynoms sechsten Grades gefunden werden. Auch wenn hierbei mittels des Algorithmus von Laguerre die L¨osung vergleichsweise schnell gefunden werden kann, ist die Komplexit¨at mit O (n3 ) angegeben, wobei n der Grad des Polynoms, also hier 6 ist. F¨ ur zeitkritische Anwendungen ist diese L¨osung daher nicht geeignet. Es existieren jedoch andere Ans¨atze, welche erneut eine approximative L¨osung finden. Alain Fournier et al. [AF94] verwendeten in ihrer Arbeit die kontinuierliche Unterteilung des Patches durch Einf¨ ugen von bikubisch interpolierten Gitterpunkten und interpolieren innerhalb dieses Gitters wieder bilinear. Hierdurch werden jedoch ausreichend gute Ergebnisse erreicht. R. Lewis [Lew03] schlug in seiner Arbeit einen ¨ahnlichen uhrung Algorithmus vor, erm¨oglicht jedoch mittels einer Pipeline die parallele Ausf¨ auf geeigneter Hardware. Trotzdem sind beide Algorithmen sehr zeitaufw¨andig und erreichen keine interaktiven Frameraten bei h¨oherer Anzahl an parametrischen Patches.

3.4 Mikrostrukturen Um qualitativ hochwertige Bilder zu generieren, ist es notwendig m¨oglichst detailreiche Objekte in der Szene zu verwenden. Viele Details bedeuten jedoch komplexe Objektstrukturen, welche zum Rendern h¨aufig zu aufwendig sind. Daher bedient man sich in der Computergrafik Hilfsmittel, um Details, wie zum Beispiel Mikrostrukturen auf der Oberfl¨ache zu generieren, ohne die Komplexit¨at der Objekte erh¨ohen zu m¨ ussen. So erm¨oglichen es Farbtexturen auf Objektoberfl¨achen einfache Materialien zu simulieren. Um jedoch realistisch wirkende Materialien zu erzeugen, m¨ ussen auch Tiefeneindr¨ ucke auf den Fl¨achen erzeugt werden. Im Folgenden sollen Verfahren vorgestellt

28

3.4 Mikrostrukturen werden, welche es erm¨oglichen, mittels einfacher Texturierung diese Tiefeneindr¨ ucke zu vermitteln.

3.4.1 Bump Mapping Das Bump Mapping, bereits 1978 von James Blinn [Bli78] entwickelt, simuliert Tiefeneindr¨ ucke, indem die Oberfl¨achennormalen eines Objektes, welche f¨ ur die Beleuchtungsberechnung verwendet werden, verschoben werden. Die dadurch generierten Schattierungen lassen den Eindruck einer Struktur auf der Oberfl¨ache entstehen. Jedoch ist diese simulierte Mikrostruktur auf die Beleuchtungsinformation beschr¨ankt. Die Geometrie des Objektes bleibt erhalten. Hierdurch entstehen vor allem an den R¨andern sichtbare Fehler durch fehlende Verdeckung, wie im Bild 3.13(a) zu sehen ist. Da das Bump Mapping jedoch auf heutigen Grafikkarten einfach umsetzbar ist und kaum zus¨atzlichen Berechnungsaufwand beansprucht, ist es in der Computergrafik, vor allem bei Echtzeitanwendungen sehr verbreitet. Da die Oberfl¨achennormale f¨ ur den Brechungswinkel der Strahlen beim Raytracing herangezogen wird, kann diese Methode auch hier ohne weitere Modifikationen eingesetzt werden. T. Kaneko et al. schlugen mit dem Parallax Mapping [Kan01] eine Erweiterung des Bump Mappings vor, bei der zus¨atzlich die Textur Koordinaten in Abh¨angigkeit des Betrachtungswinkels entlang eines Heightfields verschoben werden. Bei einem steileren Winkel, werden die Koordinaten weiter verschoben, was bei dem Betrachter einen Tiefeneindruck aufgrund der Parallaxe hervorruft

(a)

(b)

Abbildung 3.12: Holzstruktur mittels Bump Mapping (a) und Relief Mapping (b) Aus [Pol05]

3.4.2 Relief Mapping 2005 stellten Fabio Policarpo et al. eine weitere Methode zur Darstellung von Mikrostrukturen auf Oberfl¨achen vor [Pol05]. Dabei handelt es sich um einen Raycaster der zus¨atzlich zum polygonbasierten Rendering f¨ ur die detaillierten Relief-Daten auf den Oberfl¨ache angestoßen wird. Als Grundlage dient erneut ein H¨ohenfeld, welches als Textur auf die Objektoberfl¨ache aufgebracht wird. Da dies im Bildraum auf Pixelebene geschieht und die Geometrie des Objektes nicht ver¨andert wird, bleiben jedoch ¨ahnlich dem Bump Mapping Fehler in der Silhouette des Objektes sichtbar. Dennoch ist die Qualit¨at aufgrund der Selbstverdeckung und Selbstschattierung wesentlich h¨oher, wie im Bild 3.12(b) deutlich zu erkennen.

29

3 Interaktives Raytracing zur Darstellung von Terraindaten

(a)

(b)

Abbildung 3.13: Mikrostukturen auf einer Kugeloberfl¨ache mittels Bump Mapping (a) und Displacement Mapping (b). Aus [Ada11]

3.4.3 Displacement Mapping Beim Bump Mapping verursacht die fehlende zus¨atzliche Struktur vor allem bei flachen Betrachtungswinkeln sichtbare Fehler. Eine Alternative hierzu bietet das Displacement Mapping. Anstatt nur die Normalen zu modifizieren, wird bei dieser Methodik die tats¨achliche Geometrie ver¨andert. Da die Datenrepr¨asentation des eigentlichen Objektes trotzdem erhalten bleibt, k¨onnen mittels Displacement Mapping realistische Mikrostrukturen erzeugt werden, ohne die Komplexit¨at der Modelle zu erh¨ohen. Dem Displacement Mapping liegt ein H¨ohenfeld zugrunde. Die einzelnen Punkte einer Oberfl¨ache werden beim Mapping entlang ihrer Oberfl¨achennormale auf das entsprechende H¨ohenniveau aus dem Heightfield verschoben. Dadurch ist die Struktur auch an der Silhouette in den Schatten erkennbar (vgl. Abbildung 3.13(b)). Moderne Grafikkarten k¨onnen das Displacement Mapping auf der Hardware mittels Tesselation umsetzen und damit beschleunigen. Hierdurch kann diese Methode auch in Echtzeitapplikationen eingesetzt werden. Jedoch wird dies nur auf der einfachen Rendering Pipeline, das heißt auf polygonalen Oberfl¨achen unterst¨ utzt. F¨ ur das Raytracing hingegen muss Displacement Mapping softwareseitig umgesetzt werden, was sehr aufwendig ist. Brian Smits et al. [BS00] entwickelten einen Raytracer f¨ ur Displacement Maps. Obwohl die erzeugten Bilder von sehr hoher Qualit¨at sind, liegt der Berechnungsaufwand f¨ ur einzelne Bilder bei mehreren Stunden.

3.5 Beleuchtungsberechnung Die Beleuchtung eines beliebigen Oberfl¨achenpunktes in einer Szene kann mit einer geschlossenen Formel angegeben werden. Diese Gleichung nennt sich RenderingGleichung, wurde 1986 von Jim Kajiya entwickelt und bildet die Grundlage aller globalen Beleuchtungsmodelle. Diese Integralgleichung beschreibt die Energieerhaltung bei der Ausbreitung von Licht. Zumeist wird sie in der Form der Radiance Gleichung angegeben, welche beschreibt, wie viel Licht von einem Oberfl¨achenpunkt ~x aus in Richtung ωref abgestrahlt wird: L(~x, ωref ) = Le (~x, ωref ) +

Z Ω

30

ρ(~x, ωin , ωout )Lin (~x, ωin ) cos θin dωin

(3.3)

3.5 Beleuchtungsberechnung mit: • Le (~x, ωref ):

das emittierte Licht am Punkt x mit dem Winkel ωref

• ωin , ωout :

der Eintritts- bzw. Austrittswinkel

• ρ(~x, ωin , ωout ):

Streuungsterm als BRDF

• Lin (~x, ωin ):

das eintreffende Licht aus dem Winkel ωin

• θ:

Winkel zwischen der Normalen ~n und ωin

Eine M¨oglichkeit diese Gleichung numerisch zu approximieren, ist das rekursive Raytracing. Bei der Gel¨andedarstellung ist die wichtigste Lichtquelle die Sonne. Da die Strahlen der Sonne durch die Atmosph¨are diffus reflektiert werden, kann aber auch der gesamte Himmel als Beleuchtungsquelle angesehen werden. Außerdem stellt die Interreflexion zwischen den Gel¨andeoberfl¨achen einen Teil der Beleuchtung dar. Um beim Raytracing all diese Aspekte zu ber¨ ucksichtigen, ist eine sehr hohe Anzahl an rekursiven Strahlenverfolgungen notwendig. F¨ ur Echtzeitanwendungen ist die Beleuchtungsberechnung durch ein Online-Raytracing daher nicht m¨oglich. Es existieren jedoch M¨oglichkeiten, diesen Prozess zu vereinfachen, indem entweder das Raytracing nur approximativ angewandt wird, wie beim Ambient Occlusion Mapping, oder aber der Strahlentransfer im Gel¨ande in einem Vorverarbeitungsschritt berechnet und beim Rendern auf diese Informationen zur¨ uckgegriffen wird. Dies wird beispielsweise beim Ambient Aperture Lighting und bei den Precomputed Radiance Transfer Functions angewendet. Auf diese Methoden soll im Folgenden genauer eingegangen werden.

3.5.1 Ambient Occlusion Map Das Ambient Occlusion (dt. Umgebungsverdeckung) basiert auf der Annahme, dass das zu beleuchtende Model von einer diffusen Lichtquelle umgeben ist. Dies ist bei der Gel¨andedarstellung durch den Himmel gegeben. Da bei dieser Methodik andere Beleuchtungselemente zun¨achst keine Rolle spielen, kann ein gew¨ahlter Punkt nur durch das Umgebungslicht beleuchtet werden. H¨aufig verwendet man ein Raycastingverfahren, um die entsprechende Ambient Occlusion Map zu berechnen. Dazu wird mittels Strahlen eine Halbkugel um die Oberfl¨achennormale herum abgetastet. Strahlen, welche die Hemisph¨are erreichen, also keine anderen Elemente schneiden, erh¨ohen die Helligkeit an diesem Punkt. Aus der Anzahl der nicht verdeckten Strahlen errechnet sich anschließend der gesamte Helligkeitswert. Zus¨atzlich k¨onnen die Richtungsvektoren der nicht verdeckten Strahlen gemittelt werden, um eine Bent Normal zu erhalten. Diese gibt an, aus welcher Richtung das meiste Licht auf diesen Punkt trifft und kann sp¨ater beim Rendern f¨ ur eine erweiterte Beleuchtungssimulation, beispielsweise beim Lichttransfer u ¨ber Irradiance Environment Maps [Ram01] eingesetzt werden. Zumeist wird das Ambient Occlusion Mapping zus¨atzlich zu einem anderen lokalen

31

3 Interaktives Raytracing zur Darstellung von Terraindaten

Abbildung 3.14: Terrainbeleuchtung unter Ambient Occlusion. Aus [Oat06]

Beleuchtungsmodell, wie dem Phong-Shading angewandt, in welchem auch andere Beleuchtungselemente, beispielsweise gerichtetes Licht zur Helligkeit beitragen. Das Sampling f¨ ur die Umgebungsverdeckung f¨ uhrt jedoch dazu, dass Ecken und Vertiefungen wie in der Realit¨at nicht so stark beleuchtet werden. Dadurch entsteht ein realistischerer Tiefeneindruck, welcher beispielsweise beim genannten PhongShading fehlt. Die Abbildung 3.14 zeigt ein Gel¨ande, welches mittels Ambient Occlusion beleuchtet wird. Da die berechneten Helligkeitswerte blickpunktunabh¨angig sind, kann das Sampling auch in einem Vorverarbeitungsschritt erfolgen. Jedoch f¨ uhrt bereits ein sehr grobes Abtasten mittels Strahlenverfolgung zu ausreichend guten Ergebnissen, sodass zugunsten des Speicherbedarfs die Ambient Occlusion zumeist online berechnet wird.

3.5.2 Ambient Aperture Lighting Einen ¨ahnlichen Ansatz wie die Ambient Occlusion Map verfolgt C. Oat [Oat06] mit dem Algorithmus des Ambient Aperture Lighting. Speziell f¨ ur die Gel¨andedarstellung entwickelt, schließt diese Methode neben dem Umgebungslicht vom Himmel auch das direkte Sonnenlicht mit ein. In einem Vorverarbeitungsschritt wird hierf¨ ur an jedem Punkt im Gel¨ande die Halbkugel in Richtung der Oberfl¨achennormale mittels eines Raycastings abgetastet. Auch hier wird die Bent Normale ermittelt, welche angibt, aus welcher Richtung das meiste Umgebungslicht kommt. Das Verh¨altnis der¨ jenigen Strahlen, welche den Himmel erreichen zur Gesamtzahl ergibt den Offnungswinkel eines Kegels, welcher neben der Bent Normale in einer Textur abgespeichert wird. Um nun die Beleuchtung durch die Sonne und den Himmel zu berechnen, wird die ¨ Sonne auf die Hemisphere projiziert (Bild 3.16) und deren Uberschneidungsfl¨ ache ¨ mit dem Bogen, welcher durch den Offnungswinkel des Kegels beschrieben wird, berechnet. Da dies sehr zeitaufw¨andig ist, sch¨atzt C. Oat in seiner Arbeit die Schnitt-

32

3.5 Beleuchtungsberechnung

Abbildung 3.15: Terrainbeleuchtung unter Ambient Aperture Lighting. Aus [Oat06]

Abbildung 3.16: Generierung des Cones bei Ambient Aparture Lightening

fl¨ache approximativ ab. Das Sonnen- und Tageslicht wird nach dem Lambert’schen Gesetz u ¨ber Einfallswinkel und Oberfl¨achennormale errechnet und anschließend mit ¨ der Uberschneidungsfl¨ache skaliert. Die Interreflexion wird abgesch¨atzt, indem die Intensit¨at des ambienten Lichts von der Fl¨ache des Bogens u ¨ber dem Kegel, welche nicht durch die Sonnenprojektion geschnitten wird, abh¨angig gemacht wird. So wird verhindert, dass die Szene an Kontrast verliert, indem ambientes Licht Oberfl¨achenpunkte erhellt, die eigentlich dunkel sein m¨ ussten, da sie kaum Licht von außen erhalten. Das Ambient Aperture Lightening erzeugt sehr weiche, im Gel¨ande realistisch wirkende Schatten, wie in Abbildung 3.15 zu sehen und ber¨ ucksichtigt sowohl das gerichtete Sonnenlicht, als auch das diffuse Tageslicht. Außerdem ist der Berechnungsaufwand w¨ahrend des Rendering relativ gering und daher besonders f¨ ur interaktive Systeme geeignet.

33

3 Interaktives Raytracing zur Darstellung von Terraindaten

Abbildung 3.17: Terrainbeleuchtung mit Precomputed Radiance Transfer, projiziert auf SH sechster Ordnung. Aus [Oat06]

3.5.3 Precomputed Radiance Transfer Die Precomputed Radiance Transfer (PRT) [Slo02] ist ein globales Beleuchtungsmodell, welche die Lichtquellen von den Transporteigenschaften der Szene trennt und diese vorberechnet. Die PRT geht dabei davon aus, dass keines der Objekte der Szene selbst Licht emittieren und die eigentlichen Lichtquellen sehr weit entfernt sind. Da sich eine solche Beleuchtungssituation im Gel¨ande wiederfinden l¨asst, sind PRTs hierf¨ ur besonders geeignet. F¨ ur die Herleitung der Transferfunktion geht man von der Radiance Gleichung (vgl. Abschnitt 3.5) aus und ersetzt die BRDF und den Kosinusterm durch die Transferfunktion T (~x, ωin , ωout , θ). Da es keine lichtemittierenden Objekte in der Szene gibt, entf¨allt außerdem der Term Le (~x, ωref ) : L(~x, ωref ) =

Z

Lin (~x, ωin )T (~x, ωin , ωout , θ) dωin

(3.4)



Enth¨alt die Szene dynamische Objekte, oder spekular reflektierende Oberfl¨achen, so k¨onnen PRTs im Allgemeinen nicht vorberechnet werden. Ansonsten k¨onnen die Transfer- und Beleuchtungsfunktion, die nun in zwei Terme getrennt sind, auf orthonormale Basisfunktionen, wie z.B. Spherical Harmonics (SH), sogenannte Kugelfunktionen projiziert werden. Durch diese Projektion kann die jeweilige Funktion als Vektor der Koeffizienten dieser Funktion dargestellt und damit auf diese komprimiert werden. Diese Art der Projektion ist besonders f¨ ur niederfrequentes Licht geeignet, da dementsprechend wenig Basisfunktionen und damit weniger Koeffizienur die Beleuchtungsfunktion wird hingegen nur eine ten ben¨otigt werden [Lau06]. F¨ Basisfunktion ben¨otigt, da die Lichtquelle, wie beschrieben, sehr weit von der Szene entfernt ist. F¨ ur eine Vorberechnung m¨ ussen lediglich die Koeffizienten abgespeichert werden und w¨ahrend des Renderns die Ursprungsfunktionen aus den Kugelfunktionen rekonstruiert werden. Mit der Anzahl der Koeffizienten kann auch die Qualit¨at der PRTs gesteuert wer-

34

3.5 Beleuchtungsberechnung den. Je h¨oher die Dimension des Vektors der Koeffizienten ist, desto genauer l¨asst sich die PRT rekonstruieren. Jedoch erh¨oht dies auch den Speicherbedarf und den Rechenaufwand. Das Bild 3.17 zeigt die Ausleuchtung einer Szene mittels PRT, rekonstruiert aus SH-Basisfunktionen sechster Ordnung. J. Snyder et al. [Len09] beschrieben 2009 in ihrer Arbeit eine Methode den Radiance Transfer w¨ahrend des Renderns in Echtzeit zu approximieren, um hierdurch auch dynamische Szenen beleuchten zu k¨onnen. Hierf¨ ur werden die Strahlen beim Sampling durch eine Hierarchie unterschiedlicher Aufl¨osungsstufen vom Gel¨ande verfolgt. Hierdurch beschleunigt sich zum einen das Verfahren selbst, zum anderen werden auch Undersampling-Effekte vermieden. F¨ ur weitere Details zu PRTs und Spherical Harmonics wird die Arbeit von Robert Green [Gre03] empfohlen.

35

4 Problemanalyse und L¨ osungsans¨ atze Ziel dieser Arbeit ist eine interaktive Gel¨andedarstellung mittels Raytracing unter Beachtung bestimmter Qualit¨atskriterien. Die Kapitel 2 und 3 haben hierf¨ ur die Grundlagen erl¨autert und aktuelle Ans¨atze beschrieben. In diesem Kapitel sollen nun die Anforderungen an die Terrainvisualisierung genauer definiert werden. Anschließend sollen auf der Basis aktuell gebr¨auchlicher Methoden die Probleme beim interaktiven, qualit¨atsorientierten Terrain Raytracing identifiziert und L¨osungsans¨atze beschrieben werden.

4.1 Anforderungsanalyse Wie in der Einleitung beschrieben, stehen bei der Konzeption des Raytracers die Geschwindigkeit und die Qualit¨at im Vordergrund. Zus¨atzlich muss jedoch auch die Beschr¨ankung des Speichers beachtet werden. Im Folgenden wird auf die Kriterien n¨aher eingegangen. Geschwindigkeit Das Raytracing ist im Allgemeinen in der Lage qualitativ hochwertige Bilder zu erzeugen und wird daher oft gegen¨ uber anderen Darstellungsmethoden bevorzugt. Jedoch liegt eines der gr¨oßten Nachteile des Raytracings in dem enormen Rechenaufwand bei der Schnittpunktsuche der Strahlen. H¨aufig ben¨otigen solche Systeme mehrere Minuten um ein Bild zu generieren. Bei der Gel¨andedarstellung ist die Exploration der Daten jedoch eine nat¨ urliches Anliegen. Um dies zu erm¨oglichen, darf die Erzeugung eines Bildes nicht l¨anger als eine Sekunde dauern (Interaktivit¨at). Dabei sollte das System dieser Anforderung nicht nur im Allgemeinen gen¨ ugen, sondern auch in den f¨ ur das Raytracing typisch schwierigen F¨allen, wie die Betrachtung der Elemente der Szene aus großer N¨ahe oder die Darstellung komplexer Gel¨andestrukturen. Qualit¨ at Moderne, parallele Hardwarearchitekturen aber auch die Nutzung von Approximationen erlauben es, das Raytracing auf Echtzeit zu beschleunigen. Rechenungenauigkeiten und die genannten Approximationen beeintr¨achtigen hierbei aber die G¨ ute des generierten Bildes enorm. Dieser Verlust steht jedoch im Gegensatz zur Ausgangsidee, Bilder von hoher Qualit¨at zu erzeugen. Daher sollen Qualit¨atskriterien definiert werden, welche bei der Gel¨andevisualisierung garantiert werden m¨ ussen.

37

4 Problemanalyse und L¨osungsans¨atze Im Abschnitt 2.2 wurden Aliasing Effekte erl¨autert, welche bei großen Entfernungen auftreten. Diese m¨ ussen durch geeignete Methoden vermieden werden. Da im Hinblick auf die Geschwindigkeit die Gel¨andeoberfl¨ache bilinear interpoliert werden muss, entstehen Unstetigkeiten, welche vor allem im Nahbereich sichtbar sind. Durch die Interpolation wirkt die Oberfl¨ache außerdem unnat¨ urlich glatt. Daher m¨ ussen hier Methoden gefunden werden, welche es erm¨oglichen auch im Nahbereich weiche, harmonische Konturen und realistische detailierte Oberfl¨achen zu erzeugen. Weiterhin ist f¨ ur die G¨ ute des Bildes die Nutzung eines Beleuchtungsmodells n¨otig, welches einen realistischen und globalen Schattenwurf erm¨oglicht. Speicher Da der schnelle Hauptspeicher auf dem Computer begrenzt ist, unterliegen die L¨osungsans¨atze, welche den obigen Anforderungen begegnen, dieser zus¨atzlichen Beschr¨ankung. Das H¨ohenfeld, auf denen das Raytracing arbeitet, ist eine sehr kompakte Datenstruktur. Sie erm¨oglicht es, auch ein großes Gel¨ande effizient im Speicher zu halten. Dieser Vorteil soll nicht durch speicherintensive Renderingmethoden, wie beispielsweise beim Sparse Voxel Octree [SL10] aufgehoben werden. Daher ist Speichereffizienz eine weitere Anforderung an das Terrain Raytracing.

4.2 Probleme und L¨ osungsans¨ atze Der Abschnitt 4.1 beschreibt die Anforderungen an die Gel¨andevisualisierung und definiert damit gleichzeitig Beschr¨ankungen bei der Auswahl von L¨osungsans¨atzen. Dabei stehen h¨aufig Methoden, welche Geschwindigkeitsprobleme adressieren im Gegensatz zum Speicher- oder Qualit¨atsanspruch und umgekehrt. Im Folgenden soll nun auf die Anwendbarkeit bekannter Methoden und eigene L¨osungsm¨oglichkeiten diskutiert werden. Dabei wird soll auf die Komponenten des Raytracers, dem Raycasting und dem Shading einzeln eingegangen werden.

4.2.1 Raycasting Die Aufgabe des Raycastings ist die Sichtbarkeitsberechnung. Der Aufwand des Raycastings steigt dabei proportional zur Anzahl der Elemente in der Szene, da bei der Strahlenverfolgung die Objekte auf potentielle Schnittpunkte hin getestet werden m¨ ussen. Um die Schnittpunktsuche zu beschleunigen, k¨onnen verschiedene Koh¨arenz-Arten ausgenutzt werden, wie sie im Abschnitt 3.1 beschrieben werden. Solche Beschleunigungsmethoden haben den Vorteil, dass sie im Allgemeinen nicht approximieren und daher die Qualit¨at des Bildes nicht negativ beeinflussen. Um weiterhin die Qualit¨at bei der Sichtbarkeitsberechnung zu erh¨ohen, m¨ ussen Aliasing-Effekte durch Undersampling im Fernbereich verhindert werden. Im Nahbereich hingegen sollen strukturierte, detailreiche Gel¨andestrukturen sichtbar sein, um den Realismus zu verbessern. Ausnutzung von Koh¨ arenz-Arten Ein M¨oglichkeit von Objektraumkoh¨arenzen zu profitieren ist die Verwendung von Bounding Volume Hierarchies. Diese k¨onnen die

38

4.2 Probleme und L¨osungsans¨atze Schnittpunkttests beim Raytracing signifikant vereinfachen. Jedoch sind sie relativ speicherintensiv, da f¨ ur jedes Volumen die Position und die Ausdehnung beschrieben werden muss. Eine Alternative bieten die Octrees. Da hier der Raum aufgeteilt wird, sind die Positionen der einzelnen Knoten implizit gegeben. Jedoch k¨onnen diese unter Umst¨anden sehr unbalancierte B¨aume ausbilden und ohne spezielle Anforderungen an das H¨ohenfeld zu stellen, m¨ ussen Patches gegebenenfalls geteilt und damit dupliziert im Quadtree abgespeichert werden. Maximum Mipmaps hingegen vereinen die Vorteile von BVH und Raumaufteilungsalgorithmen indem das H¨ohenfeld gleichm¨aßig entlang des Gitters aufgeteilt wird. Mit dem Abspeichern nur eines Maximalwertes pro Patch, ist diese Methode außerdem sehr speichereffizient. Weiterhin k¨onnen beim Raytracing Strahlenkoh¨arenzen ausgenutzt werden. Das Beamtracing erm¨oglicht ganze Strahlenb¨ undel durch den Raum zu verfolgen. In seiner urspr¨ unglichen Form erlaubt Beamtracing zwar Sampling-Probleme zu beheben, jedoch ist der Aufwand des Verfahrens sogar noch h¨oher als das Raytracing selbst (vgl. Abschnitt 3.1.3). Speziell f¨ ur H¨ohenfelder entwickelt, erlaubt die Methodik der Vertical Ray Coherence die Strahlen sequenziell auf sogenannten Ray Planes entlang der Ray Lines zu verfolgen (vgl. Abschnitt 3.1.3). Hierbei erm¨oglicht das Auffinden eines Schnittpunktes w¨ahrend einer Strahlenverfolgung, die Verschiebung des Startpunktes des darauf folgenden auf diesen Punkt. Dadurch k¨onnen teilweise sehr große Teile der Szene bei der Strahlentraversierung u ¨bersprungen werden. Jedoch deckt die Projektion der Ray Lines auf den Bildraum nicht die gesamte Bildebene ab. Außerdem m¨ ussen die Strahlen entlang einer solchen Ray Line sequenziell abgearbeitet werden. Die Initialisierung auf parallel arbeitender Hardware erfordert also eine Identifizierung dieser Linien und der darauf arbeitenden Strahlen in einem Zwischenschritt. Eine spezielle Variante des Beamtracings auf Octrees erm¨oglicht hingegen eine Beschleunigung, indem der Startpunkt der Strahlen beim darauffolgenden Raytracing tiefer in die Szene verlegt werden kann. Auch bei einer Verwendung von Maximum ¨ Mipmaps kann aufgrund der strukturellen Ahnlichkeit zu Octrees ein solcher Beamtracing Algorithmus modifiziert und angewendet werden. Die Ausnutzung von temporaler Koh¨arenz mittels Projektion der Kamerabewegung in den Bildraum, wie im Abschnitt 3.1.4 beschrieben, ist zum einen sehr aufw¨andig und ben¨otigt zum anderen das Speichern aller gefundenen Schnittpunkte in einem Frame f¨ ur die Berechnung im n¨achsten. Die Anwendung eines Tile-based Raytracings ist nur in sehr großen Szenen sinnvoll, bei denen ein Großteil aufgrund der Entfernung oder Verdeckung nicht sichtbar ist, da ansonsten der Aufwand des Datentransfers zu groß wird. Jedoch kann temporale Koh¨arenz implizit genutzt werden. So ist der Aufwand zur Reduzierung von komplexen Szenenelementen bei LODVerfahren dadurch gerechtfertigt, dass dieser nur sehr selten durchgef¨ uhrt werden muss. W¨ahrend des Explorierens der Szene ¨andert sich die Entfernung zu den einzelnen Objekten nur sehr langsam und der Zeitverlust bei einer sporadisch durchgef¨ uhrten Aktualisierung wirkt sich nur minimal auf die Frameraten aus.

39

4 Problemanalyse und L¨osungsans¨atze Aliasing Effekte und LOD-Methoden Um eine realistische, detaillierte Visualisierung der Gel¨andedaten zu erm¨oglichen, m¨ ussen Artefakte und Aliasing-Effekte verhindert werden. Durch das Undersampling im Fernbereich k¨onnen beim Raycasting sichtbare Artefakte entstehen (vgl. Abschnitt 2.2). Ans¨atze, die unterhalb der Pixelebene weitere Strahlen im Raum verfolgen, wie das adaptive Subsampling, erh¨ohen jedoch den Aufwand sehr stark. Einige LOD-Ans¨atze hingegen arbeiten auf Objektebene und verringern die Aufl¨osung der Elemente bei gr¨oßer werdenden Entfernungen. So werden bei der Texturierung h¨aufig Mipmaps eingesetzt, um Artefakten entgegenzuwirken. Da H¨ohenfelder auf Texturen abgebildet werden k¨onnen, ist dieses Verfahren auch f¨ ur die Gel¨andedarstellung geeignet. Die k¨ unstliche Unsch¨arfe, welche durch Mipmaps generiert wird, f¨ uhrt jedoch in letzter Konsequenz zu Fehlern im Objektraum. Da diese im Bildraum aber nicht sichtbar sind und die Bildqualit¨at im Vordergrund steht, u ¨berwiegen die Vorteile dieser Methodik. Jedoch kann das Mipmapping nur f¨ ur das Antialiasing im Fernbereich verwendet werden. Level-of-Detail-Strategien k¨onnen aber auch f¨ ur den Nahbereich genutzt werden. Da Gebiete, welche nahe am Betrachter liegen, aufgrund der perspektivischen Verzerrung einen gr¨oßeren Bereich im Bildraum einnehmen, als weiter entfernte, das H¨ohenfeld in seiner Aufl¨osung jedoch begrenzt ist, fehlt es hier an Struktur und Details. Außerdem sind im Nahbereich die Unstetigkeiten zwischen den im Bildraum sehr großen, bilinear interpolierten Patches besonders deutlich erkennbar und verringern zus¨atzlich die Qualit¨at und den Realismus des gerenderten Bildes. Mittels LOD k¨onnen, abh¨angig von der Dichte des Betrachters zu den Szenenelementen, die Gr¨oße der Patches im Bildraum durch immer h¨oher aufgel¨oste Gel¨andestrukturen ann¨ahernd konstant zu halten. Da die maximale Aufl¨osung von H¨ohenfeldern im Allgemeinen nicht ausreicht, m¨ ussen die h¨oheren Aufl¨osungen allerdings k¨ unstlich, beispielsweise durch bikubische Interpolation generiert werden. ¨ Da hierdurch zwar glatte Uberg¨ ange zwischen den Patches entstehen, jedoch keine weiteren Details hinzugef¨ ugt werden, m¨ ussen außerdem der Oberfl¨ache zus¨atzliche Mikrostrukturen zugeordnet werden. Hierdurch k¨onnen die unwirklich erscheinenden glatten Silhouetten durch Mikrokonturen aufgebrochen werden. F¨ ur das interaktive Raytracing existieren jedoch bisher keine Ans¨atze, welche bei der Gel¨andevisualisierung im Nahbereich die Aufl¨osung erh¨ohen oder zus¨atzliche Details hinzuf¨ ugen k¨onnen. Viele klassische LOD-Verfahren, wie die Binary Triangle Trees [Lin96] arbeiten auf Dreiecksnetzen. Da das Raytracing direkt auf dem H¨ohenfeld erfolgen soll, muss eine angepasste Datenstruktur gefunden werden. Octrees entsprechen der nat¨ urlichen Datenstruktur f¨ ur das Raytracing, das Hinzuf¨ ugen zus¨atzliche Details ist aber schwierig. Texture Clipmaps und Geometry Clipmaps (vgl. Abschnitt 3.2.2) sind prinzipiell gut geeignet verschiedene Aufl¨osungen eines H¨ohenfeldes zu verwalten und nach dem Prinzip des Fokus + Contexts, dynamisch Details hinzuzuf¨ ugen. Eine Verwendung beim Raytracing ist jedoch bisher nicht bekannt. Außerdem geht die Geometry Clipmap [FL04], wie viele andere LOD-Verfahren auch, von einem hoch aufgel¨osten Terrain aus und verringern die Aufl¨osung mit zunehmender Distanz zum Betrachter sukzessive. Eine L¨osungsm¨oglichkeit w¨are die Nutzung einer Clipmap, bei welcher der umgekehrte Weg gegangen wird. Anstatt die Aufl¨osung bei zunehmender Entfernung zu verringern, k¨onnte diese bei abnehmender Distanz, beispielsweise mittels bikubischer

40

4.2 Probleme und L¨osungsans¨atze Interpolation erh¨oht werden. Eine Vorberechnung der verschiedenen Aufl¨osungsstufen w¨ urde jedoch zu einer signifikanten Vergr¨oßerung des Speicherbedarfes f¨ uhren. Daher ist es n¨otig, die Clipmap in Abh¨angigkeit von der Position des Betrachters dynamisch zu generieren und dem Rendering zur Verf¨ ugung zu stellen. Erzeugung der Gel¨ andeoberfl¨ ache Um mittels Mikrostrukturen zus¨atzliche Details hinzuzuf¨ ugen, bedarf es der Zuordnung von Materialien zur Gel¨andeoberfl¨ache. Hierf¨ ur werden h¨aufig sogenannte Material Maps genutzt, welche jedem Gebiet im Terrain bestimmte Stoffeigenschaften zuweisen. Anschließend werden Farbtexturen genutzt, welche das jeweilige Material nachbilden. Texturen, welche auch ver¨anderte Oberfl¨achenstrukturen mittels Selbstbeschattung oder gar Selbstverdeckung simulieren k¨onnen, kommen bisher beim Online-Raytracing nicht zum Einsatz. Das Bump Mapping oder Parallaxe Mapping (Abs. 3.4.1) kann mit sehr einfachen Mitteln sichtbare Oberfl¨achenstrukturen erzeugen, generiert aber Fehler bei der Selbstverdeckung und der Silhouette. Das Relief Mapping (Abs. 3.4.2) ist zwar aufw¨andiger, kann hingegen die Selbstverdeckung der Struktur berechnen. Erst das Displacement Mapping ist jedoch in der Lage echte, auch in der Silhouette der Oberfl¨achen erkennbare Mikrostrukturen zu erzeugen. Eine Nutzung von Displacement Maps beim interaktiven Terrain Raytracing ist aber aufgrund des Zeitaufwandes nicht m¨oglich (vgl. Abschnitt 3.4.3). Durch die Verwendung von LODVerfahren k¨onnten jedoch solche Materialdetails f¨ ur die jeweils fokussierten Bereiche im Gel¨ande dynamisch hinzugef¨ ugt werden, ohne den Aufwand f¨ ur die entfernten Szenenelemente zu erh¨ohen. Um das Rendering weiter zu beschleunigen, k¨onnte im Gegensatz zum echten Displacement Mapping, bei dem die Punkte entlang der Oberfl¨achennormalen verschoben werden, das Verschieben lediglich entlang der H¨ohenlinien erfolgen. Dies erzeugt ebenfalls realistische Effekte, f¨ uhrt jedoch wieder zu einem einfachen H¨ohenfeld, auf dem das Raytracing arbeiten kann.

4.2.2 Shading Nach dem Auffinden des Schnittpunktes ist das Shading f¨ ur die Beleuchtungsberechnung und daher f¨ ur die Farbe des jeweiligen Pixels verantwortlich. Da erst durch die Beleuchtung f¨ ur den Betrachter plastische, realistische Strukturen sichtbar sind, ist dieser Schritt f¨ ur die Qualit¨at des Bildes sehr wichtig. Um die f¨ ur Gel¨ande typischen weichen Schatten erzeugen zu k¨onnen, sind globale Beleuchtungsmodelle w¨ unschenswert, die neben der direkten Beleuchtung durch die Sonne auch das diffuse Licht vom Himmel und Interreflexionen zwischen Gel¨andeoberfl¨achen ber¨ ucksichtigen. Das Raytracing ist in der Lage die Beleuchtung einer Szene sehr gut zu approximieren. Jedoch existiert kein interaktives System, welches große Gel¨andeszenen mittels vollst¨andigem Raytracing darstellen kann. Im Abschnitt 3.5 wurde das Ambient Occlusion (Abs. 3.5.1), das Ambient Aperture Lighting (Abs. 3.5.2) und der Precomputed Radiance Transfer als Verfahren beschrieben, welche die Beleuchtungsberechnung vereinfachen und in einen Pr¨aprozess auslagern k¨onnen. Um eine ausreichend hohe Bildwiederholrate gew¨ahrleisten zu k¨onnen, muss auf solche vereinfachte Modelle zur¨ uckgegriffen werden. W¨ahrend sich alle drei Methoden f¨ ur die Beleuchtung von Gel¨ande eignen, unterscheiden sie sich maßgeblich in Qualit¨at

41

4 Problemanalyse und L¨osungsans¨atze und Aufwand. W¨ahrend Ambient Occlusion (AO) die Beleuchtung nur sehr vereinfacht approximiert, ist daf¨ ur die Berechnung wenig aufw¨andig. Ein sehr grobes Sampling der Umgebung jedes Oberfl¨achenpunktes gen¨ ugt, um den Verdeckungsfaktor ausreichend genau zu berechnen. Die Helligkeit eines Pixels kann w¨ahrend des anschließenden Renderns mit nur sehr wenigen Multiplikationen abgesch¨atzt werden. Der Speicheraufwand betr¨agt nur einen Wert pro Oberfl¨achenpunkt. Das Ambient Aperture Lighting (AAL) ben¨otigt hingegen ein etwas genaueres Sampling. W¨ahrend des Renderings muss die Schnittfl¨ache zwischen der Projektion der Sonne mit dem gespeicher¨ ten Offnungswinkel abgesch¨atzt und das direkte und das ambiente Licht getrennt berechnet werden. F¨ ur die vorberechnete Lightmap werden jeweils vier Werte pro ¨ Oberfl¨achenpunkt ben¨otigt (Bent Normal und Offnungswinkel). Die Qualit¨at der simulierten Beleuchtung ist hierdurch wesentlich h¨oher. Noch exakter k¨onnen PRTs die Beleuchtung vorberechnen. Hierf¨ ur ist ein aufw¨andiges Sampling notwendig. Da PRTs sehr groß sind, werden sie zumeist auf Basisfunktionen projiziert. Doch auch dann sind sehr viele Koeffizienten notwendig um eine gute Qualit¨at zu erm¨oglichen. Die Bilder 3.15 und 3.17 aus Abschnitt 3.5 zeigen den Vergleich zwischen der Beleuchtung durch AAL und PRTs auf Spherical Harmonics sechsten Grades projiziert. Es ist zu erkennen, dass hier noch die AAL gegen¨ uber den PRTs realistischere Schatten werfen kann [Oat06]. Jedoch kann die Anzahl der Koeffizienten bei PRTs beliebig erh¨oht werden, was die Qualit¨at enorm erh¨ohen kann. Dies bewirkt jedoch auch einen großen Anstieg des Speicherverbrauches und einen leicht erh¨ohten Berechnungsaufwand. W¨ unschenswert w¨are daher eine Beleuchtung, die in Abh¨angigkeit von der gew¨ unschten Qualit¨at skalierbar bleibt. F¨ ur eine einfache, sehr schnelle Beleuchtung kann AO benutzt werden. F¨ ur realistische Beleuchtungsergebnisse bei geringem Speicherverbrauch und schneller Berechnung sind Ambient Aperture Lighting Maps am Besten geeignet. Erst unter Verwendung einer sehr hohen Anzahl von Koeffizienten wird die Qualit¨at der PRT besser als das AAL und soll daher nur f¨ ur besonders hochqualitative Bilder genutzt werden.

4.2.3 Zusammenfassung F¨ ur das interaktive Gel¨anderaytracing m¨ ussen insbesondere Geschwindigkeits- und Qualit¨atskriterien eingehalten werden. Um die Bildqualit¨at zu verbessern, m¨ ussen Aliasing Effekte im Fernbereich durch ein Mipmapping vermieden werden. Im Nahbereich kann eine Clipmap eingesetzt werden, welche in der Lage ist verschiedene Detailstufen des Gel¨andes zu verwalten. Dabei kann durch die Clipmap eine approximative bikubische Interpolation durch kontinuierliche Unterteilung der Patches erm¨oglicht werden. Außerdem k¨onnen zus¨atzliche Details durch simulierte Oberfl¨achenmaterialien mittels Mikrostrukturen erzeugt werden. Dabei k¨onnen die Oberfl¨achenpunkte entlang der vertikalen H¨ohenpunkte f¨ ur die jeweilige Struktur verschoben werden. Die Beleuchtungsberechnung kann teilweise in einen Pr¨aprozess ausgelagert werden. Das verwendete Beleuchtungsmodell sollte dabei je nach Anspruch auf Qualit¨at, Ge-

42

4.2 Probleme und L¨osungsans¨atze schwindigkeit und Speicher variabel w¨ahlbar sein. Um eine entsprechende Beschleunigung des Raytracers zu erlauben sollen verschiedene Koh¨arenz-Arten ausgenutzt werden. Die Maximum Mipmap erlaubt durch Objektraumkoh¨arenzen eine schnelle Verfolgung der Strahlen auf dem H¨ohenfeld. Das Beamtracing profitiert von der Strahlenkoh¨arenz und kann daher das Raytracing weiter beschleunigen. Als dritte Koh¨arenz-Art k¨onnen auch temporale Koh¨arenzen implizit durch die Anwendung von LOD-Strategien wie beispielsweise der Clipmap, genutzt werden.

43

5 Konzept zum interaktiven Raytracing von Gel¨ ande unter Einhaltung von Qualit¨ atskriterien

¨ Abbildung 5.1: Ubersicht der Pipeline f¨ ur den interaktiven, hochqualitativen Terrain Raytracer

Nach dem im letzten Kapitel die Anforderungen definiert und L¨osungsm¨oglichkeiten diskutiert wurden, soll in diesem Abschnitt ein Konzept zum interaktiven Raytracing von Gel¨ande unter Einhaltung von Qualit¨atskriterien entwickelt werden. Dazu sollen Strategien genutzt werden, welche die Bildqualit¨at gegen¨ uber herk¨ommlichen Methoden verbessern k¨onnen. Es m¨ ussen Aliasing-Effekte vermieden und auch unter naher Betrachtung realistische Oberfl¨achen erm¨oglicht werden. Da qualit¨atssteigernde Maßnahmen h¨aufig mit Geschwindigkeitseinbußen verbunden sind und auch das Raytracing selbst sehr aufw¨andig ist, m¨ ussen Beschleunigungsstrategien sowohl f¨ ur die Komponente des Raycastings, als auch f¨ ur den Shadingprozess entwickelt werden. So k¨onnen f¨ ur die Beschleunigung des Raycastings, also der Sichtbarkeitsberechnung, Koh¨arenz-Arten (Abschnitt 3.1) ausgenutzt werden. Die Beleuchtungsberechnung (Shading) kann approximiert und teilweise in einen Pr¨aprozess ausgelagert werden. Daher wird eine Pipeline, wie sie im Bild 5.1 skizziert wird, vorgeschlagen. Ausgangspunkt dieser Terrain Raytracing Pipeline (TRP) ist das Gel¨ande in Form eines H¨ohenfeldes (Terrain Heightfield) und eine Normal Map zur Beschreibung der Oberfl¨achennormalen. Zus¨atzlich stehen Mikrostrukturen zur Simulation von Oberfl¨achenmaterialien ebenfalls in Form eines H¨ohenfelds (Microstructure Heightfield)

45

5 Konzept zum interaktiven Raytracing von Gel¨ande unter Einhaltung von Qualit¨atskriterien und einer Normal Map, zur Verf¨ ugung. Die TRP gliedert sich in einen Pr¨aprozess (Vorverarbeitung) und einem Renderingschritt. Damit das zeitkritische Rendering entlastet wird, sollen m¨oglichst viele Berechnungsschritte in die Vorverarbeitung ausgelagert werden. Um die Qualit¨at beim Rendern zu verbessern, werden Level-of-Detail-Strategien verwendet. Durch die Anwendung von Average Mipmaps k¨onnen Aliasing-Effekte, welche aufgrund des Subsamplings (vgl. Abschnitt 2.2) entstehen, vermieden werden. Diese werden im Pr¨aprozess generiert (Abschnitt 5.1.2) und w¨ahrend des Raytracings f¨ ur vom Betrachter weiter entfernte Bereiche eingesetzt (Abschnitt 5.2.4 und 5.2.5). Um Objektraumkoh¨arenzen auszunutzen erfolgt die Strahlenverfolgung auf der Maximum Mipmap, welche ebenfalls im Pr¨aprozess aus dem H¨ohenfeld generiert wird (Abschnitt 5.1.2). Zus¨atzlich soll, wie im Abschnitt 4.2.2 erl¨autert wurde, auch ein Teil der Beleuchtungsberechnung bereits w¨ahrend der Vorverarbeitung generiert werden. Das genutzte Beleuchtungsmodell soll abh¨angig von der gew¨ unschten Qualit¨at, Geschwindigkeit und des zur Verf¨ ugung stehenden Speichers skalierbar bleiben. Die entsprechend generierten Daten sollen hier einfachheitshalber nur Light Maps genannt werden, auch wenn der Aufbau und die Daten je nach verwendeten Modell unterschiedlich sind. Auf die Erzeugung wird im Abschnitt 5.1.1 genau eingegangen werden. Der Render Kontext bildet w¨ahrend des Renderings die Schnittstelle zum Benutzer, indem er die dynamisch einstellbare Information, wie Position und Sichtrichtung des Betrachters oder Stand und Farbe der Sonne den entsprechenden RenderKomponenten, zur Verf¨ ugung stellt. Die erste Komponente w¨ahrend des Renderings ist der Clipmap Generator. Um im Nahbereich eine ausreichende Qualit¨at zu erm¨oglichen, soll die Aufl¨osung des H¨ohenfeldes je nach Entfernung vom Betrachter, mittels eines bikubischen Filters erh¨oht werden. Als Datenstruktur wird, wie im Abschnitt 4.2.1 vorgeschlagen, eine der Texture Clipmap und Geometry Clipmap ¨ahnliche Datenpyramide verwandt (vgl. Abschnitt 3.2.2). Da diese Clipmap blickpunktabh¨angig gebildet wird, muss die Generierung w¨ahrend des Renderings erfolgen. Durch Ausnutzung temporaler Koh¨arenzen (vgl. Abschnitt 3.1.4) ist der Aufwand jedoch absch¨atzbar. Um noch mehr Details unter naher Betrachtung zu erm¨oglichen, sollen von der Clipmap auch Mikrostrukturen abgebildet werden. Auf die Clipmap wird im Abschnitt 5.2.1 n¨aher eingegangen. Anschließend wird die Ray Map (Abschnitt 5.2.2) erstellt, welche den Ausgangspunkt f¨ ur den Beamtracer und den Raycaster bildet. Hier werden die anschließend zu verfolgenden Strahlen generiert und die entsprechenden Richtungsvektoren abgespeichert. Um von Strahlenkoh¨arenzen zu profitieren erfolgt anschließend mittels Beamtracing die Generierung einer Depth Map. Auf Details wird im Abschnitt 5.2.3 eingegangen werden. Das Raycasting errechnet schließlich die Sichtbarkeit mittels Strahlenverfolgung auf der Maximum Mipmap. Auf das Raycasting und dabei auf die Anwendung der vorher generierten Datenstrukturen wird im Abschnitt 5.2.4 eingegangen werden. Am Ende erfolgt durch das Shading die Beleuchtungsberechnung (Anschnitt 5.2.5) auf Grundlage der Light Maps f¨ ur jeden gefundenen Schnittpunkt. Hieraus ergibt sich schließlich das fertige Bild. Im Folgenden wird auf die Komponenten des Pr¨aprozesses und des Renderings detailierter eingegangen werden.

46

5.1 Pr¨aprozess

5.1 Pr¨ aprozess Um das zeitkritische Rendering zu entlasten, werden in einem Vorverarbeitungsschritt die ben¨otigten Datenstrukturen vorberechnet. Dies sind die ben¨otigten Light Maps f¨ ur die Beleuchtung des Gel¨andes und der Mikrostruktur sowie die Average Mipmap und die Maximum Mipmap des H¨ohenfeldes. Dabei werden der Raytracing Pipeline das H¨ohenfeld und die Normal Map des Terrains und der Mikrostruktuugung gestellt. Im Folgenden soll auf die einzelnen Erzeugungsprozesse ren zur Verf¨ eingegangen werden.

5.1.1 Generierung der Light Map Die Light Maps sind Datenstrukturen, welche die Beleuchtung jeden Oberfl¨achenpunktes des Gel¨ande und der Mikrostrukturen beschreiben. Im Abschnitt 4.2.2 wurde erl¨autert, dass die Qualit¨at der Beleuchtung durch die Auswahl des Beleuchtungsmodell unter Betrachtung des verbrauchten Speichers und des Berechnungsaufwandes skaliert werden kann. Dabei kann zwischen der Ambient Occlusion, dem Ambient Aperture Lighting und vorberechneter Transferfunktionen (PRT) gew¨ahlt werden, wobei der jeweils unterschiedliche Aufbau der Light Maps auch beim Shading ber¨ ucksichtigt werden muss. Alle drei Beleuchtungsmodelle eignen sich sehr gut f¨ ur die Gel¨andevisualisierung. Da die Generierung der jeweiligen Light Map ¨ahnlich verl¨auft, gliedern sie sich außerdem sehr gut in die TRP ein. Die Grundidee dieser Beleuchtungsverfahren ist das Aufsammeln von Beleuchtungsinformationen an jedem Oberfl¨achenpunkt durch ein Sampling der Umgebung. Dieses Abtasten kann mittels eines Raycasters umgesetzt werden. Der w¨ahrend des Renderings genutzte Raycaster kann aufgrund der Verwendung der Ray Map auch hierf¨ ur verwendet werden (siehe dazu Abschnitt 5.2.4). Anstatt die Strahlen in dieser Ray Map innerhalb eines Ansichtvolumens in Form eines Pyramidenstumpfes anzuordnen, wie es f¨ ur die Erzeugung des Ergebnisbildes erforderlich ist, kann genauso eine Ray Map f¨ ur eine Kugel oder Halbkugel erstellt werden. Das Raycasting kann dann diese Strahlen durch das Gel¨ande oder die Mikrostruktur verfolgen. Ambient Occlusion Map Die Ambient Occlusion, oder Umgebungsverdeckung beschreibt die Selbstverschattung unter diffusem, aus allen Richtungen ankommenden Licht. F¨ ur die H¨ohenfelder kann eine Ambient Occlusion Map berechnet werden, welche f¨ ur jeden H¨ohenpunkt die Beleuchtungsst¨arke angibt. Hierf¨ ur wird f¨ ur jeden H¨ohenpunkt durch den Raycaster die Hemisph¨are um die Oberfl¨achennormale herum abgetastet. Trifft ein Strahl auf das Gel¨ande, so wird das aus dieser Richtung kommende Licht verdeckt. Das Raycasting l¨ost also eine Sichtbarkeitsfunktion S f¨ ur jeden Punkt ~x unter allen Winkeln ω der Hemisph¨are Ω. Analytisch berechnet sich der Grad der Verdeckung V u ¨ber das Integral dieser Sichtbarkeitsfunktion: Z 1 S(~x, ω) |~x · ~n| ds (5.1) V (~x, ~n) = π Ω

mit V (~x, ~n) als Verdeckungsfunktion und ~n der Oberfl¨achennormale. F¨ ur die Berechnung der Ambient Occlusion Map gen¨ ugt ein grobes, gleich-verteiltes Sampling

47

5 Konzept zum interaktiven Raytracing von Gel¨ande unter Einhaltung von Qualit¨atskriterien der Hemisph¨are um den Grad der Verdeckung ausreichend zu bestimmen. Hierf¨ ur werden die Strahlen, welche das Gel¨ande getroffen haben mit den Strahlen, welche die Hemisph¨are, hier den Himmel erreichen ins Verh¨altnis gesetzt und in der Map abgespeichert. Ambient Aperture Lighting Die AAL Map wird ¨ahnlich der AO Map erstellt. Auch hier wird die Hemisph¨are durch den Raycaster abgetastet. Jedoch beschreibt ¨ die Verdeckungsfunktion V (~x, ~n) ∈ [0, 1] hier den Offnungswinkel eines Kegels. Daher wird die Fl¨ache als Bogenl¨ange mit dem Radius rp mit 

rp = cos−1 −

 V (~x, ~n) +1 2π

(5.2)

in der AAL Map hinterlegt. Zus¨atzlich wird die Bent Normal ~b als Vektor gespeichert, der die Richtung der gr¨oßten Sichtbarkeit angibt. Diese Richtung kann mittels Durchschnittsbildung der Richtungsvektoren der Strahlen, die nicht geschnitten wurden und dessen Sichtbarkeitsfunktion S damit 1 ist, errechnet werden: ~b =

Z

S(~x, ω)ω dω

(5.3)



wobei ω der Winkel des jeweiligen Strahles am Punkt ~x ist. Die Bent Normal ~b und der Offnungswinkel ¨ beschreiben einen Kegel, dessen Spitze auf den Ober¨ fl¨achenpunkt zeigt und dessen Richtung und Offnungswinkel den gr¨oßten Lichteinfall kennzeichnen, wie im Bild 5.2(a) zu sehen. Das Bild 5.2(b) zeigt, wie dieser Kegel genutzt wird, um zu approximieren, wann das Licht der Sonne durch Elemente der Szene blockiert wird.

(a)

(b)

Abbildung 5.2: Der erzeugte Kegel f¨ ur die Aperture-Map (a). Der Kegel approximiert die Verdeckung der Sonne durch Elemente der Szene (b). Aus [Oat06]

Precomputed Radiance Transfer und Spherical Harmonics Wesentlich aufwendiger ist hingegen die Generierung der PRT. Hier wird im f¨ ur jeden Punkt auf dem H¨ohenfeld die Transferfunktionen abgesch¨atzt und abgespeichert. Multipliziert man die Transferfunktion mit der Beleuchtungsfunktion und integriert dieses Produkt anschließend, so erh¨alt man die Beleuchtung an diesem Punkt, wie im Abschnitt 3.5.3

48

5.1 Pr¨aprozess in der Gleichung 3.4 beschrieben. F¨ ur die Beleuchtung im Gel¨ande wird ausschließlich von diffusen Oberfl¨achen ausgegangen, womit der Austrittswinkel ωref als Term entf¨allt. Außerdem ist die Beleuchtung f¨ ur alle Oberfl¨achenpunkte gleich. Somit kann die Beleuchtung Lin f¨ ur jeden Oberfl¨achenpunkt ~x mit Lin =

Z

Lin (ω)T (~x, ω) dω

(5.4)



beschrieben werden, wobei Lin die Beleuchtungsfunktion und T die Transferfunktion sind. ω beschreibt den Eintrittswinkel des Lichtes. Mit T werden drei Transferfunktionen beschrieben: diffus unschattierter Transfer, diffus schattierter Transfer und diffus interreflektierender Transfer. Da die Interreflektionen im Gel¨ande keinen großen Einfluss auf die Schattierung haben, kann diese Transferfunktion vernachl¨assigt werden. Der diffus unschattierte Transfer tr¨agt zwar ebenfalls nicht zur Schattierung bei, beschreibt aber die Ausrichtung der Oberfl¨ache gegen¨ uber einer Lichtquelle, ¨ahnlich dem Normal Mapping. Bei der Verwendung von PRTs wird die Normal Map beim Rendering daher nicht mehr ben¨otigt. F¨ ur die Berechnung der Selbstschattierung des Gel¨andes ist die diffus schattierende Transferfunktion notwendig. Diese wird erneut durch ein Sampling mittels des Raycasters abgesch¨atzt. Diesmal werden jedoch die Strahlen gleich-verteilt vom Oberfl¨achenpunkt in alle Richtungen, also entlang einer vollst¨andigen Kugelfunktion verfolgt. Trifft ein solcher Strahl nicht die Oberfl¨ache des Gel¨andes, so wird er aus dieser Richtung nicht verdeckt und tr¨agt damit zum Radianz Transfer bei. Auch wenn damit nur ein Teil der Strahlen abgespeichert werden muss, w¨are der Speicherverbrauch enorm. Daher wird dieses Ergebnis als Funktion auf Kugelfunktionen, sogenannte Spherical Harmonics projiziert. Reale Spherical Harmonics definieren orthonormale Basisfunktionen u ¨ber einer Sph¨are, welche rotationsinvariant sind. Eine Projektion der Transferfunktion bedeutet, dass die urspr¨ ungliche Funktion F nur noch u ¨ber die Koeffizienten der jeweiligen Basisfunktionen approximiert werden. Multipliziert man die Koeffizienten ci mit der Basisfunktion Bi und summiert man diese Produkte auf, so erh¨alt man die Approximation der Ursprungsfunktion F˜ : F˜ =

n X

ci ∗ Bi

(5.5)

i=0

Umgekehrt erh¨alt man die Koeffizienten durch Multiplizieren und anschließendem Integrieren der Basisfunktion Bi mit der Ursprungsfunktion F u ¨ber die gesamte Dom¨ane von F : ci =

Z

F (x) ∗ B(x) dx

(5.6)

F

Die realen Spherical Harmonics Z sind zweidimensionale Funktionen und sind definiert als: √ m m  f¨ ur m > 0,  √2Kl cos(mφ)Pl cos(θ) m −m m (5.7) Zl (θ, φ) =  2Kl sin(−mφ)Pl cos(θ) f¨ ur m < 0,   0 0 Kl Pl cos(θ) f¨ ur m = 0

49

5 Konzept zum interaktiven Raytracing von Gel¨ande unter Einhaltung von Qualit¨atskriterien mit: Klm =

v u u (2l + 1)(l − |m|)! t

4π(l + |m|)!

(5.8)

und Plm als die Legrende Polynome mit dem Parametern l und m. Die Spherical Harmonics sind damit in Polar Koordinaten definiert und eignen sich sehr gut zur Approximation der oben genannten Transferfunktion. Die Koeffizienten werden demnach mit c(~x)i =

Z

T (~x, ω) ∗ Zlm (ω) dω

(5.9)



berechnet, wobei T (ω) die Transferfunktion ist. Die Anzahl der gespeicherten Koordinaten ist abh¨angig von den genutzten B¨andern, welche durch den Index l beschrieben werden. Je mehr B¨ander verwandt werden, desto genauer kann die Transferfunktion approximiert werden und desto genauer kann die Beleuchtung im Gel¨ande beim Rendering rekonstruiert werden. Jedoch werden f¨ ur viele B¨ander auch entsprechend mehr Koeffizienten ben¨otigt. Da der Parameter m im Intervall [−l, l] definiert ist und f¨ ur jedes Paar [m, l] eine Basisfunktion existiert, ist die Anzahl der ben¨otigten Koeffizienten l(l + 1). Zus¨atzlich zur Transferfunktion wird noch die Beleuchtungsfunktionen ben¨otigt. Auch diese wird auf die Spherical Harmonics projiziert. Im Gel¨ande spielen zwei Beleuchtungsfunktionen eine Rolle: die diffuse Beleuchtung vom Himmel und die gerichtete Beleuchtung der Sonne. F¨ ur die diffuse Beleuchtung werden sogenannte Cube Maps verwendet. Diese beschreiben das Umgebungslicht in alle Richtungen und sind leicht auf SH-Funktionen zu projizieren. Dazu wird f¨ ur jeden Winkel der Wert der Kugelfunktion mit dem Texel-Wert aus der Cube Map multipliziert und so die jeweiligen Koeffizienten berechnet. F¨ ur das Sonnenlicht wird eine Projektion der Sonne auf die Hemisph¨are definiert. Im ¨ einfachsten Fall kann dies durch die Beschreibung eines Offnungswinkel ς geschehen. Die Beleuchtungsfunktion Lin ergibt dann 1 f¨ ur alle Winkel θ innerhalb von ς und ansonsten 0: Lin (ς, θ, φ) =

 1

f¨ ur (ς − θ) > 0, 0 sonst

(5.10)

Die SH-Koeffizienten berechnen sich dementsprechend mit: ci =

Z2π Zπ

Lin (ς, θ, φ) ∗ Zi (θ, φ) sin θ dθ dφ

(5.11)

φ=0 θ=0

Die Koeffizienten der Transfer- und Beleuchtungsfunktion werden nun entsprechend gespeichert und dem Rendering-Prozess zur Verf¨ ugung gestellt.

5.1.2 Generierung der Maximum und Average Mipmap Die Average Mipmap wird verwendet um Aliasing-Effekte durch Undersampling zu verringern. Dazu wird eine Datenpyramide erstellt, welche das voll aufgel¨oste

50

5.2 Rendering Gel¨ande in der untersten Ebene enth¨alt. Dar¨ uber liegen weitere H¨ohenfelder, welche immer niedriger aufgel¨oste Versionen desselben Terrains beinhalten. Um diese zu generieren werden immer vier Datenpunkte der darunter liegenden Ebene mittels Durchschnittsbildung zu einem zusammengefasst. Die Maximum Mipmap hingegen beschreibt eine Bounding Volume Hierarchie um die einzelnen Oberfl¨achenanschnitte. Diese wird generiert, indem das Maximum der vier Eckpunkte eines Patches in einer Map abgespeichert wird. Die dar¨ uber liegenden Ebenen dieser Hierarchie entstehen durch das Zusammenfassen von immer vier Bounding Volumes zu einer gr¨oßeren mittels Maximumbildung. Die Average und die Maximum Mipmap ben¨otigen dabei je circa ein Drittel des Speicherbedarfes des voll aufgel¨osten Heightfields.

5.2 Rendering Dem Rendering Prozess stehen nun zum einen die vorberechneten Daten aus dem Pr¨aprozess zur Verf¨ ugung, zum anderen die dynamischen Parameter aus dem Render Kontext. Diese beschreiben die Position der Kamera, die Blickrichtung, aber auch den Stand und die Farbe der Sonne. Damit bildet der Render Kontext die Schnittstelle zum Benutzer, der die virtuelle Szene exploriert und die Beleuchtungsverh¨altnisse dynamisch ver¨andern kann. Das Rendering hat die Aufgabe aus diesen Informationen Bilder in ausreichend hoher Geschwindigkeit zu erzeugen. F¨ ur die hier vorgestellte Raytracing Pipeline teilt sich das Rendering in die Erstellung der Clipmap und der Ray Map, dem Beamtracing, dem Raycasting und dem Shading. Auf die einzelnen Komponenten wird nun genauer eingegangen.

5.2.1 Generierung der Clipmap - Level of Detail im Nahbereich Wie im Abschnitt 4.2.1 erl¨autert ist die Anwendung einer LOD-Strategie notwendig, um die Qualit¨at im Nahbereich erh¨ohen. Daher sollen unter naher Betrachtung die Gel¨andeoberfl¨ache bikubisch approximiert werden. Außerdem sollen noch mehr Details durch die Verwendung von Mikrostrukturen sichtbar werden. Daf¨ ur wird eine Clipmap verwendet. Diese geht auf die Idee des Geometry Clipmappings (siehe Abschnitt 3.2.2) zur¨ uck. Jedoch soll nicht in Abh¨angigkeit vom Betrachter von einem hoch aufgel¨osten Gel¨andemodell zu einem Modell niedriger Aufl¨osung u ¨bergegangen, sondern der umgekehrte Weg gegangen werden. Die Clipmap soll es erm¨oglichen diejenigen Teile des Gel¨andes, die nahe an der virtuellen Kamera ist, noch weiter aufzul¨osen und so mehr Details sichtbar zu machen. Dazu wird, sobald die in den Bildraum projizierten Patches des normal aufgel¨osten Gel¨andes die Pixelgr¨oße u ¨berschreiten anstatt des normalen Gel¨andes die Clipmap verwandt Diese beinhaltet mehrere noch h¨oher aufgel¨oste Modelle des Terrains. Um diese Bereiche zu identifizieren, kann ein Abstandsmaß verwendet werden: s (5.12) d = g 2e tan φ2 mit

51

5 Konzept zum interaktiven Raytracing von Gel¨ande unter Einhaltung von Qualit¨atskriterien • e:

die Breite eines Bounding Volumes in Pixeln

• s:

die Breite des Bildschirms in Pixeln

• d:

der Abstand des Bounding Volumes zum Betrachter

• g:

die Breite eines Bounding Volumes im Objektraum

• φ:

Field of View in Radiant

So kann die Entfernung zum Betrachter errechnet werden, bei dem die H¨ ullk¨orper im Bildraum gr¨oßer als ein bestimmter Schwellwert werden. Der Schwellwert wird zumeist zwischen 1 - 2 Pixeln definiert. Da bei der Clipmap sich diese Gebiete blickpunktabh¨angig ver¨andern, kann diese nicht vorberechnet werden, sondern muss w¨ahrend des Renderns kontinuierlich aktualisiert werden.

Aufbau der Clipmap Die hier verwendete Clipmap beschreibt einen Bereich des Gel¨andes u ¨ber mehrere unterschiedlich aufgel¨oste Stufen, wobei jede Stufe in Abh¨angigkeit von der Entfernung zum Betrachter f¨ ur das Raytracing genutzt wird. F¨ ur die untersten Ebene wird die Aufl¨osung des H¨ohenfeldes, der Light und der Normalen Map mittels bikubischen Filterns verdoppelt. Da auch bei dieser Aufl¨osung die Patches und die Datenpunkte ab einer bestimmten Entfernung zu groß werden, wird ein Teil dieses Bereiches auf der n¨achst h¨oheren Ebene erneut hoch skaliert. Dies wird bis in den dichten Nahbereich fortgef¨ uhrt. Es entsteht dabei ein Datenstapel aus mehreren Gel¨andemodellen, bestehend aus dem Heightfield, der Normal und der Light Map, wobei die Datenmenge auf jeder Ebene gleich, die Ausdehnung im Objektraum jedoch nach oben hin immer kleiner wird (siehe Bild 5.3). Damit bleibt die Aufl¨osung der Daten im Bildraum weitestgehend konstant.

(a)

(b)

Abbildung 5.3: Die Clipmap-Ebenen haben die gleiche Gr¨oße im Datenraum (a), werden im Objektraum jedoch nach oben hin kleiner. Hierdurch erh¨oht sich die Aufl¨osung des H¨ohenfeldes f¨ ur den Nahbereich (b)

52

5.2 Rendering Bikubische Filterung Die kubische Filterung und damit die Generierung neuer Punkte im Gel¨ande geschieht durch eine Interpolation zwischen den 16 unmittelbaren Nachbarn. F¨ ur die mathematische Herleitung soll erst einmal vom 1D Fall, also der einfachen kubischen Interpolation ausgegangen werden. Sind f¨ ur ein gegebenes Intervall [0, 1] die Werte einer Funktion F und ihre Ableitung F 0 bekannt, so kann sie durch ein Polynom dritten Grades interpoliert werden: F (x) = ax3 + bx2 + cx + d F 0 (x) = 3ax2 + 2bx + c

(5.13) (5.14)

An den Punkten x = 0 und x = 1 lauten die Funktionswerte: F (0) = d F (1) = a + b + c + d F 0 (0) = c F 0 (1) = 3a + 2b + c

(5.15) (5.16) (5.17) (5.18)

Diese vier Gleichungen k¨onnen wie folgt umgeschrieben werden: a = 2F (0) − 2F (1) + F 0 (0) + F 0 (1) b = −3F (0) + 3F (1) − 2F 0 (0) − F 0 (1) c = F 0 (0) d = F (0)

(5.19) (5.20) (5.21) (5.22)

Da die Oberfl¨ache nur st¨ uckweise mit einem kubischen Polynom interpoliert wer¨ den kann, muss ein kontinuierlicher Ubergang zwischen diesen Bereichen erzeugt werden. Dies geschieht, indem f¨ ur die Ableitung an den Randpunkten der Anstieg der Tangente zu den benachbarten Punkten genommen wird. Soll nun zwischen zwei Punkten p1 und p2 mit den Nachbarpunkten p0 und p3 interpoliert werden, so gilt: F (0) = p1 F (1) = p2 p2 − p0 F 0 (0) = 2 p − p1 3 F 0 (1) = 2

(5.23) (5.24) (5.25) (5.26)

Fasst man die Gleichungen 5.19 bis 5.26 zusammen, so erh¨alt man: 1 3 3 1 a = − p0 + p1 − p2 + p3 2 2 2 2 5 1 b = p0 − p1 + 2p2 − p3 2 2 1 1 c = − p0 + p2 2 2 d = p1

(5.27) (5.28) (5.29) (5.30)

53

5 Konzept zum interaktiven Raytracing von Gel¨ande unter Einhaltung von Qualit¨atskriterien Damit l¨asst sich das kubische Polynom aufl¨osen:

1 3 3 1 5 1 F (x, p0 , p1 , p2 , p3 ) = (− p0 + p1 − p2 + p3 )x3 + (p0 − p1 + 2p2 − p3 )x2 2 2 2 2 2 2 1 1 −( p0 − p2 )x + p1 2 2 (5.31) F¨ ur das bikubische Filtern wird in zwei Richtungen kubisch interpoliert und damit die Formel 5.31 um eine Dimension erweitert:

G(x, y) = F (x, F (y, p00 , p01 , p02 , p03 ), F (y, p10 , p11 , p12 , p13 ), F (y, p20 , p21 , p22 , p23 ), F (y, p30 , p31 , p32 , p33 )) (5.32) Es werden also 16 Nachbarpunkte ben¨otigt, um die neuen H¨ohenpunkte entlang einer bikubischen Funktion im Gel¨ande erzeugen. Um die verschiedenen Stufen der Clipmap zu erzeugen, werden zuerst durch Absch¨atzung der Gr¨oße der Patches im Bildraum das Gebiet identifiziert, f¨ ur das eine h¨ohere Aufl¨osung notwendig wird. Mittels des bikubischen Filters wird nun die Aufl¨osung des Gel¨andemodells verdoppelt. Auch auf diesem neu generierten Modell wird der Teilbereich ausgew¨ahlt, bei dem die projizierten Patches gr¨oßer werden als der Schwellwert und anschließend hoch skaliert. Da die Bereiche immer f¨ ur einen ganzen Bildausschnitt und nicht wie beim Antialiasing nur f¨ ur einen Strahl ausgew¨ahlt werden m¨ ussen, wird der Durchschnitt der Abst¨ande aller m¨oglichen Patches zum Betrachter gew¨ahlt. Durch kontinuierliches Fortsetzen dieses Prozesses entsteht die Clipmap. Durch die fortgef¨ uhrte Unterteilung des Terrains durch den Filter dritter Ordnung und dadurch, dass die bilinearen Patches im Durchschnitt nur ein bis zwei Pixel im Bildraum einnehmen, kann hierdurch eine bikubische Interpolation der Gel¨andeoberfl¨ache approximiert werden. Mikrostrukturen Durch die Clipmap k¨onnen nun harmonische, nat¨ urlich wirkende Silhouetten erzeugt werden. Dennoch wirken die Oberfl¨achen unter naher Betrachtung sehr weich und unnat¨ urlich. Deshalb sollen auf der Gel¨andeoberfl¨ache zus¨atzlich Materialien simuliert und damit Details hinzugef¨ ugt werden. Da das Bump und Relief Mapping zu keinem ausreichenden Realismus f¨ uhrt, echte Displacement Maps aber f¨ ur das interaktive Raytracing zu aufw¨andig sind, soll hier die Verschiebung der Oberfl¨achenpunkte entlang der vertikalen H¨ohenlinien erfolgen. Dabei wurde sich daf¨ ur entschieden, diese w¨ahrend des Generierens der Clipmap direkt in den Datenpunkten abzubilden. Da die Mikrostrukturen ebenfalls aus einem H¨ohenfeld, der Normalen und Light Map bestehen, ist die Aggregation einfach umzusetzen. Ausgangspunkt ist die Material Map, welche angibt, f¨ ur welche Bereiche des Gel¨andes welche Materialien verwandt

54

5.2 Rendering werden sollen. Ist die Mikrostruktur f¨ ur ein Bereich identifiziert, m¨ ussen nur die H¨ohenfelder aufaddiert werden (siehe Schema 5.4). Bei der Light Map kann dies genauso erfolgen, jedoch ist, ¨ahnlich wie bei der Normal Map eine anschließende Skalierung der Werte erforderlich. Die maximale Aufl¨osung der Mikrostruktur muss dabei mindestens so hoch sein, wie die der h¨ochste Clipmap-Ebene. Da die Punktdichte des Gel¨andes mit zunehmender Ferne zum Betrachter hin abnimmt, muss auch die Aufl¨osung der Mikrostruktur angepasst werden. Es wird eine Average-Mipmap der Struktur verwendet, um Aliasing-Effekte zu vermeiden. Da die Strukturen w¨ahrend des Renderns aufgetragen werden, wird kein zus¨atzlichen Speicher ben¨otigt.

Abbildung 5.4: Die Mikrostruktur wird hinzugef¨ ugt, indem sie auf das H¨ohenfeld addiert wird.

Da die Material Map mehrere Mikrostrukturen f¨ ur das Gel¨ande beschreibt, w¨ urden ¨ an den Gebietsr¨andern harte, unnat¨ urliche Uberg¨ange entstehen. Daher muss zwischen den einzelnen Materialien ein Blending stattfinden. Dies geschieht, indem an den Bereichen um dieses Grenzgebiet zwischen den Strukturen linear interpoliert wird. F¨ ur das H¨ohenfeld beispielsweise bedeutet dies, dass sich der neue H¨ohenwert im Falle von zwei Materialien wie folgt berechnet:    φ(p) + ϕalt (p)

f¨ ur dp < − 12 , ϕneu (p) = ψ(p) + ϕalt (p) f¨ ur dp > 12 ,   φ(p) · ( 12 + dφ ) + ψ(p) · ( 12 − dφ)) + ϕalt (p) sonst

(5.33)

mit ϕalt (p) und ϕneu (p) der alte, beziehungsweise neue H¨ohenwert an der Position p. φ(p) und ψ(p) sind die H¨ohenwerte der zwei zu blendenden Materialien und dp der Abstand zur Grenzfl¨ache zwischen diesen beiden. Die lineare Interpolation findet im Bereich d ∈ [− 12 , 12 ] statt. Diese Formel kann auch auf drei oder mehr Materialien durch Anpassung der Gewichte erweitert werden. Das Bild 5.5 veranschaulicht nochmal das Blending im eindimensionalen Fall.

Ausnutzung temporaler Koh¨ arenz Nachdem die H¨ohenfelder f¨ ur die einzelnen Ebenen der Clipmap erstellt wurden, muss auf deren Basis wieder eine Maximum

55

5 Konzept zum interaktiven Raytracing von Gel¨ande unter Einhaltung von Qualit¨atskriterien

¨ Abbildung 5.5: Der Ubergang zwischen zwei Materialien erfolgt jeweils u ¨ber lineare Interpolation entlang x- und y-Achse

Mipmap generiert werden, da der beschleunigte Raycaster auf dieser Datenstruktur arbeitet. Das Erstellen dieser Clipmap ist verh¨altnism¨aßig aufw¨andig. Dennoch ist sie aufgrund temporaler Koh¨arenz f¨ ur die interaktive Exploration geeignet. Die Entfernung zu den verschiedenen Bereichen der Szene ver¨andert sich nur langsam. Daher muss die Clipmap nicht nach jedem Frame aktualisiert werden. Schwellwerte bei der Positionsver¨anderung der Kamera verhindern zus¨atzlich unn¨otige UpdateProzesse. Ver¨andert sich die Position des Betrachters jedoch ausreichend, so m¨ ussen auch nicht alle Ebenen sofort aktualisiert werden. H¨aufig gen¨ ugt eine Erneuerung der oberen Ebenen, ohne dass im Bildraum Fehler entstehen.

5.2.2 Generierung der Ray Map

(a)

(b)

Abbildung 5.6: Die Ray Map kann die Strahlen f¨ ur die Abtastung eines Ansichtsvolumens (a) oder f¨ ur die Beleuchtungsberechnung einer Hemisph¨are definieren Die Ray Map bildet den Ausgangspunkt des Beamtracers und des Raycasters. Sie beinhaltet die Richtungsvektoren aller zu verfolgenden Strahlen, assoziiert mit dem jeweiligen Pixel in der Bildebene. F¨ ur die Sichtbarkeitsberechnung kann damit die Ray Map zusammen mit der Kameraposition das Ansichtsvolumen definieren. Die Entkopplung der Strahlenerzeugung vom Raycasting-Prozess hat den Vorteil, dass

56

5.2 Rendering dieser ohne weitere Modifikationen nicht nur f¨ ur die Sichtbarkeitsberechnung beim Rendering genutzt werden kann. Durch eine entsprechend definierte Ray Map kann das Raycasting auch f¨ ur die Beleuchtungsberechnung im Vorverarbeitungsschritt (siehe Abschnitt 5.1.1) genutzt werden. Auch wenn das hier vorgestellte Konzept auf vorberechnete Beleuchtungsinformationen zur¨ uckgreift, k¨onnte bei Bedarf mittels der Ray Map und dem Raycaster das Shading sogar online erfolgen (Online-PRTs nach [Len09] oder Online Ambient Occlusion Berechnung), was das Rendering jedoch erheblich verlangsamen w¨ urde. Das Bild 5.6 zeigt schematisch Beispiele f¨ ur Ray Maps, dessen Strahlen ein Ansichtsvolumen oder eine Hemisph¨are abtasten.

5.2.3 Beamtracing Um das Rendering weiter zu beschleunigen soll auch die Strahlenkoh¨arenz ausgenutzt werden. Das Beamtracing erlaubt es, das Raytracing zu beschleunigen, indem die Strahlen nicht einzeln sondern im B¨ undeln durch die Szene verfolgt werden und aus den Schnittpunkten mit der Szene eine Depth Map erzeugt wird. Diese kann beim anschließenden Raytracing verwendet werden, um die Startpunkte der Strahlen zu modifizieren. Der Tiefenwert der Depth Map gibt an, bis wohin ein Strahl avanciert werden kann, ohne dass Schnittpunkte mit Elementen der Szene m¨oglich sind. Dazu wird die Bildebene in gleich große quadratische Bereiche aufgeteilt. F¨ ur jedes Quadrat wird ein Strahlenb¨ undel, beschrieben durch vier Strahlen an den Eckpunkte, in den Raum geschossen. Die Verfolgung dieser vier Strahlen erfolgt nach dem gleichen Konzept, wie das Raycasting (siehe Abschnitt 5.2.4). Die Strahlen werden durch die Hierarchie der Maximum Mipmap, angefangen vom obersten Knoten, traversiert. Dies geschieht solange, wie die vier Strahlen den gleichen Weg in diesem Baum nehmen. Spaltet sich der Weg auf irgendeiner Ebene hingegen in unterschiedliche Pfade auf (siehe Bild 5.7), so bedeutet dies, dass sie nicht mehr das gleiche Bounding Volume treffen. F¨ ur das Strahlenb¨ undel heißt dies, dass ein Teil des Volumens ein BV trifft, w¨ahrend ein anderer Teil ihn verfehlt. Ziel bei dieser Art des Beamtracing ist es jedoch, eine Aussage u undel zu treffen. ¨ber alle Strahlen im B¨ Daher wird die Traversierung an dieser Stelle unterbrochen und die Entfernung zur zuletzt gefundenen Bounding Box abgespeichert. Da dies f¨ ur jeden verfolgten Strahlenb¨ undel erfolgt, entsteht eine grob aufgel¨oste Depth Map f¨ ur die Szene.

5.2.4 Raycasting Das Raycasting l¨ost das Sichtbarkeitsproblem. Hierf¨ ur werden Strahlen durch die Pixel der Bildebene in die Szene verfolgt und der Schnittpunkt mit dem Terrain, falls vorhanden, berechnet. Damit ist der Aufwand des Raycastings direkt proportional zur Aufl¨osung des Bildes. Jedoch erh¨oht sich dieser auch mit zunehmender Komplexit¨at des Gel¨andes, da mehr Patches existieren, die potentiell geschnitten werden k¨onnen. Es k¨onnen jedoch Objektraumkoh¨arenzen durch die Maximum Mipmap ausgenutzt werden, um die Schnittpunktsuche zu vereinfachen. Um auch bei gr¨oßerer

57

5 Konzept zum interaktiven Raytracing von Gel¨ande unter Einhaltung von Qualit¨atskriterien

une und Blaue Abbildung 5.7: Das Beamtracing auf der Maximum Mipmap. Der gr¨ Strahl stellen die Eckpunkte des verfolgten Strahlenb¨ undels durch das Gel¨ande dar (unten). In der Baumstruktur (oben) trennen sich die Pfade beider Strahlen im orangen Knoten 10. Dort muss die Suche abgebrochen und der Abstand zu diesem Knoten abgespeichert werden.

Entfernung eine gleichbleibende Qualit¨at zu liefern, m¨ ussen außerdem Average Mipmaps verwendet werden. Das Bild 5.8 skizziert den Aufbau des Raycasters. Dieser gliedert sich in die Erzeugung der Strahlen mit Hilfe der Ray Map und der Depth Map, der Strahlenverfolgung durch das Gel¨ande auf Basis der Maximum Mipmap und die Auswahl der verwendeten LOD-Stufe der Average Mipmap. Erzeugung der Strahlen Vor der eigentlichen Strahlenverfolgung m¨ ussen diese erst generiert werden. Dies geschieht mit Hilfe der Ray Map. Wie im Abschnitt 5.2.2 beschrieben, beinhaltet diese f¨ ur jeden Bildpunkt den Richtungsvektor des Strahles. Außerdem wurde im vorangegangenen Schritt mittels Beamtracing eine Depth Map erzeugt. Diese enth¨alt wiederum f¨ ur jeden Strahl den Startpunkt, an dem das Traversieren begonnen werden soll. Zusammen bilden sie den jeweiligen Strahl und das eigentliche Raycasting kann beginnen. Strahlenverfolgung unter Ausnutzung von Objektraumkoh¨ arenz Im Abschnitt 4.2.1 wurde herausgestellt, dass sich Maximum Mipmaps vor den Bounding Volume Hierarchies und den Quadtrees am Besten als Objektraumkoh¨arenz f¨ ur das Gel¨anderaytracing eignen. Die Maximum Mipmap speichert auf der untersten Stufe f¨ ur jeden Patch, welcher aus vier Datenpunkten aus der H¨ohenmap besteht, lediglich das Maximum ab. Da das H¨ohenfels bei einem festgelegten Minimum beginnt und außerdem die r¨aumliche Ausdehnung der Patches in einem Heightfield gleich groß sind, bildet also jeder Wert einen H¨ ullk¨orper, wie im Bild 5.9 dargestellt (siehe auch Abschnitt 5.1.2). Die Verfolgung des Strahles erfolgt nun auf einem zweidimensionalem Gitter von Zelle

58

5.2 Rendering

Abbildung 5.8: Pipeline f¨ ur das Raycasting

zu Zelle, welche die Grundfl¨achen der BV mit den Dimensionen x und y und der H¨ohe z darstellen. Tritt er in die Zelle eines Patches ein, so wird der Austrittspunkt aus dem Eintrittspunkt errechnet. ~=E ~ + λ~r A

(5.34)

~ und E ~ den Austrittspunkt beziehungsweise den Eintrittspunkt darstellen, wobei A ~r den Richtungsvektor des Strahles und λ den Strahlenparameter angibt. Um diese Gleichung zu L¨osen wird λ wie folgt berechnet: Zx − Ex rx Zy − Ey λy = ry λ = min(λx , λy )

λx =

(5.35) (5.36) (5.37)

wobei Zx/y der Austrittswert aus der Zelle in x bzw. y Richtung ist, Ex/y den Eintrittspunkt des Strahles definiert und rx/y der Richtungsvektor ist. Der kleinste errechnete λ-Wert wird in die Gleichung 5.34 eingesetzt und daraus der Austrittspunkt errechnet (siehe auch Abbildung 5.10(a)). Anschließend wird die H¨ohe des Strahles am Eintritts- und am Austrittspunkt gegen den Maximalwert aus der Maximum Mipmap getestet. Ist die H¨ohe des Strahles in beiden F¨allen gr¨oßer als die des H¨ ullk¨orpers, so schneidet er diesen nicht. Ansonsten muss der Strahl gegen den darunterliegenden Patch getestet  x  werden. Wird das Vor→ − zeichen der z-Komponente des Richtungsvektors r = yz des Strahles betrachtet, braucht nach einer Fallunterscheidung sogar nur der z-Wert am Eintrittspunkt oder am Austrittspunkt berechnet werden. Strahlen, die von unten nach oben verlaufen, treffen den H¨ ullk¨orper nur dann, wenn der H¨ohenwert des Strahles am Eintrittspunkt kleiner ist, als der Wert aus der Maximum Mipmap. Umgekehrt verlaufende

59

5 Konzept zum interaktiven Raytracing von Gel¨ande unter Einhaltung von Qualit¨atskriterien

Abbildung 5.9: Das H¨ohenfeld ist auf dem zweidimensionalen Gitter definiert (links). Vier Datenpunkte bilden immer einen Patch (mitte). Die Maximum Mipmap definiert durch den Maximum-Wert einen H¨ ullk¨orper (rechts). Aus [Tev08]

(a)

(b)

Abbildung 5.10: Verfolgung des Strahles auf dem H¨ohenfeld. Die Bestimmung des Austrittspunktes (a) und der Test auf einen Schnittpunkt (b). Aus [Dic09] Strahlen m¨ ussen nur am Austrittspunkt auf den H¨ohenwert getestet werden (siehe Abbildung 5.10(b)). Die Maximum Mipmap wird als Hierarchie erzeugt. Auf jeder Ebene wird aus jeweils vier benachbarten Werten erneut das Maximum gebildet und in der dar¨ uber liegenden Stufe gespeichert. So werden jeweils vier H¨ ullk¨orper zu einem zusammengefasst bis auf der obersten Ebene nur noch ein BV das gesamte Gel¨ande einfasst. Die Strahlen werden daher erst mit der h¨ochsten Hierarchiestufe zum Schnitt gebracht. Schneiden sie diese Box nicht, so m¨ ussen sie nicht weiter verfolgt werden. Ansonsten werden die Strahlen auf der darunterliegenden Ebene traversiert. Hierdurch lassen sich große Teile des Gel¨andes einfach u ¨berspringen. Der eigentliche Schnittpunkttest des Strahles mit der Oberfl¨ache erfolgt durch den Schnitt mit einem bilinearen Patch. Wie im Abschnitt 3.3 beschrieben, ist eine bikubische Filterung f¨ ur interaktive Anwendungen zu aufw¨andig. Der Schnittpunkt mit

60

5.2 Rendering dem Patch kann entweder analytisch und damit exakt bestimmt, oder approximativ abgesch¨atzt werden. Die analytische Methode ist zeitaufw¨andiger, liefert aber exaktere Ergebnisse vor allem dann, wenn die Patches im Bildraum gr¨oßer als ein Pixel werden.

Aliasing-Effekte und Level-of-Detail Der Abschnitt 2.2 beschreibt den AliasingEffekte, welcher beim Raytracing bei gr¨oßeren Entfernungen zum Betrachter auftauchen kann. Daher wird eine Average Mipmap (AM) eingesetzt, welche das H¨ohenfeld in unterschiedlichen Aufl¨osungsstufen speichert. Auf jeder Stufe dieser Mipmap verringert sich diese Aufl¨osung bis im obersten Level nur noch ein Wert, das gesamte H¨ohenfeld beschreibt. Beim Raytracing wird auf diese Mipmap zugegriffen, sobald der Strahl eine bestimmte Entfernung vom Benutzer zur¨ uckgelegt hat. Da die Aliasing-Effekte auftreten, wenn ein Pixel mehrere Patches im Bildraum u ¨berdeckt, muss diese Entfernung berechnet werden. Dies kann erneut mit der Formel 5.12 aus dem Abschnitt 5.2.1 geschehen. W¨ahrend des Traversierens des Strahles durch die Szene muss kontinuierlich der Abstand zum Betrachter berechnet werden. F¨allt die Gr¨oße eines H¨ ullk¨orpers und damit die Gr¨oße eines Patches im Bildraum unter die Gr¨oße eines Pixels, so muss die gew¨ahlte Stufe in der Average Mipmap erh¨oht werden. Die AM beinhaltet lediglich die Patches des H¨ohenfeldes, jedoch keine eigene Maximum Mipmap (MM) f¨ ur jede Stufe. Bei der Strahlenverfolgung wird daher in Abh¨angigkeit der gew¨ahlten Aufl¨osungsstufe der AM das Durchsuchen des Maximum Mipmap Baumes fr¨ uher abgebrochen. Aufgrund des ¨ahnlichen Aufbaus dieser beiden Mipmaps (vgl. Abschnitt 5.1.2) ist die vor dem Abbruch maximal verwendete Stufe der MM die gleiche wie die verwendete Stufe bei der AM.

5.2.5 Shading W¨ahrend des Raycastings wurden f¨ ur jeden Pixel der Bildebene der hier sichtbare Gel¨andepunkt gefunden. F¨ ur diesen Schnittpunkt muss nun die Beleuchtung berechnet werden. Die Beleuchtung im Gel¨ande stellt ein wichtiges Qualit¨atsmerkmal dar. Um die Helligkeit eines Punktes berechnen zu k¨onnen, muss die Rendering Gleichung f¨ ur diesen Punkt gel¨ost werden. Da dies aber f¨ ur das interaktive Rendering zu aufw¨andig ist, muss ein vereinfachtes Beleuchtungsmodell verwendet werden. F¨ ur die Beleuchtung im Gel¨ande eignen sich besonders die Ambient Occlusion, das Ambient Aperture Lighting und PRTs. Da sie sich zwar in Aufwand und Qualit¨at unterscheiden, in der Erzeugung der vorberechneten Daten aber ¨ahneln, kann in dieser Pipeline zwischen den drei Modellen gew¨ahlt werden. Im Pr¨aprozess wurden hierf¨ ur Light Maps vorberechnet (Abschnitt 5.1.1). Diese und je nach Modell auch die Normal Map bilden nun den Ausgangspunkt f¨ ur die Beleuchtungsberechnung. Im Folgenden wird darauf eingegangen, wie diese umgesetzt wird.

61

5 Konzept zum interaktiven Raytracing von Gel¨ande unter Einhaltung von Qualit¨atskriterien Ambient Occlusion Das Ambient Occlusion erm¨oglicht die Beleuchtungsberechnung lediglich mittels eines Verdeckungsfaktor der die Helligkeit im Gel¨ande skaliert. F¨ ur die gesamte Szene vorberechnet erm¨oglicht es jedoch auch globale Schattierung und simuliert die Beleuchtung ohne Sonnenlicht, ¨ahnlich der eines stark bew¨olkten Tages. Gerichtetes Licht kann dennoch u ¨ber das Lambert’sche Gesetz, das beschreibt, wie durch einen perspektivischen Effekt die Strahlungsst¨arke der von einem Fl¨achenelement ausgesendeten Strahlung mit flacher werdendem Abstrahlwinkel abnimmt, approximativ hinzugef¨ ugt werden. Im Pr¨aprozess wird eine Ambient Occlusion Map berechnet, welche die Verdeckung f¨ ur jeden Oberfl¨achenpunkt beschreibt. Da diese nur diskrete Werte beinhaltet, wird zwischen den Punkten bei Bedarf bilinear interpoliert. Die Helligkeit h errechnet sich schließlich durch: h = (~n · ~l) · v

(5.38)

wobei ~n · ~l das Lambert’sche Gesetz widerspiegelt mit ~n als Oberfl¨achennormale und ~l die Richtung des direkten Lichtes. Die Oberfl¨achennormale kann einer im Vorverarbeitungsschritt generierten Normal Map f¨ ur jeden Oberfl¨achenpunkt entnommen werden. Dieser Wert wird schließlich mit dem Verdeckungsfaktor v multipliziert und ergibt die Helligkeit. Diese wird mit der Farbe des Lichtes und des Terrain multipliziert und ergibt so die Farbe des jeweiligen Pixels. Ambient Aparture Lighting Das Ambient Aperture Lightening kann die Beleuchtung im Gel¨ande sehr realistisch simulieren. Im Pr¨aprozess wird hierf¨ ur die entsprechende Light Map berechnet. Diese speichern f¨ ur jeden Datenpunkt einen Vektor, welcher in die Richtung zeigt, aus der unabh¨angig von der Lichtquelle am meisten ¨ Licht kommen kann. Zusammen mit einem Offnungswinkel bildet dieser einen umgekehrten Kegel, dessen Spitze auf die Gel¨andeoberfl¨ache zeigt. Die Beleuchtungsberechnung teilt sich in die Kalkulation eines direkten Lichtanteils und in die eines ambienten Lichtanteils. F¨ ur den direkten Lichtanteil muss die Sonne auf die Grundfl¨ache des Kegels projiziert werden und daraus die Schnittfl¨ache ¨ ache kann mit der Funktion errechnet werden. Die Uberschneidungsfl¨ (2π−2π cos(min(rKegel , rSonne )))·Icub (1−

d − |rKegel − rSonne | ) (5.39) rKegel + rSonne − |rKegel − rSonne |

approximativ abgesch¨atzt werden, wobei r der Radius der Kreise ist. d ist der Bogen u ¨ber dem Winkel ω zwischen den beiden Vektoren vom Mittelpunkt der Hemisph¨are zur Sonne bzw. zur Kegeloberfl¨ache (siehe Abbildung 5.11). Dieser errechnet sich mit d = cos−1 (~vKegel · ~vSonne )

(5.40)

und ist ein Abstandsmaß der beiden Mittelpunkte. ~vKegel und ~vSonne bezeichnen hierbei die Vektoren zu den Mittelpunkten. Die Funktion Icub mit Icub (x) = −2x3 + 3x

(5.41)

¨ ist eine kubische Interpolationsfunktion, welche einen weichen Ubergang zwischen 0 und 1 generieren kann. Der Term (2π − 2π cos(min(rKegel , rSonne ))) aus der Formel 5.39 skaliert den Wert der Funktion Icub auf die Gr¨oße des kleinsten Kreises.

62

5.2 Rendering

Abbildung 5.11: Der Abstand d zwischen den Mittelpunkten beider Kreisfl¨achen (MK , MS ) auf der Hemisph¨are H wird als Bogen u ¨ber dem Winkel ω der Ortsvektoren (~vKegel ,~vSonne ) dieser Mittelpunkte angegeben.

Abbildung 5.12: Die Grundfl¨ache des Kegels und die Projektion der Sonne u ¨berschneiden sich in dem rot gekennzeichneten Bereich. Der Vektor ~vM beschreibt den Mittelpunkt dieser Fl¨ache. Aus [Due10]

F¨ ur das Lambert’sche Gesetzt wird noch die Richtung, aus der das Licht auf den Punkt auftrifft abgesch¨atzt. Wie im Bild 5.12 zu sehen, wird hierf¨ ur derjenige Vektor ~vM berechnet, welcher vom Oberfl¨achenpunkt die Mitte der Schnittfl¨ache schneidet. Dieser wird mit dem Normalenvektor skalar multipliziert und geht als direkter Lichtanteil, multipliziert mit der Farbe der Sonne in die Beleuchtungsberechnung ein. Das ambiente Licht berechnet sich aus aus derjenigen Fl¨ache des Kegels, die nicht von der Sonnenprojektion geschnitten wird. So wird auch verhindert, dass zu starke Kontraste bei den Schatten¨ uberg¨angen entstehen, welche die Bildqualit¨at vermindern k¨onnen. Dieser Lichtanteil wird mit der Farbe des Himmels multipliziert.

PRT und Spherical Harmonics Precomputed Radiance Transfer (PRT) berechnet die Beleuchtungs- und Transferfunktionen im Gel¨ande vor (siehe Abschnitt 5.1.1) und erm¨oglichen so unter Nutzung von Spherical Harmonics hoher Ordnungen eine sehr hohe Qualit¨at. Im Pr¨aprozess wird f¨ ur jeden Oberfl¨achenpunkt die Transferfunktion berechnet und auf Spherical Harmonics projiziert. Da zwischen den Koeffizienten ebenfalls billinear interpoliert werden kann, stehen beim Rendering nun also f¨ ur jeden gefundenen Schnittpunkt eine Menge an Koeffizienten zur Verf¨ ugung, welche die Transferfunktion beschreiben. Zus¨atzlich wurde die Projektion der Beleuch-

63

5 Konzept zum interaktiven Raytracing von Gel¨ande unter Einhaltung von Qualit¨atskriterien tungsfunktionen berechnet. Die Beleuchtung mittels SH an einem Punkt errechnet sich nun aus dem Punkt-Produkt der Projektion der Beleuchtungsfunktion und der Projektion der Transferfunktion auf die Kugelfunktionen:

2

Z

Lin (ω) · T (ω) dω ≈



Z

˜ in (ω) · T˜(ω) dω = L



n X

Li · Ti

(5.42)

i=0

mit: • Ω:

die Hemisph¨are

• Lin (ω): die Beleuchtungsfunktion • T (ω): die Transferfunktion ˜ in (ω): die Projektion der Beleuchtungsfunktion • L • T˜(ω): die Projektion der Transferfunktion • Li :

die Koeffizienten der projizierten Beleuchtungsfunktion

• Ti :

die Koeffizienten der projizierten Transferfunktion

• n:

die Anzahl der Koeffizienten

Bei der Berechnung der PRT wurde die diffuse Beleuchtung des Himmels und die direkte Beleuchtung durch die Sonne in SH-Koeffizienten kodiert. Um diese in der Formel 5.42 nutzen zu k¨onnen, m¨ ussen die Koeffizienten nur aufaddiert werden. Da sich jedoch der Stand der Sonne w¨ahrend des Renderns ¨andern lassen soll, muss die entsprechende Beleuchtungsfunktion modifiziert werden. Da die Kugelfunktionen rotationsinvariant sind, k¨onnen die Koeffizienten mittels spezieller Rotationsmatrizen (siehe [Gre03] f¨ ur weitere Details) einfach entsprechend der Position der definierten Beleuchtungsfunktion gedreht werden. So kann mittels einfacher skalarer Multiplikation der Vektoren die globale Beleuchtung im Gel¨ande effizient bestimmt werden.

Level of Detail Im Abschnitt 5.2.4 wurde das Antialiasing w¨ahrend des Raycastings beschrieben. Neben der Anpassung der H¨ohendaten ist jedoch auch eine Adaption der Beleuchtungsdaten f¨ ur die jeweilige Aufl¨osung notwendig. Da bei allen drei m¨oglichen Beleuchtungsmodellen vorberechnete Daten in Form von Vektoren zum Einsatz kommen, ist dies jedoch einfach umzusetzen. F¨ ur die Light Map und die Normal Map werden ebenfalls Average Mipmaps verwendet. Neben den Koordinaten des getroffenen Schnittpunktes muss der Shader nun auch Informationen u ¨ber die genutzte Stufe der Average Mipmap des H¨ohenfeldes vom Raycaster erhalten, um anschließend auf der Light und Normal Mipmap f¨ ur die Berechnung die selbe Stufe auszuw¨ahlen.

64

5.3 Zusammenfassung

5.3 Zusammenfassung Die hier vorgestellte Terrain Raytracing Pipeline soll die interaktive Darstellung von Gel¨ande unter bestimmten Qualit¨atskriterien erm¨oglichen. Hierzu wird zum einen das Raytracing durch die Ausnutzung von Koh¨arenz-Arten beschleunigt. Dazu wird sowohl die Objektraumkoh¨arenz durch die Maximum Mipmap, die Strahlenkoh¨arenz durch das Beamtracing und auch temporale Koh¨arenz durch die verwendete Clipmap ausgenutzt. Zum anderen wird die Qualit¨at durch die Anwendung einer LOD-Stategie verbessert. Dazu werden Aliasing Effekte im Fernbereich durch die Verwendung einer Average Mipmap des H¨ohenfeldes verhindert. Zus¨atzlich wird das Gel¨ande im Nahbereich mittels eines kubischen Filters h¨oher aufgel¨ost und damit eine bikubische Interpolation der Gel¨andeoberfl¨ache approximiert. Hierf¨ ur wird die genannte Clipmap angewandt. Um die Qualit¨at noch weiter zu erh¨ohen, werden Mikrostrukturen verwendet, welche Oberfl¨achenmaterialien simulieren. Das Bild 5.13 skizziert nochmal die Verfolgung des Strahles durch das unterschiedlich aufgel¨oste H¨ohenfeld im Nah-, Mittel- und Fernbereich.

Abbildung 5.13: Das LOD-Verfahren beim Raytracing als Kombination aus Clipmap und Mikrostruktur im Nahbereich und Mipmapping im Fernbereich

Durch die Auswahl eines Beleuchtungsmodell ist es zus¨atzlich m¨oglich die Qualit¨at des Bildes unter Betrachtung des Speicherverbrauches und der Geschwindigkeit zu skalieren. Hierf¨ ur steht das Ambient Occlusion, das Ambient Aperture Lighting und die PRT zur Verf¨ ugung. Alle diese Methoden k¨onnen zumindest teilweise in einen Pr¨aprozess ausgelagert werden. Der f¨ ur das Rendering vorgestellte Raycaster kann dabei unter geeigneter Modifikation der Ray Map (vgl. Abschnitt 5.2.4) auch f¨ ur die Vorberechnung der Light Maps verwendet werden.

65

6 Umsetzung des Raytracers Dieses Kapitel evaluiert die Performanz und die Visualisierungsqualit¨at der im Konzept vorgestellten Terrain Raytracing Pipeline. Hierzu wurde diese prototypisch implementiert. Im anschließenden Abschnitt 6.1 erfolgt hierf¨ ur ein Architekturentwurf. Anschließend werden die Komponenten der Applikation im Detail vom Pr¨aprozess (Abschnitt 6.2) zum Rendering (Abschnitt 6.3) hin erl¨autert. Am Ende erfolgt im Abschnitt 6.4 schließlich die Auswertung der Ergebnisse.

6.1 Architektur

Abbildung 6.1: Die Architektur des Raytracers.

Die Implementierung der TRP erfolgt nach dem Konzeptentwurf aus Kapitel 5. Die Umsetzung der Pipeline erfolgt gr¨oßten Teils auf der GPU, da diese aufgrund ihres hohen Grades der Parallelit¨at und des großen Datendurchsatzes am geeignetsten erscheint. Als Programmiersprache wurde C++ in Verbindung mit der Graphikschnittstelle Direct3D aus DirectX11 gew¨ahlt. Im Abschnitt 6.3.1 wird diese Schnittstelle noch einmal genauer erl¨autert.

67

6 Umsetzung des Raytracers Das Bild 6.1 skizziert die Architektur der umgesetzten Applikation. Diese gliedern sich wieder in einen Pr¨aprozess und einen Rendering Prozess. Dem Programm liegt das Gel¨ande und die Mikrostrukturen jeweils als H¨ohenfeld und Normal Map vor. Im Pr¨aprozess werden zus¨atzlich die Light Maps und die Mipmaps erzeugt. Dabei wird f¨ ur die Light Map der gleiche Raycaster wie bei der sp¨ateren Sichtbarkeitsberechnung, jedoch unter Verwendung einer spezifischen Ray Map herangezogen (Abschnitt 6.2). Das Rendering erlaubt nun unter Verwendung der oben genannten Daten die interaktive Visualisierung des Gel¨andes. Zuerst erfolgt die Generierung der Clipmap unter Verwendung eines bikubischen Filters (Abschnitt 6.3.2). Die Clipmap soll w¨ahrend des Raytracings nach dem LOD-Prinzip im Nahbereich die Bildqualit¨at maßgeblich erh¨ohen. Anschließend wird unter Ausnutzung der Rendering Pipeline die Ray Map f¨ ur das Ansichtsvolumen abgespeichert (Abschnitt 6.3.3). Diese ist sowohl der Ausgangspunkt des Beamtracings und als auch des Raytracings und setzt damit die Schnittstelle zum Benutzer um. Das Beamtracing nutzt Strahlenkoh¨arenzen aus und wird daher als Beschleunigungsmethode verwendet (Abschnitt 6.3.4. Das Raycasting, welches im Unterpunkt 6.3.5.1 n¨aher beschrieben wird, l¨ost schließlich das Sichtbarkeitsberechnung f¨ ur das Gel¨ande und bestimmt die Schnittpunkte f¨ ur die anschließende Beleuchtungsberechnung. Dieses Shading (Abschnitt 6.3.5.2) setzt dabei mittels der Light Map ein spezifisches Beleuchtungsmodell um. Da das Ambient Aperture Lighting den besten Kompromiss zwischen Geschwindigkeit, genutzten Speicher und Bildqualit¨at bietet, wurde es der PRTs vorgezogen. Zus¨atzlich wurde die AO als Vergleichsmodell implementiert. Aufgrund des modularen Aufbaus des Raytracers ist jedoch die Implementierung anderer Beleuchtungsmodelle aber ohne gr¨oßeren Aufwand m¨oglich. Im letzten Schritt erfolgt schließlich die Bildsynthese.

6.2 Pr¨ aprozess Im Pr¨aprozess werden zum einen die Mipmaps aus dem H¨ohenfeld des Gel¨andes und der Mikrostrukturen erzeugt, zum anderen erfolgt hier die Erzeugung der Light Map. Die Generierung der Mipmaps wurde ohne Abwandlung nach dem konzeptionellen Entwurf im Abschnitt 5.1.2 implementiert und soll hier nicht weiter betrachtet werden. Die Generierung der Light Map f¨ ur die Ambient Occlusion und das Ambient Aperture Lighting verl¨auft jeweils nach einem ¨ahnlichen Prinzip. Es erfolgt f¨ ur jeden Oberfl¨achenpunkt ein Raycasting auf der GPU der dar¨ uber liegenden Hemisphere. Zuerst wird eine Ray Map erstellt, welche in der Lage ist, die Hemisph¨are abzutasten. Dazu werden Strahlen nach der Monte-Carlo-Methode erzeugt. Es wird auf eine Map aus Zufallsvariablen mittels des Mersenne Twisters generiert. Der Mersenne Twister ist ein Algorithmus, von Makoto Matsumoto und Takuji Nishimura 1997 entwickelt, welche sehr schnell hochwertige Sequenzen von Pseudozufallszahlen erzeugt. Diese Noise-Map kann durch Interpretation von immer drei Komponenten als Vektor als Ray Map verwendet werden. Da die Strahlen dann jedoch eine ganze Kugel abtasten w¨ urden, werden die Strahlen vorher mit der Oberfl¨achennormale skalar multipliziert. Ist das Ergebnis negativ, so w¨ urde der Strahl nicht innerhalb

68

6.3 Rendering der Hemisph¨are, sondern in die andere H¨alfte der Vollkugel verlaufen. Daher wird das Vorzeichen dieses Vektors umgekehrt, welcher dadurch in die entgegengesetzte Richtung verl¨auft. Diese Ray Map wird nun dem Raycaster zusammen mit der Position des jeweiligen Oberfl¨achenpunktes u ¨bergeben. Dieser funktioniert nach dem selben Prinzip, wie der Raycaster f¨ ur die Sichtbarkeitsberechnung (siehe Abschnitt 6.3.5.1). Jedoch ist hier nicht die Position der Schnittpunkte wichtig, sondern lediglich ob ein bestimmter Strahl das Gel¨ande getroffen hat, oder nicht. uck auf die CPU geladen und ausgewertet. F¨ ur Anschließend wird das Ergebnis zur¨ die Ambient Occlusion werden alle Strahlen, die das Gel¨ande nicht getroffen haben zu der Gesamtzahl ins Verh¨altnis gesetzt und dieser Wert f¨ ur jeden Oberfl¨achenpunkt abgespeichert. F¨ ur das Ambient Aperture Lighting werden zus¨atzlich die Strahlen, welche das Gel¨ande nicht getroffen haben, gemittelt und daraus eine Bent Normal generiert, welche ebenfalls abgespeichert wird. Da der Pr¨aprozess nicht zeitkritisch ist, kann die Anzahl an Strahlen, welche die Hemisph¨are abtasten beliebig hoch sein. Zumeist gen¨ ugen jedoch 64x64 Strahlen pro Oberfl¨achenpunkt, da sich die Qualit¨at bei einer h¨oheren Zahl kaum noch erh¨oht.

6.3 Rendering Der Rendering-Schritt ist nun f¨ ur die Gel¨andevisualisierung verantwortlich. Die hier vorgestellte Applikation verwendet weitestgehend die Pipeline aus dem Konzept (Kapitel 5) und unterteilt sich in die Generierung der Clipmap, der Erstellung der Ray Map, dem Beamtracing und dem anschließenden Raytracing. Im Folgenden soll erst einmal die Anbindung des Rendering-Schrittes an die Grafikschnittstelle erl¨autert werden, bevor auf die einzelnen Komponenten im Detail eingegangen wird.

6.3.1 Auswahl und Anbindung an die Grafikschnittstelle Im Abschnitt 2.4 wurde die moderne GPU beschrieben. Auch heute noch ist die wichtigste Aufgabe der Grafikkarte die Abarbeitung der Rendering Pipeline. Jedoch erm¨oglichen moderne APIs, wie CUDA oder Direct Compute den Zugriff auf die einzelnen Shadereinheiten und damit die Nutzung der GPU als Streamprozessor. Da das Raytracing nicht vollst¨andig auf die Rendering Pipeline abgebildet werden kann und nur der Ausgabeteil f¨ ur die Visualisierung n¨otig ist, muss u ¨berlegt werden, wie das Rendering auf der GPU ablaufen soll. F¨ ur die Implementation wurde die R

Grafikschnittstelle DirectX gew¨ahlt, da diese in der aktuellen Version 11 sowohl den Zugriff auf die Rendering Pipeline, als auch die freie Programmierung der Shader durch Direct Compute erm¨oglicht. Eine weitere Besonderheit von DirectX ist die Ausgabe. Die Rendering Pipeline muss nicht zwangsl¨aufig im Framebuffer und damit mit einer Anzeige auf dem Bildschirm enden. Durch das Rendern in sogenannte Render Targets, zumeist einfache Texturen, ist es m¨oglich den Visualisierungsprozess in mehrere P¨asse aufzuteilen. So kann die Rendering Pipeline mehrfach durchlaufen werden und auch der Compute Shader zwischen diese P¨asse eingebettet werden.

69

6 Umsetzung des Raytracers F¨ ur das Raytracing wird diese Architektur ausgenutzt, um den oben vorgestellten

(a)

(b)

Abbildung 6.2: Die verwendeten Shader in der Raytracing Pipeline (a) und die sich daraus ergebenen P¨asse (b) Rendering-Schritt der Raytracing Pipeline in insgesamt sechs P¨asse zu unterteilen. Im Bild 6.2(a) ist noch einmal das Rendering der hier implementierte Raytracing Pipeline beschrieben und mit den jeweils verwendeten Softwareshadern markiert. Das Bild 6.2(b) zeigt die daraus entstehenden P¨asse. Die Generierung der Clipmap auf der GPU mittels des Compute Shaders stellt den ersten Schritt dar. Anschließend erfolgt das Erstellen einer Ray Map. Hierbei wird die Rendering Pipeline durchlaufen und die Map im Pixel Shader als Textur erzeugt. Diese wird jeweils dem Beamtracer und dem Raytracer u ¨bergeben. Das Beamtracing erfolgt wieder im Compute Shader. Das Raytracing des Gel¨andes wird durch die Aufteilung in das Rendern der Clipmap und des restlichen Terrains in zwei P¨assen realisiert. Im letzten Schritt erfolgt schließlich das verschmelzen aller Bildteile w¨ahrend der Bildsynthese. Im Folgenden sollen nun die einzelnen Komponenten erl¨autert werden.

6.3.2 Generierung der Clipmap

Abbildung 6.3: Die Generierung der Clipmap

Die Clipmap implementiert die Level-of-Detail-Strategie, die es erlaubt, den Detailgrad im Nahbereich zu erh¨ohen. Die Generierung der Clipmap unterteilt sich in die

70

6.3 Rendering Auswahl der jeweiligen Bereiche um die virtuelle Kamera herum, das Skalieren des H¨ohenfeldes mittels bikubischem Filter, das Hinzuf¨ ugen der Mikrostrukturen und das anschließende Aufbereiten der erzeugten Daten. Die Berechnungslast wird dabei zwischen der CPU und der GPU aufgeteilt. Das Bild 6.3 zeigt den Ablauf bei der Erzeugung. Das Terrain liegt als H¨ohenfeld mitsamt der Normal Map und der Light Map vor. Im ersten Schritt wird der Bereich des Gel¨andes, welcher von der Clipmap abgedeckt wird, anhand der Position des Betrachters, der Sichtweite und der damit notwendigen Gr¨oße berechnet. Die Gr¨oße der Clipmap kann wie folgt abgesch¨atzt werden (aus [FL04]): Sei m die Gr¨oße eines Patches des urspr¨ unglichen H¨ohenfeldes und gl = 2−l m die Gr¨oße eines Patches der Clipmap auf der Stufe l. Die Clipmap umschließt mit jedem Level ein Quadrat der Gr¨oße ngl x ngl , wobei die Mitte der Clipmap die Position des Betrachters ist. F¨ ur jede Fl¨ache im Gel¨ande ist die Gr¨oße im Bildraum indirekt proportional zur Entfernung zur Kamera. Ist die Blickrichtung horizontal, kann die Entfernung u ¨ber die x- beziehungsweise y−Koordinaten abgesch¨atzt werden. Die maximale Entfernung zu den Patches eines Levels ist dann 0, 707 · ngl (siehe Abbildung 6.4), die minimale Entfernung 0, 25 · ngl . Damit ist die durchschnittliche Entfernung ca. 0, 4 · ngl . Die ungef¨ahre Gr¨oße eines Patches im Bildraum ist schließ-

Abbildung 6.4: Die maximale und minimale Entfernung der Datenpunkte aus der Clipmap zum Betrachter auf der Stufe l

lich gegeben durch e=

s gl s φ = (1.2) (0.4)ngl 2 tan 2 n tan φ2

(6.1)

Mit e die Gr¨oße des Patches im Bildraum, φ der Field of View und s die Breite des Bildschirms. F¨ ur s = 640 und φ = π2 und n = 512 liegt die gesch¨atzte Gr¨oße eines Patches bei ca. 1.5 Pixeln und ist damit ausreichend klein. Ist der Betrachtungswinkel hingegen nicht horizontal, so wird die durchschnittliche Entfernung gr¨oßer als (0.4)ngl und damit die Gr¨oße der Patches sogar noch kleiner. Daher wird bei der genannten Aufl¨osung eine feste Clipmapgr¨oße von 512x512 Datenpunkten verwendet. F¨ ur jede Stufe der Clipmap soll die Aufl¨osung der diskreten Datenpunkte mittels

71

6 Umsetzung des Raytracers eines kubischen Filters verdoppelt werden. Hierf¨ ur wird das angegebene Gebiet in einer Textur gespeichert und der GPU u ur die Umsetzung des bikubischen ¨bergeben. F¨ Filters ist die GPU aufgrund ihrer parallelen Architektur hervorragend geeignet. Da die Rendering Pipeline hierf¨ ur nicht ben¨otigt wird, wurde ein Compute Shader verwendet, welcher die kubischen Mitchell-Netravali-Rekonstruktionsfilter [Mit88] implementiert. Diese sind st¨ uckweise kubische, eindimensionale Filter mit vier Pixel breiten Tr¨agern. Aus dieser Familie von Rekonstruktionsfiltern k¨onnen jedoch viele, ¨ zum Beispiel aufgrund von Unstetigkeit, ausgeschlossen werden. Ubrig bleibt eine kleine Gruppe, welche durch die folgende Gleichung beschrieben werden kann:   (12−9B−6C)|x|3 +(−18+12B+6C)|x|2 +(6−2B)     3 2

1 (−B − 6C)|x| + (6B + 30C)|x| F (x) =  + (−12B − 48C)|x| + (8B + 24C) 6   0

f¨ ur |x| < 1, f¨ ur 1 ≤ |x| < 2, sonst (6.2)

Durch die Parameter B und C kann der gew¨ unschte Filter ausgew¨ahlt werden. So erzeugt B = 1 und C = 0 den weichen kubischen B-Spline und B = 0 und C = 21 den Catmull-Rom-Spline, der etwas h¨artere Kanten erzeugt. Ein gutes Mittelmaß bilden die Parameter B = 13 und C = 13 , welche daher in dieser Implementation verwendet wurden. Um aus diesen Filter eine zweidimensionale Version zu konstruieren, wird er u ¨ber die x- beziehungsweise y-Achse verschoben und das Produkt aus ur jede diesen beiden Funktionen gebildet. Hierzu wird in einem Zwischenschritt f¨ vertikale Zeile der Wert der Funktion am gesuchten Filtermittelpunkt errechnet und anschließend u ¨ber die vertikale Achse gefiltert. Der H¨ohenwert eines Punktes P mit den Nachbarpunkten P0 , P1 , P2 und P3 errechnet sich nun folgendermaßen: 3 3 1 1 P (d) = (− B − C)P0 + (− B − C + 2)P1 + ( B + C − 2)P2 + ( B + C)P3 d3 6 2 2 6   5 1 + ( B + 2C)P0 + (2B + C − 3)P1 + (− B − 2C + 3)P2 − CP3 d2 2 2   1 1 + (− B − C)P0 + ( B + C)P2 d 2 2 1 1 1 + BP0 + (− B + 1)P1 + BP2 6 3 6 



(6.3) wobei d der Abstand zwischen dem Punkt P und seinen Nachbarn ist. Da diese Berechnung sehr aufw¨andig ist, wird die Gleichung 6.3 f¨ ur eine ausreichende Anzahl von m¨oglichen Abst¨anden d vorberechnet, sodass diese w¨ahrend der Berechnung nur noch ausgelesen werden m¨ ussen. F¨ ur einen schnellen Zugriff wird diese vorberechnete Tabelle in eine 1D-Textur gelesen und mitsamt des H¨ohenfeldes an die GPU u ¨bergeben. Der Algorithmus 1 beschreibt im Pseudocode das Filtern auf der GPU. Da die Werte des Ergebnis-H¨ohenfeldes unabh¨angig voneinander auf den einzelnen Kernen der GPU berechnet werden k¨onnen, ist dieser Algorithmus sehr schnell. F¨ ur den Filter werden f¨ ur den gesuchten H¨ohenwert erst alle senkrechten Nachbarn gewichtet aufaddiert und in einem zweiten Schritt waagerecht gefiltert. Es muss jedoch

72

6.3 Rendering Algorithm 1 Pseudocode des bikubischen Filter calculate distance(dist x, dist y) read weights f rom precalculated table(weight x[], weight y[], dist x, dist y) for j = −1 to 2 do for i = −1 to 2 do read horizontal samples f rom text(sample i, position x + i, position y + j) horizontal sample j+ = sample i ∗ weight x[i + 1] end for result+ = horizontal sample j ∗ weight y[i + 1] end for return result

beachtet werden, dass der bikubische Kernel immer die 16 Nachbarn eines Punktes f¨ ur eine stetige Filterung ben¨otigt. F¨ ur die Randpunkte der Ausgabedaten stehen diese jedoch erst einmal nicht zur Verf¨ ugung. Daher m¨ ussen die Ausgangsdaten an den R¨andern um jeweils zwei Datenpunkte erweitert werden und damit eine gr¨oßere r¨aumliche Ausdehnung besitzen, als das sp¨ater genutzte Ergebnis. F¨ ur die Normalen und Light Map wird analog verfahren. Da diese jedoch aus Vektoren bestehen, m¨ ussen die Komponenten einzeln gefiltert werden. Anschließend wird das Ergebnisbild aus der GPU zur¨ uck auf die CPU gelesen. Dies ist n¨otig, da zum einen die Daten noch aufbereitet werden m¨ ussen, zum anderen das Resultat Grundlage eines erneuten bikubischen Filterns ist. Wie im Abschnitt 5.2.1 beschrieben, besteht die Clipmap aus mehreren ringf¨ormigen Bereichen um den Betrachter, wobei die Aufl¨osung zur Kamera hin zunimmt. Durch das eben beschriebene einfache bikubische Filtern wird der ¨außerste Bereich der Clipmap generiert. Dieser besitzt damit die doppelte Aufl¨osung des urspr¨ unglichen H¨ohenfeldes. In einem zweiten Schritt wird aus diesem gefilterten H¨ohenfeld erneut ein Teil ausgew¨ahlt, welches durch den bikubischen Filter skaliert werden soll. Daf¨ ur werden die ben¨otigten Daten erneut an die GPU gesandt. Dieser Zyklus wird solange wiederholt, bis das gew¨ unschte feinste Level der Clipmap erreicht wurde. Im Anschluss erfolgt das Hinzuf¨ ugen der Mikrostrukturen. Da in dieser Implementation der Fokus auf das prinzipielle Vorgehen bei der Umsetzung der Raytracing Pipeline gelegt wurde, existiert hier noch keine Material Map, sondern es wird nur eine Mikrostruktur verwendet. Prinzipiell ist die Nutzung mehrerer Materialien aber ¨ m¨oglich. Dabei muss lediglich beim Ubergang von einem Bereich zum n¨achsten ein Blending stattfinden (vgl. Abschnitt 5.2.1), damit diese nat¨ urlich wirken. Ansonsten wird das jeweilige Material anhand der Material Map ausgew¨ahlt. Um die Struktur auf die einzelnen Stufen der Clipmap aufzubringen, wird auf jeden H¨ohenpunkt aus dem Gel¨ande ein H¨ohenpunkt aus der Mikrostruktur addiert. Da das H¨ohenfeld der Mikrostruktur viel kleiner ist, als jenes der jeweilige Clipmap-Stufe, wird diese Struktur wiederholend genutzt. Um sichtbare Artefakte, beispielsweise Pattern (ungewollte Muster) oder Tilingartefacts (Unstetigkeiten an den R¨andern) zu minimieren, werden speziell hierf¨ ur konzipierte Strukturen verwendet. Das Bild 6.5 zeigt solche Strukturen. Da die Aufl¨osung der Stufen der Clipmap nach unten hin abnimmt, kann nicht

73

6 Umsetzung des Raytracers

(a)

(b)

(c)

(d)

Abbildung 6.5: Beispiele von sogenannten seamless Patterns. Die Struktur (a) bzw. (b) wird neunmal im Bild (c) bzw. (d) wiederholt. immer die gleiche Aufl¨osung bei den Mikrostrukturen verwendet werden. Daher wird eine Average Mipmap dieser Struktur gebildet und f¨ ur die unterschiedlichen Aufl¨osungsstufen verwandt. Neben dem H¨ohenfeld m¨ ussen auch die Normal und die Light Map angepasst werden. F¨ ur die Mikrostruktur steht daher ebenfalls die Normalen der Oberfl¨ache und die Light Map zur Verf¨ ugung. Da diese aus Vektoren bestehen, k¨onnen diese komponentenweise addiert werden und anschließend durch zwei geteilt werden. Das Hinzuf¨ ugen der Mikrostrukturen k¨onnte auch auf der GPU stattfinden. Da die Daten nach dem Filtern jedoch ohne Mikrostruktur an die CPU transferiert werden m¨ ussen, um das wiederholte bikubische Filtern zu erm¨oglichen, m¨ ussten die Daten doppelt kopiert werden. Da der Datentransfer zwischen GPU und CPU zeitintensiv ist, wird der einfachen Addition auf der CPU der Vorzug gegeben. Anschließend erfolgt die Aufbereitung der Daten. Hierzu z¨ahlt vor allem das Erstellen der Maximum Mipmap auf dem H¨ohenfeld, aber auch das Einbinden der Daten aus der Clipmap in Texturen, um sie f¨ ur das anschließenden Rendering wieder auf die GPU zu laden. Auch die Aufbereitung k¨onnte prinzipiell wieder auf der GPU erfolgen. Die Erstellung der Maximum Mipmap ist jedoch gerade f¨ ur die relativ kleine Clipmap auch auf der CPU sehr schnell.

6.3.3 Generierung der Ray Map Die Ray Map beschreibt f¨ ur jeden Punkt der Bildebene die Richtungsvektoren der zu verfolgenden Strahlen. Es bildet das Ansichtsvolumen des Rendering-Prozesses und damit die Schnittstelle zu den Kameraparametern des Render Kontextes. F¨ ur die Erzeugung wird die einfache Rendering Pipeline, bestehend aus Vertex Shader, Rasterisierungseinheit und Fragment Shader, verwendet. Ausgangspunkt ist die

74

6.3 Rendering oberste Stufe der Maximum Mipmap, welches als Bounding Volume die gesamte Szene umh¨ ullt. Dieses wird als Quader dem Vertex Shader u ¨bergeben. Aus den Kameraparametern wird die Position der Eckpunkte im Bildraum bestimmt. Durch die anschließende Rasterisierung wird die Position der Oberfl¨achenpunkte durch Interpolation entlang der Eckpunkte errechnet. Der Fragment Shader kann dann anhand der Kameraposition und der Position der Bildpunkte die Richtungsvektoren f¨ ur die Strahlen bestimmen. Diese werden anschließend in die RGB-Komponenten einer Textur abgespeichert. Da der Fragment Shader nur f¨ ur die sichtbaren Oberfl¨achenpunkte des H¨ ullvolumens angestoßen wird, erfolgt automatisch ein Ausschluss aller Strahlen, welche die Szene verfehlen. Diese werden in der Ray Map als Nullvektoren markiert und m¨ ussen w¨ahrend des Raytracings nicht weiter verfolgt werden.

6.3.4 Beamtracing Die Aufgabe des Beamtracing ist die Erstellung einer Tiefenkarte, der sogenannten Depth Map. Dieser gibt eine minimale Distanz zur Kameraposition an, welche beim Raytracing vom verfolgten Strahl sicher u ¨bersprungen werden kann. Da beim Beamtracing ganze Strahlenb¨ undel traversiert werden, ist in der Depth Map die jeweilige Distanz immer f¨ ur ganze Pixelbereiche angegeben. Der Beamtracer wurde im Com-

(a)

(b)

Abbildung 6.6: Der Beamtracer erzeugt eine Depth Map des Gel¨andes (a). Auf der rechten Seite das entsprechende Gel¨andebild (b) pute Shader implementiert. Die Richtungen der Strahlen der Bildebene sind in der vorher generierten Ray Map abgespeichert. Je nach festgelegter Gr¨oße der Beams, fasst ein Strahlenb¨ undel eine bestimmte Anzahl von Pixeln als Bereich zusammen. Bei dieser Implementation werden 8x8 Pixel genutzt, da dies einen guten Kompromiss zwischen Aufwand des Beamtracers und Beschleunigung beim Raytracing bildet. Pro Beam werden immer die vier Strahlen an den Eckpunkten gleichzeitig durch die Maximum Mipmap verfolgt. Die Strahlen traversieren den Baum von der Wurzel zu den Bl¨attern. Solange alle vier Strahlen den gleichen Weg nehmen, kann garantiert werden, dass auch alle individuellen Strahlen dazwischen den gleichen

75

6 Umsetzung des Raytracers Pfad folgen. Erst wenn die Strahlen entweder unterschiedliche Knoten oder aber unterschiedliche Seiten des jeweiligen H¨ ullvolumens treffen, muss die Beamverfolgung abgebrochen werden. Dann wird die Distanz zum vorher getroffenen Bounding Volume berechnet und in der Depth Map abgespeichert. Da die Distanz f¨ ur die vier Strahlen unterschiedlich sein kann, wird das Minimum gebildet. Das Bild 6.6(a) zeigt eine solche Depth Map. Die dunklen Linien in der Tiefenkarte entstehen, wenn ein Strahlenb¨ undel auf eine Eckkante eines BV trifft. Da dann verschiedene Seiten getroffen werden, muss die Verfolgung fr¨ uhzeitig abgebrochen werden. Das Bild 6.7 zeigt die Anzahl der Schleifendurchl¨aufe beim Raycasting ohne und mit dem Beamtracing. Es ist zu erkennen, dass das Beamtracing eine große Anzahl an Schleifendurchl¨aufen vor allem f¨ ur weit entfernte Bereiche einsparen kann.

Abbildung 6.7: Die Anzahl der Schritte bis der Strahl die Oberfl¨ache trifft in eine Farbskalar von 0 bis 50 Schleifendurchl¨aufen kodiert. Oben das Raytracing ohne ein vorhergendes Beamtracing unten mit.

6.3.5 Raytracing Das Raytracing am Ende der hier vorgestellten Pipeline ist nun f¨ ur die Erzeugung des Ergebnisbildes verantwortlich. Dieses unterteilt sich in das L¨osen des Sichtbarkeitsproblems durch das Raycasting und die anschließende Beleuchtungsberechnung, dem Shading. Dabei wurden beide Komponenten zusammengefasst und in einem Fragment Shader implementiert. Da das Raytracing der Clipmap einige Sonderbehandlungen notwendig macht und die Anzahl an Instruktionen f¨ ur die jeweiligen Shader begrenzt sind, wurde f¨ ur das Raytracing der Clipmap und f¨ ur das restliche Gel¨ande je ein gesonderter Shader erstellt. Das prinzipielle Vorgehen ist jedoch in

76

6.3 Rendering beiden F¨allen das gleiche. Im Folgenden soll nun auf das Raycasting, das Shading und die erw¨ahnten Sonderf¨alle f¨ ur die Clipmap detaillierter eingegangen werden. 6.3.5.1 Raycasting Ausgangspunkt des Raycastings ist erneut die erstellte Ray Map. Diese wird als Textur auf ein rechteckiges Polygon aufgebracht, welches mittels Parallelprojektion auf die gesamte Bildebene projiziert wird. Nach der Geometrieberechnung im Vertex Shader und der Rasterisierung ist die Pixelposition als Texturkoordinate im Fragment Shader verf¨ ugbar. Nach einem Texturzugriff auf die Ray Map ist der Richtungsvektor f¨ ur den Strahl an dieser Position gefunden. Ein zus¨atzlicher Texturzugriff auf die Depth Map erm¨oglicht die Berechnung des Startpunktes durch: ~=K ~ + d · ~r S

(6.4)

wobei S der Startpunkt, K die Kameraposition, d die Distanz und r der Richtungsvektor ist. Sollte der Richtungsvektor der Nullvektor sein, so verfehlt dieser Strahl die Szene und braucht nicht weiter verfolgt werden. Das Raycasting erfolgt in einem lokalen Koordinatensystem, wobei die Ausdehnung der gr¨oßten Bounding Box auf 0 und 1 normiert werden. Hierdurch wird zum einen der Zugriff auf normierte Texelkoordinaten erm¨oglicht, zum anderen ist eine gleichbleibende Genauigkeit der Gleitkommazahlen gew¨ahrleistet. Wie am Anfang dieses Kapitels erw¨ahnt erfolgt die Strahlentraversierung auf der Maximum Mipmap. Die prinzipielle Herangehensweise wie sie im Abschnitt 5.2.4 erl¨autert wurde, kann ohne gr¨oßere Modifikationen implementiert werden. Der Algorithmus 2 wurde schließlich verwendet, um den Schnittpunkt mit dem Gel¨ande zu finden. Der Strahl traversiert die Hierarchie der Maximum Mipmap von der Wurzel, dem gr¨oßten BV bis zu den Bl¨attern unter denen die einzelnen Patches liegen. Verl¨asst der Strahl die Dom¨ane der Maximum Mipmap und damit die Szene, so wird die Verfolgung abgebrochen und der entsprechende Pixel wird mit der Farbe des Himmels gef¨ ullt. Erreicht er ein Blatt in diesem Baum, so wird der Schnittpunkt mit der uniform linearen, bin¨aren Suche (Algorithmus 3) ermittelt. Wird ein Schnittpunkt gefunden, so wird f¨ ur diesen Punkt die Farbe durch das Shading berechnet. Verfehlt der Strahl hingegen den Patch, so wird er zur n¨achsten Bounding Box avanciert. Der Algorithmus endet, wenn f¨ ur alle Strahlen festgestellt wurde, ob er das Gel¨ande verfehlt oder der jeweilige Schnittpunkt berechnet wurde. 6.3.5.2 Shading Nach dem Auffinden des Schnittpunktes erfolgt die Beleuchtungsberechnung. Hierf¨ ur wird auf die Light Map (Ambient Occlusion Map oder Ambient Aperture Map) und auf die Normal Map zur¨ uckgegriffen. Die Ambient Occlusion Map beinhaltet f¨ ur jeden Oberfl¨achenpunkt einen Verdeckungsfaktor zwischen 0 und 1, der die Helligkeit entsprechend skaliert. Die Ambient Aparture Map beschreibt f¨ ur jeden ¨ Oberfl¨achenpunkt einen Offnungswinkel, ebenfalls zwischen 0 und 1 und eine Bent

77

6 Umsetzung des Raytracers Algorithm 2 Strahlenverfolgung beim Raycasting. Aus [Due10] while ¬intersection ∧ ray within boundings() do texel = get texel f rom texture(position); box height = get height of f irst bounding box(position); if ray.direction.z > 0 then if position.z ≤ box Height then if lod = 0 then intersection = get intersection with bilinear patch(ray); else lod − −; end if else position = get intersection with boundings of box(ray); end if else aux position = get intersection with boundings of box(ray); if aux position.z ≤ box height then if lod = 0 then intersection = get intersection with bilinear patch(ray); else lod − −; end if else position = aux position; end if end if if ¬intersection ∧ texel domain leaved(position) then lod + + end if end while

Normal. Die Normal Map gibt die Ausrichtung der Oberfl¨ache f¨ ur jeden Punkt im Gel¨ande an. Die AO Map liegt als 1-Byte-Textur, die AAL und die Normal Map jeweils als 4-Byte-Textur auf der GPU vor. Die Kodierung der Komponenten der jeweiligen Vektoren auf 256 verschiedene Werte ist dabei ausreichend. Da im Fragment Shader der zur¨ uckgegebene Wert der Textur zwischen 0 und 1 liegt, die Komponenten der Vektoren jedoch zwischen −1 und 1, m¨ ussen sie in den jeweiligen Bereich normiert werden. Der Zugriff auf die Textur erfolgt anhand der Koordinaten des gefundenen Schnittpunktes. Daf¨ ur wird zwischen den Datenpunkten der Textur bilinear interpoliert. Dies verhindert blockige Schattengrenzen zwischen den Patches. Neben den vorberechneten Daten, liegen zur Renderzeit auch der Stand und die Farbe der Sonne sowie die Farbe des Terrains und des Himmels vor. Optional kann anstatt einer einheitlichen Farbe des Gel¨andes auch auf eine Oberfl¨achentextur zur¨ uckgegriffen werden. Um mittels Ambient Occlusion die Beleuchtung zu berechnen, wird zuerst das Lambet’sche Gesetz durch die skalare Multiplikation des Normalenvektors ~n mit dem

78

6.3 Rendering Algorithm 3 Uniform lineare und bin¨are Suche nach [Pol05] patch = heightf ield.T ex2D(intersection coordinates.xy) box Entry = norm to texel space(intersection coordinates.xyz) box Exit = calculate exit point(ray.direction.xyz, box Entry.xyz) SearchP oint A = (box Exit−box Entry)N U M BER OF U N IF ORM ST EP S {Starte uniform lineare Suche} for i = 0 to N U M BER OF U N IF ORM ST EP S do box Entry+ = SearchP oint A height = calculate bilinear interpolation(patch, box Entry) if texelEntry.z < height then {Starte bin¨are Suche} for j = 0 to N U M BER OF BIN ARY ST EP S do SearchP oint B = SearchP oint A + 0.5(box Entry − SearchP oint A) height = calculate bilinear interpolation(patch, SearchP oint B) if SearchP oint B.z < height then {Gehe einen Schritt weiter.} SearchP oint A = SearchP oint B else {Gehe einen Schritt zur¨ uck.} box Entry = SearchP oint B; end if end for return calculate bilinear interpolation(patch, SearchP oint B) end if end for {Kein Schnittpunkt gefunden.} return 0 Richtungsvektor des Lichtes ~l approximiert. Anschließend wird das Ergebnis mit dem Verdeckungsfaktor v aus der AO Map multipliziert. Dieser skalare Wert beschreibt die Helligkeit h: h = v(~n · ~l).

(6.5)

Dieser Wert wird nun mit der Farbe des Terrains und des Lichtes multipliziert und ergibt so die Beleuchtung. Der Algorithmus 4 beschreibt nochmal die Berechnung der Farbe des Pixels. F¨ ur das Ambient Aperture Lighting wird, wie im Konzeptteil 5.2.5 erl¨autert, zuerst die Schnittfl¨ache zwischen der Projektion der Sonne und der Fl¨ache, die durch ¨ die Richtung und den Offnungswinkel des Kegel beschrieben wird errechnet. Hierf¨ ur kann nach dem Algorithmus 6 eine Fallunterscheidung zwischen dem v¨olligen Fehlen ¨ ¨ einer Schnittfl¨ache, der vollst¨andigen Uberdeckung und der teilweisen Uberschneidung gemacht werden. Da in den ersten beiden F¨allen die Schnittfl¨ache nicht zus¨atzlich berechnet werden muss, wird eine Beschleunigung erreicht. Dabei wird die Distanz zwischen den Mittelpunkten beider Kreise mit distance = cos−1 (cone · sun) errechnet. Ist der Abstand gr¨oßer als die Summe beider Radien, so existiert kei-

79

6 Umsetzung des Raytracers Algorithm 4 Pseudocode f¨ ur die Berechnung der Farbe des Pixels mittels AO. get shading(sun, sunColor, skyColor, terrainColor) occlusion = ambientOcclusionM ap.T ex2D(intersection.position); normal = normalM ap.T ex2D(intersectcion.position); lightV ector = sun.vector light = occlusion ∗ (normal · lightV ector) ∗ sunColor return color = terrainColor ∗ (light); Algorithm 5 Pseudocode f¨ ur die Berechnung der Farbe des Pixels mittels AAL. get shading(sun, sunColor, skyColor, terrainColor) cone = apertureM ap.T ex2D(intersection.position); normal = normalM ap.T ex2D(intersectcion.position); dist = acos(cone.vector · sun.vector); intersectionArea = get intersection area(dist, cone.radius, sun.radius) w = (sun.radius − cone.radius + dist)/2 ∗ dist lightV ector = w ∗ cone.vector + (1 − w) ∗ sun.vector light ambient = (1 − intersectionArea) ∗ skyColor light dif f us = intersectionArea ∗ (normal · lightV ector) ∗ sunColor return color = terrainColor ∗ (light ambient + light dif f us); ne Schnittfl¨ache. Ist hingegen die Distanz kleiner als die Differenz beider Radien, so muss ein Kreis in der Fl¨ache des anderen liegen. In allen anderen F¨allen muss die Fl¨ache mit der Interpolationsfunktion smoothstep(x) = 2x2 − 3x3 abgesch¨atzt werden. Diese erzeugt einen weichen kubischen Anstieg zwischen 0 und 1 im Intervall [0,1], auf das auch die Fl¨ache der Hemisph¨are normiert ist. Die errechnete Fl¨ache wird anschließend mit dem kleineren der beiden Kreisfl¨achen skaliert um die endg¨ ultige Schnittfl¨ache zu erhalten, Um den diffusen Lichtanteil abzusch¨atzen, muss neben der Schnittfl¨ache auch das ~ in erLambert’sche Kosinusgesetz ber¨ ucksichtigt werden. Hierf¨ ur muss der Vektor L rechnet werden, der die Richtung des Lichteinfalls beschreibt. Dieser wird durch den Mittelpunkt der Schnittfl¨ache bestimmt mit d = cos−1 (V~Kegel · V~Sonne ) rSonne − rKegel + d w= 2d ~ ~ Lin = wVKegel + (1 − w)V~Sonne

(6.6)

~ in skalar mit dem Vektor der Oberfl¨achennormale Anschließend wird der Vektor L multipliziert. Dieser Wert, der ebenfalls im Intervall [0,1] liegt, multipliziert mit der Schnittfl¨ache und der Farbe der Sonne ergibt approximativ den diffusen Lichtanteil. Außerdem wird ein ambienter Lichtanteil durch die Differenz der errechnete Schnittfl¨ache mit der gesamten Kegel¨offnung berechnet. Dies approximiert grob die Interreflexion zwischen Gel¨andeoberfl¨achen, ist außerdem sehr schnell und verursacht zum anderen die f¨ ur das Gel¨ande typischen weichen Schattengrenzen. Im Gegensatz zur Verwendung eines konstanten ambienten Lichtanteil bleiben Gebiete, wie zum Beispiel Schluchten und tiefe Gr¨aben, in die nur sehr wenig oder kein Licht dringt,

80

6.3 Rendering Algorithm 6 Pseudocode f¨ ur die Berechnung Schnittfl¨ache. Aus [Due10]. get intersectiona rea(dist, cone radius, sun radius) if dist ≤ max(cone radius, sun radius) − min(cone radius, sun radius) then {Eines der beiden Kreise ist vollst¨andig im anderen.} intersectionArea = 2 ∗ π − 2 ∗ π ∗ cos(min(cone radius, sun radius)); else if dist ≥ cone.w + sun.w then ¨ {Keine Uberschneidung} intersectionArea = 0; else ¨ {Teilweise Uberschneidung.} dif f erence = abs(cone radius − sun radius); x = 1.0 − (dist − dif f erence)/(cone radius + sun radius − dif f erence); intersectionArea = (2 ∗ π − 2 ∗ π ∗ cos(min(cone radius, sun radius)) ∗ x ∗ x ∗ (3 − 2 ∗ x) end if return intersectionArea; dunkel. Dadurch wirken Gel¨andeszenen realistischer. Der ambiente Term wird anschließend mit der Farbe des Himmels multipliziert, kann aber optional auch noch durch einen weiteren Faktor skaliert werden. Wurden beide Anteile berechnet, so werden sie aufsummiert und das Produkt mit der Terrainfarbe errechnet. 6.3.5.3 Raytracing der Clipmap Wie bereits am Anfang dieses Abschnittes erw¨ahnt, wurde das Raytracing der Clipmap und des restlichen Gel¨andes getrennt implementiert. Da das Raytracing im Fragment Shader umgesetzt wurde, muss die Rendering Pipeline in zwei P¨assen durchlaufen werden. Zus¨atzlich w¨are auch ein getrenntes Beamtracing f¨ ur beide Schritte notwendig, da sich die Maximum Mipmap bei der Clipmap von der Maximum Mipmap des restlichen Terrains unterscheidet. In dieser Implementation wurde jedoch nur das Beamtracing f¨ ur das normale Gel¨ande prototypisch umgesetzt. Bildsynthese F¨ ur das Raytracing auf der Clipmap wird genau wie f¨ ur das normale Raytracing ein Quader mittels der Grafikkartenpipeline gerendert. Die Dimension des Quaders kann der obersten Stufe der Maximum Mipmap aus der untersten Ebene der Clipmap, welche den gr¨oßten Bereich beschreibt, entnommen werden. Anschließend werden die Richtungsvektoren der Strahlen bestimmt und das Raytracing begonnen. W¨ahrend des Raytracing des normalen Gel¨andes wird der Bereich, welcher f¨ ur die Clipmap vorgesehen ist ausgespart um den Aufwand nicht zu erh¨ohen. F¨ ur beide Raytracing-P¨asse wird ein Bild gerendert, wie in der Abbildung 6.9 zu sehen und anschließend in einem weiteren Rendering-Pass verschmolzen. Da dies mit Pixelgenauigkeit geschieht, k¨onnen dabei keine sichtbaren Fehler entstehen. Anpassung des Raytracings Das Raycasting und das Shading auf der Clipmap erfolgt prinzipiell genauso wie beim normalen Gel¨ande. Jedoch muss nach jeder

81

6 Umsetzung des Raytracers Raycasting-Schleife u uft werden, auf welcher Clipmapstufe sich der Strahl ge¨berpr¨ rade befindet. Dies geschieht u ¨ber die Berechnung des Abstandes des Strahls zum Betrachter. Wird die jeweilige Clipmapstufe gewechselt, muss beachtet werden, dass sich auch die Aufl¨osung des H¨ohenfeldes ver¨andert. Außerdem sind die Dimensionen der einzelnen Texturen innerhalb der Clipmap wie auf der GPU u ¨blich auf [0, 1] normiert. Daher wird der Strahl immer im jeweiligen Texturraum verfolgt. Dies macht eine Transformation der Richtungsvektoren und aller genutzten Koordinaten in den gerade genutzten Texturraum notwendig. W¨ahrend beim normalen Raytracing nur eine Maximum Mipmap als Textur auf der GPU vorhanden ist, m¨ ussen f¨ ur die Clipmap beliebig viele solcher Texturen verwaltet werden. Eine M¨oglichkeit w¨are die Verwendung von 3D Texturen. DirectX erm¨oglicht jedoch auch die Anwendung sogenannter Texture Arrays, welche mehrere Texturen gleichen Typs und gleicher Dimension aufnehmen k¨onnen. Die Clipmap besitzt auf allen Stufen die gleiche Aufl¨osung. Daher werden f¨ ur die Maximum Mipmaps, aber auch f¨ ur die Normalen und Light Map diese Texture Arrays verwendet. Blending zwischen den Clipmapstufen Wie im Abschnitt 6.3.5.2 beschrieben, wird die Ambient Aparture Map und die Normalen Map f¨ ur die Schattenberechnung bilinear interpoliert. An den R¨andern der Clipmap fehlt jedoch dieser stetige ¨ Ubergang. Hierdurch kommt es zu Artefakten, wie im Bild 6.8(a) zu sehen. Um diesen Fehler zu beheben, muss zwischen den Grenzen der Clipmap die Farbe linear geblendet werden. Hierzu werden sich u ¨berlappende Bereiche gebildet. In diesen Gebieten kann nun die eine Textur linear aus- und die n¨achste Textur linear ein¨ geblendet werden. Dies erzeugt weiche Uberg¨ ange, wie im Bild 6.8(b) zu erkennen ist.

82

6.3 Rendering

(a)

(b)

Abbildung 6.8: Aufgrund der fehlenden bilinearen Interpolation der Light und Normalen Map kommt es zu Diskontinuit¨aten an den Clipmapr¨andern (a). Ein bilineares Blending behebt den Fehler (b). Auschnitte 1 und 2 f¨ ur besser Erkennbarkeit vergr¨oßert und aufgehellt

83

6 Umsetzung des Raytracers

Abbildung 6.9: Die Bildsynthese der Clipmap mit dem restlichen Gel¨ande.

84

6.4 Ergebnisse

6.4 Ergebnisse Die Raytracing Pipeline wurde nach dem Konzept aus Kapitel 5 prototypisch implementiert. Dabei wurde die Hauptlast des Verfahrens mittels programmierbarer Shader auf die GPU verlagert. Das System wurde auf einem Desktop-Computers mit TM R R einem Intel Core i7 860 (2,80 GHz) Prozessor mit 6GB RAM und einer ATI TM Radeon HD5770 Grafikkarte mit 1GB RAM unter verschiedenen Aufl¨osungen getestet. Die Tabelle 6.1 zeigt die durchschnittliche Performance bei unterschiedlichen Anwendungsszenarien. Ohne die Verwendung einer Clipmap ist das System echtzeitf¨ahig, wie bereits in [Due10] gezeigt wurde. Unter Verwendung der Clipmap nimmt die Performance nur leicht ab. Bewegt sich der Betrachter jedoch durch das Gel¨ande, so f¨allt die Framerate stark ab. Dies liegt an der kontinuierlichen Aktualisierung der Clipmap, welche teilweise auf der CPU erfolgt. Der hierdurch entstehende Datentransfer ist dabei sehr zeitintensiv. Eine m¨ogliche L¨osung w¨are die vollst¨andige Generierung der Clipmap auf der GPU. Jedoch bleibt das Programm, wie gefordert interaktiv und erlaubt damit die Exploration des Terrains. Auff¨allig ist, dass sich die ¨ henfeld Ho 2562

5122

10242

Clipmap nein ja ja nein ja ja nein ja ja

Bewegung ja nein ja ja nein ja ja nein ja

¨ sung Auflo 640x480 ∼ 71 FPS ∼ 47 FPS ∼ 6 FPS ∼ 43 FPS ∼ 22 FPS ∼ 4 FPS ∼ 45 FPS ∼ 29 FPS ∼ 4 FPS

1024x768 ∼ 29 FPS ∼ 20 FPS ∼ 5 FPS ∼ 28 FPS ∼ 20 FPS ∼ 3 FPS ∼ 19 FPS ∼ 12 FPS ∼ 3 FPS

1650x1050 ∼ 14 FPS ∼ 9 FPS ∼ 3 FPS ∼ 14 FPS ∼ 9 FPS ∼ 3 FPS ∼ 14 FPS ∼ 8 FPS ∼ 3 FPS

Tabelle 6.1: Ergebnisse der Performance des Raytracers. Die Zahlen in Frames Per Seconds entsprechen Durchschnittswerten. Geschwindigkeit bei gr¨oßeren H¨ohenfeldern nicht so signifikant ¨andert, wie bei h¨oher werdenden Aufl¨osungen des Bildschirms. Dies zeigt, dass unter Verwendung geeigneter Beschleunigungsstrukturen der Berechnungsaufwand mit steigender Komplexit¨at der Szene nicht linear zunimmt, wie es beim klassischen Raytracing der Fall ist. Bei der Verwendung der Clipmap zeigen sich, bei kontinuierlicher Aktualisierung sehr ¨ahnliche Frameraten. Dies bedeutet, dass der Aufwand des Raytracing im Vergleich zum Aufwand der Generierung der LOD-Struktur an Bedeutung verliert. In dieser Arbeit wurden Methoden untersucht, welche die Bildqualit¨at im Fern- und Nahbereich verbessern k¨onnen. W¨ahrend f¨ ur den Fernbereich bereits L¨osungsans¨atze, wie die Mipmap gibt, existieren keine interaktiven Gel¨ande-Raytracer, welche die Probleme im Nahbereich adressieren. Die bilineare Interpolation der Oberfl¨ache f¨ uhrt aufgrund der Approximation bei der linearen und bin¨aren Suche zu Diskontinuit¨aten, wie im Bild 6.10(c) deutlich zu sehen. Zus¨atzlich erkennt man die harten ¨ Uberg¨ ange an den Grenzen der Patches im Bild 6.10(a). Der Einsatz der Clipmap

85

6 Umsetzung des Raytracers l¨asst hingegen eine approximative, bikubische Interpolation zu und gl¨attet die Oberfl¨achen deutlich (Bild 6.10(b) und 6.10(d)). Neben der harmonischen Oberfl¨ache erkennt man auch einen deutlich weicheren Schatten¨ ubergang, da neben dem Gel¨ande auch die Aufl¨osung der Light und Normalen Map erh¨oht wird.

(a)

(b)

(c)

(d)

Abbildung 6.10: Die bilineare Interpolation f¨ uhrt zu unstetigen Konturen (a) und (c). Die approximative, bikubische Interpolation generiert kontinuierlichen Oberfl¨achen und erzeugt zus¨atzlich weichere Schattenu ¨berg¨ange (b) und (d) Auch der Einsatz von Mikrostrukturen und die damit verbundene Simulation von Oberfl¨achenmaterialien wurde f¨ ur das interaktive Gel¨ande-Raytracing bisher kaum untersucht. Dabei kann deren Einsatz den Realismus der Szene auch beim Raytracing stark verbessern, wie beispielsweise in der Arbeit [BS00] gezeigt wurde. Hier ben¨otigte jedoch das Rendern eines Bildes teilweise mehrere Stunden. In dieser Arbeit ist es jedoch gelungen, nat¨ urlich wirkende Mikrostrukturen bei interaktiven Frameraten zu erzeugen. Die Abbildungen 6.11(a) bis 6.11(e) zeigen beispielhaft die Anwendung von Oberfl¨achenmaterialien zur Erh¨ohung von Detail und Qualit¨at im Vergleich zum einfachen Gel¨ande. Der Einsatz von Average Mipmaps bei den ¨ Mikrostrukturen verhindert zudem wahrnehmbare, harte Uberg¨ angen zwischen den Aufl¨osungsstufen der Clipmap. Jedoch steigt durch die Anwendung der Clipmap der Speicherverbrauch an. Da aber

86

6.4 Ergebnisse durch die Anwendung von unverarbeiteten H¨ohenfeldern der grunds¨atzliche Speicherverbrauch relativ gering ist, bedeutet dies im Allgemeinen keine Einschr¨ankung. F¨ ur sehr große H¨ohenfelder muss aber unter Umst¨anden eine Aufteilungsstrategie, wie sie in Abschnitt 3.1.4 beschrieben wird, angewendet werden. Die Beleuchtung l¨asst sich mittels Ambient Occlusion und Ambient Aperture Lighting sehr gut simulieren, wobei letztere Methode noch realistischere, weichere Schatten erzeugen kann. Die Bilder 6.12(a) bis 6.12(f) zeigen ein Beispielgel¨ande unter verschiedenen Lichtverh¨altnissen mittels AO und AAL beleuchtet.

87

6 Umsetzung des Raytracers

(a)

(b)

(c)

(d)

(e)

(f)

Abbildung 6.11: Der Einsatz von Mikrostrukturen f¨ uhrt zu einer deutlichen Verbesserung der optischen Qualit¨at. Bild (a), (c) und (e) ohne Struktur, Bild (b), (d), (f) entsprechend mit.

88

6.4 Ergebnisse

(a)

(b)

(c)

(d)

(e)

(f)

Abbildung 6.12: Der Einsatz von Ambient Occlusion (a), (c), (e) und Ambient Aperture Lighting (b), (d), (f) unter verschiedenen Beleuchtungseinfl¨ ussen: (a) & (b) Sonnenstand flach von links, (c) & (d) steil von links unten, (e) & (f) flach von rechts

89

7 Zusammenfassung und Ausblick Im Rahmen dieser Arbeit sollten M¨oglichkeiten zur interaktiven, hochqualitativen Terraindarstellung mittels Raytracing untersucht werden. Hierf¨ ur wurden Koh¨arenzArten identifiziert, welche das sonst sehr aufw¨andige Raytracing beschleunigen k¨onnen. F¨ ur die qualit¨atsorientierte Darstellung von Gel¨andedatens¨atzen sowohl im Fern- als auch im Nahbereich wurden Level-of-Detail-Verfahren auf ihre Anwendbarkeit beim Raytracing hin untersucht. Zus¨atzlich wurde auf verschiedene M¨oglichkeiten der Oberfl¨achenerzeugung und der Beleuchtung eingegangen. Nachdem die m¨oglichen L¨osungsans¨atze gegen die bestehenden Anforderungen gepr¨ uft wurden, ist eine konzeptionelle Raytracing Pipeline vorgestellt worden. Diese erm¨oglicht f¨ ur den Nahbereich eine LOD-Strategie, um die Gel¨andeoberfl¨ache approximativ bikubisch zu interpolieren. Die Anwendung von Mipmaps verringert außerdem Aliasing-Effekte in der Ferne. Durch die Simulation von Oberfl¨achenmaterialien mittels Mikrostrukturen wurden die sonst unnat¨ urlich glatt wirkenden Oberfl¨achen optisch aufgebrochen. F¨ ur die Beleuchtung wurden vorberechnete Light Maps verwendet, dessen zugrunde liegendes Beleuchtungsmodell anhand von Kriterien zur Qualit¨at, Geschwindigkeit und Speicher ausgew¨ahlt werden kann. Die durch diese qualit¨atssteigernden Methoden ben¨otige, zus¨atzliche Renderzeit wurde durch die Ausnutzung von Objekt-, Zeitund Strahlenkoh¨arenz kompensiert. Die prototypische Umsetzung mit Hauptlast auf der GPU konnte zeigen, wie sich die Bildqualit¨at durch eine approximierte, bikubische Interpolation der Gel¨andeoberfl¨ache und der Schatten verbessert. Diese Interpolation fand bei allen bekannten, interaktiven Gel¨ande-Raytracern bisher keine Anwendung. Außerdem konnte demonstriert werden, wie Mikrostrukturen den Detailgrad und den Realismus in einer Szene erh¨ohen k¨onnen. Dabei wurden realistische Oberfl¨achenstrukturen ¨ahnlich wie in [BS00] erzeugt. W¨ahrend das Rendern der Bilder dort jedoch sehr viel Zeit ben¨otigte, konnten hier interaktive Frameraten erzeugt werden. Dies liegt vor allem an den zus¨atzlichen Beschleunigungsstrategien, wie Raytracing auf der Maximum Mipmap, dem Beamtracing und der Ausnutzung temporaler Koh¨arenz durch die Clipmap. Die Geschwindigkeit ist außerdem maßgeblich von der Leistungsf¨ahigkeit der verwendeten Grafikkarte, spezifiziert durch die Anzahl und die Taktraten der einzelnen Kerne, aber auch durch den Datendurchsatz, abh¨angig. Eine Verwendung von Grafikkarten im Verbund k¨onnte dabei die Leistung stark erh¨ohen. F¨ ur zuk¨ unftige Projekte k¨onnten noch weitere Aspekte zur Verbesserung der Qualit¨at und der Geschwindigkeit untersucht werden. So k¨onnte die Verlagerung der Berechnung der Clipmap auf die GPU unter Umst¨anden die Geschwindigkeit erh¨ohen. Da der Raytracing Prozess selbst sehr performant ist, k¨onnte auch die Verwendbar-

91

7 Zusammenfassung und Ausblick keit des Supersamplings analysiert werden. Um noch realistische Mikrostrukturen erzeugen zu k¨onnen, scheint außerdem die Entwicklung eines Raytracers f¨ ur echte Displacement Maps, bei denen die Oberfl¨achenpunkte entlang einer Normalen verschoben werden, lohnenswert. Auch die Verwendung eines hybriden Systems, wobei Displacement Maps auf polygonalen Oberfl¨achen f¨ ur den Nahbereich durch die Grafikpipeline umgesetzt werden k¨onnten und das Raytracing f¨ ur das restliche Gel¨ande verwendet wird, ist denkbar. Zus¨atzliche Wolken inklusive Schattenwurf oder die Anwendung von Aerial Perspektiv-Effekten k¨onnten den Realismus sogar noch weiter erh¨ohen.

92

Thesen 1. Die Darstellung von Gel¨ande ist unter anderem durch die Modellierung durch Dreiecksnetze ein sehr aufw¨andiger Prozess. Raytracing kann alternativ hierzu direkt auf den H¨ohendaten arbeiten. 2. Durch Approximationen beschleunigte Raytracingsysteme generieren h¨aufig Fehler im Bildraum, welche die Qualit¨at enorm beeintr¨achtigen. 3. Die Ausnutzung von Koh¨arenzen kann das Raytracing auf interaktive Frameraten beschleunigen. 4. Aliasing Effekte, welche durch ein Undersampling im Fernbereich entstehen, k¨onnen durch die Anwendung von Mip Maps reduziert werden. 5. Die bilineare Interpolation der Gel¨andeoberfl¨ache im Fernbereich f¨ uhrt zu Unstetigkeiten zwischen den Patches. Die bikubische Interpolation erzeugt hingegen harmonische Konturen. Diese ist jedoch f¨ ur interaktive Anwendungen zu aufw¨andig. 6. Durch die kontinuierliche Erh¨ohung der Aufl¨osung des H¨ohenfeldes im Nahbereich k¨onnen die einzelnen Patches im Bildraum sehr klein gehalten werden. Werden die zus¨atzlichen Datenpunkte durch bikubische Interpolation gewonnen, kann so eine stetige, glatte Gel¨andeoberfl¨ache erzeugt werden. 7. Die Clipmap eignet sich als Datenstruktur sehr gut, verschiedene Aufl¨osungen des H¨ohenfeldes f¨ ur die unterschiedlichen Bereiche zu verwalten. 8. Die Erzeugung von Mikrostrukturen f¨ ur den Nahbereich kann den Realismus der Szene zus¨atzlich stark erh¨ohen. 9. Eine realistische Beleuchtung des Gel¨andes kann immens zur Steigerung der Bildqualit¨at beitragen. Um Interaktivit¨at gew¨ahrleisten zu k¨onnen, muss jedoch ein Teil der Beleuchtung in einen Pr¨aprozess ausgelagert werden.

93

Literaturverzeichnis [AA05]

Hugues Hoppe Arul Asirvatham. Terrain rendering using geometry clipmaps. GPU Gems 2, 2005.

[Ada11] David Adams. Bumb mapping. http://www.mat.ucsb.edu/594cm/2010/ adams_rp1/index.html, 2011. [AF94]

John Buchanan Alain Fournier. Chebyshev polynomials for boxing and intersections of parametric curves and surfaces. Technical report, University of British Columbia Vancouver, Vancouver, BC, Canada, Canada, 1994.

[AK11]

Markus Hadwiger Andrea Kratz, Jan Reininghaus. Adaptive screen-space sampling for volume-raycasting. Technical report, Konrad-Zuse-Zentrum fuer Informationstechnik Berlin, 2011.

[App68] Arthur Appel. Some techniques for shading machine renderings of solids. In Proceedings of the Spring Joint Computer Conference 1968. S. 37-45, 1968. [Bes02]

Istvan Beszteri. Antialiasing. Technical report, Helsinki University of Technology, 2002.

[Bli78]

James F. Blinn. Simulation of wrinkled surfaces. SIGGRAPH Comput. Graph., 12:286–292, August 1978.

[BS00]

Michael M. Stark Brian Smits, Peter Shirley. Direct ray tracing of smoothed and displacement mapped triangles. Technical report, University of Utah, 2000.

[CHL97] Yeong Gil Shin Cheol-Hi Lee. A terrain rendering method using vertical ray coherence. Journal of Visualization and Computer Animation, 1997. [Coo84] Robert Cook. Distributed ray tracing. ACM SIGGRAPH Computer Graphics 18, 1984. [Cro81] F. C. Crow. A comparison of antialiasing techniques. IEEE Comput. Graph. Appl., 1:40–48, January 1981. [Dic09]

Christian Dick, Jens Kr¨ uger, and R¨ udiger Westermann. Gpu ray-casting for scalable terrain rendering. Proceedings of Eurographics 2009 Areas Papers, 2009.

[Duc97] M. Duchaineau, M. Wolinsky, D.E. Sigeti, M.C. Miller, C. Aldrich, and M.B. Mineev-Weinstein. Roaming terrain: Real-time optimally adapting meshes. In Visualization ’97., Proceedings, pages 81 –88, oct. 1997. [Due10] Steve Duebel. Realtime gpu-based terrain raytracing, 2010. Student research project - University of Rostock.

95

Literaturverzeichnis [FL04]

Hugues Hoppe Frank Losasso. Geometry clipmaps: Terrain rendering using nested regular grids. Transactions on Graphics, 2004.

[Gol71]

Robert Goldstein and Roger Nagel. 3-d visual simulation. Simulation 16, 25-31, 1971.

[Gr¨o92] Eduard Gr¨oller. Coherence in Computer Graphics. PhD thesis, Institute of Computer Graphics and Algorithms, Vienna University of Technology, 1992. [Gre03] Robin Green. Spherical harmonic lighting: The gritty details. Technical report, Sony Computer Entertainment America, 2003. [Hav11] V. Havran. A summary of octree ray traversal algorithms. Ray Tracing News, 12, 2011. [Kaj82] James T. Kajiya. Ray tracing parametric patches. SIGGRAPH Comput. Graph., 16:245–254, July 1982. [Kan01] Tomomichi Kaneko, Toshiyuki Takahei, Masahiko Inami, Naoki Kawakami, Yasuyuki Yanagida, Taro Maeda, and Susumu Tachi. Detailed shape representation with parallax mapping. In In Proceedings of the ICAT 2001, pages 205–208, 2001. [Kay79] Douglas Scott Kay. Transparency, refraction and ray tracing for computer synthesized images. Thesis, Cornell University, 1979. [Kaz07] Alexander Kazeka and John Stevens. Parallel ray tracing. www.cs. colostate.edu/˜kazeka/pdf/parallel_raytracer.pdf, 2007. [Koe09] Thomas Koehler. Realtime raytracing: Bounding volume hierarchies on graphics cards. Master’s thesis, Fachhochschule Muenchen, 2009. [Lau06] Stephen Marius Lauschke. Precomputet radience transfer, 2006. Seminararbeit. [Len09] Hendrik P. A. Lensch, Peter pike Sloan, Derek Nowrouzezahrai, and John Snyder. Fast global illumination on dynamic height fields, 2009. [Lev90] Marc Levoy. Volume rendering by adaptive refinement. Vis. Comput., 6:2–7, February 1990. [Lew03] R.R. Lewis, Renwei Wang, and D. Hung. A pipelined architecture for ray/bezier patch intersection computation. Electrical and Computer Engineering, Canadian Journal of, 28(1):27 –35, january 2003. [Lin96]

Peter Lindstrom, David Koller, William Ribarsky, Larry F. Hodges, Nick Faust, and Gregory A. Turner. Real-time continuous level of detail rendering of height fields. In Proceedings of the 23rd annual conference on Computer graphics and interactive techniques, SIGGRAPH ’96, pages 109–118, New York, NY, USA, 1996. ACM.

[Mit88] Don P. Mitchell and Arun N. Netravali. Reconstruction filters in computergraphics. SIGGRAPH Comput. Graph., 22:221–228, June 1988. [MP04] Simon Green Matt Pharr. GPU gems : Ambient Occlusion, chapter 17.

96

Literaturverzeichnis Addison-Wesley, 2004. [Oat06] Christopher Oat and Pedro V. Sander. Ambient aperture lighting. International Conference on Computer Graphics and Interactive Techniques, 2006. [Pol05]

Fabio Policarpo, Manuel M. Oliveira, and Joao L. D. Comba. Real-time relief mapping on arbitrary polygonal surfaces. ACM SIGGRAPH 2005 Symposium on Interactive 3D Graphics and Games, Washington, 2005.

[PSH84] Pat Hanrahan Paul S. Heckbert. Beam tracing polygonal objects, 1984. [Rab08] Hanno Rabe. Raytracing mit cuda. Master’s thesis, Universit¨at Koblenz, 2008. [Ram01] Ravi Ramamoorthi and Pat Hanrahan. An efficient representation for irradiance environment maps. In Proceedings of the 28th annual conference on Computer graphics and interactive techniques, SIGGRAPH ’01, pages 497–500, New York, NY, USA, 2001. ACM. [Ram04] Shaun D. Ramsey, Kristin Potter, and Charles Hansen. Ray bilinear patch intersections. Journal of Graphics Tools 9, P. 41-47, 2004. [Sam90] Hanan Samet. Applications of spatial data structures. IEEE Computer Graphics and Applications, 10:86–89, 1990. [SG03]

Paul Heckbert Stefan Guthe. Non-power-of-two mipmap creation. Technical report, NVIDIA Corporation, 2003.

[SJA93] Larry F. Hodges Stephen Joel Adelson. Exploiting spatio-temporal coherence in ray-traced animation frames. Technical report, Georgia Institute of Technology, 1993. [SL04]

Fabrice Neyret Sylvain Lefebvre, Samuel Hornus. GPU gems 2 : programming techniques for high-performance graphics and general-purpose computation, chapter 37. Addison-Wesley, 2004.

[SL10]

Tero Karras Samuli Laine. Efficient sparse voxel octrees, 2010.

[Slo02]

Peter-Pike Sloan, Jan Kautz, and John Snyder. Precomputed radiance transfer for real-time rendering in dynamic, low-frequency lighting environments. ACM Trans. Graph., 21:527–536, July 2002.

[Tan98] Christopher C. Tanner, Christopher J. Migdal, and Michael T. Jones. The clipmap: a virtual mipmap. In Proceedings of the 25th annual conference on Computer graphics and interactive techniques, SIGGRAPH ’98, pages 151–158, New York, NY, USA, 1998. ACM. [Tev08] Art Tevs, Ivo Ihrke, and Hans-Peter Seidel. Maximum mipmaps for fast, accurate, and scalable dynamic height field. Proc. ACM Symposium on Interactive 3D Graphics and Games (2008), pp. 183-190., 2008. [Whi80] Turner Whitted. An improved illumination model for shaded display. Communications of the ACM 23, 1980. [Wil83] Lance Williams. Pyramidal parametrics. In Proceedings of the 10th annual

97

Literaturverzeichnis conference on Computer graphics and interactive techniques, SIGGRAPH ’83, pages 1–11, New York, NY, USA, 1983. ACM.

98

Selbstst¨ andigkeitserkl¨ arung Hiermit erkl¨are ich die vorliegende Arbeit selbstst¨andig und nur unter Zuhilfenahme der angegebenen Literatur erstellt zu haben.

Rostock, den 06.04.2011

Steve D¨ ubel

99