(C)LOD Terrain Engine frü schnelle PCs?



  • Hi leute,

    ich hab mir mal ne CLOD Engine geschrieben, auf Basisi des Röttger Algorithmus, die lief echt hübsch und schnell. Jetzt hab ich aber nen neuen PC mit schneller grafikkarte und der Geschwindigkeitszuwachs hällt sich in Grenzen, die Engine its ja relativ CPU limitiert. Deswegen such ich jetzt nach ner neuen (simpleren) methode, die besser (oder auch nur) mit aktueller hardware zurecht kommt und auch eher Richtung Brute-Force geht. Wichtig dabei ist mir halt, dass man trotzdem extrem weit schauen kann.
    Ich bin dankbar über jede Anregung


  • Mod

    eine möglichkeit wäre ab einer gewissen entfernung in maps zu rendern die man als cubemap beim normalen rendering benutzt (als hindergrund), wenn man sich nicht zu fix bewegt ändert sich in der entfernung kaum etwas, es seiden man animiert dort was sehr auffälliges (naturlement).

    bruteforce wäre für mich, wenn du die dinger in vertexbuffern hättest und einfach zeichnest ohne sie zu modifizieren, allerhöchstens mal mit verschiedenen indexbuffern und dazu frustum,occlusion und eventuell Antiportal culling rein. bei einem 1024*1024 terrain müßtest du nur 1M vertices transformieren, eine dx9 karte sollte das bei mindestens 30fps können. wenn du dazu noch culling nutzt kommst du locker auf 100fps und mit den indexes für lods, hast du deinen gewünschten lowcpus-cost bruteforce renderer.

    eigentlich ist ja nicht die cpu oder gpu limitierend bei den alten algos, sondern die bandbreite. wenn du buffer locken mußt, sie dann beschreibst, unlockst und sie dann zur graka geschickt werden, hast du (eventuell) mehr zeit verschwendet als ne graka bräuchte um das ding zu transformieren.

    rapso->greets();



  • danke schon mal,

    dein erster Vorschlag ist leider untauglich, da man sich ggf. auch sehr schnell bewegen kannt.

    Der zweite Vorschlag hört sich aber relativ interessant an.. auch wenn ich nur die Hälfte verstanden habe (hab noch nie von vertexbuffern gehört). Nur ich frage mich ob 1024*1024 wirklich ausreichen, weil man sich bei der Engine ggf auch weit über dem Gelände befinden sollte, ohne ein Levelende zu sehen. Dann müsste man irgendwie etwas Terrain nachladen oder so...


  • Mod

    wenn du genauer sagen würdest, was für anforderungen oder vielleicht sogar welches genre zu befriedigen ist, könnte man dir eventuell besser helfen.
    ich würde ja auf rts (von oben und schnell perspektive wechseln) schätzen, da ist es eventuell gut anstatt die heightmap höcher auflösend zu machen, die level mit einer bumpmap zu versehen, dann erkennt man die auflösungs des terrains eher nicht (besonders wenn man von oben immer aus einem festen winkel schaut)

    wenn du nicht weißt was vertexbuffer sind, womit arbeitest du dann?

    rapso->greets();



  • Hi,
    Was ist der unterschied zwischen LOD und CLOD ?
    Und kennst ihr vielleicht ein paar gute scripts zu LOD/CLOD ?

    Bye



  • rapso schrieb:

    wenn du genauer sagen würdest, was für anforderungen oder vielleicht sogar welches genre zu befriedigen ist, könnte man dir eventuell besser helfen.
    ich würde ja auf rts (von oben und schnell perspektive wechseln) schätzen, da ist es eventuell gut anstatt die heightmap höcher auflösend zu machen, die level mit einer bumpmap zu versehen, dann erkennt man die auflösungs des terrains eher nicht (besonders wenn man von oben immer aus einem festen winkel schaut)

    wenn du nicht weißt was vertexbuffer sind, womit arbeitest du dann?

    rapso->greets();

    Nun, es soll so ne Art Ego Shooter werden, bei dem man ggf aber auch schnell und weit in der Luft fliegen kann... eigentlich von den Anforderungen so nen bisschen wie Battlefield. Die arbeiten glaube ich per sogar per brute force.

    Also meine alte Engine war ja auf dem Röttger Algo aufgebaut, da hab ich einfach die daten immer aus meinem Heightmap array ausgelesen, ensprechend dem Algo verabeitet. Die einzelnen Koordinaten in der ensprechenden Reihenfolge inklusive begins und ends (sollen ja trianglefans werden) in nen neues Array gespeichert und das dann in ner großen Schleife abgearbeitet, also gezeichnet.



  • Gast01 schrieb:

    Hi,
    Was ist der unterschied zwischen LOD und CLOD ?
    Und kennst ihr vielleicht ein paar gute scripts zu LOD/CLOD ?

    Bye

    Naja, LOD ist Level Of Detail und CLOD ist Continous Level Of Detail.

    Beispiel an 'nem Quake-Model o.ä.:
    LOD: Du hast z.B. 3 verschieden aufgelöste Models. Eins mit 500, eins mit 1500 und eins mit 3000 Polygonen. Ab Entfernung >= 200 bledest Du z.B. statt dem 3000er das 1500er ein, etc.
    Ähnlich wie MIPMapping.

    Bei CLOD würdest Du dynamisch (kontinuierlich / ohne Abstufungen) von 3000 über 2999, 2998 (oder auch größere Schritte) bis auf 1500 auflösen...



  • huhu... kommt nichts mehr?


  • Mod

    chimp schrieb:

    huhu... kommt nichts mehr?

    für was soll den noch was kommen?

    rapso->greets();



  • rapso schrieb:

    wenn du genauer sagen würdest, was für anforderungen oder vielleicht sogar welches genre zu befriedigen ist, könnte man dir eventuell besser helfen.
    [...]
    wenn du nicht weißt was vertexbuffer sind, womit arbeitest du dann?

    naja, das hat sich so angehört, wie als wolltest du mir vieleicht etwas helfen. Ich hab ja auch weiter oben darauf geantwortet 😞



  • chimp schrieb:

    naja, das hat sich so angehört, wie als wolltest du mir vieleicht etwas helfen.

    Also ich mein du hast mir ja schon geholfen 🙂 Aber das hat sich so angehört wie als willst du mir noch weiter helfen, wenn ich die Fragen beantworte.


  • Mod

    ich hab gedacht ich hätte mit

    bruteforce wäre für mich, wenn du die dinger in vertexbuffern hättest und einfach zeichnest ohne sie zu modifizieren, allerhöchstens mal mit verschiedenen indexbuffern und dazu frustum,occlusion und eventuell Antiportal culling rein. bei einem 1024*1024 terrain müßtest du nur 1M vertices transformieren, eine dx9 karte sollte das bei mindestens 30fps können. wenn du dazu noch culling nutzt kommst du locker auf 100fps und mit den indexes für lods, hast du deinen gewünschten lowcpus-cost bruteforce renderer.

    das meiner meinung nach optimalste gesagt, oder hast du dazu noch fragen außer was vertexbuffer sind... in oGL sind es VertexArrays 😉

    rapso->greets();


Anmelden zum Antworten