OSG News (most significant items from ChangeLog)
================================================

26th November 2004 - OpenSceneGraph-0.9.8

    >>> Support for database archives, improved pager, 3d compressed textures

    Release 0.9.8 reflects a continuation of the prior committment to release 
    often, arriving only two short months after 0.9.7.  This contrasts sharply 
    to the long period between 0.9.6-2 and 0.9.7.  The following set of 
    improvements and features are part of the 0.9.8 release.

    The osgDB Pager has been Improved to provide better multi-processor 
    stability and constant frame rate peformance.

    Reference documentation has been taken out of the main distribution and 
    placed on the public website.  The documentation is also now completely 
    built with Doxygen.
    
    New Plugins added or modified this release:

        o STL    - This plugin provides OSG with the capability to import 
                   Stereolithography files, commonly used in the CAD 
                   markets.
    
        o NET    - This plugin provides OSG with the ability to read data files
                   from a web site through an http interface.
    
        o OSGA   - This plugin provides database archival support, including
                   large file (greater than 2 GB) support.
        
        o OBJ    - The existing obj plugin has been re-written for clean up. 
    

    New support for 3d texture compression using the 
    GL_NV_texture_compression_vtc extension has been added, providing an 
    improvement on the S3TC compression techniques.
    
    The OSG Spelling Bee is making its mark in this release, with submissions
    by the community to correct spelling and typo errors throughout the osg,
    osgDB and osgUtil libraries.
    
    osgDB::ReaderWriter and osgDB::Registry have been refactored to allow
    multi-threading of database reading and writing.        
    
    The NodeTrackManipulator has been improved.    
    
    Several general bug fixes have been fixed.
    
    Producer and osgProducer now provide new Mac OSX CGL support, providing an
    environment that is independent of X11.

    A few new examples have been added as well:

        o osgplanets    - A simple example that demonstrates an attempt at 
                          accurate depiction of planetary motion.
        o osgspotlight  - An example demonstrating a spot light using 
                          a projected texture.
        o osglauncher   - An example which reads a config file and displays other examples 
                          and shows and launches them by clicking on the icons.
        o osgmotionblur - An example of motion blur using accumulation buffers

18th August 2004 - OpenSceneGraph-0.9.7-2

    Build fixes for VisualStudio6.0.  
    Fixes for osgFX registry support. 
    Fixes to osg::Image::flipVertical() adding support for mipmaps and
    compressed textures.  
    DDS plugin now can vertically flip images by using "dds_flip" Options string.
    Added support in osgTerrain for reading imagery with color tables. 
    

9th August 2004 - OpenSceneGraph-0.9.7

    >>> support for and generation of large scale geospatial databases,
    >>> support for movies and examples of shadows and volume rendering.
    
    The 0.9.7 encompasses many improvements, bug fixes, new examples and 
    significant new functionality, the most notable of which is a new 
    osgTerrain library for generation of large scale geospatial databases.
    
    The new osgTerrain library and associated osgdem utility program 
    allows users to use moziacs of geospatial imagery and digital elevation
    maps to generate a complete paged database which can be used with 
    standard OSG viewers, and users programs. By utilising GDAL to load the
    imagery and DEM's a wide range of geospatial formats are supported.   
     
    The TerraPage plugin has also been rewritten ontop of the OSG's 
    osg::PagedLOD and osgDB::DatabasePager which provides support for the 
    tile fallback mechanism to ensure that no holes or cracks appear in the
    databases being roamed, and to achieve constant frame rate via load 
    balancing mechanisms with osgDB::DatabasePager.
    
    The osgDB::DatabasePager has been further improved to provide more 
    configurable load balancing which allows application developers to achieve
    constant frame rates when using paged databases.
    
    Double Vec & Matrix classes & CoordinateSystemNode/EllipsoidModel class
    have been introduced to better support browsing of large scale databases,
    and to provide a mechanism for tracking the local up orientation when 
    roaming whole earth databases.
    
    osgUtil has been enhanced with:
     - an improved triangle tipper class (osgUtil::TriStipVisitor),
     - a new simplifier (osgUtil::Simplifer) for reducing triangle density of
       osg::Geometry leaves (utilised by osgTerrain to provide simplification 
       of terrain tiles), 
     - improved and more configurable optimizer (osgUtil::Optimizer),
     - a new utility class for compiling and releasing OpenGL objects 
      (osgUtil::GLObjectVisitor) replaces the previous and more limited 
       DisplayListVisitor.
    
    All the osgGA::MatrxManipulator's (used for camera manipulator etc) have
    been revamped with usage of doubles internally, and with tracking of the
    current CoordinateSystem if one is active, to be better support whole 
    earth databases.  All the MatrixManipulators have been extend to allow 
    the setting of a user defined home position.  Two new manipulators have
    been introduced osgGA::TerrainManipulator, for roaming whole earth/terrain 
    databases, and osgGA::TrackerManipulator which allows the camera to be
    attached to a node in the scene graph.

    Movie support under Linux and OSX via libMpeg3 and Quicktime respectively, 
    which extend the new osg::ImageStream base class which allows application 
    developers access to playing, pausing and rewinding movies. 

    The conversion utility osgconv has been extended to allow compression of 
    textures and mipmap generation during conversion when writing to the native 
    .ive binary format.  Texture compression and pre computer mipmaps enable 
    faster loading of databases and lower utilisation of memory resources.

    Write support added to JPG plugin.
    
    Write + 3D texture support added to DDS plugin.
    
    Pseudo loaders .trans, .rot and .scale have been added.
    
    Updated LWO, AC3D, BMP, IVE and FLT loaders.
    
    osg::TexGenNode has been added to provide a mechanism for positioning 
    OpenGL's texture coordinate generation planes.

    Fourteen new examples have been added:
    
        osgdem            a utility for creating large scale geospatial paged 
                          database

        osgphotoalbum     an example of how to use PagedLOD to dynamic generate 
                          geometry for paged in imagery

        osgbluemarble     an example of how to build PagedLOD database for 
                          paging imagery

        osgtesselate -    an example of how to use osgUtil::Tesselate to 
                          tessellate polygonal boundaries

        osgsimulation     an example of how to use various features in osgSim.

        osgdepthshadow    an example of how to implement shadows use depth 
                          shadow textures.

        osgsimplifier     an example of how to use the new osgUtil::Simplifier.

        osgspacewarp      an example of how to create a special effect that 
                          depends upon tracking the modelview matrix.

        osgdistortion     an example of how to use prerendering of a texture to 
                          create a distortion effect.

        osgsimple         a bare bones example of how to create a simple viewer
                          using a Windowing toolkit, in this example using 
                          Producer, but is written so the example could easily 
                          be modified to work with other Windowing toolkit.

        osgkeyboardmouse  adding to keyboard and mouse functionality on the
                          osgsimple base.

        osgsimplepager    adding database paging support to the osgsimple
                          example.
    
        osgmovie          an example which creates a quad to render a loaded
                          movie file with - requires the LibMpeg3 (Linux) or 
                          Quicktime (OSX) plugin to work.
        
        osgvolume         an example that reads a stack of 2d images to create
                          a 3D texture, and creates a scene graph using 
                          standard OSG components (osg::ClipNode, 
                          osg::TexGenNode, osg::Billboard and 
                          osg::TexEnvCombine) to create a per per lit volume.

    
    Wrapping up the complete 0.9.7 release is a wide range of smaller features 
    enhancement and many bug fixes. 


2nd October 2003 - OpenSceneGraph-0.9.6-2

    >>> osgFX Special Effects nodekit (for bumping mapping & cartoon effects etc), support for double Matrix traversals, 
    >>> improved build support, thread safety and robustness.
    
    The new osgFX nodekit, written by Marco Jez, adds a set of decorator 
    nodes that add can be conveniently added above subgraphs in your scene 
    to add special a range of special rendering effects.  Effects include 
    AnisotopicLight, BumpMapping, Scribe, Specular Highlights and Cartoon 
    rendering.
    
    Support for double Matrices has been added with the new Matrixd class,
    and complimented by the a Matrixf class.  The original Matrix class is
    now a typedef which can be set to either Matrixf or Matrixd (which is 
    now the default),  When the Matrix typedef is set to Matrixd and the OSG and
    dependent apps are recompiled all internal operations such a cull traversals 
    will now be double with double matrices which much improved numerical
    precision, making it ideal for datasets where a large values are contained
    with transforms in the scene graph (such as with whole earth databases), 
    and when a transforms are nested which creates requires concatenation of 
    a number of matrices to get the final model view matrices.  
    
    The osgGA::MatrixManipulators (which are used to control the camera 
    position) and osgProducer/OpenProducer have been moved across to using
    exclusively double Matrices.  This has been done to improve numerical
    precision when computing camera positions, whilst having little impact
    on performance since camera operations are only done a small number of
    times per frame.
    
    osg::Quat now supports doubles by default, but also allows users to select
    float version osg::Quat simply by changing the osg::Quat::value_type typedef.
    
    Work has been on OpenThreads and OpenProducer, in particular to improve 
    thread safety and robustness on the Win32 platform.  Reported crashes 
    on exit from osgProducer::Viewer based apps, and freezes during runtime 
    have been fixed.
    
    Threading problems which caused crashes in recent updates of the Terrapage
    loader have also been fixed, and additional internal changes have been made
    to improve the Terrapage loader's ability to hit constant frame rates.   
    Support has also been added for loading light points directly from the 
    Terrapage database.

    A new .iv/.wrl loader plugin, written by Vivek Rajan, at Magic Earth,
    has been added to the distribution which uses with OpenInventor or Coin 
    to load model, converting them into OSG equivalents.  Coin has support 
    for VRML97 models, so can be used to import such models into the OSG.  
    Since the new plugin is dependent on OpenInventor or Coin the compilation 
    is optional, but off by default. To compile this plugin under Unix, set 
    the environmental variable USE_INVENTOR or USE_COIN and recompile.  
    Windows .dsp project file does to current exist, but should be 
    possible to add this.
    
    The .ive plugin has been improved with the addition of support for
    osgSim light points, and various internal refinements to make it function
    better on the various platforms supported by the OSG.  Note, these changes
    mean that the .ive format has has changed and is no longer compatible
    with previous version of .ive. It is recommend that one recreates .ive
    for the original source via osgconv or similar to ensure consistency.

    A JPEG2000 image plugin has added, written by Michael Gronager.  The new jp2
    plugin uses the japser open source project to read and write JPEG2000 files.
    
    A scalar bar, and sphere segment helper classes have been added to osgSim,
    the new osgscalarbar and osgspheresegment examples demonstrate how to use
    these new features.
    
    To help handle running applications of graphics cards/drivers that exhibit
    bugs with certain OpenGL extensions, support has been added to the GLextensions
    code to allow extensions to be disabled via the new 
    osg::setGLExtensionDisableString(std::string) function or by setting an 
    OSG_GL_EXTENSION_DISABLE environmental variables.  Follows is an example of 
    the disable string:
    
        set OSG_GL_EXTENSION_DISABLE =
             "ATI:GL_SGIS_generate_mipmap;Sun:GL_EXT_texture_filter_anisotropic:"

    New examples include:
    
        osgforest - an example which demonstrates simple techniques for creating forests    
        osgfxbrowser - an example which demonstrates the various osgFX Effects available    
        osgscalabar - an example of how to set up the osgSim::ScalarBar.
        osgspheresegment - an example of how to set up the osgSim::SphereSegement
        osgpagelod - a very simply test program for setting up osg::PagedLOD/osgDB::DatabasePager
    
23rd July 2003 - OpenSceneGraph-0.9.5

    >>> Support added for OpenGL2.0 shaders, native multi-threaded Database paging,
    >>> high peformance binary format reading and writing,  .dds compressed image
    >>> loader and ARB_fragment_program and ARB_vertex_buffer_object extensions,
    >>> improvements to the Terrex .txp and OpenFlight .flt loaders.

    The key new features of the 0.9.5 release are the new OpenGL2.0 nodekit, constant frame rate 
    database paging support,  classes,  and the new native .ive binary plugin which supports 
    both reading and writing of all core osg nodes, including inlining of compressed 
    and non-compressed imagery. 
    
    The native database paging support, provided by the new osg::PageLOD and osgDB::DatabasePager,
    achieves constant frame rate through threading of the database reading, and time based 
    incremental compile and delete of display lists, vertex_buffer_objects and texture objects. 
    A new TextureObjectManager class also caches a list of expired texture objects for reuse, 
    and allows new newly loading imagery to reuse expired texture objects, with the imagery 
    automatically subloaded to the reused texture objects.  This reuse happens transparently 
    and benefits other OSG usages such as the OSG's Terrapage loader.
    
    To provide support multi-thread operation of the OSG, such as multi-thread database paging
    and multi-threaded, multi-window graphics enabled by OpenProducer, the OpenSceneGraph and
    OpenProducer have now adopted the OpenThreads threading library, osgDB and osgProducer now
    depend upon it.  OpenThreads is open source, light weight, cross platform C++ threading 
    which encapsulates the low level, platform specific threading API calls.  Currently pthreads
    under Unix and Win32 threads under Windows are supported, with Sgi sproc threads to be 
    released very soon.  The OpenThreads project website can be found at http://openthreads.sf.net.    

    The new .ive binary plugin was developed by Uni-C's VR-Center, and kindly submitted as 
    open source, adds support for binary reading and writing OSG nodes drawable and state 
    (including compressed/mipmapped) textures.  The .ive format produces a much faster 
    load times and smaller file size then native ASCII .osg format. Load times for .ive 
    files are also 10-20x faster then equivalent OpenFlight .flt and load in an already 
    optimized scene graph form making it much more suitable for paging.  Files can be 
    converted easily using the osgconv utility : osgconv myfile.flt myfile.ive
    
    The new osgGL2 nodekit library adds support for the OpenGL2.0 vertex ProgramObect and fragment 
    ShaderObject's recently ratified by the OpenGL ARB, . The osgGL2 uses the extension have local
    prototypes which allow them to be compiled even in the absence of OpenGL headers that don't
    support the GL2 extension, allowing to port to all platform, and at runtime the extensions are
    queried for and used if available.  At time of release only 3DLabs WildcatVP series supported
    this extension at runtime, but other graphics cards and manufactures will be releasing GL2
    extension very soon and will be automatically supported by osgGL2. The osgGL2 was developed
    by Mike Weiblen at 3DLabs whom have kindly submitted osgGL2 as open source and for inclusion
    with the OSG distribution.  

    The ARB_fragment_program, ARB_vertex_buffer_object and ARB_vertex_program attributes are
    also now supported in core osg library.  The new osg::FragmentProgram state attribute
    encapsulates the ARB_fragment_program which is supported by the recent graphics cards
    from NVidia, ATI and 3DLabs.  Support for ARB_vertex_buffer_object and ARB_vertex_program 
    attributes have been added to the osg::Geometry class.  The ARB_vertex_buffer_object extension
    can boost performance by as much as 50% when working on geometry bound data sets.

    Two new image loaders, dds and pnm, and a 3dc point cloud have been added. The .dds plugin
    adds support for compressed & mipped mapped imagery, making it ideal for applications where 
    large texture sizes or database paging is required. The pnm image loader reads the
    pnm, pgm and pbm image formats. See http://netghost.narod.ru/gff/vendspec/pbm/ for details.

    The Terrapage .txp plugin  been updated to include support for multi-texturing, layers and billboards 
    and includes improvements to multi-threaded pager, which has also been ported over to use OpenThreads.
    The OpenFlight .flt plugin has also been improved and now support detail textures via multi-texturing.

    TessellationHints now supported by ShapeDrawable which allow the shape primitives to be rendered
    are vary levels of detail.

    Supported has been added for auto scaling and rotating text into osgText.

    Five new examples have been included in the distribution:
    
    	osgtexturerectangle illustrates how to use the osg::TextureRectangle which encapsulates 
	the NV_texture_rectangle extension.
	
     	osgprerendercubemap illustrates how to use pre rendering imagery to osg::TextureCubeMap
	for tasks such as building a environmental texture maps.
	
	slideshow3D is a presentation tool which use a scene graph to store a render set of slides, each 
	slide containing layers which can contain bullet points, paragraph, imagery and 3d animated
	models - and is effectively a 3D power point. The presentations can be built separately and stored in a .osg file or created by
	slideshow3D via an xml file, two examples - introduction.xml and models.xml, which are included 
	in the OpenSceneGraph-Data-0.9.5 data distribution.  slideshow3D depends upon libxml2 for parsing
	the xml files.
	
	osgpoints uses the osg::Point state attribute to attenuate and control point size and any points
	loaded by the application.  This is a useful way of visualizing point data clouds.
	
	osgdemeter is example of how to integrate the Demeter, OSG using osgProducer::Viewer as a viewer
	class.  This example depends upon the demeter terrain engine, which can be download from 
	http://www.terrainengine.com.

    Camera style convenience set and get methods to osgUtil::SceneView, consolidating
    previous functionality that was provided by both osg::SceneView and osg::Camara into one place.
    This move has made osg::Camera redundant so has it been removed to avoid confusion, 
    usage inconsistencies and bloat of core libraries.
    
    The long time deprecated osg::GeoSet has been removed, to aid migration of old .osg datasets 
    osgconv has a copy of GeoSet and the .osg support for it so is able to convert any remaining 
    .osg database which contained GeoSet's.

    

28th April 2003  - OpenSceneGraph-0.9.4-2

    >>> Multi-threaded, multi-pipe support via integration with OpenProducer,
    >>> 64bit Linux support for Intel Intanium and AMD Opteron,
    >>> new osgText library with greater performance, and thread safety,
    >>> new DDS plug-in for compressed and non-compressed images,
    >>> new MD2 plug-in adds support for animate Quake character and
    >>> support added for NV_texture_rectangle.

    The most significant new feature is the osgProducer library that adds 
    tight integration with OpenProducer, providing the OpenSceneGraph with a 
    scalable, configurable and portable framework for developing real-time 
    and interactive graphics applications.  The scalability afforded by 
    OpenProducer allows applications to be developed which run seamlessly 
    on single pipe machines up to multi-pipe machines such as Sgi Onyx 
    IR system, and Sun Zulu systems.
    The osgProducer/OpenProducer framework automatically handles the 
    multi-threading of cull-draw pairs and GUI events.

    All the example programs have been ported over from being based on
    GLUT to using osgProducer (osgGLUT can now be found in the bazaar 
    section on the website). The move to osgProducer allows all the examples 
    to scale from running on laptops up to multiple CPU and graphics pipe systems. 
    The configuration of threading and multiple camera views can all be done
    via ASCII configuration files, no need to recompile.  A number of 
    new examples have also been added or revamped, bringing the total to 42.

    Also in the theme of increasing scalability there is support for 64bit Linux for both
    IA64 (Intel Itanium) and x86-64 (AMD Opteron) which compliments the existing 
    support for Solaris and IRIX 64 bit compilation.  64 bit supports allows 
    the use of very large data sets, and potential performance improvements.

    To help support development teams working with multiple build configuration,
    the makefile system has been extended to allow multiple build targets to be 
    built from one source code base.  All makefiles are also now named GNUmakefile 
    which ensures that they are only run by gmake to avoid an confusion on system
    where gmake isn't the default make tool.

    A completely new osgText implemention has been developed which is simpler 
    to use, faster, and thread safe.  Support for high quality true type fonts 
    has now been moved to a freetype plug-in which is dynamically loaded on demand, 
    with the core osgText library providing a default font when the plug-in is
    unavailable.  Moving the freetype dependency out of the osgText library makes
    it just dependant on OpenGL and Standard C++ like the rest of the core libraries, 
    allowing osgText to compile by default on all platforms.

    Improved thread safety has also been achieved in the core osg and osgUtil libraries
    making work on multiple CPU/multi-pipe systems robust and with improved performance.

    Two new plug-ins have been added, for loading DDS and MD2 data formats. The DDS plug-in
    is for loading compressed and non-compressed images.  The MD2 plug-in loads Quake 
    animated characters.
    
    osg::TextureRectangle class has been added, which encapsulates the
    NV_texture_rectangle and EXT_texture_rectangle extensions.  This is particularly
    useful for render to texture algorithms, and dynamic paging of images such as for
    rendering video streams.

    Support for automatic subloading of osg::Texture2D textures has been added
    so that when image data is updated the corresponding OpenGL texture is
    automatically updated - no need for callbacks.  Also added to the osg::Texture
    classes is the option of automatic unref'ing of texture image data once the data has
    been download to all active OpenGL graphics contexts.
    
    A new osgUtil::DelaunayTriangulator utility class has been added.  This is ideal for
    creating optimal triangular meshes from unconnected data points.

    Two new classes, osg::ArgumentParser and osg::ApplicationUsage, have been introduced
    to convineiently and robustly parse command line arguments and
    report command line usage, environmental variables and keyboard and mouse bindings 
    used by applications.  Running any of the examples with -h or --help will report 
    full details example usage.  Keyboard and Mouse bindings usage is now also available as
    a HUD on all examples, simply press 'h' while the app is running to
    bring up help.

    A database cache in the osgDB library has been added, along with a clean up
    of memory management in the OpenFlight loader, make development of
    dynamic paging of databases easier and more robust.
    
    Support for early abort of rendering has been added, which is useful for 
    interactive applications which occasionally have rendering that takes that long
    enough (i.e.several seconds) that end users may wish to abort during the drawing.

    There have also been many general API improvements and bug fixes, too many to enumerate,
    but all go to solidify the quality of the scene graph and its accompanying libraries.  
    
    The combination of new features, robustness and scalability mark this release as a
    significant step towards 1.0.  
    


24th January 2003 - OpenSceneGraph-0.9.3.tar.gz

    >>> adds support navigational light points, multi-threaded dynamic
    >>> paging of Terrapage databases, ARB_vertex_program extension, 
    >>> DirectD .x model loader, and integration with OpenProducer for 
    >>> multi-threaded, multi-window/pipe rendering.

    Added osgProducer library which integrates the OpenSceneGraph seemlessly
    with OpenProducer to provide runtime configurable management of windows
    and multipipe graphic systems.  The osgproducer demo illustrate how
    developers can write applications very simply that harness the power
    of the OpenProducer and OpenSceneGraph in an extremely flexible way.
    OpenProducer can be downloaded from:
    http://www.andesengineering.com/BlueMarbleViewer/producer_install.html

    Support added for dynamic paging of Terrage databases, the required
    multi-threading is set up by defult.  All the end user application need
    to do is load the database and the paging then happens automatically -
    without any need for intervention by the users application.

    Addition of osgSim which is NodeKit designed for visual simulation
    market, currently features high fidelity light points support.  Light
    point sectors, blink sequences and groups, and light point fading are 
    all supported.

    From Brede Johansen, support added for the ARB VertexProgram extension
    with osgvertexprogram demo showing reflection and refraction in action, and 
    osgpbuffer demo for Win32.
    
    From Ulrich Hertlein, new DirectX .x model loader.

    From Tree, Support for encoded text types in osgText.
    
    New osgshadowtexture demo which illustrates how to create
    dynamic shadow textures in your scene.

    New osglogo demo - features anti-aliased TrueType text and animation.
    
    The app phase of operations on the scene graph has been renamed
    the update phase to make its function clearer. The main phases are now
    named now does update, cull, draw.  The AppVisitor, set/getAppCallback etc
    have be renamed UpdateVisitor, set/getUpdateCallback etc.

    Removed the osg/ManagerManger and associated #define osgNew's, this has
    been done to simplify users code and to solve the lack of thread safety 
    that was causing problems with the MemoryManager.
    
    Support added for reading and writing of callbacks in the .osg format.
    
    Support added for reading and writing of osg::Shapes in the .osg format.

    Support added for reading OpenFlight comment records into osg::Node description
    fields.
    
    Improvements to the GEO loaders.
    
    Numerous bug fixes and API refinements.


13th November 2002 - OpenSceneGraph-0.9.2.tar.gz

    >>> New AC3D and GEO loaders, new Shape primitives, improved OpenFlight support.

    From Geoff Michel, AC3D .wc and Carbon Graphics GEO .geo loaders.

    Support for multi-texturing added to OpenFlight loader.
    
    LOD has been revamped to allow independent min and max ranges for
    each LOD child, bringing it inline with the OpenFlight style LOD
    representation.

    Switch has been revamped to allow independent switching on or off of
    each Switch child, bringing it inline with the OpenFlight style Switch
    representation.

    New osg::Shape geometry primitives added which allow the specification
    of geometry in a form that can accelerate collision detection, and as
    a way of specifying the geometry to tessellate.  Shapes include 
    Sphere, Oriented Box, Cone, Cylinder, Grid, TriangleMesh, ConvexHull
    and CompositeShape which allows the storage of a hierarchy of shapes. 
    
    Geometry has been extended to all per primitive bindings and
    per primitive set bindings of attributes, and indexing of attributes
    with the same or different index lists for each attribute list.

    From Macro Jez, new cubemap helper classes.

    Support added for handling different extensions on different graphics
    contexts.

    Draw and Sort callbacks added to osg::RenderStage.

    Added PolygonStipple class.
    
    Further refinement of class names and method calls:
    Renamed classes : 
    
        Primitive    -> PrimitiveSet
        
    Renamed methods :
    
        Geometry::addPrimitive(..) -> addPrimitiveSet(..)
        Drawable::drawImmediateMode(..) -> drawImplementation(..) const
        Drawable::DrawCallback::drawImmediateMode(..) -> drawImplementation(..) const
    

30th August 2002 - OpenSceneGraph-0.9.1.tar.gz

    >>> Support added for 1D & 3D textures, texture env combiners, secondary color and fog coords, DOFTransform and Sequence nodes. Inventor/VRML and LWO2 loaders added and the a port HP-UX!

    Despite only 6 weeks passing between 0.9.0 and this latest 0.9.1 release
    there has been a number of significant new features, API clean ups and
    bug fixes.  Follows is a quick run through the key improvements.

    Addition of osg::Texture1D, Texture2D & Texture3D classes, Texture2D replaces
    the original osg::Texture, which has now become a pure virtual base class. All
    Texture classes, including TextureCubeMap are derived from this base class..
    
    New osgtexture1D and osgtexture3D demos demonstrate the new texture classes in
    action.
    
    The build system has been updated to support HP-UX.  This adds one of the last 
    remaining mainstream platforms supported.

    A new Inventor/VRML1.0 loader was added.  The inventor format has been requested 
    on numerous occasions, so this is a welcome addition.
    
    Support added to lwo plugin for loading the new lwo2 format.

    osg::TexEnvCombine implemented texture_env_combine and texture_env_crossbar
    and texture_env_dot3 extensions.

    osg::TexEnv texture_env_add added.

    A osg::Sequence node has finally been implemented.  It is accompanied by a
    demo, osgsequence.

    osg::DOFTransformNode implemented.

    Support for OpenFlight15.7 added, DOFTransforms and general enhancements and
    bug fixes.

    New PROTECTED mode for protecting local state mode and attributes from be
    overridden from state above it in the scene graph.
    
    Support for fog coord and secondary colors extensions added to osg::Geometry.

    osg::Billboard has been improved to allow rotations around all axes, as well
    as point rotations.  Check osgbillboard for a new improved demo.

    The osglight example has been improved by utilizing AnimationPath and 
    PositionAttitudeTransform to keep light sources in motion.

    osg::AnimationPath improved, now allowing swing and looping behavior and
    with two new app callbacks which can update PositionAttitudeTransform
    and MatrixTransform respectively.
    
    Support for writing osg::Image's to .rgb format added.

    To keep the overall API clean, and the following items have been 
    renamed and deprecated parts of the API have been removed:

    Renamed classes:

            EarthSky        -> ClearNode
            Transparency    -> BlendFunc
            Texture         -> Texture2D  (old style subload parameters removed)

    Method's changed

            Matrix          -> makeRotate(..) euler angles parameters generalized.
            Quat            -> makeRotate(..) euler angles parameters generalized.

            BoundingBox     -> isValid() renamed valid()
            BoundingSphere  -> isValid() renamed valid()

            StateAttribute  -> OVERRIDE_OFF & OVERRIDE_ON which were short hand
                               versions of OVERRIDE | OFF and OVERRIDE | ON
                               removed, as the meaning of the bitmask was
                               often confused by the short hand notation.


            Transform       -> setMatrix/getMatrix() etc methods removed,
                               Transform becoming the transform base class,
                               with MatrixTransform taking over all the original
                               functionality.


19th July 2002 - OpenSceneGraph-0.9.0.tar.gz

    >>> OpenSceneGraph goes beta - Multitexturing, Occlusion Culling, Particles and much more added!

    This release marks the beginning of the beta phase of the OpenSceneGraph
    development, which means that all the major core features are now
    in the scene graph, and 1.0 is not far away.  Its performance, features 
    and portability already compares very favorably to other scene graphs, 
    both comerical and open source.  

    Multi-texturing support added to osg::StateSet, osg::Geometry, osg::State
    and txp loader, so multi-texturing can now be done with very little coding
    from the user - all you need to do is specify the texture unit to use 
    when setting texturing state and texture coordinates and the rest is 
    handled automatically by the scene graph!
    
    The new osg::Geometry classes which supersedes the old Performer style 
    osg::GeoSet, support multi-texturing, and uses sharable osg::Arrays which
    utilize std::vector<> for data storage and manipulation.

    Shadow volume occlusion culling adding to the core OSG, developed as a
    collobaration between Mike Connell and Robert Osfield. Our implementation
    uses convex planer occluders, with support for holes to allow larger
    and more effective occluders to be used. The approach is software 
    based so it 100% portable, and by culling during the cull traversal 
    both CPU and GPU loads are significantly reduced, making it an extremely 
    powerful feature for large scale urban and indoor visulisation. 

    osgParticle developed by Marco Jez adds support for a range of particle
    effects such smoke, fires, engine plumes, fountains, fire works, and
    is fully customizable to produce your own favorite effects. osgParticle 
    is a NodeKit (see below) which can be directly linked to in your 
    application to allow you to create particle effects by hand, or have 
    the library dynamically loaded in when you load a database which contains 
    particle effects.
    
    osgGA (Gui Abstraction) library written by Neil Salter adds classes for 
    adapting different GUI toolkits to work with a standard set of manipulators for
    modifying the scene, such as camera and state manipulators.
    
    Support has been added to the plugin architecture to facilitate the
    development of NodeKits - add on libraries which can used directly
    in your code, or loaded indirectly when loading from file.  The 
    later allows you to load a .osg file with text or particle effects
    in them,the plugin architecture automatically loads the required 
    library which supports these features.

    A range of new demos have been as code examples, and to demonstrate
    the range of features that OpenSceneGraph delivers:

        osgoccluder  - demonstrates ocllusion culling, and has a mode
                       which allows the users to interactively create
                       their own convex planer occluders.
        osghud       - how to mix head up display with 3d views.
        osgparticle  - shows the new osgParticle node kit in action.                
        osgprerender - pre renders and scene then textures the result onto
                       an animated flag.
        osgcallback  - examples of the full range of callbacks that you
                       can use to add dynamic behaviors to your scene graph.
        osglight     - a simple example of how to set up spot and position
                       lights in the scene.
        osgclip      - illustrates how to add clip planes to you scene.
        osggeometry  - examples of the different ways to set up primitives
                       and vertex/color/normal and texture attributes in
                       the new osg::Geometry class.
        osgmultitexture - a simple example which adds a spherical reflection
                        map to a whole scene using the second texture unit
                        if one exists.
        
    osg::Drawable::PrimtiveFunctor has also been added to allow querrying 
    of primitive data with Drawables subclasses without requiring knowledge 
    of the types of Drawable subclasses that exists.  This decoupling makes
    it a very powerful and flexible utility.


26th April 2002 - OpenSceneGraph-0.8.45.tar.gz

    >>> Support added for Solaris, texture cube mapping & muliple projections.
   
    The OpenSceneGraph now has a new Makefile system which supports all Unix
    compilation including the new addition to the family - Solaris!  

    OpenSceneGraph welcomes Solaris to the list of supported platforms.  This
    release puts all of the OpenSceneGraph functionality at the fingertips of
    Sun Microsystem's customers and developers.  Solaris users can now have
    the benefit of a high performance scene graph for visual simulation, 
    virtual reality, scientific visualization, CAD, and architectural 
    walk-throughs.  Many thanks to Sun for providing resources for the port.
    
    Additional html documentation has been added to the distribution to 
    make it easier to get an understanding of scene graph technology and
    the project itself and how to make use of it.  

    Support has also been added for OpenGL's texture cube mapping which
    is ideal for accurate environmental reflections and much more.
    
    The scene graph has been extended to allow multiple projection (via
    the new osg::Projection node) and viewports within one scene graphs, 
    this makes it much easier to set up head up displays, and we have 
    an example to demonstrate how easy it is - osghud.
    
    The osgUtil::CullVisitor and osgUtil::SceneView has been revamped 
    removing the dependency on osg::Camera, which is now simply an
    option for SceneView rather than a requirement.  This allows users
    to set the camera entirely with the scene graph or create their own
    camera classes and use them with SceneView.  The existing osg::Camera
    has also been simplified as support for setting projection and
    modelview matrices have been moved out to the cull traversal.
    
    Several sets of node callbacks have been added, including a Cull 
    NodeCallback on each Node, ComputeTransformCallback on Transform
    Nodes, EvaluateLODCallback on LOD nodes, ComputeBillboardCallback
    on Billboard nodes.  These make it my easier to customize the 
    scene graphs behavior at runtime.
    
    osg::Image::readPixels() and support for writing .bmp files has been
    added which has made it easy to add screen capture the any OpenSceneGraph
    application.  This feature is demonstrated in the scene graph viewer
    which comes with the distribution - just press 'O' to output a screenshot.
    
    Finally, include/osg/MemoryManager has been added which overrides new
    and delete for debug builds. The override new and delete track allocations
    and deallocations, ensure they are matched, checked for memory under and
    overruns, and outputs a memleaks.log file on the results of executing
    your applications.  This help track down a number of memory leaks and
    unmatched new and deletes within the OpenSceneGraph and should make
    it easier to do with users applications as well.
    
    All in all, the OpenSceneGraph is now more portable, easier to 
    customize, cleaner and more robust.  Beta release and 1.0 is now not 
    far away!
    

24th February 2002 - osg-0.8.44.tar.gzosg-

    >>> Support added for Mac OSX, Cygwin and MinGW, and new TerraPage loader.
    
    The major item for this release is the completion of the Mac OSX port,
    thanks to Phil Atkin and others for making this happen.
    
    Also added to support for Cygwin and MinGW builds which gives Windows
    users a free and robust alternative to the Visual C++, which we
    have Norman Vine to thank.
    
    Funtionality wise there has been a great deal of work behind the scenes
    putting in place a flexible and extensible framework for handling 
    transform nodes, users can now extend the osg::Transform node through
    subclassing or via callbacks.  This work will underpin future work
    on moving camera setup into the scene graph, and environmental effects
    such as cloud layers, ground planes, stars and earth sky implementations
    which are planned for the next release.
    
    Callbacks and virtual methods have also been added to the osg::LOD & 
    osg::Billboard to allow users to customize their behavior.  Draw 
    callbacks have also been added to allow customization of osg::Drawables
    at runtime.
    
    The Open Flight .flt loader has undergone a number of improvements
    including support for instancing and billboards.
    
    New TerraPage (.txp) loader and OpenDX writer (.dx) plugins have been added.
    
    Support for the clone operation on osg::Object's has been expanded
    to allow cloneType() - a simple clone an blank object of the same type,
    and clone(CopyOp&) where CopyOp is a functor which allows users to
    specify the deep copy vs shallow copying of object data.
    

2nd January 2002 - osg-0.8.43.tar.gz

    >>> Support for TrueType text, Stereo out of the box, and much more.
    
    Since the last release the OSG has moved to CVS based developments so
    many users will have seen gradual increments in functionality and changes
    to the API. Whereas a the leap from 0.8.42 to 0.8.43 is actually quite
    significant is likely to require code changes as several significant parts
    of the API have evolved to a more mature state.
    
    The most significant new functionality is the addition of the osgText
    library which provides support for true type font rendering, as textured,
    polygonal, pixmap, bitmap and 3D fonts.
    
    We now have new osg::Matrix implementation which cleans up its interface.
    Also all angular parameters are now based on radians rather than degrees
    as before (and as in Performer), this has been done to be more consistent
    with the basic trignometric functions and standard maths conventions.
    
    Scene graph optimization has been added which can boost performance
    on some database by as much as an order of magnititude, this is 
    particularily noticable in .flt based databases.  Display list performance
    has also been boosted on NVidia based machines thanks to changing the
    compilation and execution of display list into two seperate operations.
    
    App callbacks are now supported on all Nodes, and there now a proper 
    app traversal which can be used to animate the scene.
    
    Stereo support has been added into the osgUtil::SceneView which allows
    quad buffered/anaglyphic stereo to enabled easily for almost all OSG
    applications without code modifications - simple set environmental
    variable or pass in appropriate arguments and your app will render in
    stereo!

    src/Demos/osgcluster has been added to demonstrate how easy it is
    to set up a graphics cluster across a standard networked PC's.

    There have been many minor code changes to fix bugs and address 
    performance bottlenecks or to improve extensibility was, representing
    a significant step towards API maturity and a beta release which is 
    now not far away.


9th August 2001 - osg-0.8.42.tar.gz

    >>> New osgWX library for integration of OSG with wxWindows apps.

    This release sees a relatively minor number of enhancements over
    0.8.41, the most significant being the new osgWX library and wxsgv
    demo written by Ben Discoe.
    
    Also from Brede Johansen in this release is the improvements in support for older
    .flt (Open Flight) files such versions 12 & 13.  Previously only version
    15.6 files had been tested and developed to. 
    
    Last but by no means least, several bug fixes related to view frustum
    culling have been made.


25th July 2001 - osg-0.8.41.tar.gz

    >>> Support added for multi-pass and multi-stage rendering including Impostors. 

    The key feature developed is a highly flexible framework for multi-pass and
    multi-stage rendering techniques.  Unlike most scene graphs and games
    engines the OSG has as dynamic framework which automatically configures 
    itself at runtime.

    Building ontop of the new framework's multi-stage rendering capabilities,
    support for Impostors (hirachical image caching) has been integrated into
    the core scene graph  library making extremely easy to take advantage of
    this advanced rendering techinque - normally only seen in research papers.
    Check out osgimpostor demo to see how easy it is to add osg::Impostor 
    nodes to your own models. Impostors are particularily effective are 
    reducing scene complexity whilest minimizing the visual impact, making it
    ideal for scenes with large numbers of complex objects such as a city
    scene, or a dense forest.
    
    Taking advantage of the new framework's multi-pass rendering capabilities
    is osgreflect demo which illustrates how to achieve planar relfections
    using the stencil buffer and multi-pass rendering.
    
    The cool thing about both the osgreflect and osgimpostor demos is that
    there is no hardwiring to achieve the results, the scene graph stores
    all the information neccessary to specify the number and type of rendering
    passes, and the framework handles the rest behind the scenes.  This also
    makes it very easy to add these advanced rendering techinques to your
    own applications as everything is cleanly encapsulated with 
    osgUtil::SceneView.

    New loaders have been added to support .lwo (Light Wave), .obj 
    (Alias Wavefront) and .dw (Design Workshop) 3D file formats making it 
    even easier to compose your own worlds from models sourced from the
    web or your own.
    
    osg::Camera has been totally revamped and now supports asymetric
    and othographics projections in addition to the symetrical perspective
    projections.

    And finally, support for texture subloading has been added to osg::Texture
    and osg::Image.  This allows textures to be updated dynamically, and
    has already been used for mpeg video playback!   


19th May 2001 - osg-0.8.40.tar.gz

    >>> Project lead, Robert Osfield, makes full-time commitment to OSG.

    This is the first full release since project lead, Robert Osfield, made
    a move to pursue the OSG's development full-time.  This commitment has
    been made to bring the API rapidly towards maturity, and to provide 
    high quality support and consultancy services.  Please contact
    robert@openscenegraph.com if you have any queries.

    This release marks a significant step forward in the maturity of the 
    API, with several major changes to the library in the areas of state
    handling, database support, and portability.

    To improve the extensibility of the OSG's handling of OpenGL state,
    new classes have been introduced to replace the previous hardwired
    state handling classes.  The new classes also allow improved state
    sorting and lazy state updating which boosts both cull traversal
    and particularly draw traversal performance. 

    To improve the modularity, interopability and conceptual clarity the
    support classes for database loading have been moved from the core
    osg library into their own osgDB library.  Support for the .osg
    ASCII native database format and the .rgb reader has moved into its own
    osgPlugins library to further the cleanliness of the core library.

    Support has be added for multiple OpenGL context's and hence multi-pipe 
    systems such as sgi's Onyx2, allowing each context to have its own 
    display list and texture objects.

    The culler and rendering support in osgUtil has also been improved, and
    significantly speeded up for complex models.

    Also just in, thanks to Randall Hopper for adding support for FreeBSD :-)

    
23rd March 2001 - osg-0.8.39.tar.gz

    >>> Port of OSG to MacOS underway

    The first steps towards support of MacOS have been taken by Bryan Woods,
    adding Metrowerks project files and adding support for MacOS into the
    core scene graph.  Work still in progress so assistance welcome to 
    complete the task.

    Other major developments have been the addition of two new base classes
    osg::StateAttribute and osg::Drawable which are designed to allow greater
    extensibility of OpenGL state management and primitives.


17th Feburary 2001 - osg-0.8.38.tar.gz

    >>> New 3DS loader added

    The OpenSceneGraph now supports the 3DS file format. This makes
    available a huge range of potential models. Check out
    http://www.3dcafe.com or http://www.3drocketfuel.com for some juice.

10th Feburary 2001 - osg_src-0.8-37.tar.gz

    >>> Texture compression now supported

    The OpenSceneGraph now provides support for ARB and S3TC texture
    compression. This allows more textures to be loaded onto graphics
    card memory, resulting in happier users and a better world in which
    to live.

    This release also sees the addition of a simple hang gliding flight sim
    demo.

25th January 2001 - osg_src-0.8-35.tar.gz

    >>> Anisotropic texturing now supported <i>and</i> loading of gzip compressed files

    Anisotropic texturing provides for the next step in quality texturing 
    filtering above tri-linear and is especially effective when viewing
    texture surfaces at shallow angles.

    Also added in this release is on-the-fly support for loading gzipped
    (.osgtgz, .tgz) and zipped (.zip) database files.  This features allows
    users to store whole databases (models and textures) in a single
    tar ball and unpack them automatically on running the osg.  This
    is ideal for browsing the web.

22nd December 2000 - osg_src-0.8-33.tar.gz

    >>> Support added for OpenGL vertex arrays, and several key image loaders.
    
    Support for OpenGL vertex arrays has been added to improve performance,
    particularly accelerating PC based graphics.

    Also added is support gif, jpeg, pic, tga, tiff image formats via
    dynamic plugins.

8th Decemeber 2000 - osg_src-0.8-32.tar.gz

    >>> New high resolution, low latency timer class - osg::Timer.

    Real-time graphics relies upon accurate timers for updating physics
    simulations and managing constant framerates.  The OSG now provides
    osg::Timer which, when supported, takes advantage of hardware timers.


18th November 2000 - osg_src-0.8-29.tar.gz

    >>> Support for detail drawing with osg::PolygonOffset.

    Rendering of polygons which overlay underlying geometry, such
    as white lines on a runway, can now be achieved utilizing the
    new osg::PolygonOffset which encapsulates glPolygonOffset to 
    avoid z fighting which otherwise hampers such detailing.

10th November 2000 - osg_src-0.8-28.tar.gz

    >>> New Open Flight .flt loader!

    Thanks to Brede Johansen submission of .flt loader, the OSG can now
    read Open Flight .flt databases.

3rd November 2000 - osg_src-0.8-26.tar.gz

    >>> Driving and Flight modes have been added to viewers.

    osgUtil::DriveManipulator and osgUtil::FlightManipulator have been
    added to allow the scene graph viewer (sgv) and other viewers to 
    support a drive and flying modes.  These modes can be accessed
    in sgv by pressing '2' and '3' respectively ('1' returns to 
    trackball manipulator).  Left mouse button accelerates forward,
    middle stops motion and right deccelerates.

