[Projekt] Destructible Terrain on GPU (Prototyp)

Hier könnt ihr euch selbst, eure Homepage, euren Entwicklerstammtisch, Termine oder eure Projekte vorstellen.
Forumsregeln
Bitte Präfixe benutzen. Das Präfix "[Projekt]" bewirkt die Aufnahme von Bildern aus den Beiträgen des Themenerstellers in den Showroom. Alle Bilder aus dem Thema Showroom erscheinen ebenfalls im Showroom auf der Frontpage. Es werden nur Bilder berücksichtigt, die entweder mit dem attachement- oder dem img-BBCode im Beitrag angezeigt werden.

Die Bildersammelfunktion muss manuell ausgeführt werden, die URL dazu und weitere Details zum Showroom sind hier zu finden.

This forum is primarily intended for German-language video game developers. Please don't post promotional information targeted at end users.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Artificial Mind »

So, ich bin bei der Texturierung auf Triple-Projection umgestiegen, damit hab ich nur noch 6 Texture Calls pro Fragment.
Unter Windows scheint das ganze etwas langsamer zu laufen, das liegt irgendwie an der Qt+OpenGL+Windows-Combi.
Aber unter Linux habe ich bei 2 Mio Dreiecken meine 300+ fps. Umgerechnet in Minecraft Maßstäbe ist das ca. die 5-fache Sichtweite von Minecraft. (Ich habe 21 x 21 Chunks, die jeweils 32x32 in xz-Richtung sind. Minecraft hat 9 x 9 Chunks zu je 16x16)

Hier eine Windows-Version mit 5 x 5 Chunks je 32x32 in xz-Richtung, sowie maximal 20 Chunks tief:
https://dl.dropbox.com/u/443720/Terrain ... indows.zip
Fixed Exe ohne jpgs: https://dl.dropbox.com/u/443720/Terrain ... xedExe.zip (kann sein, dass man die nehmen muss, wenn er die jpg nicht findet)
5 x 5 Chunks mit Triple Projection Texturing
5 x 5 Chunks mit Triple Projection Texturing
Zuletzt geändert von Artificial Mind am 18.06.2012, 23:07, insgesamt 1-mal geändert.
Deadline
Beiträge: 10
Registriert: 29.08.2011, 07:07

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Deadline »

Mich bestraft diese Version mit einem Absturz und der Fehlermeldung: "Loading image Texture/Dummy.jpg has failed! FileManager::getResource: Resource could not be loaded: Dummy.jpg"
Habe es mal mit Adminberechtigung und Windows XP SP3 Kompatibilitätsmode probiert aber das hilft nichts. Achja, ich nutze Win8 - aber unter dem Kompatibilitätsmodus meldet er mir nicht mehr "Untested Windows version 6.2 detected!" weshalb ich davon ausgehe, dass der Build eventuell einfach fehlerhaft ist?
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Artificial Mind »

Hm, also ich habe das unter Windows 7 64bit kompiliert (allerdings 32bit, wenn ich das richtig erinnere).
Bei einem Kollegen und mir unter Windows 7 läuft es einwandfrei. "Loading image failed" ... ist denn die Textur in dem Pfad? Also ist die zip komplett entpackt?
Deadline
Beiträge: 10
Registriert: 29.08.2011, 07:07

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Deadline »

Bin auch auf einer 64bit Maschine für den Zweifelsfall.
Die ist komplett entpackt als Dummy.jpg ;)
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Artificial Mind »

Ok wenn du Qt nicht installiert hab, meine ich mich erinnern zu können, dass es Probleme mit jpgs gab.

Nimm mal diese exe hier, die benutzt keine jpgs mehr: https://dl.dropbox.com/u/443720/Terrain ... xedExe.zip
Deadline
Beiträge: 10
Registriert: 29.08.2011, 07:07

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Deadline »

Tatsächlich lag da das Problem, läuft jetzt!
Sieht auf jeden Fall sehr interessant aus!
Benutzeravatar
Jonathan
Establishment
Beiträge: 2951
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Jonathan »

Jo, funktioniert und ist lustig :)
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
CrystalCoder
Beiträge: 54
Registriert: 03.03.2002, 17:51
Kontaktdaten:

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von CrystalCoder »

Hm, ich wollte es grad mal ausprobieren.
Das Programm startet auch (mit der fixed exe) und ich kann sehen wie die Bälle anfangen zu fallen, jedoch ins "nichts" weil kein Terrain da ist. Muss ich das erstmal aktivieren oder stimmt da was nicht?
Das ganze unter Win7 x64 / NVIDIA GF GTX 285 / ohne Qt.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Artificial Mind »

ja das mit dem ins "nichts" fallen habe ich mittlerweile bei meiner Version gefixt. Das liegt daran, dass deine Graka nur OpenGL 3.3 kann und anscheinend wird gl_InstanceID beim Instanced-Drawing nicht vernünftig gesetzt, wenn man Transform Feedback Buffer hat. Ich bin halt auf normales Drawing und gl_VertexID umgestiegen. Ist aber noch nicht hochgeladen. Ich guck mal morgen oder so, ob ich eine neue Windows-Version fertig bekomme.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Artificial Mind »

So ich habe mal ein wenig weitergearbeitet:
- Mehrere Materialtypen
- Viewfrustum Culling
- Z-Prepass
- Automatische Chunk-Generierung in der Umgebung von veränderten Chunks
- Verschiedene Texturen für die Projektions-Seiten
- Diverse Speicheroptimierungen
Top-Down-Ansicht
Top-Down-Ansicht
Aus-Dem-Krater-Ansicht
Aus-Dem-Krater-Ansicht
Hiddenline-Ansicht
Hiddenline-Ansicht
Noch eine Ansicht
Noch eine Ansicht
Es müssen noch die Übergänge zwischen den Materialien gesmoothed werden und Chunk-Grenzen müssten noch vernünftig konsistent gemacht werden.
Momentan kann jedes Material einen eigenen Shader haben, was ein unglaublicher Vorteil ist.
LOD ist auch ein Thema, allerdings nicht unbedingt für den Prototypen (genauso wie ich vernünftige Material- und Chunkübergänge für den Prototypen nicht unbedingt priorisiere).

Als nächstes möchte ich mich jedoch der Fluid-Simulation widmen. Hat da jemand gute Ideen wie man auch potentiell große Fluidmengen performant überzeugend simulieren kann?
antisteo
Establishment
Beiträge: 1014
Registriert: 15.10.2010, 09:26
Wohnort: Dresdem

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von antisteo »

Artificial Mind hat geschrieben:Als nächstes möchte ich mich jedoch der Fluid-Simulation widmen. Hat da jemand gute Ideen wie man auch potentiell große Fluidmengen performant überzeugend simulieren kann?
gwX hat in der Hinsicht pro Frame eine Map von aktiven Fluiden. In jeder Simulationsiteraton wird diese Map neu berechnet. Dadurch kann ein kleiner Fluss mal "einfach so" fließen und bei einem Dammbruch stockts halt doch mal ein bisschen.
Ansonsten: den Cache beim programmieren im Fokus behalten.
https://memcp.org/ <-- coole MySQL-kompatible In-Memory-Datenbank
https://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Artificial Mind »

Ich mach mir nur Sorgen, wenn es z. B. regnet und sich überall Pfützen bilden und das danach wieder versickert und so.

Aber ich muss wahrscheinlich das einfach mal ausprobieren.
Andre
Establishment
Beiträge: 186
Registriert: 21.12.2011, 20:33

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Andre »

Hab deinen Prototypen auch eben einmal ausprobiert. Sieht gut aus soweit. :) Leider scheint es zu VSyncen, sodass ich nur bis 60fps komme mit meiner GTX570.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Artificial Mind »

Unter Windows ist glaube ich VSync standardmäßig an.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Artificial Mind »

So, ich habe mich mal an prozeduralen Bäumen versucht.
Das zugrundeliegende Modell ist eher biologisch motiviert und orientiert sich an diesem Paper: http://dl.acm.org/citation.cfm?id=1531364
Selbst das Terrain wird mit einbezogen, sodass die Bäume um Vorsprünge und so herumwachsen.
trees2.jpg
trees3.jpg
trees4.jpg
trees5.jpg
trees6.jpg
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Artificial Mind »

Hier ist eine aktuelle Windows-Version: https://dl.dropbox.com/u/443720/terrain ... 12-7-7.zip
Irgendwas sorgt allerdings in der Windows-Version dafür, dass das Programm CPU-limitiert ist. Unter Linux habe ich 100-300 fps, abhängig davon, wieviele Chunks gecullt bzw. Fragmente erzeugt werden. Auf Windows bin ich bei 50fps, unabhängig von der Grafikauslastung.

Steuerung:
WASD - Camera bewegen
Rechtsklick (gedrückt) - Camera drehen
Linksklick (gedrückt) - Camera schieben
Shift (gedrückt) - schnelle Camera
Linksklick - Abbauen
Strg-Linksklick - Anbauen
L - LOD-Aggressivität einstellen
T - nächster Linksklick platziert einen Baum
G - zuletzt gepflanzten Baum eine Generation weiter simulieren
Z - Blätter an/aus
F1 - Hiddenline

Known Issues:
Bäume haben nur ein begrenztes Schattenvolumen, das einmal beim Pflanzen aus dem Terrain errechnet wird. Deswegen wachsen Bäume nicht beliebig hoch/breit und werden nicht von anderen Bäumen bzw. nachträglich verändertem Terrain beeinflusst.
Zu viele Baumiterationen sind ungut und können eventuell zu Abstürzen führen.
Man sieht immer noch Chunk-Grenzen, insbesondere wenn die Chunks nicht mehr auf der niedrigsten LOD-Stufe sind. Ich habe einfach noch keine Lust gehabt, die Dichten vernünftig zu managen, sodass die Übergänge richtig sind. Technisch ist das aber keine Hürde.
Mindestvoraussetzung: Opengl 3.2/3.3


PS: Auf der Seite vorher sind Screenshots von den Bäumen.
Andre
Establishment
Beiträge: 186
Registriert: 21.12.2011, 20:33

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Andre »

Läuft soweit alles gut. Die 50FPS kann ich auch bestätigen. Ich finde nur, dass die Bäume noch eher wie Büsche aussehen. Wird es vielleicht noch welche geben mit Stamm um Krone?
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Artificial Mind »

Es ist halt erst ein Tech-Test. Wenn wir das als Spiel umsetzen, dann gibt es natürlich alle möglichen Arten und dann auch mit LOD, Normal Maps usw..
Ich gebe dir Recht, momentan sind das eher Büsche.
Gut finde ich an der Technik, dass es schnell geht und man vernünftig auf die Umgebung eingehen kann. Ich finde das Wachstum der "Büsche" nämlich an sich gut.
Benutzeravatar
Jeason
Beiträge: 41
Registriert: 07.09.2010, 22:58

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Jeason »

Scheint seeehr VRAM Hungrig zu sein. Jedenfalls scheint meine ATI aus der 4800er Serie mit 512 MB VRAM nicht dafür zu reichen:
Bild
Ich verkaufe diese feinen Lederjacken.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Artificial Mind »

Mal davon abgesehen, dass ich für ATI sowieso noch nichts garantieren kann (wer kommt auf die bescheuerte Idee, Attribute Bindings aus dem Shader nicht in der Reihenfolge, in der sie erscheinen, zu nummerieren, sondern ALPHABETISCH).
Ja, momentan wird noch nicht auf den VRAM geachtet und wenn du nur 512 MB hast, dann hat Windows 7 davon schonmal die Hälfte gepachtet. Dazu kommen dann meine Texturen und die wachsende Anzahl von Dreiecken durch die Geometrie und LOD-Stufen. Auch wenn nicht alles gezeichnet wird, wird es ja trotzdem allokiert.

EDIT: Die Memory-Anzeigen sind für ATI auch falsch, da es man es über andere Extension bekommt als bei NVIDIA.
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Aramis »

Hm, HD 5850 mit aktuellem Treiber stuerzt erstmal ab. Nicht dein Programm. Der Treiber natuerlich.

(Konsole zeigt noch eine Kompilationsmeldungen an, anscheinend crashed es sobald tatsaechlich was gerendert werden muesste. Einige der Warnungen sind wegen des "ueberlangen" Geoshaders (wer haette gedacht dass lange Programme langsam sind), aber das duerfte dir ja bekannt sein).
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Artificial Mind »

Hm also eigentlich habe ich diesmal auch mit den Mappings aufgepasst. Dass der Geometry Shader lang ist, ist mir bekannt ;)
Sehr kooperatives Verhalten vom Treiber, einfach abzustürzen. Kein OpenGL-Error?

Ich muss mir wahrscheinlich doch irgendwie eine ATI-Karte anschaffen, damit ich das vernünftig testen kann.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Artificial Mind »

Ich habe mal aus Spaß "Countless Blades of Grass" implementiert:
terrain_grass1.png
terrain_grass2.png
Weht auch schon brav im Wind.
Läuft inklusive Terrain auf über 60 fps (und es gibt noch viel Spielraum für LOD).
Ein wenig Fine-Tuning braucht es noch, aber im Großen und Ganzen bin ich zufrieden.
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Aramis »

Sieht auf den Vorschaubildern wahnsinnig echt aus, in gross erinnert es mich an Seegras :-)
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Artificial Mind »

Ja, ich habe bisher auch nur eine Textur, die ich dann immer langziehe für das Gras *g*
Damit es noch wesentlich besser aussieht, kommt später noch FXAA, SSAO, mehrere Texturen, Farbvariation, die Bodentextur sollte besser mit dem Gras korrelieren und natürlich noch ne ganze Menge Finetuning ;)
Und der Fall, dass man nahezu senkrecht auf das Gras guckt, muss noch "abgefangen" bzw. behandelt werden.

EDIT: Und natürlich sollte das Gras nicht 3m lang sein :D
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Artificial Mind »

Ist das nicht idyllisch?
terrain_grass5.png
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von CodingCat »

Ja, das wird. Wieso hat das Gras im Vordergrund eigentlich teilweise solche Sägezahnkanten? Ist das irgendeine Form von Ray Marching? Im Hintergrund wirkt es stellenweise noch etwas unnatürlich gemustert. Dennoch, wenn du jetzt in den Hintergrund noch scharfe volumetrische Wolken setzt, hast du alles, was man so braucht. ;)
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Artificial Mind »

Das Gras wird noch gar nicht sortiert, deswegen teilweise die Blending-Kanten. Wenn man es wenigstens nach Chunks sortieren würde, gäbe es schlagartig weniger Artefakte (hoffe ich).
Außerdem ist es immer noch relativ regelmäßig in Bezug auf die Geometrie des Untergrundes (führt häufiger zu Rechtecksmuster im Gras), wird sich aber durch ein Noise-Offset beheben lassen.
Es wird zuerst der opaque Anteil mit Z-Write gerendert und dann der transparente Anteil mit normalem Alphablending ohne Z-Write. Hast Du eine gute Idee wie man um das Sortieren herumkommt? OIT ist bei dem Overdraw (teilweise mehrere Hundert) wahrscheinlich nicht zu empfehlen.

Achso, das Gras wird einfach im Geometry Shader erzeugt und orientiert sich an http://http.developer.nvidia.com/GPUGem ... _ch07.html

Die Wolken sollen auch noch durch volumetrische, approximativ korrekt beleuchtete Wolken ersetzt werden, insbesondere für den Tag-Nacht-Zyklus ist sowas ja wichtig. Ich denke, da kann man auch ohne Probleme die Cubemap nur alle paar Sekunden/Minuten aktualisieren und gegen die alte linear blenden.
Benutzeravatar
Zudomon
Establishment
Beiträge: 2295
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Zudomon »

Gute Arbeit!
Erinnert mich schon irgendwie an Splitterwelten... wenn da jetzt noch ein paar Holzhütten und ein Holzschiff wäre... :)
Eisflamme
Establishment
Beiträge: 412
Registriert: 26.05.2002, 17:42
Wohnort: Köln

Re: [Projekt] Destructible Terrain on GPU (Prototyp)

Beitrag von Eisflamme »

Hammer!
Antworten