Terrain Rendering

I’ve been interested in realtime terrain rendering for quite a few years. You can find some of my project related to this field in this article. I don’t have any specific plans for future but I’ll probably do some terrain rendering experiments when DirectX 11 comes out. And spherical terrain rendering (planets) is interesting too.

If you’re interested in terrain rendering, there’s a list of most popular algorithms at VTerrain project.

Multilevel Geomipmapping

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.

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:

SOAR

glSOAR is ObjectPascal implementation of SOAR terrain rendering algorithm using OpenGL. It can be compiled using FPC or Delphi compiler and works in Windows and Linux (only benchmarking mode). No fancy OpenGL extensions are required, it should work with any OpenGL 1.2 and newer drivers.

SOAR algorithm was published by Peter Lindstrom and Valerio Pascucci in 2001. Papers and original C implementation can be found at https://computation.llnl.gov/casc/SOAR/SOAR.html. SOAR starts with coarse terrain mesh each frame and uses view-dependent refinement (standard longest edge bisection) to calculate mesh to be rendered – stress is on the CPU.

Download latest release

  glSOAR
» 28.8 MiB - 3,130 hits - January 18, 2009
Pascal implementation of SOAR terrain rendering algorithm using OpenGL. Source code, test terrains, and binaries for Windows and Linux included.

Screenshots and more info

Volcanoes in glSOAR Wireframe overlay

Parameters for glSOAR (terrain & display options) can be passed to program as command line arguments. Alternatively, you can use included GUI tool (Windows only). List of parameters as well as controls is included in archive. You can also run glSOAR in Benchmark mode and compare your results with some others (located in Bin/Results directory).

glSOAR Launcher

9 thoughts on “Terrain Rendering

  1. Download latest release

    glSOAR (28.8 MiB, 17 hits)
    You need to be a registered user to download this file.

    But where can i register

  2. a nice work. but here is a link for original C implementation. on clicking it results in URL not found. Please send me the link for original C implementation.

    thanks
    regards
    vivek

    • Looks like directory structure of their server has changed, I fixed URL in the article to point to the new location.

  3. It looks that the link for original C implementation of SOAR is broken again… Could you please send me the link for the original C implementation?

Leave a Reply

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

*

* Copy this password:

* Type or paste password here:

476 Spam Comments Blocked so far by Spam Free Wordpress

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>