S
Ok, also ich habe mich vorerst für eine Lösung ohne LOD Algorithmen entschieden, und werde einfach BruteForce - Ansatz nehmen, da es in der Situation am geeignetesten ist. Wobei ich dann das Terrain noch mit Quadtree in ein paar Terrain-Patches unterteile (ca.32x32 Dreiecke), damit ich nur den Bereich anzeigen (ca. 4 x 4 Patches), der im ViewFrustum liegt.
Soweit wäre es ok.
Die zweite Frage war/ist ja noch, wie man Terrainverformung am besten schafft.
Da habe ich einige Ansätze:
Kompletten Terrain-VertexBuffer (alle Patches) in x,y,z-Koordinaten vorberechnen (FFP) und bei Bedarf (z.B. Granatenanschlag) den VertexBuffer an bestimmten Stelle locken/unlocken, verändern.
Ist aber ziemlich langsam.
Kompletten Terrain-VertexBuffer (alle Patches) in x,z-Koordinaten vorberechneny und y-Koordinate (Höhe) jede Frame über Heightmap mit Hilfe von VertexShadern mit richtigen Koordinaten füttern.
Bei TerrainVerformung (z.B. Granatenanschlag) wird Heightmap als RenderTarget an der nötigen stelle upgedated, somit updaten sich auch automatisch die y-Koordinaten des VertexBuffers.
Diese Methode scheint den Transfer-Bus zu entlasten (hin und her schieben vom VertexBuffer), aber belastet stark die GPU, da die y-Koordinate jede Frame bei jedem Vertex neu gesetzt werden muss.
Ausserdem ist das glaube ich erst ab VS 3.0 in akzeptabler Geschwindigkeit möglich, da VertexShader erst ab der Version die Heightmap Textur dafür missbrauchen kann (bin mir unsicher).
So, gibts noch andere Ansätze oder gibts an diese was auszusetzen und was würdet ihr empfehlen ?