[Projekt]Grafik-Engine

Update:
Habe jetzt viele Teile auf eine dynamische Speicherverwaltung umgeschrieben, vorallem im Bereich der 3D-Objekte gibt es nun keine Limits mehr durch die Engine.
Vorher war der Polygone Count auf 100k beschränkt aber durch die Änderung könnt ihr ein Objekt hinzufügen bis euer Ram voll ist oder es eben die Hardware nicht mehr schafft zu rendern (was vermutlich eher eintritt :ugly:).
Habe zum Test mal einen Würfel mit einer halben Million Polygone gerendert, läuft ohne Probleme und alles ganz geschmeidig ;)
 
:lol:

na mal sehen, ob ich damit meine 16GB RAM mal ausgelastet bekomme^^

Weil bei meiner "Babyengine" kann ich zwar auch unendlich viele Entities erstellen, aber der Verwaltungsaufwand auf einem Thread ist irgendwie zu hoch ... also ab ein paar tausend Entities wirds ne Diashow xD
 
ein paar tausend? ^^
Bei 4 Millionen hab ich ca. 30 fps ^^

Edit//
Nochmal ein kleines update:
Konnte noch die Performance verbessern. Es gab gewisse Situationen, wo die Engine ziemlich anfällig war und es zu Performance-Einbrüchen kam. Habe nun den Rendercontext soweit angepasst, dass das FPS Niveau auf einem ziemlich konstantem Level bleibt. Vorallem System mit schwächerer Hardware sollten davon profitieren, die Chance auf Nachladeruckler geht gegen Null.
 
Zuletzt bearbeitet:
nein, aber C4D kann super nach *.obj exportieren, was ein relativ häufiges "einfaches" FOrmat ist.
Ansonsten muss man die dateien eben manuell öffnen, die von AMDs Engine benötigten Daten rauskopieren und ne eigene map-datei erstellen ;)
(..)
Hast du überlesen, dass ich normal sterblich bin? :)


MfG
fac3l3ss
 
@AMD: jaja, die CLR ist bei mir das Problem, dadurch dass ich so fetzige Objekte habe kommt sie wahrscheinlich nicht mehr hinterher. Auch dass ich die Buffer jedes Frame neu erzeugt habe, war nicht soooo praktisch^^
Also bei mir gibts auf jeden Fall noch handlungsbedarf, aber ich bin ja erst seit ein paar wochen dabei. Außerdem geschieht das ganze in C# :ugly: :D

@ fac3less:
Schon klar ;)
Also wenn du in C4D etwas hast, dann gehst du einfach auf Menü - exporieren - als *obj (und dann diese Einstellungen im Popupfenster können erstmal auf Standard bleiben). So dann hast du z.B. aufm Desktop ne obj-datei. Die kannst du mit dem Texteditor öffnen und dort findest du irgendwo einen Abschnitt mit "Vectors" oder "Positions" oder so; der ist erstmal der Wichtigste. Den Abschnitt einfach kopieren und dann je nach AMDs Engine einfach irgendwie dort importieren lassen. So schwer ist das nicht :daumen:
Vielleicht ist es ja auch einfach die gesamte obj-datei .....
Wenn es ernst ist und ich das Import-Format kenne kann ich ja einen kleinen Importer programmieren, extra für den "Gesichtslosen" :fresse:

Edit:
und in den Mapfiles müsste man dann ja nur Objektnamen, positionen und betreffende Map eintragen ... so wie ich das verstanden hab^^
 
Zuletzt bearbeitet:
@fadade: Den Fehler hatte ich zu begin auch gemacht. Jedes Frame den Buffer neu erzeugen... das zieht die Performance enorm nach unten ^^ Aber du bist dank C# entschuldigt :P:ugly:

@Euch beide :D
Wenn man jetzt in einem Editor seiner Wahl ist, exportiert man es einfach ins *.obj Format, kopiert die *.obj Datei dann in den Ornder der Engine, platziert das Objekt noch ganz schnell und schon gehts los ;)
In der Regel erhält man auch ein *.obj und ein *.mtl Datei. In der mtl stehen Informationen zu den Texturen! Die kommt dann auch den selben Ordner :schief:
Es ist wirklich sehr einfach und ich hab auch schon ein Tutorial geschrieben wo das dann Step-by-Step erklärt wird :)
 
@fadade: Den Fehler hatte ich zu begin auch gemacht. Jedes Frame den Buffer neu erzeugen... das zieht die Performance enorm nach unten ^^ Aber du bist dank C# entschuldigt :P:ugly:

Entschuldigt, lol :D
Naja, aber am Anfang ist das ja gar nicht so schlimm. später wollte ich einen globalen Vertex- und Indexuffer haben und dann ein eigenes Description-Objekt, zwecks flexibilität unter den objekten und effekten usw .... könnte mir gut vorstellen, dass das gar nicht mal so doof ist^^

Was mir eben noch in den Sinn gekommen ist, dass man doch eigentlich ganz einfach per Pickray ein objekt auf de Map auswählen kann und dann mit irgendwelchen Tasten verschieben, drehen, vergrößern etc. könnte. Dann müsste anschließend die "neue" map gespeichert werden und man spart sich das manuelle eingeben. (Wäre auch ein Lustiges Feature ingame, so wenn man im Egoshooter Macht oder so hat und dann die Umgebung seinen Wünschen ein wenig anpassen kann :devil::D )
 
Da ist was dran ;)

Das "Picking" habe ich mir auch schonmal angeschaut. Gibt in OpenGL dafür ja sogar spezielle Befehle. Ich muss aber auch zugeben, dass ich noch nicht zu 100% dahinter gestiegen bin wie es exakt funktioniert ^^
Aber es ist natürlich richtig, dass man diese Objekte dann auch drehen, verschieben etc. kann! Ein Editor ist außerdem ohnehin auf der ToDo List nur die Priorität ist halt noch nicht so groß! Zumal ich ja auch aktuell keine riesen Maps habe! Dadurch ist der manuelle Aufwand überschaubar.
Die Idee mit dem Anpassen der Umgebung gefällt mir! Das muss ich mir mal zurücklegen ^^
 
Ich hatte gestern Abend mit dem MapEditor begonnen und kann schon gute Erfolge vermelden!
Es ist bereits möglich einzelne Objekte mit der Maus zu selektieren, dieses Objekt wird dann rot eingefärbt und kann danach bewegt werden.
MapEditor.jpg

Ich habe dafür auch nicht die OpenGL Möglichkeit mit dem Picking genommen (da die nach genauerer Betrachtung dumm ist) sondern habe es über Lineare Algebra gelöst.
Nach ca. 5 Stunden Mathe und 30 Minuten Coden lief es :ugly:
Jetzt kommt noch eine grafische Oberfläche rüber und eine Funktion zum abspeichern und dann sollte der Editor schonmal zu was nutzen sein :)
 
Nunja aber du weisst ja was ein MapEditor macht?^^
Du kannst die einzelnen Objekte auf der Karte auswählen und dann nach belieben bewegen! Das hat den Vorteil, dass dann auch jeder ziemlich einfach Maps erstellen kann und es manuelle Arbeit abnimmt.
 
jaja :D
dat kenn ich ja aus tm nation :ugly:
ich will mich in die ganze sache auch mal reinknien, mal schaun, ob mir das spaß macht, aber erst mit dem neuen rechner :D
:daumen:
 
@Kel: Natülich, hast du etwa eine Graka mit "nur" 1GB VRAM oder so wat össeliges? :D :fresse:
Nein, da ging es um den RAM ;)

VRAM sollte bei einer Hobby-Engine eigentlich keiin Problem darstellen.

@AMD: WO SIND DIE SCHATTEN HIN????? :heul: :D
Kann man in OpenGL eigentlich auch mehrere "Fenster" /"Viewports" was auch immer unabhängig von einander rendern lassen? Also beim Editor wäre es z.B. eine Anwendungsmöglichkeit, wenn man links die einfache Mapstruktur hat und rechts dann das tatsächliche Renderbild (Mit Schatte, AA, uws. :P ) oder so .......
 
Ja die Schatten :(
Ich hatte in der Vergangenheit schon viel mit rum probiert aber ich hatte nie ein Ergebnis was mich zu 100% zufrieden gestellt hat. Daher muss ich das erstmal aufschieben und mich später mit befassen. An einer Sache verkrampfen und dadurch nichts anderes schaffen wollte ich auch nicht! Aber Schatten wird es früher oder später natürlich definitiv geben!
Man kann auch mehrere Viewports rendern lassen! Das mit 2 verschiedenen Viewports ist eig. auch eine gute Idee! Zumindest Optional ^^
Hatte gestern mal mit 16-facher Kantenglättung Rendern lassen... das waren echt mal glatte Kanten :ugly: allerdings auch ein guter Performancekiller.
 
Naja gut, auch wenn es nicht 100%ig befriedigend ist, wäre es vielleicht trotzdem ganz sinnvoll sie zwischendrin mal zu aktivieren, wer weiß, vielleicht kommt ja irgendeine Exception. Dann hätte man dafür wenigstens schonmal einen Anhaltspunkt, bzw. die Fehlersuche wäre einfacher ;)

Und das mit dem AA kann ich mir gut vorstellen xD
War es denn wenigstens noch > 30FPS? (Ich kann bei mir leider noch kein AA und AF und so machen ... damm kaggt immer der Grafiktreiber ab^^)
 
Bei 16-facher Kantenglättung sind die FPS von 1600 fps auf 200fps eingebrochen. Wobei bei den 1600fps 4-fache Kantenglättung bereits aktiv war ^^
 
Na das geht ja noch ... 16AA ==> nur noch 12% der Performance :ugly:
Was ich mich in dem Zusammenhang grad frage, ob man dort nicht direkt bei den ganzen BackBuffern (gibts die in OpenGL?^^) und so nicht anstatt AA gleich eine höhere Auflösung zum Rendern verwenden kann und sie dann wieder runterrechnet; mist, wie hieß doch gleich der Fachbegriff dafür? :D
Dann bräuchte man den Umweg über den Monitortreiber gar nicht, wobei das wahrscheinlich performanter wäre ...

Aber geht ja richtig voran :daumen:
Ist das Wasser eigentlich noch eine Ebene oder schon dynamisch?
 
Öhm, du redest von Downsampling?! ^^
Habe ich schon Tests mit gemacht aber wenn ich 4x MSAA rüberlege ist das Ergebnis deutlich besser (sowie von der Bildqualität als auch von der Performance). Die Unterschiede von MSAA größer als 4 sind dann alle nur noch sehr minimal wie ich feststellen musste und fressen eben mehr Performance als es je von nutzen sein werde.

Edit// Das Wasser ist (noch) eine Ebene ja, aber ich plane da schon was über einen Shader zu realisieren.
 
Zuletzt bearbeitet:
Zurück