Release Notes

Version 2.7 (July 2015)

  • New ObjectIndex system for picking and selection
  • New RTT-based picker that works for all geometry including GPU-modified geometry
  • Extensions - modular code for extending the capabilities of osgEarth
  • New procedural texture splatting extension
  • Upgraded ShaderLoader for better modularization of VirtualProgram code
  • New “elevation smoothing” property to MP terrain engine
  • New support for default MapNodeOptions
  • Logarithmic depth buffer lets you extend your near and far planes
  • Better Triton and Silverlining support
  • Overhaul of the elevation compositing engine and ElevationQuery utility
  • New Raster Feature driver lets you generate features from raster data
  • Attenuation and min/max range for image layers
  • New shader-based geodetic graticule
  • New day/night color filter
  • Viewpoint: consolidation of look-ats and tethering
  • New CoverageSymbol for rastering features into coverage data; agglite driver support
  • New feature clustering and instancing algorithms for better performance and scalability
  • Noise extension for creating a simplex noise sampler
  • New TerrainShader extension lets you inject arbitrary shader code from an earth file
  • VirtualProgram: specify all VP injection criteria with GLSL #pragmas
  • Normal mapping extension with automatic edge-normalization
  • Bump map extension for simple detail bumping
  • Performance improvements based on GlowCode profiling results

Version 2.6 (October 2014)

Maintenance Release. Release notes TBD.

Version 2.5 (November 2013)

Terrain Engine

The terrain engine (“MP”) has undergone many performance updates. We focused on geometry optimization and GL state optimization, bypassing some the OSG mechnisms and going straight to GL to make things as fast as possible.

MP has a new optional “incremental update” feature. By default, when you change the map model (add/remove layers etc.) osgEarth will rebuild the terrain in its entirely. With incremental update enabled, it will only rebuild tiles that are visible. Tiles not currently visible (like those at lower LODs) don’t update until they actually become visible.


Caching got a couple improvements. The cache seeder (osgearth_cache) is now multi-threaded (as it the TMS packager utility). The filesystem cache also supports expiration policies for cached items, including map tiles.


We updated osgEarth to work with the newest Google V8 JavaScript interpreter API. We also now support JavaScriptCore as a JS interpreter for OSX/iOS devices (where V8 is not available).

Terrain Effects

A new TerrainEffect API makes it easy to add custom shaders to the terrain. osgEarth has several of these built in, including NormalMap, DetailTexture, LODBlending, and ContourMap.

New Drivers

There is a new Bing Maps driver. Bing requires an API key, which you can get at the Bing site.

We also added a new LibNOISE driver. It generates parametric noise that you can use as terrain elevation data, or to add fractal detail to existing terrain, or to generate noise patterns for detail texturing.

Other Goodies

  • Shared Layers allow access multiple samplers from a custom shader
  • A new “AUTO_SCALE” render bin scales geometry to the screen without using an AutoTransform node.
  • PlaceNodes and LabelNodes now support localized occlusion culling.
  • The Controls utility library works on iOS/GLES now.

Version 2.4 (April 2013)

  • New “MP” terrain engine with better performance and support for unlimited image layers (now the default)
  • Shader Composition - reworked the framework for more flexible control of vertex shaders
  • EarthManipulator - support for mobile (multitouch) actions
  • GPU clamping of feature geometry (ClampableNode)
  • TMSBackFiller tool to generate low-res LODs from high-res data
  • OceanSurface support for masking layer
  • New RenderSymbol for draw control
  • Fade-in control for feature layers
  • OverlayDecorator - improvements in draping; eliminated jittering
  • Added feature caching in FeatureSourceIndexNode
  • ShaderGenerator - added support for more texture types
  • Draping - moved draping/clamping control into Symbology (AltitudeSymbol)
  • Lines - add units to “stroke-width”, for values like “25m”, also “stroke-min-pixels”
  • PolygonizeLines operator with GPU auto-scaling
  • New Documentation site (stored in the repo) at
  • Decluttering - new “max_objects” property to limit number of drawables
  • New ElevationLOD node
  • SkyNode - added automatic ambient light calculation
  • New DataScanner - build ImageLayers from a recursive file search
  • Qt: new ViewWidget for use with a CompositeViewer
  • Map: batch updates using the beginUpdate/endUpdate construct
  • GLSL Color Filter: embed custom GLSL code directly in the earth file (
  • Agglite: Support for “stroke-width” with units and min-pixels for rasterization
  • Terrain options: force an elevation grid size with <elevation_tile_size>
  • Better iOS support
  • New “BYO” terrain engine lets you load an external model as your terrain
  • New “first_lod” property lets you force a minimum LOD to start at
  • Better support for tiled data layers
  • Lots of bug fixes and performance improvements
  • New documentation site stored in the osgEarth repo (