Ich hatte gerade noch eine interessante Idee. Nicht das ich mich wirklich intensiv mit Terrain Rendering beschäftigen würde, aber es klingt trotzdem ganz nett.
Die Grundidee ist ja, dass man in der Nähe der Kamera viele Details haben möchte, und im Hintergrund wenige. Dafür kann man eine große Heightmap in verschiedene Teile aufteilen, die jeweils in verschiedenen Detailstufen vorliegen. Je nachdem wie weit ein Teil von der Kamera entfernt ist, wird es dann mit mehr oder weniger Details gerendert.
Nehmen wir jetzt an, wir würden den Ansatz mit der Heightmap in der Textur, die im Vertexshader ausgelesen und als Höhe für die Vertexe benutzt wird. Wenn unser komplettes Terrain in eine einzige Textur passt, müsste folgendes funktionieren:
Man erstellt ein spezielles Raster (als Mesh), dass in der Mitte eine sehr hohe Dreiecksdichte hat, zum Rand hin aber eine geringe. Dieses Mesh rendert man jetzt immer an der Kameraposition, so dass automatisch in der Nähe der Kamera viele Dreiecke sind, in der Entfernung aber nur wenige. Durch einen passenden Offset (basierend auf der Kameraposition) verschiebt man beim Rendern aber die Texturkoordinaten, so dass immer der passende Teil der Landschaft dargestellt wird. Durch entsprechende Filtereinstellungen würde alles außerhalb des Terrains die Höhe 0 bekommen, also eine flache Ebene.
Dadurch wird das komplette Terrain-Rendering ziemlich simpel: Man muss nur noch ein Modell mit einer Textur rendern, hat aber trotzdem ein LOD-System und immer eine konstante Dreieckszahl, unabhängig von der Größe oder Auflösung des Terrains (entscheidend ist halt das Mesh, das man passend wählen muss). Damit die Vertexe nicht über das Terrain "schwimmen" muss man eventuell noch einen zusätzlichen Offset einbauen.
Ein paar Nachteile hat das ganze natürlich auch: Das LOD System ist darauf ausgelegt, dass die Kamera "auf" der Landschaft steht, für Flugsimulationen will man vermutlich andere Aufteilungen haben. Außerdem möchte man normalerweise in flachen Bereichen wenige, in detailreicheren Bereichen dagegen mehr Dreiecke haben (damit die Form von weit entfernten Bergen trotzdem noch gut wiedergegeben wird). Das wäre mit dieser Technik unmöglich, da sie ja gerade unabhängig vom konkreten Terrain sein soll.
Falls man Probleme mit der Texturgröße bekommt, wäre auch ein mehrstufiges System denkbar: Ein Terrain für die Nähe und eines für die Entfernung, das analog funktioniert, aber mit einer niedriger Aufgelösten Textur (die aber die selbe Größe hat und damit eine größere Landschaft abdecken kann).
Den Hauptvorteil sehe ich darin, dass man die beschriebene Technik sehr schnell (ein Nachmittag oder so) implementieren kann. Wenn man nicht richtig viel Zeit ins Terrain-Rendering investieren will, sondern einfach nur ein Terrain, das funktioniert, aber nicht unbedingt immer optimal ist, haben möchte, könnte das durchaus etwas sein.