[Projekt] Destructible Terrain on GPU (Prototyp)
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.
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.
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Destructible Terrain on GPU (Prototyp)
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.
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.
Re: [Projekt] Destructible Terrain on GPU (Prototyp)
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?
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Destructible Terrain on GPU (Prototyp)
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.
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.
Re: [Projekt] Destructible Terrain on GPU (Prototyp)
Scheint seeehr VRAM Hungrig zu sein. Jedenfalls scheint meine ATI aus der 4800er Serie mit 512 MB VRAM nicht dafür zu reichen:
Ich verkaufe diese feinen Lederjacken.
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Destructible Terrain on GPU (Prototyp)
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.
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.
- 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)
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).
(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).
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Destructible Terrain on GPU (Prototyp)
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.
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.
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Destructible Terrain on GPU (Prototyp)
Ich habe mal aus Spaß "Countless Blades of Grass" implementiert:
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.
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.
- 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)
Sieht auf den Vorschaubildern wahnsinnig echt aus, in gross erinnert es mich an Seegras :-)
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Destructible Terrain on GPU (Prototyp)
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
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
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Destructible Terrain on GPU (Prototyp)
Ist das nicht idyllisch?
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
Re: [Projekt] Destructible Terrain on GPU (Prototyp)
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
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Destructible Terrain on GPU (Prototyp)
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.
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.
Re: [Projekt] Destructible Terrain on GPU (Prototyp)
Gute Arbeit!
Erinnert mich schon irgendwie an Splitterwelten... wenn da jetzt noch ein paar Holzhütten und ein Holzschiff wäre... :)
Erinnert mich schon irgendwie an Splitterwelten... wenn da jetzt noch ein paar Holzhütten und ein Holzschiff wäre... :)
- Schrompf
- Moderator
- Beiträge: 5047
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: [Projekt] Destructible Terrain on GPU (Prototyp)
Sehr idyllisch! Ich vermute aber, Du hast die Perspektive auch geschickt so gewählt, dass die Fläche gut mit dem Himmel zusammenspielt :)
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Projekt] Destructible Terrain on GPU (Prototyp)
Klar habe ich die Perspektive so gewählt, dass es hübsch aussieht ;)
Aber es gibt viele solcher Spots und das wehende Gras macht nicht nur in dem Bild einen guten Eindruck.
Natürlich hat es auch noch an einigen Stellen seine Macken, genauso wie das Terrain noch nicht perfekt ist und so weiter, aber das ist ja wohl auch hoffentlich klar :D
Aber es gibt viele solcher Spots und das wehende Gras macht nicht nur in dem Bild einen guten Eindruck.
Natürlich hat es auch noch an einigen Stellen seine Macken, genauso wie das Terrain noch nicht perfekt ist und so weiter, aber das ist ja wohl auch hoffentlich klar :D