Filtern
Dokumenttyp
- Bachelorarbeit (2)
- Diplomarbeit (2)
- Studienarbeit (1)
Schlagworte
- Shader (5) (entfernen)
Institut
- Institut für Computervisualistik (5) (entfernen)
Die Entwicklung der echtzeitfähigen Computergrafik ermöglicht mittlerweile immer realistischere Bilder und die Hardware kann dafür optimal ausgenutzt werden, wodurch immer glaubwürdigere Lichtverhältnisse simuliert werden können. Eine große Anzahl von Algorithmen, effizient implementiert auf der Grafikkarte (GPU, auch Grafikprozessor)), sind fähig komplexe Lichtsituationen zu simulieren. Effekternwie Schatten, Lichtbrechung und Lichtreflexion können mittlerweile glaubwürdig erzeugt werden. Besonders durch Reflexionen wird der Realismus der Darstellung erhöht, da sie glänzende Materialien, wie z.B. gebürstete Metalle, nasse Oberflächen, insbesondere Pfützen oder polierte Böden, natürlich erscheinen lassen. Dabei geben sie einen Eindruck der Materialeigenschaften, wie Rauheit oder Reflexionsgrad.rnAußerdem können Reflexionen vom Blickpunkt abhängen: Eine verregnete Straße zum Beispiel würde Licht, abhängig von der Entfernung des Betrachters reflektieren und verwaschene Lichtreflexe erzeugen. Je weiter der Betrachter von der Lichtquelle entfernt ist, desto gestreckter erscheinen diese. Ziel dieser Bachelorarbeit ist, eine Übersicht über existierende Render-Techniken für Reflexionen zu geben, um den aktuellen Stand der Technik abzubilden. Reflexion entsteht durch den Einfall von Licht auf Oberflächen, die dieses in eine andere Richtung zurückwerfen. Um dieses Phänomen zu verstehen, wird eine Auffassung von Licht benötigt. Kapitel 2.1 beschreibt daher ein physikalisches Modell von Licht, gefolgt von Kapitel 2.2, das anhand von Beispielen ästhetisch wirkender Reflexionseffekte aus der realenrnWelt und den Medien die Motivation dieser Arbeit darlegt. In Kapitel 3 soll die generelle Vorgehensweise beim Rendern von Reflexionen deutlich gemacht werden. Danach wird in Kapitel 4 eine grobe Übersicht über existierende Ansätze gegeben. In Abschnitt 5 werden dann drei wesentliche Algorithmen vorgestellt, die zur Zeit oft in Spiel- und Grafikengines verwendet werden: Screen Space Reflections (SSR), Parallax-corrected cube mapping (PCCM) und Billboard Reflections (BBR). Diese drei Ansätze wurden zusammen in einem Framework implementiert. Dieses wird in Kapitel 5 vorgestellt und erklärt, gefolgt von detaillierten Beschreibungen der drei Techniken. Nachdem ihre Funktionsweise erklärt wurde, werden die Ansätze analysiert und auf ihre visuelle Qualität sowie ihre Echtzeitfähigkeit getestet. Abschließend werden die einzelnen Verfahren miteinander verglichen, um ihre Vor- und Nachteile zu untersuchen. Außerdem werden die gewonnenen Erfahrungen beschrieben und Verbesserungsansätze vorgeschlagen. Danach wird ein kurzer Ausblick zur voraussichtlichen Entwicklung von Render-Techniken spekularer Effekte gegeben.
Winzige vom Wind getriebene Wellen, flache, lange Wellen, steile sich überlagernde Wellen oder stürmische Brecher, sie alle kommen in jedem der Weltmeere und sogar in kleinen Seen vor. Die Wasseroberfläche ist eines der vielfältigsten Naturphänomene. Nicht nur die Bewegung der Wellen, auch die Spiegelung von Himmel, Sonne und Küste machen die Meeresoberfläche einzigartig. Gerade diese einzigartige Komplexität stellt ihre ganz eigenen Herausforderungen an die Nachahmung solcher Phänomene. Deshalb stellt die Berechnung von Wellen schon seit gut 400 Jahren Mathematiker vor eine große Aufgabe.
In den letzten fünfzig Jahren hat sich diese Herausforderung immer mehr in den Bereich der Informatik verschoben. Computergrafiker versuchen seit Jahrzehnten Wasser realistisch darzustellen. Die Forschung auf diesem Gebiet reicht mittlerweile von einfachen Ansätzen wie Rauschfiltern bis zu mathematisch hoch komplexen Ansätzen, wie der Fourier Transformation.
In der nachfolgenden Arbeit wird sowohl auf die geschichtliche Entwicklung der heutigen Wellentheorien, als auch auf die mathematischen Grundlagen dieser eingegangen. Schwerpunkt der Arbeit ist es, diese Methoden in OpenGL 3.3 zu implementieren.
Im Rahmen dieser Arbeit werden die Möglichkeiten und Grenzen des Geometry-Shaders in Bezug auf die Triangulierung von Freiformflächen untersucht. Dazu steht die Konzeption und Entwicklung eines Geometry-Shaders im Vordergrund, der Freiformflächen möglichst performant zur Laufzeit triangulieren kann. Hierzu werden NURBS-Datensätze eingelesen, trianguliert und dargestellt.
Die Idee des Displacement Mappings ist 30 Jahre alt und wurde im Laufe der Zeit immer weiterentwickelt, verbessert und realistischer. Die meisten Verfahren basieren auf der Simulation von Geometrie, d.h. das Displacement Mapping Verfahren rechnet auf speziellen Texturen, um den Eindruck von Tiefe zu verstärken. Echte Displacement Mapping Verfahren verändern tatsächlich die Geometrie, doch davon wurde in der Vergangenheit Abstand genommen, da die Berechnung auf der CPU zu aufwändig war bzw. das Ergebnis nicht den Aufwand rechtfertigte. Dazu mussten bisher die Punkte von der Applikation im geeigneten Detailgrad erzeugt werden. Die Verfahren der Geometrieerzeugung sind daher weniger performant. Außerdem können die texturbasierten Simulationsverfahren bereits blickwinkelabhängige Effekte, Selbstverschattung und auch Selbstverdeckungen darstellen. Als Nachteil sind die Randprobleme bei diesen Verfahren zu nennen. Dennoch hat Displacement Mapping mit diesen Verfahren zunehmend Einzug in die Spieleindustrie gehalten, für die es bisher zu rechenaufwändig war. Hier bieten die neusten Erweiterungen der GPU interessante Potentiale, da mit Geometry Shadern die Möglichkeit besteht, echte Geometry beschleunigt und adaptiv zu erzeugen. Ziel dieser Arbeit ist es verschiedene Verfahren für echtes Displacement Mapping mit dem Geometry Shader zu untersuchen. Dabei wird neue Geometrie aus einer Textur heraus erzeugt. Hierbei werden Polygone und Punkte generiert. In der Textur werden neben den Normalen noch die Höhenwerte im Alphawert gespeichert. Außerdem wird noch ein Verfahren untersucht, welches Volumeninformationen simuliert, um Überhänge und schwebende Objekte zu erzeugen.