Screenshot Thread - Eine gute Idee?



  • Der spielerische Inhalt besteht momentan nur aus Testfunktionen-
    zzt kann man zb. Klötze werfen um die Physik Engine zu testen.
    Das Terrain wird mit einem einfachen Algorithmus GeLODed- was auch bitter nötig
    ist 🙂 . Der Himmel besteht nur aus einer Sphere mit einer Sonnenuntergangs Textur + Wolken Textur + Shader - ist nicht der weisheits letzter Schluss - aber das muss erstmal reichen.
    Die Konsole ist zentraler Bestandteil der Engine - das Komplette System kann über diese gesteuert werden. (Events, etc.)
    Momentan konzentriere ich mich aber darauf das Physik Modul (ODE) ordentlich zu integrieren. Damit sich die Avatare ordentlich abwickeln/abrollen können 😃



  • So, ich bin mal so frei mein Projekt vorzustellen. 😉

    Im Rahmen meiner Master-Thesis habe ich eine Anwendung zur GPU-basieren Berechung von Atmospheric Scattering zur Echtzeit-Darstellung eines dynamischen Himmels sowie Aerial Perspective geschrieben.

    Ein paar Screenshots findet man hier.

    Einige Infos zur Implementierung:

    • Theorie: Atmospheric Scattering (für Himmel und Terrain Aerial Perspective), basierend auf den Papern von Nishita
    • Technik: DirectX10, SM4.0, C++
    • Himmel: Implementiert in 2 unterschiedlichen Techniken. Einmal als SkyDome, wobei das Inscattering für jeden Dome-Vertex im Vertexshader berechnet wird. Ferner als SkyBox - hier werden pro Frame die 5 Seiten der Box berechnet (pro Rendertarget Texel wird ein Ray in die Scene geschossen und beim Schnittpunkt mit der Atmosphäre das Scattering ausgeführt) und anschließend die Box selber gerendert. Die Dome-Technique hat auf meiner GTX 8800 ca. 2900 FPS und die Box-Variante ca. 1000 FPS.
      Zur Laufzeit können die Techniken gewechselt und sämtlichen Parameter des Atmospheric Scattering geändert werden.
    • Terrain: Höhendaten gespeichert als FP32-Stream, Normalenberechnung per MWE, Texturierung per Texture Splatting (5 Schichten, automatische Alphamap Generierung). LOD: Bruteforce


  • sieht gut aus. kann man irgendwann auf quellen und dokumentation hoffen? 🙂



  • Nun ja, ich schreibe gerade an meiner Thesis und wenn die fertig ist, hat man quasi eine komprimierte 80 Seiten Dokumentation. 😃

    Bis dahin hab ich ein kleines Video erstellt: http://www.youtube.com/watch?v=lyPhwGoAqRw
    Die Qualität ist zwar mies, aber man bekommt einen kleinen Eindruck, wie es in Bewegung aussieht.


  • Mod

    schaut gut aus, fehlt noch die nacht 😉
    wie ist die framerate?
    ich bin auch auf die doku gespannt 🙂



  • kool, na denn viel glück damit 🙂 👍



  • rapso schrieb:

    schaut gut aus, fehlt noch die nacht 😉

    Öhm, die Nacht ist eigentlich bereits drinnen. Sieht man auch in dem Video und auf einem Screenshot in der Galerie.
    Hab gerade nochmal einen Screenshot mit etwas höherem diffusen Licht gemacht:
    http://www.infoboard.org/screenshots/msc thesis/night.png

    rapso schrieb:

    wie ist die framerate?

    Mit dem SkyDome Ansatz (Berechung der Rayleigh- und Mie-Inscattering Intensity für jeden Vertex einer Hemisphäre) erreiche ich bei einem 900x600 Fenster auf einer GeForce 8800 GTX ca 2500 FPS, siehe Titelzeile:
    http://www.infoboard.org/screenshots/msc thesis/fps1.png
    Bei dem Box Ansatz (Pro Frame rendern in 5 Seiten einer Skybox, wobei für jeden Texel die Farbe per Raycasting errechnet wird) komme ich auf ca 800 FPS:
    http://www.infoboard.org/screenshots/msc thesis/fps2.png

    Wenn ich noch das Terrain mit Brute Force (mit über 500 000 Vertices) plus Aerial Perspective aktiere, habe ich ca. 200 FPS. Die große Performance-Bremse ist also das Brute Force Rendern des Terrains - hier könnte man mit einem LOD Algo noch viel rausholen. Aber das Terrain und LODs waren nicht Bestandteile meiner Arbeit, drum wollte ich da nicht zu viel Zeit verschwenden.



  • this->that schrieb:

    Einige Infos zur Implementierung:

    • Theorie: Atmospheric Scattering (für Himmel und Terrain Aerial Perspective), basierend auf den Papern von Nishita
    • Technik: DirectX10, SM4.0, C++
    • Himmel: Implementiert in 2 unterschiedlichen Techniken. Einmal als SkyDome, wobei das Inscattering für jeden Dome-Vertex im Vertexshader berechnet wird. Ferner als SkyBox - hier werden pro Frame die 5 Seiten der Box berechnet (pro Rendertarget Texel wird ein Ray in die Scene geschossen und beim Schnittpunkt mit der Atmosphäre das Scattering ausgeführt) und anschließend die Box selber gerendert. Die Dome-Technique hat auf meiner GTX 8800 ca. 2900 FPS und die Box-Variante ca. 1000 FPS.
      Zur Laufzeit können die Techniken gewechselt und sämtlichen Parameter des Atmospheric Scattering geändert werden.
    • Terrain: Höhendaten gespeichert als FP32-Stream, Normalenberechnung per MWE, Texturierung per Texture Splatting (5 Schichten, automatische Alphamap Generierung). LOD: Bruteforce

    Hallo,

    die Screenshots schauen super aus, respekt. Ich habe mich vor einiger Zeit ebenfalls mit den Thema auseinander gesetzt, daher würden mich einige Details deiner Implementierung interessieren:

    1. Warum benutzt du Direct3D 10? Ich kann für den Anwendungsfall keine großen Vorteile sehen (höchstens vielleicht fürs Terrain).

    2. Berechnest du die Lookup-Table für die Luftdichte auf der Grafikkarte oder auf der CPU?

    3. In welchen Intervall berechnest du die Lookup-Table neu?

    Danke im voraus & Gruß
    gruntle



  • gruntle schrieb:

    1. Warum benutzt du Direct3D 10? Ich kann für den Anwendungsfall keine großen Vorteile sehen (höchstens vielleicht fürs Terrain).

    Hauptsächlich weil es der Fachbereich meiner Uni wollte;) Es ging quasi auch darum die neueste Technik zu benutzen, um die Verwendbarkeit von Atmospheric Scattering in aktuellen Echtzeit-Anwendungen zu ermitteln. Wirklich notwendig wäre nur SM3.0 für den Vertex Texture Fetch gewesen.

    gruntle schrieb:

    2. Berechnest du die Lookup-Table für die Luftdichte auf der Grafikkarte oder auf der CPU?

    Das sind meine 2 wichtigsten Formeln:
    http://www.infoboard.org/screenshots/scattering.png
    und ich berechne die Optical Depth t (für Rayleigh und Mie) sowie die Dichte e^(-h/H0) (wieder für Rayleigh und Mie) auf der CPU vor. Diese 4 Werte passen genau in einen Texel mit RGBA Format einer 2D Textur (Lookup table).
    Zur Laufzeit hab ich dann lediglich das äußere Inscattering Integral - alle Werte innerhalb dieses Integrals sind nur noch Texture Fetches in die LUT.
    Es gibt zwar noch einige Fallstricke, aber das führt hier zu weit;)

    gruntle schrieb:

    3. In welchen Intervall berechnest du die Lookup-Table neu?

    Die x-Achse der LUT enspricht der Höhe in der Atmosphäre, die y-Achse beschreibt einen Winkel. TexCoords von (0.5, 0.5) ensprechen z.B. einem Strahl, der auf halber Höhe der Atmosphäre startet und im 90° Winkel abgefeuert wird. An dieser TexCoord steht dann die Optical Depth t für diesen Strahl.
    Die LUT wird einmal bei der Initialisierung der Anwendung berechnet und danach nie mehr. Da sie nur von der Höhe der Atmosphäre und der Dichteverteilung abhängt, die sich ja nicht so oft ändern;), ist es auch nicht notwendig. Dennoch kann die LUT zur Laufzeit verändert werden - das sieht man in dem youtube Video, wo ich die 2 Regler ganz unten rumschiebe (das verändert die Rayleigh, Mie Dichte).



  • Huhu,
    ich hab gestern mal angefangen mein kleines Homeproject
    zu starten. Es soll natürlich noch wachsen, später soll
    auch noch ein Terrain per HeightMap mit implentiert werden,
    Texturierung kommt selbstverständlich auch noch 😉

    http://www.abload.de/img/pivke6l7.jpg



  • ich arbeite zur zeit an einer externen mapapplikation für das online-rollenspiel eve-online.

    auf basis der verfügbaren daten (statischer datenbank export von ccp selbst und daten des ingame browsers) ist es möglich positionen der eigenen flotte darzustellen, wegpunktberechnungen durchzuführen und übliche daten über planetarische objekte anzeigen zu lassen. der server, welcher als http-server für den ingame browser dient und daten über die eve-api bezieht ist weitestgehend fertig, nun feile ich an der kartenapplikation selbst.

    dieser screenshot ist schon relativ alt:

    linkage

    hier habe ich noch mit dem GLWidget von QT experimentiert, was äusserst komfortabel ist, allerdings machte mir die performance der eventqueue von QT einige probleme.
    deshalb habe ich angefangen einige generische sachen unabhängig von QT portabel zu gestalten. mal sehen, vielleicht wirds ja nochmal fertig 🙂



  • @_sothis
    Sieht Nett aus, wie sieht es aktuell aus ?

    Also ich hab die letzten Tage noch ein bischen was getan, sieht jetzt so aus :
    http://www.abload.de/image.php?img=pivke_homep.kdj.jpg



  • pivke schrieb:

    @_sothis
    Sieht Nett aus, wie sieht es aktuell aus ?

    nicht viel anders, nur etwas 😉

    linkage



  • Zur Erstellung einer Grafik für meine Facharbeit habe ich eine kleine Demoapplikation zur perspektivischen Projektion geschrieben, in der man schön die clipping Ebenen sieht.

    Perspective Projection Demo



  • Sehr schön xindon. Allerdings musste ich auch mit Bedauern feststellen das ich mit keinem Wort bei deinem Quake3 BSP Zeug erwähnt wurde... Frechheit! :p

    Da wir grad dabei sind. Ich hab ja auch mal sowas geschrieben, vor vielen Jahren:

    http://bl4ckd0g.bl.funpic.de/projects/images/q3bsp007.jpg
    http://bl4ckd0g.bl.funpic.de/projects/images/q3bsp010.jpg
    http://bl4ckd0g.bl.funpic.de/projects/images/q3bsp011.jpg
    http://bl4ckd0g.bl.funpic.de/projects/images/q3bsp002.jpg

    Was ging:
    Quake3 Softwareshader (komplett mit Texturtransformation, Multitexturing, ...), Bezierpatches, Vertexlighting, Transparente Objekte, ...

    Was nicht ging:
    Models, Skybox, Fake volumetrische Nebel, Q3 Func_X, ...



  • Netter Thread!

    Zwar ist mein aktuelles "Projekt" (wenn man es denn so nennen kann 😃 ) noch lange nicht fertig; aber weil ich gerade mal nicht lernen muss, arbeite ich wieder daran:

    Mein kleines Tower Defense Game:

    Zwei ältere Bilder:
    http://i191.photobucket.com/albums/z231/kuldren/280908scr3.jpg
    http://i191.photobucket.com/albums/z231/kuldren/scr280908.jpg

    Hier sind die Neusten:
    http://i191.photobucket.com/albums/z231/kuldren/251008-01.jpg
    http://i191.photobucket.com/albums/z231/kuldren/251008-02.jpg
    http://i191.photobucket.com/albums/z231/kuldren/251008-03.jpg
    http://i191.photobucket.com/albums/z231/kuldren/251008-04.jpg

    Ich habe auch ein paar Videos bei Youtube hochgeladen:
    Das ist mMn. das Beste:
    http://www.youtube.com/watch?v=L5Oje1kIaAE


  • Mod

    danke dass du unseren screenshot thread wiederbelebst 🙂

    schoen zu sehen wie weit du schon gekommen bist, hatte mir vor ein paar tagen die tubes angesehen, das eine wo die alle auf den cursor geballert haben, sah recht cool aus, vielleicht kannst du ja als erweiterun zum default tower defens einbauen, dass man selbst so schiessen kann 🙂

    good work 👍 🙂



  • rapso schrieb:

    danke dass du unseren screenshot thread wiederbelebst 🙂

    schoen zu sehen wie weit du schon gekommen bist, hatte mir vor ein paar tagen die tubes angesehen, das eine wo die alle auf den cursor geballert haben, sah recht cool aus, vielleicht kannst du ja als erweiterun zum default tower defens einbauen, dass man selbst so schiessen kann 🙂

    good work 👍 🙂

    Danke..hört man gerne:)
    Ich hab schon ein paar special features in Planung...keine Sorge 😉
    Das von dir erwähnte ist u.A. eines davon.



  • habe vor kurzem meinen DFF format loader fuer die Irrlicht Engine bugfixed und veroeffentlicht.
    damit kann man die welten der GTA-spiele (3, VC, SA) in die engine laden und rendern. aber im moment funktioniert nur GTA3 so richtig.

    screenshot:
    http://b66883.com/projects/dffloader/screenshot2.jpg

    details:
    http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=30439



  • Verdammt, wollte die Tage auch nen DFF-Loader schreiben, bin ich wohl doch nicht der einzige >_<.


Anmelden zum Antworten