53
Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut f ¨ ur Computervisualistik Arbeitsgruppe Computergraphik Betreuer: Dipl.-Inform. Thorsten Grosch Pr ¨ ufer: Prof. Dr.-Ing. Stefan M¨ uller Januar 2006

Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

Displacement Mapping

Studienarbeit

Vorgelegt von

Ruth-Maria Recker

Institut fur ComputervisualistikArbeitsgruppe Computergraphik

Betreuer: Dipl.-Inform. Thorsten GroschPrufer: Prof. Dr.-Ing. Stefan Muller

Januar 2006

Page 2: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

Inhaltsverzeichnis

1 Einleitung 5

2 GPU Programmierung 62.1 Entwicklung der GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 Fixed-Function-Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3 Programmierbare Graphik-Pipeline . . . . . . . . . . . . . . . . . . . . . 82.4 Vertex-Prozessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.5 Fragment-Prozessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.6 Cg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3 Bump Mapping 133.1 Blinn-Bump Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.2 Normal Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.2.1 Normal-Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.3 Berechnung des Texture Space . . . . . . . . . . . . . . . . . . . . . . . . . 163.4 Beleuchtung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.5 Anwendung von Bump Mapping . . . . . . . . . . . . . . . . . . . . . . . 18

4 Parallax Mapping 204.1 Idee von Parallax Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . 204.2 Parallax Mapping mit Offset Limiting . . . . . . . . . . . . . . . . . . . . 224.3 Anwendung von Parallax Mapping . . . . . . . . . . . . . . . . . . . . . 23

5 Displacement Mapping 255.1 Idee von Displacement Mapping . . . . . . . . . . . . . . . . . . . . . . . 255.2 View-dependent Displacement Mapping . . . . . . . . . . . . . . . . . . 265.3 Per-Pixel Displacement Mapping . . . . . . . . . . . . . . . . . . . . . . . 285.4 Erstellung einer Distance-Map . . . . . . . . . . . . . . . . . . . . . . . . 315.5 Rendern des Bildes mit Per-Pixel Displacement Mapping . . . . . . . . . 34

5.5.1 Der Vertex-Shader . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.5.2 Der Fragment-Shader . . . . . . . . . . . . . . . . . . . . . . . . . 345.5.3 Selbstverschattung . . . . . . . . . . . . . . . . . . . . . . . . . . . 355.5.4 Filterung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

5.6 Anwendung von Per-Pixel Displacement Mapping . . . . . . . . . . . . . 39

i

Page 3: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

6 Die Beispielszene 416.1 Modellierung der Szene . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416.2 VRML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

7 Ergebnisse 44

8 Fazit und Ausblick 51

ii

Page 4: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

Abbildungsverzeichnis

2.1 Fixed-Function-Pipeline [6] . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2 Programmierbare Graphik-Pipeline [6] . . . . . . . . . . . . . . . . . . . . 82.3 Vertex-Prozessor [10] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.4 Fragment-Prozessor [10] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.5 Einfaches Vertex-Programm . . . . . . . . . . . . . . . . . . . . . . . . . . 122.6 Einfaches Fragment-Programm . . . . . . . . . . . . . . . . . . . . . . . . 12

3.1 Idee des Bump Mapping [1] . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2 Konvertierung eines Height-Fields in eine Normal-Map . . . . . . . . . . 163.3 Ergebnis des Bump Mappings . . . . . . . . . . . . . . . . . . . . . . . . . 19

4.1 Parallax Mapping [15] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.2 Berechnung des Offset-Vektors [15] . . . . . . . . . . . . . . . . . . . . . . 214.3 Berechnung des Offsets-Vektors mit Offset Limiting [15] . . . . . . . . . 224.4 Ergebnis des Parallax Mappings . . . . . . . . . . . . . . . . . . . . . . . 24

5.1 Idee von Displacement Mapping [3] . . . . . . . . . . . . . . . . . . . . . 255.2 Displacements mit View-dependent Displacement Mapping [14] . . . . . 275.3 Krummung der Oberflache [14] . . . . . . . . . . . . . . . . . . . . . . . . 275.4 Undersampling [5] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295.5 Oversampling [5] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295.6 Sphere Tracing [4] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305.7 Erstellung einer 2D-Distance-Map [4] . . . . . . . . . . . . . . . . . . . . 315.8 Selbstverschattung [14] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.9 Ohne Filterung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.10 Mipmapping und Anisotrope Filterung . . . . . . . . . . . . . . . . . . . 385.11 Ergebnis des Displacement Mappings: Steine . . . . . . . . . . . . . . . . 405.12 Ergebnis des Displacement Mappings: Text . . . . . . . . . . . . . . . . . 40

6.1 Modellierte Beispielszene . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

7.1 Gerenderte Beispielszene . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447.2 Vergleich der verschiedenen Verfahren . . . . . . . . . . . . . . . . . . . . 457.3 Ergebnisse des Displacement Mappings im Detail . . . . . . . . . . . . . 477.4 Gullideckel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

iii

Page 5: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

1 Einleitung

In immer mehr Bereichen kommen heutzutage dreidimensionale computergenerierteSzenen zum Einsatz. Dies ist insbesondere in der Film- sowie der Computerspieleindu-strie zu beobachten. Aber auch weitere Einsatzgebiete wie beispielsweise Virtual Rea-lity sind moglich. Bei der Generierung der 3D-Szenen liegt das Hauptaugenmerk aufeiner moglichst realitatsgetreuen Darstellung der Szene. Neben der korrekten Simu-lation des Lichtes tragen auch die verwendeten Materialien einen wichtigen Teil zurDarstellungsqualitat der Szene bei.

Ein wichtiger Aspekt bei den Materialien ist die Simulation der Oberflachenstruk-tur. In der Realitat existieren so gut wie keine vollkommen glatten Oberflachen. SelbstMetall- und Plastikmaterialien besitzen feine, auf den ersten Blick kaum sichtbare Struk-turen, welche jedoch einen wichtigen Teil zum Erscheinungsbild des Objektes beitra-gen. Fehlen diese Strukturen, so verliert das Objekt einen Teil seiner Realitatsnahe, dadas Licht nun anders von der Oberflache reflektiert wird und dem Objekt so ein ande-res Aussehen verleiht. Da es zu aufwendig ist, sehr feine Strukturen auszumodellieren,werden haufig Verfahren zur Simulation dieser Strukturen eingesetzt.

Doch auch bei verhaltnismaßig groben Strukturen der Oberflache ist eine Ausmo-dellierung der einzelnen Strukturen oft zu aufwendig. Durch den Einsatz geeigneterVerfahren, wie beispielsweise Bump Mapping oder Displacement Mapping, laßt sichder Aufwand zur Generierung der Szene reduzieren. Daruberhinaus ermoglichen vieleder eingesetzten Verfahren eine Simulation der Oberflachenstruktur ohne die Generie-rung neuer Dreiecke. Die Reduzierung der Renderzeit sowie des Speicherverbrauchswird als enormer Vorteil dieser Verfahren angesehen. So werden zum Beispiel in Com-puterspielen Szenen mit Hilfe dieser Verfahren mit detailreichen Oberflachen versehenund lassen sich dennoch in Echtzeit darstellen.

In dieser Studienarbeit werden verschiedene Verfahren zur Verbesserung der Ober-flachenstruktur vorgestellt, die zur Implementierung auf moderner Graphik-Hardwaregeeignet sind. Dabei liegt der Schwerpunkt auf dem Displacement Mapping.

Nach einer kurzen Einfuhrung in die GPU Programmierung sowie in die hier ver-wendete Sprache Cg wird das Bump Mapping vorgestellt. Im Anschluß daran wirdein weiteres Verfahren zur Verbesserung der Oberflachenstruktur, das Parallax Map-ping, erlautert. Das nachste Kapitel beschaftigt sich mit Displacement Mapping sowiedessen Einsatzmoglichkeiten. Zum Vergleich der einzelnen Verfahren dient eine Bei-spielszene, deren Erstellung im nachsten Kapitel vorgestellt wird. Daruberhinaus wirdhier auch der Import der Szene in die eigene Anwendung erlautert. Die Ergebnisse desVergleichs hinsichtlich Speicherverbrauch, Renderzeit und Darstellungsqualitat wer-den zum Schluß vorgestellt.

5

Page 6: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

2 GPU Programmierung

2.1 Entwicklung der GPU

Wahrend fruher die CPU noch alleine fur die Berechnung der gesamten Darstellungzustandig war, gewann die Graphik-Hardware in den letzten Jahren zunehmend an Be-deutung. Die moderne Graphik-Hardware ist mittlerweile in ihrer Leistungsfahigkeitsoweit entwickelt, dass sie die meisten Berechnungen zur Darstellung einer komplexen3D-Szene ubernehmen kann.

Vor der Entwicklung der ersten GPUs 1 ermoglichte nur eine spezielle Graphik-Hardware von Firmen wie Silicon Graphics (SGI) oder Evans & Sutherland Konzeptewie Vertex-Transformationen oder Texture Mapping. Diese Hardware war allerdingsdurch ihren hohen Preis fur den Massenmarkt nicht erschwinglich und wurde aus-schließlich in speziellen Workstations eingesetzt.

Dies anderte sich erst Mitte der 90iger Jahre mit der Entwicklung der ersten 3D-Chipsfur PCs. Unterstutzt durch eine starke Entwicklung der Computerspieleindustrie ka-men in immer kurzeren Abstanden neue 3D-Chips auf den Markt. Seit 2001 gibt esauch die ersten programmierbaren Graphikchips, zum Beispiel von ATI und NVIDIA.Diese Graphikchips ermoglichten erstmals die Programmierung des Vertex-Prozessors.Mit spater entwickelten Graphikchips kam auch die Moglichkeit der Programmierungdes Fragment Prozessors hinzu.

2.2 Fixed-Function-Pipeline

Im Computer entworfene 3D-Modelle mussen gerendert werden, damit sie auf demBildschirm in 2D dargestellt werden konnen. Wahrend des Rendering-Vorgangs durch-laufen die Objekte eine sogenannte Rendering-Pipeline, welche die zur Umrechnungnotigen Schritte durchfuhrt. Ursprunglich war die Funktionalitat der einzelnen Stufendieser Rendering-Pipeline genau festgelegt, deshalb spricht man hier von einer Fixed-Function-Pipeline. In der Abbildung 2.1 konnen die verschiedenen Schritte der Pipelinenachvollzogen werden.

1Graphics Processing Unit

6

Page 7: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

2.2 Fixed-Function-Pipeline

3D Application or Game

3D API:OpenGL orDirect3D

GPU Front End

VertexTransformation

PrimitiveAssembly Rasterization

FragmentTexturing &

Coloring

RasterOperations

Frame Buffer

CPU - GPU Boundary

Abbildung 2.1: Fixed-Function-Pipeline [6]

Die Eingabedaten, welche ublicherweise aus einer 3D-Anwendung oder einem 3D-Computerspiel stammen, werden zur Steuerung der 3D-API 2 verwendet. Man unter-scheidet heute im Allgemeinen bei den 3D-APIs zwischen Direct3D und OpenGL. BeiDirect3D handelt es sich um einen Bestandteil von DirectX, entwickelt und betreut vonMicrosoft. Der Standard OpenGL entstand aus dem IRIS GL, entwickelt von SiliconGraphics (SGI). Heute wird die OpenGL-Spezifikation vom OpenGL Architecture Re-view Board (ARB) betreut. Wahrend OpenGL plattformunabhangig ist, lauft Direct3Dlediglich auf Windows Plattformen. Mit Hilfe der Methoden einer 3D-API konnen 3D-Objekte gerendert werden. Dazu werden die in der 3D-Anwendung aufgerufenen Be-fehle von der 3D-API umgesetzt. Der GPU Front-End erhalt uber den Graphikkarten-treiber die entsprechenden Befehle von der 3D-API und steuert dementsprechend dieUmsetzung der Befehle auf der Grafikhardware.

In der nachsten Stufe, der Vertex Transformation, wird ein Vertex mit Hilfe mathe-matischer Operationen von Objektkoordinaten in Clip-Koordinaten umgerechnet. Au-ßerdem kann die Beleuchtung des Vertex berechnet werden.

Die transformierten Vertices werden in der Primitive-Assembly Stufe zu Geometrie-Primitiven, wie zum Beispiel Dreiecken, Linien oder Punkten, zusammengefasst.

In der anschließenden Rasterisierungsstufe werden nun die geometrischen Primitivegegen das View Frustum sowie eventuell gegen vorher definierte Clipping Planes ge-clippt. Daruberhinaus werden beim Backface Culling diejenigen Polygone, deren Vor-derseiten vom Betrachter abgewandt sind, verworfen. Die ubrig gebliebenen Polygo-ne konnen nun rasterisiert werden. Bei der Rasterisierung werden die geometrischenPrimitive in ein 2D-Bild umgerechnet. Hierbei werden die Positionen derjenigen Frag-mente bestimmt, die ein geometrisches Primitiv im 2D-Bild einnimmt. Außerdem wirdbei der Rasterisierung die Farbe und ein Depth-Wert fur jedes Fragment durch Interpo-lation bestimmt.

Innerhalb der nachsten Stufe in der Rendering Pipeline, Fragment Texturing undColoring, wird die endgultige Farbe eines Fragments festgelegt. Dies geschieht durchKombination der interpolierten Farbe aus den Vertices mit der zum Fragment gehoren-den Texturfarbe, sofern eine Textur angelegt wurde.

2Application Programming Interface

7

Page 8: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

2.3 Programmierbare Graphik-Pipeline

Bevor das Fragment an den Frame-Buffer gesendet werden kann, muß es noch eineReihe von Tests bestehen. Zu diesen Rasteroperationen gehoren der Scissor-Test, derAlpha-Test, der Stencil-Test und der Depth-Test. Besteht ein Fragment einen dieser Testsnicht, so wird es verworfen. Andernfalls wird noch eine Blending-Operation und eineDithering-Operation durchgefuhrt. Anschließend kann das fertige Fragment an denFrame-Buffer gesendet werden.

2.3 Programmierbare Graphik-Pipeline

3D Application or Game

3D API:OpenGL orDirect3D

GPU Front End

ProgrammableVertex Processor

PrimitiveAssembly

Rasterization &

Interpolation

ProgrammableFragment Processor

RasterOperations

Frame Buffer

CPU - GPU Boundary

3D APICommands

GPU Command & Data Stream

Vertex Index Stream

Pretransformed Vertices

Transformed Vertices

RasterizedPretransformed

Fragments

AssembledPolygons, Lines &

Points

PixelLocationStream

Pixel Updates

Transformed Fragments

Abbildung 2.2: Programmierbare Graphik-Pipeline [6]

Mittlerweile besteht in den modernen GPUs die Moglichkeit, bestimmte Stufen derFixed-Function-Pipeline durch programmierbare Abschnitte zu ersetzen. Bei den pro-grammierbaren Abschnitten handelt es sich um den Vertex-Prozessor und den Frag-ment-Prozessor. Die Abbildung 2.2 zeigt die programmierbare Pipeline mit den Ab-schnitten fur den Vertex- und den Fragment-Prozessor. Durch die Verwendung desVertex- bzw. des Fragment-Prozessors ist der Programmierer nicht auf die festgeleg-te Funktionalitat einer Fixed-Function-Pipeline beschrankt, sondern kann die vorhan-denen Funktionen noch um seine eigenen Funktionen erganzen. Somit hat er mehrMoglichkeiten, die Darstellung seiner gewahlten Szene zu beeinflußen. Da alle Berech-nungen im Vertex- und im Fragment-Programm direkt auf der GPU erfolgen, welchesolche Berechnungen schneller als die CPU ausfuhren kann, ist es moglich, viel Zeiteinzusparen.

8

Page 9: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

2.4 Vertex-Prozessor

2.4 Vertex-Prozessor

Durch den Vertex-Prozessor, Abbildung 2.3, wird die Stufe der Vertex-Transformationenin der Rendering-Pipeline ersetzt. Dabei ladt der Vertex-Prozessor zuerst die Attributefur jeden Vertex, wie zum Beispiel Position, Farbe und Texturkoordinaten. Anschlie-ßend fuhrt er alle im Vertex-Programm angegebenen Instruktionen auf dem Vertex aus.Dabei kann er eine begrenzte Anzahl von mathematischen Operationen verwenden,wie zum Beispiel Addition, Subtraktion, Multiplikation und Division aber auch Opera-tionen wie Skalarprodukt, Kreuzprodukt, Minimum und Maximum sind moglich.

Die Geforce 6 Serie [10] beinhaltet bis zu 6 Vertex-Pipelines. Jede der Vertex-Verar-beitungseinheiten basiert auf der MIMD-Architektur3. Dabei hat jeder Prozessor eineeigene Kopie der durchzufuhrenden Verarbeitungsschritte und kann so unterschiedli-che Operationen auf unterschiedlichen Datenstromen ausfuhren.

fp32ScalarUnit

Branch Unit

fp32Vector

Unit

VertexTextureFetch

TextureCache

Primitive Assembly

Viewport Processing

Input Vertex Data

Vertex Processor

To Setup

Abbildung 2.3: Vertex-Prozessor [10]

Die im Vertex-Prozessor enthaltene Scalar-Verarbeitungseinheit und die Vector-Verar-beitungseinheit arbeiten parallel. Samtliche Operationen werden dabei mit einer fp324 Genauigkeit pro Komponente ausgefuhrt. Die GeForce 6 Serie erlaubt erstmals auchTexturzugriffe im Vertex-Prozessor. Es besteht eine Zugriffsmoglichkeit auf den Textur-Zwischenspeicher, welcher mit dem Fragment-Prozessor geteilt wird.

Außerdem existiert ein sogenannter Vertex-Zwischenspeicher. Hier wird der Vertexvor und nach der Verarbeitung gespeichert. Der Vorteil dieses Speichers ist, dass ein

3Multiple Instruction, Multiple Data432-bit floating point

9

Page 10: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

2.5 Fragment-Prozessor

doppelt auftretender Vertex nicht zweimal bearbeitet werden muss. Beim zweiten Auf-treten des Vertex kann hier einfach das schon berechnete Ergebnis aus dem Vertex-Zwischenspeicher verwendet werden.

2.5 Fragment-Prozessor

Durch den Fragment-Prozessor 2.4 wird die Stufe der Fragment-Texturierung der Fixed-Function-Pipeline ersetzt. Der Fragment-Prozessor fuhrt auf den ubergebenen Frag-menten die im Fragment-Programm spezifizierten Instruktionen aus. So kann im Frag-ment-Programm zum Beispiel die Beleuchtung des Fragments berechnet werden. Au-ßerdem besteht die Moglichkeit, dem Fragment einen Texturwert zuzuweisen. ZumSchluß wird im Fragment-Programm die endgultige Farbe des Fragments bestimmt.

fp32 Shader Unit2

Branch Processor

Fog ALU

Input Fragment Data

Fragment Processor

Output Shaded Fragments

Texture Data

fp32 Shader Unit1

Texture Cache

Floating-PointTexture Processor

Abbildung 2.4: Fragment-Prozessor [10]

Der Fragment-Prozessor der GeForce 6 Serie ist ein SIMD5 Prozessor, was bedeutet,dass eine Anweisung fur mehrere Fragmente gleichzeitig bearbeitet werden kann. Da-zu verfugt die Geforce 6 Serie uber bis zu 16 Fragment-Pipelines.

5Single Instruction, Multiple Data

10

Page 11: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

2.6 Cg

Wie der Vertex-Prozessor hat auch der Fragment-Prozessor Zugriff auf einen Textur-Zwischenspeicher. Die GeForce 6 Serie unterstutzt dabei die Filterung von fp166 Textu-ren. Der Fragment-Prozessor hat zwei fp32 Shader Units pro Pipeline. Die zu verarbei-tenden Fragmente werden durch diese beiden Shader Units sowie den Branch Prozes-sor geschickt, bevor sie die Pipeline erneut zur Ausfuhrung der nachsten Instruktiondurchlaufen. Im letzten Schritt der Fragment-Pipeline kann Nebel in fixed-point preci-sion hinzugefugt werden, ohne dass die Performance dadurch beeintrachtigt wird.

2.6 Cg

Nach der Entwicklung der ersten programmierbaren Graphikkarten war es naturlichauch erforderlich, eine Sprache bereitzustellen, die fur die Programmierung dieser Gra-phikkarten eingesetzt werden kann. Zunachst wurde zur Programmierung der GPUdie Low-Level Sprache Assembler verwendet. Neben dem Vorteil, dass die gesamteKontrolle uber den Code beim Programmierer lag, hatte Assembler auch einige Nach-teile. Assembler-Programme sind aufgrund ihrer Syntax oft schwer zu lesen. Außer-dem wachst die Codelange schon bei wenigen Instruktionen sehr schnell an. Dies warder Grund, weshalb sich Assembler auf Dauer in der Graphikprogrammierung nichtdurchsetzen konnte.

Im Jahr 2001 wurde deshalb von NVIDIA eine neue High-Level Sprache entwickelt:Cg [6], wobei Cg fur C for graphics steht. Cg zeichnet sich zunachst durch seine hohe Por-tabilitat aus. Diese Sprache kann auf verschiedenen Plattformen wie Windows, Linuxund Mac OS X gleichermaßen eingesetzt werden. Daruberhinaus ist der Programmiererfrei in der Wahl der API. Er kann sowohl OpenGL als auch DirextX verwenden.

Um das Cg-Programm spater auf der GPU einsetzen zu konnen, muß der Program-mierer noch sogenannte Vertex- und Fragment-Profile wahlen. Durch die Wahl von ge-eigneten Profilen werden die zur Verfugung stehenden Features fur ein Cg-Programmentsprechend der gewahlte 3D-API und GPU begrenzt. Profile konnen in die eigeneAnwendung eingebunden werden. Werden zum Beispiel das Vertex-Profil ”vp40“ so-wie das Fragment-Profil ”fp40“ gewahlt, so konnen die Befehle der 3D-API OpenGLvon Cg verwendet werden.

Da Cg eine High-Level Sprache ist, zeichnet sie sich durch eine ubersichtlichere Pro-grammstruktur aus, als es bei Assembler der Fall ist und ist deshalb auch wesentlicheinfacher zu lesen. Schon der Name Cg deutet auf die Nahe zur Programmiersprache Chin. Tatsachlich basiert die Syntax und Semantik von Cg auf C. Die Syntax von Cg wur-de jedoch um Vektor- und Matrix-Datentypen sowie Texturtypen erganzt. Außerdemstellt Cg dem Programmierer verschiedene Funktionen zur Verfugung. Dazu gehorenzum Beispiel die Funktion dot , welche das Skalarprodukt berechnet, und die Funktioncross , welche die Berechnung des Kreuzproduktes ubernimmt.

Sowohl Vertex- als auch Fragment-Programme basieren auf dem Stream-Prinzip. Dasbedeutet, dass das entsprechende Cg-Programm fur jeden Vertex aus dem Vertex-Stream

616-bit floating point

11

Page 12: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

2.6 Cg

beziehungsweise jedes Fragment aus dem Fragment-Stream einzeln aufgerufen wird.Die Struktur eines Cg-Programms laßt sich wie folgt beschreiben:

• <return-type> <program-name> (<parameters>) [: <semantic-name>]

Hierbei sind der Programmname und die Parameter des Programms genauso zu in-terpretieren wie in C auch. Der Ruckgabewert des Cg-Programms muß nicht zwangs-laufig aus einem einzelnen Wert bestehen. Mit Hilfe von Ausgabe-Strukturen oder Out-Parametern kann ein Cg-Programm auch mehrere Werte zuruckliefern. Die Ruckgabe-werte des Vertex-Programms werden anschließend an das Fragment-Programm wei-tergeleitet und konnen dort verwendet werden.

In Cg-Programmen kann man im Anschluß an einen Parameter eine Semantik fest-legen, welche in einem Profil definiert ist. Eine mogliche Semantik ist zum BeispielPOSITION oder COLOR. Mit diesen semantischen Bindungen kann einerseits einemVertex-Programm mitgeteilt werden, wie die ubergebenen Parameter interpretiert wer-den sollen und gleichermaßen kann man so auch dem Fragment-Programm sagen, wiees die vom Vertex-Programm ubergebenen Parameter behandeln soll.

In der Abbildung 2.5 wird ein Beispiel fur ein einfaches Vertex-Programm darge-stellt. Dieses Programm bekommt fur jeden Vertex eine Position und eine Farbe uber-geben. Mit Hilfe der Ausgabevariablen, gekennzeichnet durch out , werden die Wertefur die Position und die Farbe an das Fragment-Programm weitergeleitet. Das entspre-chende Fragment-Programm, dargestellt in Abbildung 2.6, erhalt die Farbe vom Vertex-Programm und fugt diese Farbe dem Fragment hinzu. [16]

void VertexProgram( float4 position : POSITION, float4 color : COLOR, uniform float4x4 modelViewProj, out float4 oPosition : POSITION, out float4 oColor : COLOR){ oPosition = mul(modelViewProj, position); oColor = color;}

void FragmentProgram( float4 color : COLOR, out float4 oColor : COLOR){ oColor = color;}

Abbildung 2.5: Einfaches Vertex-Programm

void VertexProgram( float4 position : POSITION, float4 color : COLOR, uniform float4x4 modelViewProj, out float4 oPosition : POSITION, out float4 oColor : COLOR){ oPosition = mul(modelViewProj, position); oColor = color;}

void FragmentProgram( float4 color : COLOR, out float4 oColor : COLOR){ oColor = color;}

Abbildung 2.6: Einfaches Fragment-Programm

12

Page 13: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

3 Bump Mapping

In unserer Umwelt beobachten wir im Allgemeinen keine vollig glatten Oberflachen,sondern haufig Oberflachen, welche eine feine Struktur aufweisen, wie zum BeispielStrukturen im Stein und Holz aber auch feinere Strukturen in Metalloberflachen. DieseStrukturen konnen wir unseren modellierten Objekten hinzufugen, um ihnen dadurchein realistischeres Aussehen zu verleihen. Ein moglicher Ansatz ware es, die Detail-strukturen in der Geometrie auszumodellieren. Neben der Tatsache, dass dies viel Mo-dellierungsaufwand bedeuten wurde, benotigt man auch zum Rendern einer Szene mitzusatzlicher Geometrie deutlich mehr Zeit und hat einen hoheren Speicherverbrauch.Ein anderer Ansatz besteht in der Simulation der Detailstrukturen mit Hilfe von einemVerfahren, genannt Bump Mapping, welches allein durch eine Veranderung der Be-leuchtung eines Objektes Strukturen auf der Oberflache simulieren kann, ohne zusatz-liche Geometrie zu erzeugen.

3.1 Blinn-Bump Mapping

James F. Blinn hat das Verfahren Bump Mapping bereits 1978 erfunden und in seinemPaper Simulation of Wrinkled Surfaces [1] veroffentlicht. Sein Ansatz arbeitet mit einemHeight-Field, einem Graustufenbild, dessen Grauwerte fur Hohenangaben stehen.

Fur das Verfahren [9] benotigen wir eine Oberflache, auf der Bump Mapping simu-liert werden soll. Diese Oberflache P wird durch eine bivariate Vektor-Funktion P (u, v)beschrieben. Die Oberflachen-Normale in einem Punkt auf der Oberflache P ist wiefolgt beschrieben:

N(u, v) =∂P (u, v)

∂u× ∂P (u, v)

∂v(3.1)

Außerdem existiert eine bivariate Skalar-Funktion F (u, v). F kann dabei geometrischals ein Height-Field interpretiert werden, mit dem die Beleuchtung der originalen Ober-flache so verandert werden kann, dass eine Struktur erkennbar ist. Die fur die Struk-tur benotigte Hohenangabe erhalt man aus dem Height-Field-Image, die Richtung derHohenveranderung wird durch die Normale N(u, v) angegeben. Kombiniert man dieoriginale Oberflache P und das Height-Field F , so erhalt man eine neue OberflacheP ′(u, v) , die definiert ist durch:

P ′(u, v) = P (u, v) + F (u, v)N(u, v)|N(u, v)|

(3.2)

13

Page 14: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

3.1 Blinn-Bump Mapping

Die neue Oberflache P ′ enthalt jetzt die Struktur. Die Idee dieses Verfahrens wird inAbbildung 3.1 dargestellt.

Abbildung 3.1: Idee des Bump Mapping [1]

Fur eine Simulation der Oberflache P ′ in einem Shader benotigt man die Normaledieser Oberflache. Dabei wird die Normale beschrieben durch:

N ′(u, v) =∂P ′(u, v)

∂u× ∂P ′(u, v)

∂v(3.3)

Die Bestimmung der Normalen erfordert zunachst die Bildung der partiellen Ablei-tungen der neuen Oberflache.

∂P ′

∂u=

∂(P + F · (N/ |N |))∂u

=∂P

∂u+

∂F

∂u

(N

|N |

)+ F

(∂ N

|N |

∂u

)(3.4)

∂P ′

∂v=

∂(P + F · (N/ |N |))∂v

=∂P

∂v+

∂F

∂v

(N

|N |

)+ F

(∂ N

|N |

∂v

)(3.5)

Unter der Annahme, dass der Wert von F vernachlassigbar klein ist, laßt sich eineApproximation dieser Gleichungen finden, welche um den letzten Term reduziert ist.Daraus ergibt sich nun die Normale N ′:

N ′ =∂P

∂u× ∂P

∂v+

∂F∂u

(N × ∂P

∂v

)|N |

+∂F∂v

(∂P∂u × N

)|N |

+∂F∂u

∂F∂v (N × N)|N2|

(3.6)

14

Page 15: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

3.2 Normal Mapping

Der letzte Term dieser Gleichung wird hierbei Null und man erhalt schließlich dieNormale N ′, welche durch Addition der Normalen der originalen Oberflache mit ei-nem Offset Vektor D erzeugt wird.

N ′ = N + D (3.7)

D =∂F

∂u

(N × ∂P

∂v

)− ∂F

∂v

(N × ∂P

∂u

)(3.8)

3.2 Normal Mapping

Blinn-Bump Mapping liefert fur Offline-Anwendungen sehr gute Ergebnisse. Bei Echt-zeitanwendungen sind jedoch andere Verfahren dem Blinn-Bump Mapping, welchesdurch seine aufwandigen Berechnungen eine hohe Rechenzeit erfordert, vorzuziehen.Hierfur eignet sich zum Beispiel das Normal Mapping, ein Verfahren welches auf derVerwendung einer so genannten Normal-Map mit vorberechneten Normalen basiert.Im Gegensatz zum Blinn-Bump Mapping werden bei diesem Verfahren die originalenNormalen nicht durch Berechnung verandert, sondern sie werden komplett durch dieNormalen aus der Normal-Map ersetzt.

3.2.1 Normal-Maps

Normal-Maps sind im RGB-Format angelegt. Somit werden die Normalen als Vektorenabgespeichert, wobei die Komponenten x, y, z jeweils den Farben rot, grun und blauentsprechen. Normal-Maps konnen automatisch aus Height-Field-Images erstellt wer-den. Um die Normalen aus einem Height-Field berechnen zu konnen, muß zunachstdie erste partielle Ableitung des Height-Field-Images F in horizontaler und vertikalerRichtung berechnet werden:

∇F (u, v) = (Fu(u, v), Fv(u, v)) =(

∂F (u, v)∂u

,∂F (u, v)

∂v

)(3.9)

Mit den beiden Ableitungen kann nun die Normale N ′ in normalisierter Form furdie Normal-Map berechnet werden.

N ′ =〈Fu(u, v), Fv(u, v), 1〉√Fu(u, v)2 + Fv(u, v)2 + 1

(3.10)

Normalen besitzen im Gegensatz zu Farbvektoren eine Richtung. Der Wertebereicheiner Normalen liegt deshalb im Bereich [-1,1]. Bevor die Normalen in einer RGB-Textur, deren Wertebereich [0,1] entspricht, gespeichert werden konnen, mussen siebezuglich des Bereichs komprimiert werden. Dies geschieht mit folgender Funktion:

Farbvektor = 0.5 · Normalvektor + 0.5; (3.11)

15

Page 16: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

3.3 Berechnung des Texture Space

Der Farbvektor kann anschließend in der Normal-Map gespeichert werden. Zur Ver-wendung der Normalen bei der Beleuchtung ist eine Dekompression des Vektors ausder Normal-Map notwendig.

Normalvektor = 2 · (Farbvektor − 0.5); (3.12)

(a) Height-Field (b) Normal-Map

Abbildung 3.2: Konvertierung eines Height-Fields in eine Normal-Map

3.3 Berechnung des Texture Space

Bei der Beleuchtung eines Objektes werden nun statt der originalen Vertex-Normalendie Normalen aus der Normal-Map verwendet. Diese Normalen befinden sich im so-genannten Texture Space, oder auch Tangent Space genannt. Somit sind sie zunachstnoch von einem konkreten Objekt unabhangig und konnen fur jedes beliebige Objektverwendet werden. Fur eine korrekte Berechnung der Beleuchtung ist es erforderlich,dass sich der Lichtvektor, der Blickvektor und die Normale in einem Koordinatensy-stem befinden. Ublicherweise konvertiert man hierzu sowohl den Blickvektor als auchden Lichtvektor in den Texture Space. Diese Umrechnung erfordert neben der Norma-len die Kenntnis zweier anderer Vektoren, der Tangente und der Binormalen. Die dreiVektoren stehen dabei in folgendem Verhaltnis:

Binormale = Normale × Tangente (3.13)Normale = Tangente × Binormale (3.14)Tangente = Binormale × Normale (3.15)

Jeder Vertex des zu beleuchtenden triangulierten Objekts besitzt eine 3D Positionund eine 2D Texturkoordinate. Die Kombination dieser beiden Vektoren ergibt einen

16

Page 17: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

3.3 Berechnung des Texture Space

5D Vektor, der die Punkte v0, v1 und v2 des Dreiecks beschreibt:

v0 = 〈x0, y0, z0, s0, t0〉 (3.16)v1 = 〈x1, y1, z1, s1, t1〉 (3.17)v2 = 〈x2, y2, z2, s2, t2〉 (3.18)

Alle diese Koordinaten liegen in der Ebene des gleichen Dreiecks. Deshalb ist esmoglich, folgende Ebenengleichungen aufzustellen:

A0x + B0s + C0t + D0 = 0 (3.19)A1y + B1s + C1t + D1 = 0 (3.20)A2z + B2s + C2t + D2 = 0 (3.21)

Fur jede dieser drei Gleichungen konnen nun die Koeffizienten A, B, C und D be-rechnet werden.

〈A0, B0, C0〉 = 〈〈x0, s0, t0〉 − 〈x1, s1, t1〉〉 × 〈〈x0, s0, t0〉 − 〈x2, s2, t2〉〉 (3.22)D0 = −〈A0, B0, C0〉 ◦ 〈x0, s0, t0〉 (3.23)

〈A1, B1, C1〉 = 〈〈y0, s0, t0〉 − 〈y1, s1, t1〉〉 × 〈〈y0, s0, t0〉 − 〈y2, s2, t2〉〉 (3.24)D1 = −〈A1, B1, C1〉 ◦ 〈y0, s0, t0〉 (3.25)

〈A2, B2, C2〉 = 〈〈z0, s0, t0〉 − 〈z1, s1, t1〉〉 × 〈〈z0, s0, t0〉 − 〈z2, s2, t2〉〉 (3.26)D2 = −〈A2, B2, C2〉 ◦ 〈z0, s0, t0〉 (3.27)

Anschließend kann man diese Gleichungen so umformen, dass x, y, und z in Abhangig-keit von s und t ausgedruckt werden. Mit den folgenden Gleichungen konnen die 2DPositionen im Texture Space in ihre entsprechenden 3D Positionen im Object Space um-gewandelt werden.

x =−B0s − C0t − D0

A0(3.28)

y =−B1s − C1t − D1

A1(3.29)

z =−B2s − C2t − D2

A2(3.30)

17

Page 18: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

3.4 Beleuchtung

Von jeder dieser drei Gleichungen kann jetzt die partielle Ableitung nach s und tgebildet werden. Aus diesen partiellen Ableitungen lassen sich folgende Gleichungenfur die Tangente und die Binormale aufstellen:

Tangente =⟨

∂x

∂s,∂y

∂s,∂z

∂s

⟩=⟨−B0

A0,−B1

A1,−B2

A2

⟩(3.31)

Binormale =⟨

∂x

∂t,∂y

∂t,∂z

∂t

⟩=⟨−C0

A0,−C1

A1,−C2

A2

⟩(3.32)

Mit der so berechneten Tangente und Binormalen sowie der Vertex-Normalen lassensich der Lichtvektor L und der Blickvektor V in den Texture Space konvertieren:

LTBN =

Tx Ty Tz

Bx By Bz

Nx Ny Nz

·

Lx

Ly

Lz

(3.33)

3.4 Beleuchtung

Mit der Normalen aus der Normal-Map sowie dem konvertierten Lichtvektor undBlickvektor kann nun die Beleuchtung des Fragments durchgefuhrt werden. Dabeiwird die diffuse Beleuchtung nach dem Lambert Modell berechnet.

D = diffusM · (N ◦ L) (3.34)

Die diffuse Materialfarbe wird durch diffusM , die Normale durch N und der Licht-vektor durch L beschrieben. Die spekulare Beleuchtung hingegen wird nach dem Blinn-Phong Modell berechnet.

S = specularM · (N ◦ H)shininess (3.35)

H = ||L + V|| (3.36)

Hierbei handelt es sich bei specularM um die spekulare Materialfarbe. Der Halb-vektor H ist der Vektor, welcher in der Mitte zwischen dem Lichtvektor L und demBlickvektor V liegt. Der spekulare Exponent shininess kann in Abhangigkeit von denMaterialeigenschaften gewahlt werden.

3.5 Anwendung von Bump Mapping

Die Technik des Bump Mappings laßt sich relativ einfach und effizient implementierenund ermoglicht so einen verbesserten Tiefeneindruck der Texturen eines Objektes. ImAllgemeinen eignet sich Bump Mapping gut zur Darstellung von detailreichen Struk-turen mit geringer Amplitude. So kann Bump Mapping zum Beispiel zur Darstellung

18

Page 19: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

3.5 Anwendung von Bump Mapping

von feinen Details in Leder-, Kunststoff- oder Metallmaterialien ideal eingesetzt wer-den. Spatestens bei Betrachtung der Kanten eines Objektes, insbesondere bei Struk-turen mit hoherer Amplitude, wird allerdings deutlich, dass es sich bei Bump Map-ping nur um eine Simulation handelt, da Bump Mapping keine Silhouetten darstellenkann. Daruberhinaus werden weder Selbstverdeckung und Schatten noch Parallax Ef-fekte mit der verwendeten Bump Mapping Technik dargestellt. Dies schwacht den Rea-litatseindruck des Ergebnisses sicherlich ab. Trotzdem ist Bump Mapping eine Verbes-serung im Vergleich zu dem normalen Texture Mapping. Der mit Hilfe von Bump Map-ping zu erzielende Tiefeneffekt ohne große Einbußen bei der Geschwindigkeit und demSpeicherverbrauch der Applikation rechtfertigt sicherlich den Einsatz von Bump Map-ping in Computerspielen. In Abbildung 3.3 ist die Anwendung von Bump Mappingauf die Textur von einer Steinmauer sowie auf eine Hauttextur zu sehen. Das Beispielder Steinmauer wird auch noch zum Vergleich der Darstellung von Bump Mapping mitParallax und Displacement Mapping dienen.

(a) Steine (b) Haut

Abbildung 3.3: Ergebnis des Bump Mappings

19

Page 20: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

4 Parallax Mapping

4.1 Idee von Parallax Mapping

Die Idee von Parallax Mapping wurde zuerst von Tomomichi Kaneko [13] im Jahr 2001veroffentlicht. Im Gegensatz zu Bump Mapping, welches bei einer Veranderung derBetrachtungsrichtung flach und somit teilweise unrealistisch wirkt, berucksichtigt Par-allax Mapping die Verschiebung von Teilen der Oberflache relativ zueinander bei ei-nem Wechsel der Position des Betrachters, die sogenannte Parallaxe, und erreicht damiteinen hoheren Realitatsgrad.

Terry Welsh veroffentlichte im Jahr 2004 eine Technik [15], mit der Parallax Mappingunter Nutzung moderner GPUs verwendet werden kann. Außerdem erganzte er seinenAnsatz durch Offset Limiting, um so bestimmte Artefakte von Parallax Mapping zuvermindern. Im folgenden soll der Ansatz von Welsh erlautert werden.

Polygon

reale OberflächeA

B

Auge

aktuelleTextur-

koordinate

korrigierteTextur-

koordinate

Abbildung 4.1: Parallax Mapping [15]

Bei Verwendung einer Technik wie Normal Mapping konnen wir durch Ersetzungder Normalen, wie im Kapitel Bump Mapping beschrieben, eine strukturierte Ober-flache simulieren. Allerdings wirkt die entstandene Oberflache aus verschiedenen Be-trachtungswinkeln dennoch zu flach. In der Abbildung 4.1 ist die Ursache dieses Pro-blems dargestellt. Der Sehstrahl vom Auge trifft auf unser Polygon. Somit greifen wirmit der aktuellen Texturkoordinate auf die zu verwendenden Texturen sowie auf dieNormal-Map zu. Durch die Berechnungen beim Bump Mapping Verfahren ergibt sichein Punkt A auf unserer simulierten Oberflache. Der Punkt A ist jedoch nicht korrekt.Wir konnen sehen, dass der Sehstrahl bereits in Punkt B auf unsere zu simulieren-de Oberflache treffen wurde. Fur eine korrekte Simulation der Oberflache mussen wiralso die aktuelle Texturkoordinate dahingehend korrigieren, dass sich durch Anwen-

20

Page 21: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

4.1 Idee von Parallax Mapping

dung des Bump Mapping Verfahrens auf die korrigierte Texturkoordinate der Punkt Bergibt.

Beim Parallax Mapping wird genau diese Korrektur der Texturkoordinaten vorge-nommen, so dass durch diese Technik die Parallaxe, welche sich ergibt wenn wir dieunebene Oberflache aus verschiedenen Positionen betrachten, simuliert wird.

Als Voraussetzung zur Durchfuhrung von Parallax Mapping benotigen wir die gege-benen Texturkoordianten, einen Hohenwert aus einem Height-Field-Image und einenBlickvektor von der Oberflache zum Auge, wobei dieser Blickvektor sich im TextureSpace befinden muß. Die zugrunde liegende Idee bei der Berechnung der neuen Tex-turkoordinate ist, wie in Abbildung 4.2 dargestellt, die alte Texturkoordinate durcheinen berechneten Offset-Vektor zu verschieben. Der Offset-Vektor verlauft dabei par-allel zum Polygon, namlich vom Punkt A auf der zu simulierenden Oberflache direktoberhalb von P in Richtung des Blickvektors.

Polygon

Height MapA

Auge

T_old T_new

Offset

P

Abbildung 4.2: Berechnung des Offset-Vektors [15]

Zur Berechnung des Offset-Vektors muß als erstes der Blickvektor in einen norma-lisierten Blickvektor V konvertiert werden. Die zur Bestimmung der Struktur erfor-derliche Hohe h an der aktuellen Texturkoodinate Told kann dem Height-Field-Imageentnommen werden. Welsh verwendet zusatzlich noch einen Skalierungsfaktor s undeinen Bias-Wert b um die Werte aus dem Height-Field-Image, die im Wertebereich [0,1]liegen, in einen geeigneteren Wertebereich in Abhangigkeit von der zu texturierendenFlache zu konvertieren.

Dabei wird die Hohe h um den Skalierungsfaktor s skaliert, um die Textur an dieGroße der zu texturierenden Flache anzupassen. Durch den Bias b wird das Height-Field so verschoben, dass der mittlere Hohenwert des Height-Fields in der Oberflachen-ebene liegt. Die neue Hohe hsb berechnet sich wie folgt:

b = −0.5 · s (4.1)hsb = h · s + b (4.2)

Unter diesen Voraussetzungen kann nun der Offset-Vektor V parallel zur Oberflache

21

Page 22: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

4.2 Parallax Mapping mit Offset Limiting

des Polygons berechnet werden. Durch Addition des Offset-Vektors zur alten Textur-koordinate erhalt man schließlich die neue Texturkoodinate Tnew.

Voffset = hsb · Vx,y/Vz (4.3)

Tnew = Told + Voffset (4.4)

Mit Hilfe dieser neu berechneten Texturkoordinate kann nun auf die verschiedenenTexturen, wie die Normal-Map und die regulare Color-Map, zugegriffen werden.

4.2 Parallax Mapping mit Offset Limiting

Polygon

A Auge

T_old T_new

Offset

P

Height Map

Abbildung 4.3: Berechnung des Offsets-Vektors mit Offset Limiting [15]

Normales Parallax Mapping hat das Problem, dass bei flachen Betrachtungswinkelnder Oberflache Artefakte auftreten konnen. Die Berechnung der Verschiebung beimnormalen Parallax Mapping erfolgt unter der Annahme, dass die Hohe h an der Po-sition mit der neuen Texturkoordinate Tnew der Hohe an der Position mit der altenTexturkoordinate Told entspricht. Jedoch trifft man diesen Fall in der Realitat außerstselten an. Bei einer Oberflache variiert die Hohe der Struktur in der Regel in kurzenAbstanden voneinander.

Schaut der Betrachter die Oberflache aus einem relativ steilen Betrachtungswinkelan, so ergibt sich durch die Berechnung auch nur eine geringe Verschiebung der Tex-turkoordinate. Hierbei ist also mit einer fast identischen Hohe an der Position derneuen Texturkoordinate zu rechnen. Die Annahme einer gleichen Hohe fuhrt jedochdann zu Problemen bei der Berechnung der Parallaxe, wenn man die Oberflache auseinem flachen Winkel betrachtet. Durch die Berechnung ergibt sich in diesem Fall eingroßer Offset-Vektor, der zur Verschiebung der Texturkoordinate dient. Je weiter dieneue Texturkoordinate von der alten Texturkoordinate entfernt ist, desto hoher ist auchdie Wahrscheinlichkeit, dass an der Position der neuen Texturkoordinate eine andereHohe eingetragen ist als an der Position der alten Texturkoordinate. Da dies in der Be-rechnung jedoch bisher nicht berucksichtigt wurde, kann sich die Oberflache fur den

22

Page 23: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

4.3 Anwendung von Parallax Mapping

Betrachter als ein Durcheinander von verschiedenen Pixelwerten ohne klar erkennbareStruktur darstellen.

Zur Korrektur dieses Problems hat Welsh das Parallax Mapping um ein Offset Limit-ing erweitert. Die Idee dabei besteht darin, eine zu weite Verschiebung der Texturko-ordinaten zu verhindern und damit gleichzeitig eine bessere Garantie dafur zu liefern,dass sich der Height-Wert an der Position der neuen Texturkoordinaten nicht wesent-lich von dem Height-Wert an der Position der alten Texturkoordinate unterscheidet.Mit dieser Technik konnen die Artefakte, wie sie beim normalen Parallax Mapping auf-treten, verringert werden.

Konkret erreicht Welsh dies, indem er die maximale Verschiebung der Texturkoordi-nate auf eine Lange von hsb begrenzt. Dies wird in der Abbildung 4.3 dargestellt.

Voffset = hsb · Vx,y (4.5)

Tnew = Told + Voffset (4.6)

Die Wahl eines anderen Wertes zur Begrenzung der Verschiebung der Texturkoordi-nate ware auch moglich, da es sich bei diesem Ansatz von Parallax Mapping lediglichum eine Approximation der Parallaxe handelt. Es hat sich allerdings herausgestellt,dass sich durch Verwendung des hsb-Wertes gute Ergebnisse erzielen lassen, was denEinsatz dieses Wertes rechtfertigt. Welsh reduziert somit durch seinen Offset LimitingAnsatz den Fehler, der bei der Berechnung der Parallaxe bei flachen Betrachtungswin-keln entsteht.

4.3 Anwendung von Parallax Mapping

Bei Parallax Mapping handelt es sich, genauso wie beim Bump Mapping, um eine sehrschnelle Technik. Die Anzahl der Instruktionen im Vertex- bzw. Fragment-Programmist bei Parallax Mapping im Vergleich zu Bump Mapping nur geringfugig angestie-gen. Parallax Mapping hat allerdings den entscheidenden Vorteil, dass es die Darstel-lung von Parallax Effekten ermoglicht und dadurch einen realistischeren Eindruck dersimulierten Strukturen beim Betrachter hervorruft. Bei sehr flachen Betrachtungswin-keln erscheint die simulierte Geometrie jedoch auch mit der Technik des Parallax Map-ping als zu flach. Daruberhinaus handelt es sich bei Parallax Mapping nur um eine Ap-proximation der tatsachlichen Strukturen. Auffallend sind hierbei auch stufenahnlicheArtefakte, die sich teilweise erkennen lassen, wenn die Flache aus einem flachen Win-kel betrachtet wird. Eine Ursache der Artefakte ist sicherlich die Wahl eines zu großenOffset-Vektors. Dieses Problem laßt sich durch Wahl eines geeigneten s-Parameters inAbhangigkeit von der Große der zu texturierenden Flache relativ gut korrigieren. Par-allax Mapping eignet sich jedoch aufgrund der approximierten Berechnung der neu-en Texturkoordinaten genauso wie das Bump Mapping nicht zur Darstellung hochfre-quenter Strukturen mit hoher Amplitude. Auch Selbstverdeckung und -verschattung

23

Page 24: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

4.3 Anwendung von Parallax Mapping

lassen sich mit dieser Technik nicht darstellen. Die Abbildung 4.4 zeigt die Anwen-dung des Parallax Verfahrens auf dieselbe Steinstruktur, die bereits zur Darstellungvon Bump Mapping verwendet wurde.

Abbildung 4.4: Ergebnis des Parallax Mappings

24

Page 25: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

5 Displacement Mapping

5.1 Idee von Displacement Mapping

Displacement Mapping ist ein weiteres Verfahren, Oberflachen um detailliertere Struk-turen zu erganzen. Das bereits vorgestellte Parallax Mapping ermoglicht nur die Dar-stellung von groberen Strukturen mit niedriger Frequenz, wahrend es zur Simulationvon großen Verschiebungen und Selbstverdeckung ungeeignet ist. Mit DisplacementMapping hingegen laßt sich eine weitaus bessere Darstellung dieser genannten Falleerreichen. So ist es mit Displacement Mapping sogar moglich, schwierige Falle, wieText, gut darzustellen.

Man unterscheidet zwei Arten des Displacement Mappings. Zunachst ware das ech-te Displacement Mapping zu nennen. Displacement Mapping wurde in dieser Formzum ersten Mal 1984 von Cook [2] beschrieben. Hierbei werden die Informationenuber die Struktur der darzustellenden Oberflache einem Height-Field F (u, v) entnom-men. Mit dem aus dem Height-Field gewonnenen Hohenwert h wird nun jeder Ver-tex (x, y, z) der Originaloberflache P (u, v) entlang seiner Normalen N(u, v) um ebendiesen Hohenwert verschoben. Voraussetzung fur dieses Verfahren ist die detaillierte-re Unterteilung des zugrunde liegenden Meshes an den entsprechenden Stellen. DieGeometrie eines Objektes wird hierbei also verandert. Die Abbildung 5.1 stellt diesenZusammenhang dar.

P

P'

h ^ N

alteOberfläche

neue Oberfläche

N'

Abbildung 5.1: Idee von Displacement Mapping [3]

P ′(u, v) = P (u, v) + F (u, v) · N(u, v) (5.1)

25

Page 26: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

5.2 View-dependent Displacement Mapping

N(u, v) =N(u, v)|N(u, v)|

(5.2)

Obwohl durch die echte Veranderung der Geometrie optimale Ergebnisse im Aus-sehen der Objekte erzielt werden und auch schwierige Falle gut dargestellt werdenkonnen, bringt diese Vorgehensweise leider einen Nachteil mit sich. Durch die Erzeu-gung von zusatzlichen Vertices bei der Unterteilung des Meshes erhoht sich auch dienotwendige Rechenleistung sowie der Speicherverbrauch. Aus diesem Grunde ist ech-tes Displacement Mapping zum Einsatz in einer Echtzeitapplikation wenig geeignet.

Eine gute Alternative bietet ein Displacement Mapping Verfahren, welches die Geo-metrie eines Objektes nicht verandert, sondern, ahnlich wie bei Bump Mapping undParallax Mapping, die strukturierte Oberflache nur simuliert. Der Vorteil des Displa-cement Mapping Verfahrens gegenuber den beiden anderen genannten Verfahren liegtin der genaueren Bestimmung des Schnittpunkt von Oberflache und Blickvektor. Dar-aus ergibt sich eine bessere Visualisierung der zusatzlichen Merkmale der Oberflache.Moglich wird diese genauere Schnittpunktbestimmung durch den Einsatz des Ray-Tracing Verfahrens.

5.2 View-dependent Displacement Mapping

Das ”View-dependent Displacement Mapping“ von Wang et al. 2003 [14] ist eines derje-nigen Verfahrens, welches pixelorientiert arbeitet. Anders als beim klassischen Displa-cement Mapping von Cook, berechnet dieses Verfahren nicht die Abstande entlang derNormalen, sondern mißt den Abstand einer Referenzoberflache entlang der Blickrich-tung zu der zu simulierenden Oberflache. Letztere wird hierbei durch ein Height-Fieldreprasentiert.

26

Page 27: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

5.2 View-dependent Displacement Mapping

Referenz-oberfläche

Height-Field

Blickrichtung V

P

P'

d

h

l

Abbildung 5.2: Displacements mit View-dependent Displacement Mapping [14]

Fur mehrere mogliche Blickrichtungen V , ausgedruckt in spharischen Koordinaten(Θ,φ), wird ein Punkt P auf der Referenzoberflache mit den Texturkoordinaten (x, y)auf den entsprechenden Punkt P ′ der zu simulierenden Oberflache projiziert. DieserVorgang wird fur alle Punkte der Referenzoberflache durchgefuhrt. Der Punkt P ′ be-sitzt dabei die Texturkoordinaten (x′, y′). Da P fur verschiedene Blickrichtungen Vnaturlich auf verschiedene Punkte P ′ auf der zu simulierenden Oberflache projiziertwird, ist der zu speichernde Abstand d abhangig von x, y, Θ, φ. Daruberhinaus beein-flußt auch die Krummung c der Oberflache den projizierten Punkt P ′. Dieser Zusam-menhang wird in Abbildung 5.3 dargestellt.

V0V1

V2

V3

Vn

P'0P'1

P'2

P'3

P'n

P

V0V1

V2

V3

Vn

P'0P'1

P'2

P'3

P'n

P

Abbildung 5.3: Krummung der Oberflache [14]

Die Funktion zur Bestimmung der Abstande der Referenzoberflache zu der zu simu-lierenden Oberflache hangt also von funf Werten ab: x, y, Θ, φ, c. Deshalb werden die

27

Page 28: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

5.3 Per-Pixel Displacement Mapping

berechneten Abstande fur jeden gefundenen Schnittpunkt in einer funf-dimensionalenMap abgespeichert. Wird kein Schnittpunkt gefunden, so wird −1 in die Map eingetra-gen.

Durch die funf-dimensionale Map ergibt sich allerdings eine hohe Datenmenge, diees zu bewaltigen gilt. Verwendet man zum Beispiel ein Height-Field mit einer Auflo-sung von 128x128, 32x8 Blickrichtungen sowie 16 Krummungswerten so benotigt dieMap 64 MB Speicherplatz. Außerdem stellt die hohe Dimensionalitat der Map ein wei-teres Problem dar, weil die Graphikhardware im Allgemeinen auf eine geringere Di-mension beschrankt ist. Deshalb werden die Daten mit SVD1 aufgeteilt und kompri-miert. Mit Hilfe von SVD lasst sich die Dimension reduzieren. Dabei entstehen zweiMaps mit niedrigerer Dimensionalitat.

Zum Rendern des Bildes wird die Map im Fragment-Shader wieder dekomprimiertund ausgelesen. So kann der in der Map gespeicherte vorberechnete Abstand nun zurVerschiebung der Texturkoordinaten eingesetzt werden. Durch die funf Dimensionender Map ist bei diesem Verfahren allerdings ein hoher Aufwand im Vorverarbeitungs-schritt sowie ein allgemein erhohter Speicherbedarf zu erwarten.

5.3 Per-Pixel Displacement Mapping

Ein anderes Verfahren, welches pixelorientiert arbeitet, ist das ”Per-Pixel DisplacementMapping with Distance Functions“ von William Donnely [4]. Anders als beim View-dependent Displacement Mapping wird hier die Technik des Ray-Tracings nicht imVorverarbeitungsschritt sondern direkt im Fragment-Shader eingesetzt.

Mit Hilfe von Ray-Tracing soll bestimmt werden, fur welchen Teil des Bildes welcherTeil der Geometrie sichtbar ist. Normalerweise wird dabei ein Strahl vom Betrachterdurch die Geometrie geschickt und in regelmaßigen Abstanden abgetastet, um denSchnittpunkt des Strahls mit der Geometrie zu bestimmen. In diesem speziellen Fallvon Displacement Mapping muss man das Height-Field in regelmaßigen Abstandenabtasten, um den Schnittpunkt mit der zu simulierenden Geometrie zu finden, da dieHohenwerte in dem Height-Field die Geometrie simulieren. Hierbei tritt allerdings dasProblem des Undersamplings auf. Sofern die Abstande, in denen abgetastet wird, wei-ter als einen Texel voneinander entfernt sind, laßt sich nicht mehr sicherstellen, dassjeder mogliche Schnittpunkt gefunden wird. Durch die so verpassten Schnittpunktekonnen Lucken in der gerenderten Geometrie entstehen und Aliasing Effekte auftreten.Die Abbildung 5.4 zeigt den Effekt von Undersampling. Die grau schattierte Geome-trie wird hierbei vollstandig verpasst. Die triviale Losung ware sicherlich, die Abstandeder Abtastung zu verringern. Das so erzwungene Oversampling 5.5 stellt allerdings ei-ne Losung dar, die mit zu hohen Kosten verbunden ist. Daruberhinaus gibt es nichtunbedingt einen einheitlichen Samplingabstand, der fur alle Teile der zu simulieren-den Geometrie geeignet ist. Vielmehr mussen die wahlbaren Abstande in jeder Regionneu festgelegt werden, je nachdem wie die zu simulierende Geometrie beschaffen ist.

1singular-value decomposion

28

Page 29: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

5.3 Per-Pixel Displacement Mapping

p0

p1

p2

p3

p4

Abbildung 5.4: Undersampling [5]

p0p1

p2p3

p4p5

p6p7

Abbildung 5.5: Oversampling [5]

Eine gute Losung zu diesem Problem stellt die Verwendung des Konzepts von ”Sphe-re Tracing“ von John Hart [8] dar. Sphere Tracing ist eine geeignete Methode zum Ren-dern von implicit surfaces unter Verwendung des geometrischen Abstands. Die Ideedes Sphere Tracings wird in Abbildung 5.6 dargestellt. Hierbei wird ein Strahl vomPunkt p0 aus losgeschickt. Ziel ist es, den nachsten Abstand zu der Geometrie zu fin-den. Da die Richtung des nachsten Abstandes nicht festgelegt ist, bietet sich hierfureine Kugel an. Um den Abstand zu bestimmen, wird der Radius der Kugel so lan-ge vergroßert, bis ein Schnittpunkt zwischen der Kugel und der Geometrie gefundenwurde. In diesem Fall stellt p1 nun den Schnittpunkt zwischen Kugel und Strahl dar,nachdem der Schnittpunkt zwischen Kugel und Geometrie gefunden wurde. Ausge-hend von p1 kann dieser Vorgang nun so lange wiederholt werden und neue Punktepi erzeugt werden, bis der Strahl tatsachlich die Geometrie trifft. Dies ist in diesemBeispiel beim Punkt p4 der Fall. Deutlich ist zu erkennen, dass in p4 der Radius einerneuen Kugel den Wert Null annehmen wurde. Der Algorithmus konvergiert fur die-sen Fall. Insgesamt sind in dem gezeigten Beispiel also vier Abtastungen ausreichend,um sicherzustellen, dass kein Schnittpunkt verpasst wird oder ein zu hohes Maß an

29

Page 30: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

5.3 Per-Pixel Displacement Mapping

Abtastungen die Rechenzeit erhoht.

p0

p1

p2

p3p4

Abbildung 5.6: Sphere Tracing [4]

Dieses Konzept wird zur Berechnung einer Distance-Map im Fall von DisplacementMapping genutzt. Dabei wird fur jeden Punkt p im Texture-Space und eine OberflacheS eine Funktion wie folgt definiert:

dist(p, S) = min {d(p, q) : q in S} (5.3)

Diese Funktion liefert als Ergebnis die kleinste Distanz von dem Punkt p zur Ober-flache S. Diese Distanz kann nun in einer drei-dimensionalen Distance-Map abgespei-chert werden. Das genaue Vorgehen zur Erstellung einer Distance-Map wird im nach-sten Kapitel erlautert. Mit Hilfe der in der Distance-Map abgespeicherten Distanzenkonnen wir die Abtastung des Height-Fields optimieren. Dabei existiert ein Strahl miteinem Ausgangspunkt p0 und einer normalisierten Richtung d. Nun kann der neuePunkt auf dem Strahl, an dem auch das Height-Field abgetastet werden muss, durchfolgende Berechnung bestimmt werden:

p1 = p0 + dist(p0, S) · d (5.4)

Ausgehend von der Bedingung, dass p0 außerhalb der Geometrie liegt, liegt auchp1 außerhalb der Geometrie. Durch eine iterative Anwendung der Gleichung 5.4 undeine geeignete Anzahl der Iterationen kann der endgultige Schnittpunkt des Strahlsmit der Geometrie bestimmt werden. Mit diesem genauen Schnittpunkt laßt sich diedarzustellende Oberflache viel genauer simulieren als es beispielsweise beim ParallaxMapping, welches nur eine Approximation des Schnittpunktes berechnet, der Fall ist.

30

Page 31: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

5.4 Erstellung einer Distance-Map

5.4 Erstellung einer Distance-Map

Die Berechnung der Distance-Map im 3D basiert auf dem 4SED Algorithmus von Da-nielsson [11] zur Berechnung einer 2D-Distance-Map. Dieser Algorithmus hat einenAufwand von O(n), wobei n die Anzahl der Pixel in der 2D-Map ist. Um den Algorith-mus im 3D nutzen zu konnen, wird er noch entsprechend erweitert.

1 3 4 4 2 5 5 4 4 2 2 1 1

1D Height-Field 2D Distance Map

Abbildung 5.7: Erstellung einer 2D-Distance-Map [4]

Zunachst ist es erforderlich, die zu erstellende 3D-Distance-Map zu initialisieren. DieInitialisierung erfolgt in Abhangigkeit von dem gewahlten Height-Field F . Die 3D-Distance-Map sei im folgenden mit D bezeichnet. Die 3D-Distance-Map wird nun inz-Richtung durchlaufen. Ist der aktuelle z-Wert kleiner als der Hohenwert, der in demHeight-Field eingetragen ist, so wird die Distance-Map an dieser Stelle mit 0 initiali-siert. Die Hohenwerte des Height-Fields bilden so die zu simulierende strukturierteOberflache. Der Vorstellung nach befinden sich also alle Voxel, die einen kleineren z-Wert als den Hohenwert des Height-Fields an der entsprechenden Position haben, un-terhalb der zu simulierenden strukturierten Oberflache. Ihre Distanz ist somit immer 0.Ist der Hohenwert aus dem Height-Field jedoch großer als der z-Wert an der aktuellenPosition in der Distance-Map, so wird an dieser Stelle der Distance-Map zur Initialisie-rung eine maximale Distanz Z eingetragen.

for a l l xfor a l l y

for a l l zD( x , y , z ) = ( 0 , 0 , 0 ) i f z <= F ( x , y )D( x , y , z ) = (Z , Z , Z) i f z > F ( x , y )

Listing 5.1: Initialization [11] [4]

Im Anschluß an die Initialisierung der notwendigen Bereiche mit der maximalen Di-stanz kann nun in einem ersten Scan-Schritt begonnen werden, die richtigen Distanzenvon jedem Voxel in der 3D-Distance-Map zur simulierten Oberflache zu berechnen. DasVerfahren pruft hierbei, wie weit jeder Voxel der Distance-Map, sowohl in x-, in y- als

31

Page 32: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

5.4 Erstellung einer Distance-Map

auch in z-Richtung von der simulierten Oberflache entfernt ist. Die berechneten Distan-zen werden in jedem Voxel der Distance-Map fur alle drei Richtungen eingetragen. Imfolgenden Pseudo-Code sei die Breite des Height-Fields durch ”width“ und die Langedes Height-Fields durch ”height“ bezeichnet. Außerdem existiert eine wahlbare Tiefe

”depth“ der Distance-Map. Ohne diesen selbst gewahlten Tiefenwert wurde automa-tisch eine Distance-Map angelegt, deren Tiefe dem maximal moglichen Hohenwert imHeight-Field entspricht. Da das Height-Field im Prinzip ein Graustufenbild ist, waredie ubliche Tiefe der Distance-Map 255. Eine Distance-Map dieser Große ist jedoch auf-grund des großen Speicherverbrauchs problematisch. Deshalb reduziert man die Tiefe,wobei sich der Wert 16 relativ gut eignet.

for z =1 ,2 , . . . depthfor y =0 ,1 , . . . he ight −1

D( x , y , z ) = min ( D( x , y , z ) ,D( x , y , z−1) + ( 0 , 0 , 1 ) )

for y = 1 , 2 , . . . height−1for x = 0 , 1 , . . . width−1

D( x , y , z ) = min ( D( x , y , z ) ,D( x , y−1, z ) + ( 0 , 1 , 0 ) )

for x = 1 , 2 , . . . width−1D( x , y , z ) = min ( D( x , y , z ) ,

D( x−1, y , z ) + ( 1 , 0 , 0 ) )

for x = width−2, width−3, . . . 0D( x , y , z ) = min ( D( x , y , z ) ,

D( x +1 , y , z ) + ( 1 , 0 , 0 ) )

for y = height −2, height −3, . . . 0for x = 0 , 1 , . . . width−1

D( x , y , z ) = min ( D( x , y , z ) ,D( x , y+1 , z ) + ( 0 , 1 , 0 ) )

for x = 1 , 2 , . . . width−1D( x , y , z ) = min ( D( x , y , z ) ,

D( x−1, y , z ) + ( 1 , 0 , 0 ) )

for x = width−2, width−3, . . . 0D( x , y , z ) = min ( D( x , y , z ) ,

D( x +1 , y , z ) + ( 1 , 0 , 0 ) )

Listing 5.2: First Picture Scan [11] [4]

Nach diesem ersten Durchlauf erhalt man bereits Distanzen fur jede der drei mogli-chen Richtungen. Allerdings stimmen diese Distanzen nur fur die gerade gewahlte z-Richtung. Um die vollstandig richtigen Distanzen zu berechnen, muss die Distance-

32

Page 33: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

5.4 Erstellung einer Distance-Map

Map noch einmal in der anderen z-Richtung durchlaufen werden. Dies geschieht imfolgenden zweiten Scan-Schritt.

for z=depth−2, depth−3, . . . 0for y =0 ,1 , . . . he ight −1

D( x , y , z ) = min ( D( x , y , z ) ,D( x , y , z +1) + ( 0 , 0 , 1 ) )

for y = 1 , 2 , . . . height−1for x = 0 , 1 , . . . width−1

D( x , y , z ) = min ( D( x , y , z ) ,D( x , y−1, z ) + ( 0 , 1 , 0 ) )

for x = 1 , 2 , . . . width−1D( x , y , z ) = min ( D( x , y , z ) ,

D( x−1, y , z ) + ( 1 , 0 , 0 ) )

for x = width−2, width−3, . . . 0D( x , y , z ) = min ( D( x , y , z ) ,

D( x +1 , y , z ) + ( 1 , 0 , 0 ) )

for y = height −2, height −3, . . . 0for x = 0 , 1 , . . . width−1

D( x , y , z ) = min ( D( x , y , z ) ,D( x , y+1 , z ) + ( 0 , 1 , 0 ) )

for x = 1 , 2 , . . . width−1D( x , y , z ) = min ( D( x , y , z ) ,

D( x−1, y , z ) + ( 1 , 0 , 0 ) )

for x = width−2, width−3, . . . 0D( x , y , z ) = min ( D( x , y , z ) ,

D( x +1 , y , z ) + ( 1 , 0 , 0 ) )

Listing 5.3: Second Picture Scan [11] [4]

for z = 0 , 1 , . . . depthfor y = 0 , 1 , . . . height−1

for x = 0 , 1 , . . . width−1value= length (D( x , y , z ) )i f ( value > depth ) value = depthD( x , y , z ) = value

Listing 5.4: Final Distance-Map [4]

Fur die Berechnung der Distance-Map mit Hilfe des Algorithmus war es notwen-dig jeweils drei Distanz-Werte in jedem Voxel zu speichern. So konnte konkret die je-weilige Distanz in x- in y- und in z-Richtung ermittelt werden. Da der verwendete

33

Page 34: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

5.5 Rendern des Bildes mit Per-Pixel Displacement Mapping

Ansatz auf Sphere-Tracing beruht, reicht es fur die finale 3D-Textur, in der die Distanz-Informationen gespeichert werden, nur einen Wert je Voxel abzuspeichern. Dieser Di-stanz-Wert entspricht dem Radius der Kugel von der aktuellen Position zum nachstge-legenen Punkt auf der zu simulierenden Oberflache.

5.5 Rendern des Bildes mit Per-Pixel Displacement Mapping

5.5.1 Der Vertex-Shader

Der Vertex-Shader fur das Displacement Mapping ist hauptsachlich fur die Transfor-mation bestimmter Vektoren in den Texture-Space zustandig. Anders als beim Nor-mal Mapping wird beim Displacement Mapping zusatzlich zum Lichtvektor auch derBlickvektor in den Texture-Space konvertiert. Notwendig ist dies, weil der Blickvektorals Richtung des Strahls verwendet wird, welcher im Texture-Space zur Bestimmungdes Schnittpunkts mit der Geometrie verwendet wird. Daruberhinaus wird ein Skalie-rungsfaktor s verwendet, welcher umgekehrt proportional zu der zu erwartenden Tiefeder Struktur ist. Somit kann die Starke des Displacement-Effekts an die Große der ver-wendeten zu texturierenden Flache angepasst werden. Erreichen laßt sich dieser Effektkonkret durch Multiplikation der z-Komponente des Blickvektors im Texture-Space mitdem genannten Faktor s.

5.5.2 Der Fragment-Shader

Im Fragment-Shader wird als erstes die Richtung des Strahls, in diesem Fall des Blick-vektors, normalisiert. Hierbei reicht eine einfache Normalisierung auf die Lange voneins jedoch noch nicht aus. Es ist zu beachten, dass die Abstande in der Distance-Mapin Pixeln gespeichert werden, der Blickvektor jedoch in der Einheit von Texturkoor-dinaten angegeben ist. Ublicherweise hat man die Tiefe der Distance-Map auf einenniedrigeren Wert als die Breite und Hohe der Map beschrankt, zum Beispiel auf 16.So stellt man sicher, dass die Rechenzeit und der Speicherverbrauch nicht zu stark an-steigt. Gleichzeitig erhalt man dadurch jedoch auch unterschiedliche Einheiten fur denBlickvektor und die Distance-Map. Da der Blickvektor jedoch in einem spateren Ray-Marching Schritt zum Abtasten der Distance-Map zum Einsatz kommen soll, muss erin der Einheit der Distance-Map angegeben werden. Um dies zu erreichen, benotigtman den folgenden Normalisierungsfaktor:

Normalisierungsfaktor =

depth/widthdepth/height

1

(5.5)

Die verwendeten Großenangaben beziehen sich auf die Distance-Map. Durch Multi-plikation des Normalisierungsfaktors mit dem Blickvektor erhalt man einen Blickvek-tor, welcher in der Einheit der Distance-Map angegeben ist. Dieser Vektor kann nun furdas folgende Ray-Marching verwendet werden.

34

Page 35: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

5.5 Rendern des Bildes mit Per-Pixel Displacement Mapping

Mit Hilfe des Ray-Marchings soll der Schnittpunkt des Blickvektors mit der zu si-mulierenden Geometrie gefunden werden. Zunachst wird die Distance-Map am Start-punkt des Strahls abgefragt. Der so erhaltene Wert, distance, ist der Abstand, in demgarantiert keine Schnittpunkte des Strahls mit der Geometrie vorliegen. Geht man dennormalisierten Strahl, offset, um den angegeben Abstand entlang, so erhalt man einenneuen Punkt außerhalb der Geometrie. Ausgehend von diesem Punkt kann das be-schriebene Verfahren nun iterativ durchgefuhrt werden. Dabei nahert man sich in im-mer kurzer werdenden Intervallen dem Schnittpunkt des Strahls mit der Geometrieimmer weiter an. Ist der Schnittpunkt gefunden, so konvergiert das Verfahren. Voraus-setzung dafur ist die Wahl einer geeigneten Anzahl an Iterationen.

for ( i n t i = 0 ; i < NUM ITERATIONS ; i ++){

f l o a t d i s t a n c e = f1tex3D ( distanceTex , texCoord ) ;texCoord += d i s t a n c e ∗ o f f s e t ;

}

Listing 5.5: Ray-Marching [4]

Mit den Texturkoordinaten des so gefundenen Schnittpunktes konnen wir die Nor-male aus der Normal-Map auslesen und zur Beleuchtung verwenden.

In die Beleuchtungsberechnung wird auch ein Term fur die Selbstverschattung miteinbezogen. Dieser Term besagt, ob das zu beleuchtende Fragment von einem anderenTeil der simulierten Geometrie verdeckt wird. Ist dies der Fall, so wird das Fragmententsprechend abgedunkelt.

5.5.3 Selbstverschattung

Die Selbstverschattung ist eine geeignete Moglichkeit, den bereits erzielten Tiefenein-druck noch zu unterstutzen und damit den allgemeinen Realitatsgrad der simulier-ten Oberflache zu erhohen. Das bisher vorgestellte Verfahren des Displacement Map-pings laßt sich um eine Berechnung zur Erzeugung von Selbstverschattung erganzen.In der Abbildung 5.8 wird das Verfahren der Selbstverschattung dargestellt. Die Ideeder Selbstverschattung besteht darin, einen Test durchzufuhren, der ergibt, ob der neuberechnete Punkt P ′ auf der simulierten Oberflache Licht von der Lichtquelle erhaltoder im Schatten anderer simulierter Geometrie liegt.

35

Page 36: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

5.5 Rendern des Bildes mit Per-Pixel Displacement Mapping

Referenz-oberfläche

Height-Field

P

P'

h

Eye

Light

L

Offset

L'

LVec

EVec

Abbildung 5.8: Selbstverschattung [14]

Zur Durchfuhrung dieses Test ist es erforderlich, den Lichtvektor auf Schnittpunktemit der simulierten Geometrie zu testen. Dazu muss zunachst die Texturkoordinate furden Schnittpunkt L des Lichtvektors LV ec mit der originalen Geometrie bestimmt wer-den. Ahnlich wie beim Parallax Mapping kann diese Texturkoordinate durch Additioneines Offset-Vektors zur Texturkoordinate der aktuellen Position P ′ in der simuliertenGeometrie berechnet werden. Fur diese Berechnung ist es erforderlich, die Lange vonh zu kennen.

h = 1 − Z (5.6)

Bei dem Wert Z handelt es sich hier um den z-Wert der Texturkoordinate von P ′.Anschließend laßt sich der Offset berechnen:

offset = h · LV ecxy/LV ecz (5.7)

Der Lichtvektor wird hierbei durch den LV ec angegeben. Es ist zu beachten, dass derLichtvektor fur alle Berechnungen unter Verwendung eines Normalisierungsfaktors indie Einheit der Textur konvertiert werden muss. Hierbei kann der gleiche Normali-sierungsfaktor verwendet werden, der bereits zur Konvertierung des Blickvektors zumEinsatz kam. Die benotigte Texturkoordinate fur den Schnittpunkt L kann nun wie folgtbestimmt werden:

TL =

TP ′x

+ offsetxTP ′

y+ offsety

1

(5.8)

Mit Hilfe der neu berechneten Texturkoordinate fur den Punkt L und dem Lichtvek-tor LV ec kann nun ein weiterer Ray-Marching Schritt zur Bestimmung eines mogli-chen Schnittpunkts L′ mit der simulierten Geometrie ausgefuhrt werden. Existiert einsolcher Schnittpunkt L′, so wird er mit dem Punkt P ′ auf Gleichheit uberpruft. Da es

36

Page 37: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

5.5 Rendern des Bildes mit Per-Pixel Displacement Mapping

immer zu einer gewissen Ungenauigkeit kommen kann, wird beim Test auf Gleichheitein Epsilon-Faktor miteinbezogen. Fur den Fall, dass P ′ und L′ verschieden sind, liegtP ′ im Schatten. Das entsprechende Fragment wird dann bei der Beleuchtung abgedun-kelt. Liegt bei P ′ und L′ jedoch Gleichheit vor, so befindet sich P ′ nicht im Schatten undkann normal beleuchtet werden. [14]

5.5.4 Filterung

Bei der Mipmap-Filterung bzw. der anisotropen Filterung der Textur konnen bei Ver-wendung der neu berechneten Texturkoordinaten fur die simulierte Geometrie Proble-me auftreten. Die verschobenen Texturkoordinaten konnen Unstetigkeiten enthalten,welche aus Verdeckungen von simulierter Geometrie in der Textur resultiert. So wer-den zwei benachbarten Pixeln moglicherweise zwei weit voneinander entfernt liegendeBereiche aus der Textur zugeordnet. Aktiviert man Mipmapping oder anisotrope Filte-rung so benotigt die GPU Informationen uber die Ableitungen der Texturkoordinaten.Normalerweise approximiert die GPU diese Ableitungen durch finite Differenzen. Dafinite Differenzen bei Unstetigkeiten jedoch inkorrekte Werte der Ableitungen errech-nen, ergibt sich daraus auch die Wahl eines falschen Mipmap-Levels. Somit konnensichtbare Rander im dargestellten Bild entstehen, wenn Unstetigkeiten in den Textur-koordinaten auftreten.

Um diesen Effekt zu verhindern, berechnet man die Ableitungen mit Hilfe der un-veranderten Texturkoordinaten. Moglich ist dieses Vorgehen, weil die veranderten Tex-turkoordinaten in der Theorie auch stetig sind. Lediglich bei unterschiedlichen Be-trachtungswinkeln kann es zu Verdeckungen und somit zu Unstetigkeiten kommen.Daruberhinaus variieren die verschobenen Texturkoordinaten bezogen auf den theore-tisch korrekten Fall in ahnlicher Weise zwischen zwei Pixeln wie es bei den originalenTexturkoordinaten auch der Fall ist. Mit Hilfe der Ableitungen der unveranderten Tex-turkoordinaten kann der Mipmap-Level beim Zugriff auf die Normal- und die Color-Map anschließend korrekt gewahlt werden. Das funktioniert, da die Ableitungen deroriginalen Texturkoordinaten die Ableitungen der verschobenen Texturkoordinaten re-lativ gut annahern.

Der Einsatz von Mipmapping bei einer Distance-Map erscheint als ungeeignet, dafur einen entsprechend kleinen Mipmap-Level nur Mittelwerte in der Distance-Map ge-speichert sind. Zur genauen Darstellung der zu simulierende Strukturen werden jedochgenaue Werte benotigt. Daruberhinaus kann es durch Unstetigkeiten in den verander-ten Texturkoordinaten zur Wahl eines zu groben Mipmap-Levels kommen. Hieraus er-geben sich Probleme bei der Auswertung der Distance-Map. Aus diesen Grunden wirddie Distance-Map ohne Mipmapping gefiltert. Hieraus entstehende Aliasing-Effektesind allerdings nicht auf das Fehlen von Mipmapping zuruckzufuhren, da die Distanz-Werte nie direkt visualisiert werden, sondern nur bei der Generierung der verschobe-nen Texturkoordinaten zum Einsatz kommen. [4]

Zum Vergleich der unterschiedlichen Filterungsmoglichkeiten fur ein mit Displace-ment Mapping dargestelltes Objekt werden hier drei Abbildungen gezeigt. Bei allen

37

Page 38: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

5.5 Rendern des Bildes mit Per-Pixel Displacement Mapping

drei Bildern wird eine sehr klein strukturierte Farbtextur verwendet. Das erste Bild5.9 wurde ohne Mipmapping und anisotrope Filterung erstellt. Deutlich sind bei demhieraus entstandenen Bild die Artefakte zu erkennen, sobald das entsprechende Objektsich weiter vom Betrachter entfernt.

Abbildung 5.9: Ohne Filterung

(a) Mit GPU-Ableitung (b) Mit eigener Ableitung

Abbildung 5.10: Mipmapping und Anisotrope Filterung

38

Page 39: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

5.6 Anwendung von Per-Pixel Displacement Mapping

Zur Erstellung des zweiten Bildes 5.10 kamen Mipmapping sowie anisotrope Filte-rung zum Einsatz. Allerdings wurde zur Wahl des Mipmap-Levels die intern von derGPU berechnete Ableitung gewahlt. Bei dem Ergebnisbild laßt sich gut erkennen, dassder Mipmap-Level an denjenigen Stellen, an welchen die Distance-Map flach ist, kor-rekt gewahlt wurde, so dass keine Artefakte auftreten. Im Gegensatz dazu sind jedochan den durch Displacement Mapping veranderten Bereichen deutliche Artefakte zu er-kennen. Die Ursache dieser Artefakte ist durch die Unstetigkeiten in den durch Displa-cement Mapping veranderten Texturkoordinaten, welche zur internen Berechnung derAbleitung durch die GPU verwendet werden, und dem daraus resultierenden falschgewahltem Mipmap-Level zu erklaren.

Bei der dritten Abbildung 5.10 hingegen wurden zur Wahl des Mipmap-Levels dieeigenen mit Hilfe der unveranderten Texturkoordinaten berechneten Ableitungen ein-gesetzt. Auf diesem Bild sind nun keine Artefakte durch Schwierigkeiten beim Mip-mapping oder der anisotropen Filterung mehr zu erkennen.

5.6 Anwendung von Per-Pixel Displacement Mapping

Das Verfahren des Per-Pixel Displacement Mappings ermoglicht im Vergleich zu BumpMapping und Parallax Mapping eine deutlich verbesserte Darstellung der einzelnenStrukturen. Da es sich bei der Technik des Per-Pixel Displacement Mappings nicht, wiebei Parallax Mapping, um eine Approximation handelt, lassen sich mit diesem Verfah-ren auch hochfrequente Strukturen mit hoher Amplitude darstellen. Daruberhinaus er-zielt Displacement Mapping auch fur flachere Betrachtungswinkel noch einen hoherenRealitatsgrad als beispielsweise Parallax Mapping. Die Moglichkeit, Selbstverdeckungund - verschattung darzustellen, ist hierbei sicherlich ein wichtiger Faktor. Somit laßtsich mit Per-Pixel Displacement Mapping eine Struktur ideal simulieren.

Eingeschrankt wird die Qualitat der Darstellung jedoch dadurch, dass der Algorith-mus des Per-Pixel Displacement Mappings keine Darstellung von Silhouetten ermog-licht. Außerdem ist dieser Algorithmus fur planare Flache konzipiert, weshalb es zuVerzerrungen kommen kann, wenn das Verfahren auf Oberflachen mit einer hohenKrummung angewandt wird. [4]

Die Abbildung 5.11 zeigt die Anwendung von Displacement Mapping auf die bereitsbekannte Steinstruktur. Zur Demonstration von Displacement Mapping bei schwieri-geren Fallen, in denen Techniken wie Bump Mapping oder Parallax Mapping schonerhebliche Defizite aufweisen, dient die Abbildung 5.12, welche den Einsatz von Dis-placement Mapping zur Visualisierung von Text zeigt.

39

Page 40: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

5.6 Anwendung von Per-Pixel Displacement Mapping

Abbildung 5.11: Ergebnis des Displacement Mappings: Steine

Abbildung 5.12: Ergebnis des Displacement Mappings: Text

40

Page 41: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

6 Die Beispielszene

6.1 Modellierung der Szene

Eine geeignete Beispielszene zur Demonstration und zum Vergleich von Bump Map-ping, Parallax Mapping und Displacement Mapping wurde mit Hilfe der SoftwareMaya erstellt. Bei Maya, entwickelt von der Firma Alias, handelt es sich um eine 3DModellierungs- und Animationssoftware, die unter anderem in der Filmindustrie undin der Computerspieleindustrie eingesetzt wird.

Abbildung 6.1: Modellierte Beispielszene

Die Szene wurde komplett aus Polygonen erstellt. Da der verwendete Ansatz desDisplacement Mappings am besten fur planare Flachen angewandt werden kann, wur-de weitestgehend auf gekrummte Oberflachen fur Displacement Mapping Objekte ver-zichtet. Modelliert wurde ein Innenhof. Hierbei bieten sich vielfaltige Moglichkeitenzur Anwendung von Displacement Mapping. Die Wande sowie der Fußboden, welchejeweils durch eine einflache Plane realisiert wurden, lassen sich mit dem Verfahren desDisplacement Mappings mit unterschiedlichen Steinstrukturen versehen. Da die einzel-

41

Page 42: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

6.2 VRML

nen Steine nicht ausmodelliert werden mussen, wird die Anzahl der Dreiecke deutlichreduziert. Auch laßt sich mit Hilfe des Displacement Mappings ein besserer Tiefenef-fekt bei den Steinstrukturen erzielen, als es zum Beispiel mit Bump Mapping moglichist. Daruberhinaus finden sich Anwendungsmoglichkeiten fur Displacement Mappingbei der Tur, welche ebenfalls nur aus einer einfachen Plane modelliert ist und sich mitHilfe von Displacement Mapping mit Strukturen versehen laßt. Die Darstellung vonText wird in dieser Szene anhand eines Schildes demonstriert.

Da das Verfahren des Per-Pixel Displacement Mappings keine Darstellung von Sil-houetten ermoglicht, musste bei der Modellierung auf eine geeignete Wahl der Geome-trie geachtet werden. Fur einen realistischeren Eindruck war es erforderlich die Rand-bereiche der einzelnen Flachen, auf welche Displacement Mapping angewandt wurde,zu verdecken. Hierzu bot sich weitere Geometrie an. Am Beispiel der einzelnen Wandedienen großere Steine an den Kanten der Flachen zur Verdeckung der Randbereiche.

Im Anschluss an die Modellierung wurde die Szene entsprechend texturiert. In ei-nem abschließenden Schritt konnten zur Beleuchtung der Szene nun Lichtquellen wieDirectional Light, Spot Light und Point Light gesetzt werden. Die Abbildung 6.1 zeigtdie modellierte Szene ohne Anwendung von Shadern. Die Darstellung der Szene unterVerwendung von Shadern wird dagegen im Kapitel 7 gezeigt.

6.2 VRML

Im Anschluß an die Modellierung muß die erstellte Szene in das eigene Demonstrations-Programm importiert werden. Zum Austausch der Daten bietet sich das VRML-Datei-format 1 an. VRML ist ein Standard zur Beschreibung von 3D-Szenen und wurde ur-sprunglich fur die Nutzung im Internet entwickelt. Im Jahr 1994 wurde die erste Ver-sion von VRML auf der Basis des Open Inventor Dateiformats von Silicon Graphics(SGI) entwickelt. Mit VRML 1.0 lassen sich statische 3D-Szenen beschreiben. Anima-tionen der Objekte oder umfassende Moglichkeiten zur Interaktion wurden in dieserVersion noch nicht zur Verfugung gestellt. Eine Verbesserung stellt hier die VersionVRML 2.0 dar, welche 1996 auf der SIGGRAPH vorgestellt wurde. Im Jahr 1997 wurdeVRML 2.0 als VRML97-ISO 14772 Standard festgeschrieben. VRML 2.0 basiert auf derSprache Moving Worlds von Silicon Graphics. Im Gegensatz zu VRML 1.0 werden indieser Version auch Moglichkeiten zur Animation und zur Interaktion mit den Objek-ten zu Verfugung gestellt. Der Nutzer hat nun die Moglichkeit, in einer VRML-Dateieinzelnen Objekte anzuklicken und somit festgelegte Aktionen auszulosen oder in an-dere VRML-Welten zu gelangen.

Da viele 3D-Modellierungstools auch Moglichkeiten zum Import und Export vonVRML-Szenen bereitstellen, kann VRML auch zum Austausch von Daten zwischenden einzelnen Anwendungen genutzt werden. Dabei bietet das Format unter anderemMoglichkeiten um Objekte, Transformationen und Hierarchien, Lichtquellen, Materia-lien und Texturen zu beschreiben. [7]

1Virtual Reality Modeling Language

42

Page 43: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

6.2 VRML

Maya stellt einen integrierten VRML-Exporter zur Verfugung. Zum Import der Datenwurde ein eigener VRML Importer implementiert. Der Importer verfugt uber Funktio-nen zum Import der Punkte, Normalen und Texturkoordinaten der Objekte. Daruber-hinaus ist der Import der verwendeten Materialien, Lichtquellen sowie der verwende-ten Farbtextur moglich. Auch die Hierarchie der modellierten Objekte mit den Trans-formationen laßt sich importieren.

Eine explizite Unterstutzung von Shadern ist in VRML nicht integriert. Aus diesemGrund mussten die verwendeten Shader fur die modellierte Szene auf anderem We-ge in die VRML-Datei integriert werden. Hierzu bot der Materialname eine geeigne-te Moglichkeit. So wird bei der Erstellung des Materials in Maya der Name des ver-wendeten Shaders in den Materialnamen des Objektes integriert. Im Demonstrations-Programm werden mit Hilfe dieser Information der entsprechende Shader angebundenund die eingelesenen Materialeigenschaften verwendet.

43

Page 44: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

7 Ergebnisse

Beim Rendern der modellierten Beispielszene 7.1 kommen die bereits vorgestellten Sha-der fur Bump Mapping, Parallax Mapping sowie Displacement Mapping zum Einsatz.Zum Vergleich der einzelnen Shader wurde die Szene zunachst nur mit Bump Mappinggerendert. Beim zweiten Rendering der Szene wurde sowohl Bump Mapping als auchParallax Mapping zur Verbesserung der Oberflachenstruktur der Objekte verwendet.Im dritten Test hingegen wurden Bump Mapping und Displacement Mapping einge-setzt.

Abbildung 7.1: Gerenderte Beispielszene

Wie bereits in den Abschnitten 3.5, 4.3 und 5.6 beschrieben, lassen sich deutliche Un-terschiede in der Darstellungsqualitat der einzelnen Verfahren erkennen. Durch denEinsatz von Bump Mapping laßt sich die Darstellung der Oberflachenstruktur im Ver-gleich zum normalen Texture Mapping verbessern, jedoch ist diese Technik haupt-sachlich zur Simulation feiner Strukturen geeignet. Zur Simulation groberer Struktu-ren, wie zum Beispiel den Steinen der Wand oder des Bodens in Abbildung 7.2, er-scheint diese Technik als weniger geeignet, da hier keine deutliche Verbesserung derOberflachenstruktur beobachtet werden kann.

44

Page 45: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

7 Ergebnisse

(a) Bump Mapping

(b) Parallax Mapping

(c) Displacement Mapping

Abbildung 7.2: Vergleich der verschiedenen Verfahren

45

Page 46: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

7 Ergebnisse

Die entsprechenden Strukturen wirken unter Bump Mapping relativ flach. Außer-dem beinhaltet das Verfahren keine Selbstverdeckung und Selbstverschattung der si-mulierten Strukturen.

Parallax Mapping stellt hier eine Verbesserung bei der Simulation groberer Ober-flachenstrukturen im Vergleich zum Bump Mapping dar. Diese Technik berucksichtigtdie Parallaxe und ermoglicht so einen besseren Tiefeneindruck. Allerdings eignet sichdieses Verfahren, ebenso wie Bump Mapping, nicht zur Betrachtung der entsprechen-den Objekte aus einem flachen Winkel. Daruberhinaus stellt auch diese Technik keineSelbstverdeckung und Selbstverschattung zur Verfugung.

Die Probleme von Bump Mapping und Parallax Mapping bei der Simulation grobe-rer Oberflachenstrukturen lassen sich durch Einsatz des Displacement Mapping Ver-fahrens vermeiden. Mit Hilfe von Displacement Mapping sind selbst hochfrequenteStrukturen mit hoher Amplitude gut darstellbar. Sogar aus einem relativ flachen Be-trachtungswinkel sind die Strukturen noch gut zu erkennen. Außerdem ermoglichtdiese Technik die Selbstverdeckung und Selbstverschattung der simulierten Struktu-ren. Hierdurch gewinnt der Betrachter einen realistischeren Eindruck von der Ober-flachenstruktur.

Anhand einzelner Ausschnitte der Szene lassen sich die Unterschiede zwischen deneinzelnen Verfahren gut erkennen. So ist bei der Darstellung der Wand in Abbildung7.2 mit Hilfe von Bump Mapping aus einem flachen Betrachtungswinkel keine deut-liche Struktur zu sehen. Dennoch eignet sich Bump Mapping in diesem Beispiel zurSimulation der feineren Strukturen, wie es zum Beispiel an der Steinstruktur am Stein-bogen des Kellerfensters deutlich wird. Die Darstellung der groberen Strukturen hin-gegen kann durch den Einsatz von Parallax Mapping leicht verbessert werden. Erst mitDisplacement Mapping jedoch sind die groben Steinstrukturen, sowie die Struktur derMetallplatte und des Kellerfensters deutlich zu erkennen.

Anhand von weiteren Beispielen sind die verschiedenen Einsatzmoglichkeiten desDisplacement Mappings zu erkennen. So lassen sich neben den Strukturen der Wandund des Bodens auch die Strukturen des Fensters, der Fensterladen und der Metallplat-te, Abbildung 7.3, gut darstellen. Selbst Text, wie in Abbildung 7.3 gezeigt, stellt keinProblem fur Displacement Mapping dar.

46

Page 47: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

7 Ergebnisse

(a) Fenster

(b) Schild

(c) Metallplatte

Abbildung 7.3: Ergebnisse des Displacement Mappings im Detail

47

Page 48: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

7 Ergebnisse

Der vorgestellte Algorithmus des Per-Pixel Displacement Mappings bringt jedochauch einige Probleme bei der Darstellung von Objekten in einer Szene mit sich. DasHauptproblem ist sicherlich das Fehlen der Silhouetten. An den Kanten eines Objekteswird somit deutlich, dass es sich bei diesem Verfahren nur um eine Simulation handelt.Diesem Problem kann jedoch durch eine geeignete Modellierung der Szene begegnetwerden. Dazu mussen samtliche Kanten derjenigen Objekte, bei denen DisplacementMapping zum Einsatz kommt, durch andere Objekte verdeckt werden. Dies geschiehtin der vorgestellten Szene zum Beispiel durch die Steinbalken in den Ecken zwischenden einzelnen Steinwanden.

Abbildung 7.4: Gullideckel

Ein weiteres Problem beim Einsatz von Displacement Mapping in Kombination mitmehreren Objekten laßt sich am Beispiel der Abbildung 7.4 beobachten. Hier sieht es soaus, als wurde der Gullideckel uber dem Boden, welcher mit Displacement Mappingdargestellt wird, schweben. Dieses Problem ergibt sich aus der Berechnung des Displa-cement Mappings. Die Ausgangsflache, in diesem Fall eine einfache Flache fur den Bo-den, wird als Referenzoberflache fur das Displacement Mapping angesehen. Unter dieReferenzoberflache wird das Heightfield gelegt. Bei der anschließenden Berechnungzur Simulation der Strukturen mit Hilfe von Sphere Tracing wird vorausgesetzt, dassder hochste Punkt der jeweiligen Struktur stets auf der Hohe der Referenzoberflacheliegt. Alle anderen Strukturmerkmale liegen unterhalb dieser Referenzoberflache. So-mit entsteht der Eindruck, als wurde ein Objekt, welches sich uber einem mit Displace-ment Mapping dargestelltem Objekt befindet, uber diesem schweben. Zur Losung die-ses Problems mussten samtliche Displacement Objekte, sobald sie von einem anderenObjekt uberlagert werden, an den Schnittkanten zu diesem Objekt den hochstmogli-chen Wert in dem Height-Field aufweisen. Zur Texturierung einer Szene werden je-

48

Page 49: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

7 Ergebnisse

doch haufig Texturen eingesetzt, welche sich wiederholen. Aus diesem Grund ist dievorgeschlagene Losung nur schwer umsetzbar.

Wie bereits erlautert, bietet Displacement Mapping als einziges der drei Verfahren dieMoglichkeit zur Darstellung von Selbstverschattung. Dabei ist jedoch zu beobachten,dass die Darstellung der Selbstverschattung bei flachen Betrachtungswinkeln proble-matisch ist. Bei einem sehr flachen Betrachtungswinkel reicht die Anzahl der gewahltenIterationen zur Bestimmung des Schnittpunktes des Blickvektors mit der Distance-Mapmoglicherweise nicht aus, um den korrekten Schnittpunkt zu bestimmen. Zur Bere-chung der Schatten wird jedoch der Lichtvektor ausgewertet, welcher wieder in einemanderen, eventuell weniger flachem Winkel zur Oberflache steht. Aus diesem Grundwird mit Hilfe des Lichtvektors im Rahmen der Berechnung der Selbstverschattungmit hoher Wahrscheinlichkeit ein korrekter Schnittpunkt mit der Distance-Map gefun-den. Beim anschließenden Vergleich der beiden Schnittpunkt wird jedoch keine Uber-einstimmung festgestellt und somit Schatten fur den aktuellen Schnittpunkt festgelegt.Aus diesem Grund kann man haufig den Effekt beobachten, dass die betrachtete Flachein sehr großen Teilen verschattet wird, sobald man diese bei einer geringeren Anzahlder Iterationen aus einem zu flachem Winkel betrachtet. Dieser Fehler laßt sich durcheine Erhohung der Anzahl von Iterationen zwar beheben, allerdings ist diese Losungnur bedingt geeignet, da hierdurch die Performance stark verschlechtert wird.

Im Folgenden soll die Performance beim Einsatz des Bump-, Parallax- und Displace-ment-Shaders untersucht werden. Dabei wird zunachst auf den Speicherverbrauch dereinzelnen Shader eingegangen. Die im Bump-Shader verwendeten Texturen, Color-Map und Normal-Map, benotigen insgesamt 1,5 MB Speicher bei einer jeweiligen Auf-losung von 512x512 Pixel. Im Parallax Shader wird zusatzlich ein Height-Field verwen-det. Aus diesem Grund verbraucht der Parallax Shader bei gleicher Auflosung insge-samt 1,75 MB Speicher fur die Texturen. Beim Displacement-Shader wird neben derColor-Map und der Normal-Map mit einer jeweiligen von Auflosung 512x512 noch ei-ne dreidimensionale Distance-Map mit einer Auflosung von 512x512x16 verwendet.Der Speicherverbrauch des Displacement Shaders fur diese Texturen betragt deshalbinsgesamt 5,5 MB.

Getestet wurden die Shader auf einem System mit einem AMD Athlon XP 3200+,1GB Speicher und einer NVIDIA GeForce 6800 Ultra. Als einfache Testszene wurde ei-ne Plane mit einem Material und einer Lichtquelle gewahlt. Dabei erreichte der BumpShader fur eine Auflosung von 512x512 eine mittlere Framerate von 1088 fps. Der Par-allax Shader erreichte in der gleichen Konfiguration eine mittlere Framerate von 907fps. Ebenfalls getestet wurde der Displacement-Shader, welcher unter den gegebenenVoraussetzungen eine mittlere Framerate von 160 fps erreichte.

Mit Hilfe des Programms NVShaderPerf wurde außerdem die theoretische Perfor-mance der Shader ermittelt. Insgesamt zeigen die Ergebnisse deutlich, dass es sich beiBump Mapping, welches 17 cycles benotigt, um das schnellste Verfahren zur Verbes-serung der Oberflachenstruktur handelt. Parallax Mapping, welches 20 cycles benotigt,ist hingegen nur geringfugig langsamer als Bump Mapping. Ein deutlicher Unterschiedim Vergleich zu Bump Mapping und Parallax Mapping laßt sich bei der Laufzeit des

49

Page 50: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

7 Ergebnisse

Displacement Mappings erkennen. Displacement Mapping benotigt bei jeweils 16 Ite-rationsschritten fur den Schnittpunkttest und die Berechnung der Selbstverschattung122 cycles und ist mit 160 fps deutlich langsamer als die anderen beiden Verfahren. Einausschlaggebender Grund fur die geringere Framerate beim Displacement Mappingsind die beiden durchgefuhrten Ray-Marching Durchlaufe, wobei allein zur Berech-nung der Selbstverschattung ein gesamter Ray-Marching Durchlauf benotigt wird.

Die Shader wurden anschließend auch mit der bereits vorgestellten Beispielszenegetestet. Die Beispielszene besteht aus 36532 Dreiecken. Fur die Beleuchtung werden3 Lichtquellen verwendet. Dabei wird fur jede Lichtquelle ein Renderingpass durch-gefuhrt. Unter diesen Voraussetzungen erreichte die mit Bump Mapping gerenderteSzene durchschnittlich 44 fps. Mit Parallax Mapping wurden durchschnittlich 41 fpsgemessen. Unter Verwendung von Displacement Mapping hingegen wurden durch-schnittlich 13 fps erreicht. Auffallend waren dabei die stark schwankenden Frameratenbeim Displacement Mapping in Abhangigkeit von dem betrachteten Abschnitt der Sze-ne sowie dem Abstand des Betrachters von der Szene. Je mehr Objekte im betrachtetenTeilabschnitt der Szene mit dem Displacement Shader dargestellt werden, desto nied-riger wird die Framerate.

Test \ Shader Bump Mapping Parallax Mapping Displacement MappingNVShaderPerf 17 cycles 20 cycles 122 cyclesSimple Plane 1088 fps 907 fps 160 fps

Scene 44 fps 41 fps 13 fps

Tabelle 7.1: Ubersicht der Ergebnisse

50

Page 51: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

8 Fazit und Ausblick

In dieser Studienarbeit wurden drei verschiedene Verfahren zur Verbesserung der Ober-flachenstruktur von Objekten vorgestellt: Bump Mapping, Parallax Mapping und Dis-placement Mapping. Bump Mapping bietet sich aufgrund der hohen Performance zurSimulation feiner Oberflachenstrukturen an. Ideal geeignet ist das Bump Mapping so-mit zur Darstellung der Oberflachenstruktur bei Materialien wie Metall, Kunststoffoder Leder. Allerdings beinhaltet das Bump Mapping Verfahren keine Selbstverschat-tung der simulierten Strukturen. Durch eine Erweiterung des Verfahrens um HorizonMapping [12] besteht allerdings die Moglichkeit, die fehlende Selbstverschattung zuberechnen.

Bei der Darstellung hochfrequenter Strukturen mit hoher Amplitude hingegen er-reicht insbesondere das Displacement Mapping gute Ergebnisse im Hinblick auf dieDarstellungsqualitat. Ein Kritikpunkt ist jedoch, dass der Algorithmus des Per-PixelDisplacement Mappings nur fur planare Flachen konzipiert ist. Beim Einsatz auf Fla-chen mit einer hohen Krummung kann es deshalb zu Verzerrungen kommen Zur Lo-sung dieses Problems kann eine tetraedrische Projektion im Vertex Shader nach demKonzept von Wylie [17] eingesetzt werden.

Außerdem werden mit dem vorgestellten Per-Pixel Displacement Mapping Algorith-mus bisher die Silhouetten des Objektes, auf welchem das Verfahren angewandt wird,nicht verandert. Durch Erganzung eines Verfahrens zur korrekten Veranderung der Ob-jektsilhouette bei der Anwendung von Per-Pixel Displacement Mapping ließe sich dieDarstellungsqualitat allerdings noch weiter verbessern.

Wie beim Vergleich der drei Verfahren festgestellt wurde, handelt es sich bei BumpMapping und Parallax Mapping um zwei sehr schnelle Techniken. Das Per-Pixel Dis-placement Mapping ist zwar um einiges langsamer als Bump Mapping und ParallaxMapping, bietet dafur aber weitaus mehr Moglichkeiten bei der Darstellung der Ober-flachenstrukturen. In Zukunft ist außerdem mit einer weiteren Verbesserung der Per-formance der Graphik-Hardware zu rechnen, so dass auch komplexere Verfahren wiedas vorgestellte Displacement Mapping vermehrt in interaktiven Anwendungen ein-gesetzt werden konnen.

51

Page 52: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

Literaturverzeichnis

[1] James F. Blinn. Simulation of Wrinkled Surfaces. Computer Graphics (Proceedings ofSIGGRAPH ’78), 12(3):286–292, 1978.

[2] Robert L. Cook. Shade Trees. In Computer Graphics (Proceedings of SIGGRAPH 84),18(3):223–231, 1984.

[3] Michael Doggett. Displacement Mapping. ATI Research, 2003.

[4] William Donnelly. Per-Pixel Displacement Mapping with Distance Functions. InGPU Gems 2, Programming Techniques for High Programming Techniques for High-Performance Performance, Graphics and General Graphics and General-Purpose Compu-tation, pages 132–136, 2005. Available from: http://download.nvidia.com/developer/GPU Gems2/GPU Gems2ch08.pdf .

[5] R. Fernando and C. Zeller. GPU Applications. NVIDIA Corporation, 2005.

[6] Randima Fernando and Mark J. Kilgard. The Cg Tutorial : the definitive guide toprogrammable real-time graphics. Addison-Wesley, 2003.

[7] Gesellschaft fur Infomatik E.V. VRML, December 2005. Availa-ble from: http://www.gi-ev.de/service/informatiklexikon/informatiklexikon-detailansicht/meldung/90/ .

[8] J. C. Hart. Sphere tracing: A geometric method for the antialiased ray tracingof implicit surfaces. The Visual Computer, 12(10):527–545, 1996. Available from:citeseer.ist.psu.edu/hart94sphere.html .

[9] M. Kilgard. A practical and robust bump-mapping technique for today’s GPU’s.Technical report, NVIDIA Corporation, 2000. Available from: citeseer.ist.psu.edu/kilgard00practical.html .

[10] Emmett Kilgariff and Randima Fernando. The GeForce 6 Series GPU Architecture.In GPU Gems 2, Programming Techniques for High Programming Techniques for High-Performance Performance, Graphics and General Graphics and General-Purpose Compu-tation, pages 471–491, 2005.

[11] P. E. Danielsson. Euclidean distance mapping. Computer Graphics and Image Pro-cessing, 14:227–248, 1980.

52

Page 53: Displacement Mapping - Uni Koblenz-Landaucg/Studienarbeiten/SA_Recker.pdf · Displacement Mapping Studienarbeit Vorgelegt von Ruth-Maria Recker Institut fur Computervisualistik¨

Literaturverzeichnis

[12] Peter-Pike J. Sloan and Michael F. Cohen. Interactive horizon mapping. In Pro-ceedings of the Eurographics Workshop on Rendering Techniques 2000, pages 281–286, London, UK, 2000. Springer-Verlag. Available from: http://research.microsoft.com/ ∼cohen/bs.pdf .

[13] Tomomichi Kaneko et al. Detailed Shape Representation with Parallax Mapping.ICAT, 2001.

[14] L. Wang, X. Wang, X. Tong, S. Lin, S. Hu, B. Guo, and H. Y. Shum. View-DependentDisplacement Mapping. ACM Transactions on Graphics (Proceedings of SIGGRAPH2003), 22(3):334–339, 2003. Available from: http://research.microsoft.com/users/lfwang/vdm.pdf .

[15] Terry Welsh. Parallax Mapping with Offset Limiting: A PerPixel Approximationof Uneven Surfaces, 2004. Available from: http://www.infiscape.com/doc/parallax mapping.pdf .

[16] William R. Mark, Steve Glanville, and Kurt Akeley. Cg: A system for program-ming graphics hardware in a C-like language. ACM Transactions on Graphics, 2003.Available from: citeseer.ist.psu.edu/mark03cg.html .

[17] Brian Wylie, Kenneth Moreland, Lee Ann Fisk, and Patricia Crossno. Tetrahedralprojection using vertex shaders. In VVS ’02: Proceedings of the 2002 IEEE symposiumon Volume visualization and graphics, pages 7–12, Piscataway, NJ, USA, 2002. IEEEPress.

53