Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mo Jul 22, 2019 11:38

Foren-Übersicht » Sonstiges » Projekte
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Homunculus Engine
BeitragVerfasst: Sa Apr 07, 2012 19:17 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
Link zum Meinungsthread

Hallo DGLer,

nachdem ich nun endlich mal, meiner Meinung nach, hervorzeigbare Ergebnisse habe, möchte ich euch mal mein aktuelles Projekt vorstellen.
Entstanden ist es eigentlich aus der Unterhaltung mit einem Freund, der nach einer möglichkeit sucht, Architektur in Echtzeit zu Visualisieren.
Leider hat sich nach einigen Versuchen herausgestellt, dass man doch noch sehr viel Aufwand betreiben muss um die von den Architekten erzeugten Modelle in
echtzeitfähig zu machen. Den meisten Raytracern (v-ray, octane, etc) scheinen mit solch vermurkster Geometrie keine Probleme zu haben.
Nun hab ich mich erstmal dazu entschlossen, die Engine so zu bauen wie es mir immer vorschwebte, eben ohne ein richtiges Ziel. :)
Entwickelt wird in Java mit Eclipse auf einer Windows 7 Kiste mit einem Intel Q9550 mit 8GB. Die Grafikkarte ist eine NVidia 8800 GTS 512.
Als OpenGL Bibliothek habe ich lwjgl gewählt. Ich benutze noch die libs slick, trove, vecmath und jorbis.

Features:
bereits implementiert:
SceneGraph
Deferred Render mit Inferred Lighting
Cascaded Shadowmapping
DoF
Bloom (HDR-Fake)
FSAA
Godrays
SSAO
Editor für Deferred Einstellung
Editor für Lichter
Debugger für FBOs.
Statistiken


in Arbeit/geplant:
Editor
erweiterung des SceneGraph um Frustumculling
Kollisionserkennung
Umstellung von Displaylists auf VBOs.
Umstellung von Fixedfunction Matrizenfunktionen auf eigene Matrixklassen und vollständiger Verzicht auf FFP. Ziel ist nur noch opengl > 3.0 zunutzen.
Rendern der Shadowmaps mit gebundenen Alphatexturen.

Die Engine nutzt zur Zeit 18 FBOs, die sich in Auflösung, Farbtiefe und Anzahl der Rendertargets unterscheiden.
Zuerst wird die Szene in einen FBO (scene) mit mehreren Rendertargets (Color, Position, Normal, Attributes) gezeichnet.
In den Attributes werden Shininess, Specularfactor und die Daten für die Godrays gespeichert.
Danach werden die Shadowmaps der Sonne erzeugt.
Im Deferred-Pass wird die im ersten Schritt gezeichnete Szene zusammen mit den Shadowmaps und dem Lichtbeitrag der Sonne in den nächsten FBO (finalScene) gezeichnet.
Mit aktiviertem Blending werden die einzelnen Lichtquellen (Punkt-/Spotlicht) mittels Bounding Box in den selbigen Puffer gezeichnet.
Nun werden aus "finalScene" verschiedene Effekte gerendert:
Ambient Occlusion aus der Normalmap (wobei die w-Komponente den Tiefenwert enthält).
Edge Detection für FSAA aus der DepthMap. (funktioniert ziemlich gut. besser als aus der Colormap)
Highpass für den Bloom/HDR Effekt.
Blur für DepthOfField Effekt.
Alle Ergebnisse werden geblurrt und dann im Posteffekt kombiniert.

Meiner Meinung nach ist die Anzahl der FBOs noch recht hoch. Ich habe bislang auch noch nicht viel Zeit in deren Optimierung gesteckt. Da lassen sich sicher einige Wiederverwenden, z.b.: beim Blurring.

Aber erstmal genug des Technikgeschwafels, Bilder sagen mehr: (Kommen noch!)

Ambient Occlusion
Bild
Ambient Occlusion + DepthOfField
Bild
Ambient Occlusion + DepthOfField + Bloom
Bild
Ambient Occlusion + DepthOfField + Bloom + FSAA
Bild
Ambient Occlusion + DepthOfField + Bloom + FSAA + Godrays
Bild
Ambient Occlusion + DepthOfField + Bloom + FSAA + Godrays + Shadows
Bild
Lighteditor
Bild
FBO Debug
Bild

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Homunculus Engine
BeitragVerfasst: Mo Apr 09, 2012 21:27 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
Fortschritt 1.
So. Dank TAK ist nun FXAA2 implementiert.
Ich muss wohl noch etwas an den Parametern schrauben, aber es sieht schon sehr ordentlich aus:
Bild
Hier der direkte Vergleich:
Bild

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Foren-Übersicht » Sonstiges » Projekte


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.057s | 17 Queries | GZIP : On ]