Ну МОЙ способ сделать это - сжать ОГРОМНУЮ текстуру (128Kx128K) с моей системой вейвлет-сжатия, чтобы получить сжатие ~ 150: 1. Затем я загружаю текстуру с диска. т. е. мир делится на несколько кусков 256x256 (на самом деле это своего рода отображение с расстоянием от камеры). Я использую положение камеры, чтобы переместить несколько кусков вокруг положения камеры.
Затем я вычисляю видимые куски и рисую их. Для этого я использую данные о высоте непосредственно в качестве потока, подаваемого в мой вершинный шейдер. Затем у меня есть сетка, где положения вершин соответствуют положениям высоты в потоке высоты. Затем я могу просто вытащить y из потока карты высот и поместить его в положение y моего шейдера.
Это довольно сложный способ рендеринга ландшафта, но вы спросили, как это делают "вы";)
PS бонус 128 000x128 000 в том, что я получаю 128 км местности с точностью метра: D