Multilevel Geomipmapping

Note: this info dates 2007-2008.

My latest terrain rendering project is extension of Geomipmapping method. It was a basis for my Master’s thesis. Implementation uses OpenGL for rendering and GLSL shading language.

Very Brief Overview

Original geomipmapping can’t handle very large terrains well. There’s too many small terrain blocks making it more CPU intensive and of course the whole terrain won’t fit in memory. In multilevel geomipmapping terrain data can be stored not only in quadtree leaves but in all nodes. Higher level node has terrain data for his children but in lower level of detail. During refinement, nodes are “split” or “merged” according to view-dependent error metric. Data for each node are then composed of traditional geomipmaps.

Terrain data (elevation, color textures, normal map, etc.) are preprocessed and stored in large files. Data for specific nodes (visible) are loaded during rendering in background thread and stored in cache (maximum cache size can be specified).

Implementation

Multilevel geomipmapping implementation program is written in Object Pascal and uses OpenGL 2.0 with GLSL shaders. It’s OS independent and uses SDL for window management and user input handling. See post Multilevel Geomipmapping Program + Sources Released for release info and download.

Current Status

Implementation is basically finished (only patching of seams between terrain blocks in special case doesn’t work now) and working. I’ll release it with source code when I clean it up a little bit and add some finishing touches. The problem is I won’t be able to upload very large terrain data (test set is ~3GiB). I could upload my thesis but it’s in Czech language. See some pictures at least:

  • Small terrain 2k x 2k
  • Small terrain 1k x 1k
  • Multilevel tree nodes and wireframe display
  • Launcher application
  • Large terrain 16k x 16k
  • Terrain surface visualization modes

5 thoughts on “Multilevel Geomipmapping

Leave a Reply

Your email address will not be published. Required fields are marked *