[Projekt] Universe (Spiel)

Wäre es bei großen Maps (oder vielleicht auch allgemein ^^) nicht klüger das ganze irgendwie als Liste von Koordinaten zu speichern
Das waage ich zu bezweifeln^^
Oben auf dem Bild sieht man ja die schwarzen Stellen und welche schon frei sind... der Übergang ist aber immer rund und damit das so bleibt, müsste man extrem viele Koordinaten nehmen. Bei zu wenig Koordinaten würde das alles sehr kantig aussehen und das ist dann auch wieder keine Lösung.

@KingofKingzZ: Müssten 4000 Texturen nicht eigentlich ausreichen? ^^
Gerade wenn du mit FBO's arbeitest könntest du hohe Auflösungen nehmen.
 
@fadade: Ne, das wäre viel zu viel Aufwand das alles jeweils rauszusuchen und dann müsste ich ja auch irgendwas an den Stellen zeichnen, was schwarz ist. Sprites sind keine gute Idee, bräuchte in diesem Fall zu viel Speicher und vor allem wären das ja unzählig viele Draw Calls. Daher nehme ich eine Textur, lege diese einfach drüber und schneide die Stellen, die transparent sein sollen bequem per Pixel-Shader raus. :)

@AMD: Ich bin mir jetzt grad nicht sicher, was du mit den 4000 Texturen meinst^^ Im Moment ist es lediglich 1 Textur (ein FBO) der Größe 4096x4096, das über die Map gelegt wird. Da die Map allerdings schon bei Stufe "Klein" 100.000x100.000 Pixel groß ist, sieht das dann entsprechend pixelig aus. Deshalb lege ich einen gaussischen Blur-Shader darüber um das ganze schön zu glätten. Und die Unschärfe funktioniert ja nach folgendem Prinzip: Zu jedem Pixel wird ein kleiner Teil Farbe der umliegenden Pixel addiert. Problem: Da im Vergleich zur ganzen Textur die leicht transparenten Teile sehr klein sind, werden sie praktisch einfach weggeblurrt bzw. sind dann fast ganz schwarz, wie der eigentliche Fog. Man kann sich das vorstellen, als würde man mit einem großen Radiergummi versuchen einen Teil einer sehr kleinen Zeichnung wegzuradieren, allerdings sollen die umliegenden Details erhalten bleiben -> geht schlecht. Dabei fällt mir ein: Ich könnte mal versuchen das FXAA auf die Textur anzuwenden, anstatt die Unschärfe :)

Lg
 
Wie wäre es denn mit mehreren FBO's bzw. das FBO als Array?
Ich habe mal ein 4er Array als FBO genutzt, dann mit glViewport in einzelne Teilbereiche reingezoomt und dort dann die Texture gespeichert.
Das sieht dann ungefähr so aus:
- Erstmal FBO initiallisieren (Texture hat 1024x1024 (Variable heißt FBO_size))
- Erstes FBO binden, Viewport einstellen, Szene Rendern, FBO unbind

Dabei wird der Viewport so eingesetzt:
Code:
glViewport(0, 0, FBO_size*2, FBO_size*2);
Da der Viewport in x und y richtung verdoppelt wird, hast du nur 1 Viertel der Szene im FBO (aber bei besserer Qualität als würdest du die gesamte Szene ins FBO packen)

Dann wiederholst du die Schritte mit folgenden Werten:
Code:
glViewport(FBO_size, 0, FBO_size*2, FBO_size*2);
glViewport(0, FBO_size, FBO_size*2, FBO_size*2);
glViewport(FBO_size, FBO_size, FBO_size*2, FBO_size*2);
So hast du alle Teile in 4 FBO's - nimmst du jetzt 4x4096 Texturen kostet das natürlich etwas performance aber die Qualität ist halt deutlich besser.
Vielleicht hilft es ja weiter ^^
 
Das waage ich zu bezweifeln^^
Oben auf dem Bild sieht man ja die schwarzen Stellen und welche schon frei sind... der Übergang ist aber immer rund und damit das so bleibt, müsste man extrem viele Koordinaten nehmen. Bei zu wenig Koordinaten würde das alles sehr kantig aussehen und das ist dann auch wieder keine Lösung.

Das ist natürlich wahr, aber ich denke mal, da kommt es dann auf die Implementierung an ...
Gäbe ja auch den Weg die Bereiche direkt abzugrenzen mit 3 Punkten, die dann durch äääähhh keine Ahnung durchschnitt oder so auf eine Runde Linie mit 30 Punkten gebracht werden.
Ich meinte eben, dass du irgendwo in die komplett schwarze Fläche einen "erforschten Punkt" setzt und der Nebel dann in einem Abstand r zu dem Punkt verschwindet, dann hättest du ja auch wieder deinen Kreis. Bewegt sich der Spieler weiter, wird nach einen kleinen abstand zum ursprünglichen Punkt ein weiterer gesetzt und der Nebel geht dort wieder weg (und das jetzt mit 60 FPS und es ist ein aaaaalglatter Vorgang :D)
Naja, aber solange es keine Probleme macht sollte es mit der Textur dann ja auch gehen ^^
 
Hab jetzt mal noch am Light-Shader etwas rumgedoktert und Strahlen eingebaut:

Glare.jpg

Gefällt mir eigentlich schon ganz gut, nur das Zentrum irgendwie noch nicht so richtig :/

@ AMD: Ja, mal schauen, evtl. nehme ich wirklich 4x 4096er Texturen, Speicher haben wir schließlich genug :D

Lg
 
KingofKingzZ schrieb:
Hab jetzt mal noch am Light-Shader etwas rumgedoktert und Strahlen eingebaut:

<img src="http://extreme.pcgameshardware.de/attachment.php?attachmentid=486371"/>

Gefällt mir eigentlich schon ganz gut, nur das Zentrum irgendwie noch nicht so richtig :/

@ AMD: Ja, mal schauen, evtl. nehme ich wirklich 4x 4096er Texturen, Speicher haben wir schließlich genug :D

Lg

Sieht schick aus ;)
 
Ich melde ich mal wieder :D
Leider finde ich in letzter Zeit wenig Zeit für das Spiel, daher geht es sehr langsam voran. Spätestens in den Weihnachtsferien werde ich mich aber wieder dem Game widmen :)

Lg
 
So, da bin ich wieder..
Inzwischen ist endlich die neue SFML Graphics API auch soweit fertig, die die Performance Probleme und Bugs lösen sollte.
Allerdings muss ich euch trotzdem leider mitteilen, dass ich das Projekt vorerst auf Eis legen werde, da mir einfach die Motivation fehlt an diesem Projekt weiterzuarbeiten. Ich denke das hat verschiedene Gründe. Erstens müsste ich erstmal extrem viel umbauen und das halbe Spiel neu schreiben, da ich das gesamte Design auf die neue API abstimmen müsste. Zweitens ist es ja ein Hobby von mir und sollte daher Spaß machen, aber aktuell habe ich irgendwie das Interesse am Thema verloren. Ich werde das Spiel allerdings keinesfalls aufgeben, sondern die Entwicklung lediglich pausieren und stattdessen mit einem anderen (Spiele)-Projekt weitermachen, das ich vor diesem hier pausiert hatte :ugly: Ich weiß auch nicht woran es liegt, aber wenn ich mich eine Zeit lang nicht mit einem Projekt beschäftige bekomme ich wieder Lust das alte fertig/weiter zu machen :D
Jedenfalls dürft ihr euch die nächsten Tage auf einen neuen Thread zu meinem anderen Projekt freuen. Was es ist verrate ich hier allerdings noch nicht :D

Lg
 
Oh...schade eigentlich. Aber ehrlich gesagt kann ich es gut nachempfinden. Es geht mir mit meinen Modellen genauso. ;) Ich hoffe das du irgendwann wieder Lust und Laune hast, dieses Projekt weiter zu entwickeln. Wenn du zufällig mal die Lust verspürst, einen Schiffsimulator zu entwickeln, kannst'e dich ja melden! :D

MfG Marko
 
Zurück