Terrain LOD: Runtime Regular-Grid Approaches
Implementations with Source
-
seamless
-
CDLOD by Filip Strugar
- a very clear, easy to follow paper with demos and complete source
code, implemented on DirectX
- libMini by Stefan
Röttger
-
Chunked
LOD by Thatcher Ulrich
- ChunkLOD is a hybrid approach which takes a grid as input, and
generates a file containing "chunks" which are sections of the terrain
as RTIN LODs
- a runtime engine then loads the "chunk file" and very efficiently
swaps as needed, for very high polygonal throughput, approaching the
limits of the graphics card
- includes full public-domain source, using OpenGL and SDL:
tu-testbed
page at Sourceforge, the
paper (pdf) describes the general algorithm, and the
readme contains implementation details
- it can read BT
and works very well with the VTP distribution data files
- an adaptation of chunkLOD to OSG by Vladimir Vukicevic is on the
page
osg tools and
hacks
- ROAM
by Mark Duchaineau
- a full implementation is now available of this classic academic
algorithm
- source compiles on SGI boxes and on recent Linux distributions
- SoTerrain
- a terrain visualization library for Coin (GPL implementation of
OpenInventor)
- includes a finite dual queue ROAM implementation, and a Geo
Mip-Mapping implementation
- SOAR
by Peter Lindstrom and Valerio Pascucci
- implements
Visualization of large terrains made easy
- the preprocessing stage requires "8/3 × 20", or around 53 bytes per
heixel
- at runtime it requires "from 20 to 33" bytes/heixel
- does geomorphing, reads data from PNG
- full source, but a restrictive license, only free for limited
noncommercial use
- Demeter
by Clay Fowler (site was terrainengine.com, now only at
SourceForge : Demeter)
- cross-platform C++ library, license is LGPL
- the core library is dependent only on OpenGL; useful additional
functionality is built on GDAL,
SDL,
OSG
- supports detail textures using splatting
- Seumas Young's
Terrain Tutorial
- A ten-part series of articles with a simple description of modeling and
rendering a basic artificial terrain. The LOD is derived from
Lindstrom's
Terrain Simplification Simplified. There is lots of good advice
with illustrated examples (bake the lighting into the terrain, don't
recompute detail every frame, limit camera motion, etc.)
- Includes
source (for Windows and OpenGL)
-
Bryan
Turner's article describing the TreadMarks algorithm (split-only
ROAM bintrees)
- Ranger
Mk II by Andras Balogh
- implements an improved version of Lindstrom's
SOAR algorithm; Andras refers to his algorithm as SOARX
- the improvements, detailed in
his thesis (pdf), include optimization of the triangle striping
process, and additional of procedural detail to the lowest level of
detail
- makes heavy use of cutting-edge graphics card features, so it runs
only on recent NVidia cards
- lScape
by Adrian Welbourn
- implements
geomipmapping
based on a paper by Willem H. de Boer
- implements
hierarchical visibility based on a paper by A. James Stewart
- implements
texture splatting based on a paper by Charles Bloom
- beautiful cast shadows
- includes source under GPL!
- uses advanced OpenGL features: accelerated rendering with
NV
Var Fence
and texture_env_combine
, where supported
by ICD
- Danny Chapman's
gliding flight sim
- primarily a glider simulation, with several precalculated "wind
field" data files for realistic wind modelling
- provides a open-source implementation of Lindstrom's
Visualization of large terrains made easy, including geomorphing and
view-frustum culling
- binary for Windows, source for Linux; uses OpenGL & GLUT
- nice cast shadow of the glider onto the ground
- XTerra
by Ofer Hoberman
- open source implementation of Röttger's approach, demo built on GLUT
- reads supplied .RAW files for height and texture
-
Crystal Space / DDG
(Digital Dawn Graphics Toolkit)
- Alex Pfaffe's project DDG developed a CLOD implementation which has
been merged with the Crystal Space cross-platform 3D toolkit
- classes: ddgTBinTree is used for CLOD of 32x32 sample blocks and
ddgTBinMesh sews a collection of bintrees together to form a continuous
larger mesh
- implements frame coherency like ROAM
- basic structure requires 3 bytes plus height field values (2 bytes),
total 5 bytes/heightmap sample, plus 12 bytes per drawn vertex
Old / Historical
- awu - terrify
- 2003 (?) seems to be no longer online.
- based on Lindstrom and Pascucci's work in "Visualization of Large
Terrains Made Easy", but the algorithm has been made even easier
- clean, simple source and executable for Windows, but should be
easily portable
- efficient memory usage per heixel (1 byte Z, 1 byte error, 1 byte
radii lookup)
- engine1
by David Dufke (2006)
- an OpenGL-based engine, full source
- ROAM-derived CLOD terrain
- reads BT, handles 4k*4k easily
- Continuous LOD Terrain Renderer, 1997
-
implementation
of the Lindstrom-Koller algorithm
- by Torgeir Lilleskog of the
Norwegian University of Science and
Technology, packaged and presented by Bjørn Stensrud
- a very detailed descriptions and analysis of other algorithms is
contain in the paper Textured Terrain Rendering on Low-End 3D
Hardware
- their sample terrain is a small nonstandard DEM of Nordoeyane on the
coast of Norway, 542*532 points
- since the data points are so far apart, the LOD algorithm rarely has
an opportunity to cull vertices, making this a non-ideal showcase for
terrain LOD
See Also: some commercial Game
Engines (Middleware) provide impressive Terrain LOD capabilities