Wie große "Kacheln" bei Isometrischer Sicht auch eine Heightmap?



  • Ich will eine Heightmap auf dem Bildschirm rendern. Da man aber immer nur einen relativ kleinen Ausschnitt der Heightmap sehen kann macht es keinen Sinn die gesamte Heightmap zu rendern. Meine Idee ist jetzt die Heightmap in mehrere Kacheln aufzuteilen, die jeweils einen eigenen Vertex- und Indexbuffer besitzen. Hat jemand Erfahrungswerte wie groß die optimale Größe so einer Kachel etwa sein sollte?
    Es macht sicherlich keinen Sinn die Kacheln größer zu machen als den Bildschirmausschnitt den man sieht. Andererseits, je kleiner man die Kacheln macht desto größer wird der "Overhead" z.B. dadurch, dass die vertices an den Kanten der Kacheln doppelt gespeichert und transformiert werden müssen.



  • Grohool schrieb:

    Andererseits, je kleiner man die Kacheln macht desto größer wird der "Overhead" z.B. dadurch, dass die vertices an den Kanten der Kacheln doppelt gespeichert und transformiert werden müssen.

    Nicht nur das. Der Wechsel des zu rendernden Vertexbuffer kostet auch einige Zeit. Außerdem liegt die Stärke von Grafikkarten bei der Paralellisierung. Große Mengen von Dreiecken können gleichzeitig verarbeitet werden, wenn du die Grafikkarte mit großen Vertexbuffern belieferst. Fütterst du die Grafikkarte mit kleinen Vertexbuffern verspielst du diesen Vorteil.

    Zudem sind heutzutage die Grafikkarten so schnell, dass man dazu tendiert kleinere Optimierungen gar nicht mehr durchzuführen. Ein paar hundert Dreiecke zu Rendern die gar nicht im Bild sind kostet weniger Zeit als zu berechnen welche Dreiecke das sind.

    Das bedeutet natürlich nicht das man sämtliche optimierungen vernachlässigen kann, aber dein Terrain muss schon sehr groß oder detailliert sein damit sich so eine Unterteilung lohnen würde, und deine Kacheln wären dann sicherlich auch noch recht groß.


  • Mod

    128*128 duerfte fuers terrain ok sein. dann hast du 32k tris pro drawcall, das duerfte einer gpu gut passen und wenn du 1000 davon zeichnen wuerdest, waerst du von den drawcalls her nicht limitiert, haettest aber schon 32Mio dreiecke pro frame, nur fuers terrain.
    Natuerlich kann man noch anderweitig optimieren, aber das duerfte erstmal ok sein, mehr als das pro batch wuerde keine vorteile bringen, vermutlich. weniger wuerde auch nicht wirklich was bringen, dann haettest du 4000 drawcalls mit je 8k dreiecken, eventuell wegen besserem culling 3900.

    es kommt natuerlich drauf an wie gross dein terrain insgesammt ist. 1000 drawcalls solltest du nicht uebersteigen muessen, denn das was du dann drauf zeichnest wird sehr viel mehr drawcalls sein und dann bist du wirklich drawcall limitiert.


Anmelden zum Antworten