Lensflare

Als erste Neuerung in diesem Kapitel fällt Ihnen vermutlich der Lensflare Effekt auf, welcher Spiegelungen in der Linse unserer virtuellen Kamera simuliert.

Der Effekt den wir nutzen stammt von diesem Beispiel auf Shadertoy. Der exakte Algorithmus für die Spiegelung ist für diese Veranstaltung nicht weiter relevant. Wohl aber relevant ist das Verständnis wie ein solcher 2D Effekt mit der Position der Sonne in unserer 3D Szene zusammenhängt.

Es lohnt sich hier die verschiedenen Änderungen in der Environment Struktur genauer unter die Lupe zu nehmen. Dort lässt sich auch erschließen wieso der Effekt von Objekten in unserer Szene scheinbar verdeckt wird.

Aufgabe

8.1: Der Lensflare Effekt hat einen Bug. Bei bestimmten Einstellungen - also einer bestimmten Kombination der Werte in der settings.h - sieht der Effekt komisch aus. Was genau ist komisch und wie genau lässt sich das beheben? Um diese Frage beantworten zu können benötigen Sie ein gutes Verständnis wie die Klasse Sun funktioniert.

Tangent Space Normal Maps

Als letzter wichtiger Schritt bevor wir unsere Shader einmal komplett überarbeiten können, benötigen wir noch ein wichtiges neues Konzept, nämlich die Tangent Space Normal Maps.

Ausführliche Erklärung zu diesem Thema finden Sie in diesem Artikel auf LearnOpenGL aber auch in der Dokumentation Ihrer bevorzugten Game Engine. Hier z.B. der Link zur Cryengine Doku

Unsere Vertex Klasse ist ab Kapitel 8 mit der Logik ausgestattet um die Tangenten zu errechnen und an die Shader zu übergeben.

In unserem neuen Shader shader_ship.glsl findet dieses Verfahren bereits Anwendung. Im shader_lit_drn.glsl nutzen wir aktuell noch Normal Maps in Objektkoordinaten.

Aufgabe (optional)

8.2: Unter /textures/item1_normal_ts.dds finden Sie eine neue Normal Map für Item1 im Tangent Space. Erstellen Sie einen neuen Shader für Item1 der diese neue Normal Map verwendet. Eine fertige Implentierung finden Sie im shader_ship.glsl. Diese Aufgabe soll dabei helfen das Normal Map Konzept nochmal isoliert zu betrachten bevor Sie an den komplexeren Shader in der nächsten Aufgabe gehen. Wenn Ihnen das Konzept bereits geläufig ist, können Sie diese Aufgabe gerne überspringen.

Neue Shader für Raumschiffe

Über dieses Thema haben wir ausführlich in der Veranstaltung am 1. Juni geredet. Heute erhalten Sie den passenden Shader um Raumschiffe zu zeichnen.

Hier ist der Link zum Dev Blog falls Sie diesen in der Veranstaltung verpasst haben: EVE Online Dev Blog zum Thema Shader

Die Ship Shader im Repo sind eine gute Annäherung an das Konzept aber bei weitem nicht fertig. Dafür brauchen wir ein paar Aufgaben mit denen wir uns in den kommenden Wochen befassen.

Aufgaben

8.3: Erstellen Sie einen vernünftigen Ship Shader incl. Reflektionen. Das Konzept der Reflektionen ist in fragment_shader_lit_drn.glsl von Kapitel 8 in einer möglichen Variante umgesetzt. Allerdings sind die beiden Verfahren nicht kompatibel, weil die Normalenvektoren sich unterscheiden.

8.4: Schaffen Sie eine Möglichkeit Schiffe per .model Konfigurationsdatei umlackieren zu können. Ziel ist es zwei Schiffe anzuzeigen, die den gleichen Shader Code verwenden aber unterschiedliche Farben haben.

Diese Seite speichern:
Redvery Journal
Computergrafik-Effiziente-Algorithmen-8.trj
Seite speichern
Computergrafik-Effiziente-Algorithmen-8.trj
Redvery Journal ist ein modernes Dateiformat mit dem diese Seite incl. aller Bilder und Anhänge gespeichert und offline verwendet werden kann.

Die passende App dazu gibt es kostenlos unter www.redvery.com/journal
Speichern
Abbrechen