Tutorial 35 – Deferred Water Rendering (Screen Space Water Rendering)

In unserem heutigen Tutorial werden wir uns mit der Darstellung von Wasser-Effekten befassen. Im Gegensatz zu den allgemein etablierten Techniken bei der Wasserdarstellung werden wir jedoch einen gänzlich anderen Weg einschlagen:


  • Einerseits erfolgt die Animation der dreidimensionalen Wasserwellen im Rahmen des Post-Processings ohne Verwendung zusätzlicher Vertexdaten für die Modellierung der Wasseroberfläche und
  • andererseits werden sämtliche Echtzeit-Reflexionen ohne einen zusätzlichen Render-Durchgang ausschließlich im Screen Space berechnet (Screen Space Local Reflections).













Features:
  • 3D-Wellenanimationen (ohne zusätzliche Vertex-Gitter)
  • Echtzeit-Reflexionen und Refraktionen der Umgebung (ohne zusätzliche Render-Durchgänge)
  • spiegelnde Reflexion des Sonnen- sowie des Umgebungslichts
  • Schaumkronen auf den Wellen und im Flachwasser-Bereich
  • Unterwasserdarstellung samt Kaustiken
































Alle für die Wasserdarstellung benötigten Render-Parameter finden sich in der Konfigurationsdatei DemoConfig.txt. Zuständig für die Wasserdarstellung ist der Fragment Shader ScreenSpace3DWaterWithFoamWithCaustics.frag, welcher im Verzeichnis Bin/EngineCoreShader/ zu finden ist.

Hinweise zum Erstellen eines neuen Projekts:

  • Kopieren Sie den Ordner GraphicsAndPhysicsFrameworkImports ins Projektverzeichnis
  • Kopieren sie alle dll-Dateien sowie die Konfigurationsdatei ResolutionAndRendering.txt aus besagtem Ordner ins gleiche Verzeichnis, in dem sich auch die exe-Datei befindet (in unseren Programmbeispielen ist dies das Bin-Verzeichnis)
  • Binden Sie die folgenden Dateien in Ihr Projekt ein: GraphicsAndPhysics_Framework_Imports.h, GraphicsAndPhysics_Framework_Imports.lib, glew32.lib, glew32s.lib, glut32.lib. Die Glew- und Glut-Bibliotheken ermöglichen die Nutzung der aktuellen OpenGL-Spezifikationen unabhängig vom Framework.

GraphicsAndPhysicsFrameworkDemo35.zip