[Projekt]Grafik-Engine

Durch den MapEditor habe ich letztens ein paar neue mathematische Dinge integriert, welche vorallem auf lineare Algebra beruhen. Das tolle daran, es kommt auch der Kollisionserkennung zugute (und das auf sehr sehr sehr gutem Niveau). Allerdings reden wir hier schon von ein ganz paar mathematischen Operationen :ugly: Daher wird das ganze auf einen weiteren Thread/CPU Kern ausgelegt. Muss dazu zwar noch ein paar Sachen testen aber die Technik an sich: :love::D
Da bin ich schon stolz drauf :ugly:

Außerdem befindet sich der Blur-Effekt sowie Depth of Field in der Testphase.
 
Aktuell sind es 4 Threads.
Da Thread aber nicht gleich CPU-Kern ist muss da noch was optimiert werden. Aber das kommt schon noch, keine Bange :P
 
War das beabsichtigt, dass du am Ende das ganze Terrain entfernt hast? :D :ugly:
Aber zeigt eindrucksvoll die Funktionalität^^

Achtest du eigentlich sehr darauf, welche Arbeiten die GPU übernimmt und welche die CPU? Weil ich habe vorhin mal spasseshalber ein paar hunderttausend einfache Würfel erstellt und dann gemerkt, dass die CPU auf 100% war ..... weil ich die Meshkoordinaten relativ zum Nullpunkt habe (welches ja die "Objektposition" ist) und die noch auf der CPU in Weltkoordinaten umwandeln lasse.

Achja und wenn dein Pickray unbegrenzt ist, wäre es vielleicht sinnvoll ihn auf eine bestimmte Länge zu begrenzen; also die eine Palme ist von der Entfernung ja schon relativ weit weg
 
Ich wollte halt lediglich die Löschfunktion zeigen, daher alles weg :D

Ich achte sehr auf die Aufteilung CPU <=> GPU! Die CPU Leistung geht leider schneller in die Höhe als es einem Recht ist, daher muss dort sehr viel berücksichtigt werden!
Man sollte halt wirklich so viel wie Mögliche Daten schon auf der GPU haben und den Datenbus CPU - GPU möglichst wenig belasten! Das ist ein Flaschenhals!

Das Pickray hat jetzt keine Begrenzung. Wenn ein Objekt gerendert wird kann es auch angeklickt werden. Wird natürlich der LOD Wert überschritten und das Objekt nicht mehr gerendert, dann kann es logischerweise auch nicht angeklickt werden^^
 
Update:
- Habe heute ein paar Kleinigkeiten am Code gefixt, so kam es z.B. zu Fehlern bei der Auflösung wenn der Fullscreen Modus verlassen wurde
- Außerdem habe ich die Arbeiten einer Update-Funktion angefangen. Ist natürlich noch nicht fertig aber es werden schon Versionsinfos von einem ftp abgefragt, diese verglichen und und ggf. folgt dann die Updatefunktion.
 
ui ui ui das klingt auch spannend :D
frage mich irgendwie ,wie man so ein Update durch führt :huh:
Wenn andere Version, dann Datei laden und ..... dann?!? Beim nächsten start die alte Datei mit der neuen ersetzen. Aber dafür wird wohl ein "externer" Update benötigt..........

Naja, lass mich überraschen. Und lass dir mal schöööön Zeit, damits ordentlich wird. Aber Ende März bin ich mit den Prüfungen durch, dann muss eine neue Demo kommen :daumen: :D


PS: ich hatte heute erste Kompatibilitätsprobleme
Programmiert aufm Lappi mit GT540M und ausführen wollen auf der GTX260 --> ERROR ^^
Vielleicht sollte ich noch DX11 als Systemvoraussetzung machen .. damit es auf noch weniger Systemen läuft :ugly:
 
Aktueller Stand so:
Normale exe wird gestartet, auf updates wird überprüft, andere exe wird gestartet, diese exe läd files runter und ersetzt diese mit den alten, done! Kurz gesagt.. im Hintergrund muss man da natürlich noch ein paar Dinge mehr machen^^

Ja bis Ende März definitiv! MEIN WORT DRAUF!


Ich habe bei mir auch ein komisches Verhalten: Wenn ich das Projekt auf meinem ganz normalen PC compile und mit der HD 5870 rendere, dann läufts ganz normal! Nehme ich den selben Build auf meinem Netbook mit der APU E-350, dann wird der Alphakanal nicht immer berücksichtigt, manchmal schon! Compile ich es auf dem Netbook selbst dann gehts immer... :what:
 
Compile ich es auf dem Netbook selbst dann gehts immer... :what:

und wie schaut es dann auf anderen Systemen aus? ;)
Kann ja sein, dass es dort von irgendeiner OpenGL-Komponente einen Versionsunterschied oder so gibt ...

Wobei als Hobbyist hat man wahrscheinlich eh keine Chance es auf sehr vielen Systemen zum laufen zu bekommen, weil dazu der Test- und Anpassungsaufwand wohl zu hoch wäre.
Habe ich ja selbst auch hier: GT540M --> Alles wunderbar, GTX260 --> naja DX10 eben, GT430 --> Texturen werden nicht dargestellen, HD5470 --> bisher alles wunderbar (bis auf Performance :D)
 
Updater ist fertig und funktioniert!

@fadade: Ja da muss ich definitiv nochmal weiter probieren bzw. ihr dann alle bei einer Betaversion :P
 
Hab heute mal was mit neuem Wasser und passender Reflektion versucht:
Wasser.jpg
Gut oder eher nicht?
Ich will definitiv noch die Reflektionsqualität an sich verbessern und die Verzerrung per BumpMapping realisieren... aber sonst an sich finde ich es schonmal okay.
 
Also ich mag die Reflektion ;)
Ich habe ja sowieso, soweit ich weiß, noch nichts zu deiner Engine geschrieben, aber ich find sie auch echt schon sehr gut.
Beim Wasser wäre natürlich am besten, wenn wirklich perfekte Reflektion auch mit Wellen, aber leider arbeiten wir (also du^^) hier im Realtime bereich und machen keinen Raytracer :D
Bin mal gespannt was in nächter Zeit so noch kommt von dir. Ich verfolge den Thread jedenfalls auch schon ne ganze Weile, nur ohne hierrein zu schreiben :D

Gute Gelingen noch ;)

mfg
 
Hmm sieht irgendwie mehr nach nem Unschärfe Efekt aus als nach ner Spiegelung.. ;)
Vielleicht sollte man es irgendwie mehr "verzerren"?
 
Hmmmmmmm.... also ich persönlich finde es noch etwas stark, sieht so eher nach Leitungswasser aus ..... aber das kommt auf die Situation an. Rein vom "technischen Aspekt" her ist es schon gut :)

Gibts da bei OpenGL eigentlich auch ne Mirror-Map oder sowas :D
Weil wenn man genau hinschaut, ist das spiegelbild pixeliger als das reale bild ...
 
Was ist denn eine Mirror-Map? (sag jetzt nicht Spiegel-Map :ugly:)
Ist es auch! Die Wasserebene ist nur mit einer Textur von 384x384 :D Bei 1024x1024 sieht das schon ganz anders aus (geschweigeden noch höher).
Ich hatte auch schonmal ein Rendertest mit 3fachem HD probiert (5760x3240) und dann Ausgabe... also quasi Downsampling! Sieht wirklich gut aus aber aus Performancesicht voll der Killer ^^

@Crenshaw: Wie ich unter dem Bild schon schrieb: Wird noch verzerrt :)
 
Was ist denn eine Mirror-Map? (sag jetzt nicht Spiegel-Map :ugly:)

Keine Ahnung! :ugly:
Ich habs nur so genannt, weil es um spiegelungen geht (hab ich selbst ja noch gar nicht gemacht) :fresse:
Geht bestimmt auch über Pixelshader mit Tex-Ressource oder so ..

Ist es auch! Die Wasserebene ist nur mit einer Textur von 384x384 :D Bei 1024x1024 sieht das schon ganz anders aus (geschweigeden noch höher).
Ich hatte auch schonmal ein Rendertest mit 3fachem HD probiert (5760x3240) und dann Ausgabe... also quasi Downsampling! Sieht wirklich gut aus aber aus Performancesicht voll der Killer ^^

Achwat, jetzt ist die HD7970 erschienen, da kann man ein bisschen in die vollen gehen. Kannst du mit OpenGL eigentlich fast "unendlich große" Texturen nutzen?
 
Also mein Wasser funktioniert (ungefähr) so:
- Szene Rendern (bloß gespiegelt)
- Bild in ein Frame Buffer Object packen
- TextureMatrix manipulieren
- Bild auf Ebene ausgeben

Ist halt grob erklärt (wenn man bedenkt das es ca. 150 Code Zeilen sind).


Ich nutze nach wie vor noch eine HD 5870 ;) Obwohl die 7970 schon verlockend ist :ugly: Aber die muss erstmal etwas preiswerter werden!
unendlich nicht wirklich! Die maximale Größe eines FBO's beträgt 8192x8192. Das ist an sich schon riesig.
Natürlich könnte man nun anfangen zu splitten (so funktioniert das auch mit den MegaTextures). Heißt also eine 16384x16384 aus 4x8192x8192 aber letztendlich finde ich das quatsch!
8192x8192 ist schon riesig (!!!), wer da keine vernüftige Qualität unterbringt macht woanders was falsch... eig. sollte 4096x4096 schon für sowas das Maximum sein (wieder in Hinblick zur Performance).


Habe außerdem gerade noch eine ordentliche VSync Funktion gemacht, welche über eine Config-Datei in mehreren Stufen einstellbar ist!
Es müssen also nicht zwingend 60fps die Grenze sein sondern kann es auch auf bequeme 200fps, 500fps etc. stellen.
Bei 500 fps ist 1 Kern von meinem 2500k zu 20% ausgelastet und die GPU zu 30%... spart Strom :schief:
 
Zurück