It’s been another long gap between developer releases, a bit over two months, the festive season and some heavy duty submissions and weeks of bug fixing and optimization have meant that opportunities for tagging a release have not arisen till now.  The amount of work tackling these task has also meant that not all submissions have been merged yet – with 2.9.7 out the door I’ll now be returning to these, so please be patient.

The big news for this release is that Wang Rui has been working hard on developing new extensible serialization support for osgDB that introduces a new OpenSceneGraph native binary (.osgb) and ascii (.osgt) file formats.  The great thing about this new serialization support is that it enables us to have an extensible binary format, and to be able to publish a formal schema for the file formats directly from the serialization set.  As the new support is extensible end users can add serialization support for their own classes, so third party NodeKits and applications can leverage the native .osgb binary format.  This new scheme deprecated the old .osg and .ive formats. Further details on the new serialization support can be found at SerializationSupport.

A quick summary of the key deliverables for this release are:

  • OpenSceneGraph-2.9.7, released on 22nd February 2009, key deliverables in this dev release are:
    • Introduction of new serialization support in osgDB and associated src/osgWrapper/serialization plugins, which enable a new OpenSceneGraph native dual binary (.osgb) /ascii (.osgt) file format within a unified and extensible set of serialization wrappers and classes.
    • Improvements to the thread safety of Observers, new osg::ObserverNodePath class for tracking NodePaths with thread safe access of NodePath.
    • New OSG_NOTIFY macros that add a conditional check to avoid using of ostreams when the stream is to be ignored, this fixes a windows threading performance issue due to the poor Microsoft implementation of ostreams – the result is better and more consistent frame rates under windows when doing threading – such when using the DatabasePager.
    • New Cmake variable OSG_NOTIFY_DISABLED that is OFF by default, but by setting it to ON you can disable all osg::notify/OSG_NOTIFY related messages. This enables the compilers to optimize away all OSG_NOTIFY usage as well as avoid messages being sent to the console. The notify message are very useful in application development so we’d recommend that you disable notify for performance testing or formal software releases.
    • Improvement in efficiency and thread safety in the DatabasePager resulting in less frame drops, and fixes to occasional crashes that occurred when using many paging threads and rapid movements over databases.
    • Fixes to TerraPage (.txp) plugin which address problems with memory consumption due to no longer used archives not being released.
    • Improvements to Inventor plugin.
    • Improvements to osgAnimation.
    • Improvements to handling of precision in KdTree intersections which fix problems with missed intersection.
    • Improvements to osgWidget::Input.
    • Improvements to osgDB::XmlInput so that it handles a wider range of xml files.
    • Improvements to audio syncing and pause support in the ffmpeg plugin.
    • Lots of little compile and bug fixes.

To obtain the source code:

source package : OpenSceneGraph-2.9.7.zip
svn tag: svn co http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.9.7 OpenSceneGraph

Many thanks to all those who’ve helped with coding, testing and debugging of this release,

Robert Osfield, OpenSceneGraph Project Lead.

Hi All,

I’ve just tagged OpenSceneGraph-2.9.6 developer release, wrapping up the most significant bump in OpenSceneGraph functionality and portability for many years.  The key deliverables in this dev release are:

  • OpenGL ES 1.1 support
  • OpenGL ES 2.0 support
  • OpenGL 3.x support
  • Texture object and Buffer object pools for tightly controlling GPU +
  • GL driver memory usage.
  • Updated 3DS plugin now with support for writing .3ds files.
  • Http support in present3D to allow online presentations to by
  • browsed directly.
  • Refactored osgManipulator to make it easier to control a wide range
  • of objects in the scene.
  • A range of improvements to osgAnimation.
  • New osgQtbrowser example that integrates QWebKit with the OSG to
  • provide an embedded 3d web browser.
  • New direcshow plugin for reading video under windows.
  • New FBX plugin.
  • Many bug fixes!

To obtain the source code for OpenSceneGraph-2.9.6 use:

source package :
http://www.openscenegraph.org/downloads/developer_releases/OpenSceneGraph-2.9.6.zip
svn tag: svn co
http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.9.6

The OpenGL ES and OpenGL 3 support in now checked in requires a few tweaks of the build in CMake to the OSG building the appropriate functionality, details of these Cmake settings to change can be found on the OpenSceneGraph’s wiki page for OpenGL ES. As these port mature we’ll be able to make the build against OpenGL ES + OpenGL 3 slicker with some additional CMake work, we’re not far away from this, and the more engineers help pitch in with testing the sooner we’ll be able to get things fully refined so please step forward.

Now that 2.9.6 is out, my plan is to start making dev releases more regularly once more, and start working on converging the code base towards the next stable release, that will likely be OpenSceneGraph-2.10 or 3.0 depending on timing and completion of a few outstanding features that would be great to have in a 3.0.

My short list for remaining features to developed for 3.0 are:

1. iPhone support

2. osgViewer::GraphicsWindowEGL support under Windows

3. osgViewer::GraphicsWindowX11 support for OpenGL3.x

4. Shader composition support integrated into the core scene graph.

5. Fixed function StateAttribute/ shader StateAttribute coupling toallow more seamless integration across GL targets

6. New native extensible binary format to replace .ive as the default native binary file format for the OSG.

The first item above we already have Thomas working on, and he’s
provided a list of changes that I haven’t yet integrated into 2.9.6,
but once we’ve done a bit more refinement on them we should have
Iphone support checked in pretty soon.

The second and third items are ideal items to be picked up by members
of the community and should be relatively straight forward to
complete.

The fourth and fifth items are more intrusive and challenging in
nature, and will require plenty of discussion in the community as well
some quality thinking time from myself and others willing to stick
their neck out on bleeding edge scene graph design ;-)

Many thanks for everyone who’s contributed to and help test 2.9.6.

Robert Osfield.
Project Lead, 10th December 2009.

Hi All,

I’m delighted to announce the release of OpenSceneGraph-2.8.2, the second binary compatible bug/build fix of the OpenSceneGraph-2.8 series.

Source code Downloads:

source package : OpenSceneGraph-2.8.2.zip
svn tag: svn co http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.8.2 OpenSceneGraph

Updates between 2.8.2 and 2.8.1 releases include:

  • Build fixes for:
    • RedHat Enterprise Linux
    • Building of dicom plugin with ITK under Linux.
  • Crash fixes to:
    • crash during window destruction under Windows when using closing a MFC based GraphicsWindow
    • deadlock under Windows due threading issues with atomic operations in Win32 Barrier implementation
    • OpenFlight plugin not handling spaces at the end of option strings
  • Bug fixes to :
    • computation of sector range in osgSim::LightPoint
    • extension checking of FBO packed stencil support
    • position of tabs at corners of manipulators
    • threading bug in .osg plugin that occurred during multi-threaded initialization
    • alignment of Text what setting alignment after assign text string
    • loading of compressed texture arrays
    • texture generate mipmap for non power of two textures
    • regression in X11 key symbol remapping, improved support for Russian keyboards
    • regression of StencilMask setting in RenderStage
    • small memory leak in X11 usage
    • Transform::computeBound() double BoundingSphere support
    • Resize handling when master and slave Cameras share the same GraphicsContext
    • Handling of locale in plugins and env var parsing so it always follows the ‘.’ decimal place convention regardless of the desktop/application locale

Updates between 2.8.1 and 2.8.0 releases include:

  • Build fixes under !FreeBSD and IBM AIX, and RedHat Enterprise Linux
  • Improved compatibility with SWIG wrapper building
  • Crash fixes in osg::State, osg::Geometry and osgWidget
  • Bug fixes to :
    • draw instanced support
    • Optimizer – MergeGeometryVisitor, RemoveLoadedProxyNodesVisitor and SpatializeGroupsVistor
    • hdr image loader
    • handling of opacity maps in 3ds loader
    • dxf loader
    • frame buffer object
    • cursor/event handling in windows
    • windows threading
    • memory leak in Collada loader
    • fixes to display lists/vbo creation that prevent crash under ATI drivers
    • subface PolygonOffset setting in OpenFlight
    • osgconv –formats under OSX
    • osgTerrain::Layer bounding volume calculation

Updates between 2.8 and 2.6 include:

  • New osgVolume library for volume rendering, with support for:
    • High quality GPU based Ray tracing
    • Transfer functions
    • Per pixel lighting
    • Iso surface rendering
    • Maximum Intensity Projection rendering
    • Non-power-of-two 3D textures, and 3D texture compression
    • DICOM loading for reading dicom medical data
  • New osgAnimation library for character and scene animation.
  • New plugin for reading Biovision hierarchical files (.BVH) to generate character motion animations.
  • New osgShadow support for Light Space Perspective Shadow Maps (LispSM).
  • Three new scene graph widgets for placing traditional 2D capability into fully interactive 3D scenes:
    • PDF widget (based on libPoppler)
    • VNC client widget (based on libVNCServer)
    • Internet browser client widget (based on Gecko/UBrowser)
  • New plugins for loading Half-Life 2 maps and models.
  • New plugin for loading EXR, high dynamic range imagery
  • Improvements to DatabasePager, tailored for low latency paging.
  • Improved runtime stats collection and on screen reporting.
  • Performance improvements through optimization of matrix operations.
  • Support for the OpenGL “draw instanced” extension.
  • Support for zlib compressed native .ive and .gz files
  • Improvements to COLLADA support.
  • Build reporting using CDash
  • New packaging support using CPack
  • A wide range of build and bug fixes

And so to what should our last release candidate before the final 2.8.2 release, release candidate 4!  Just a couple of fixes since rc3.

Crash fixes to:

OpenFlight plugin crashed when exported scene graphs contain no TexEnv objects

osganimationtimeline crashed when example model was not found

Bug fixes to :

vertical anchor in osgWidget::Widow was inverted

bsp an mdl plugins to better handling transparency and lighting

You can grab the source code from:

source package : OpenSceneGraph-2.8.2-rc4.zip
svn tag: svn co http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.8.2-rc4 OpenSceneGraph

Please test across all the platforms and applications you can test :-)

Robert Osfield.

I have another OpenSceneGraph 2.8.2 release candidate for you, just a couple fixes since 2.8.2-rc2:

  • Build fixes for:
    • Building of dicom plugin with ITK under Linux.
  • Crash fixes to:
    • crash during window destruction under Windows when using closing a MFC based GraphicsWindow
    • deadlock under Windows due threading issues with atomic operations in Win32 Barrier implementation
    • OpenFlight plugin not handling spaces at the end of option strings
  • You can grab the source code from:

    source package : OpenSceneGraph-2.8.2-rc3.zip
    svn tag: svn co http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.8.2-rc3 OpenSceneGraph

    My plan is tag the the final OpenSceneGraph-2.8.2 release this week so please pull down the source and test it on as many platforms and of your own applications as possible so we can make sure we can catch as many problems prior to going gold.

    Thanks in advance with you help testing,

    Robert Osfield

    OpenSceneGraph Project Lead.

    I’ve have now tagged the OpenScneGraph-2.8.2 release candidate 2, and as very few problems were reported in testing of 2.8.2-rc1 there is just a couples of changes required:

    • fix of the parsing of ascii floating point numbers in plugins and env var parsing so that it always uses the ‘.’ decimal place convention, regardless of the OS/application set locales.
    • workaround to threading issues in the osgShadow::ParallelSplitShadowMap and osgShadow::ShadowVolume by making osgshadow select SingleThreaded for these shadow techniques.

    The source code to 2.8.2-rc2 can be found at:

    source package : OpenSceneGraph-2.8.2-rc2.zip
    svn tag: svn co http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.8.2-rc2 OpenSceneGraph

    Please test this rc2 on as many platforms as you can get your hands on.  If testing goes well we will move to a full release of 2.8.2 in the next few days.

    Thanks for your help in testing,

    Robert Osfield.

    OpenSceneGraph Project Lead.

    It’s been rather a long while since the last OpenSceneGraph-2.9.x series developer release, over two months, as I’ve been rather busy on feature development on OpenSceneGraph, Present3D and VirtualPlanetBuilder, bug fixing on all of the above, and catching up with the deluge of community submissions.  I am mostly on top of submissions and now looking towards guiding the 2.9.x developer series to it’s conclusion with the up coming OpenScenGraph-2.10 stable release, which will hopefully be completed for the end of July. Between now and the of July we’ll be looking at completing existing feature development, testing and bug fixing.

    You can grab the source from:

    source package : OpenSceneGraph-2.9.5.zip
    svn tag: svn co http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.9.5 OpenSceneGraph

    The OpenSceneGraph-2.9.5 release itself packs lots of new features and bug fixes :

    • Integration of Present3D application, a 3D presentation tool, directly into core OpenSceneGraph.
    • New .p3d plugin that allows 3D presentations to be loaded into all OpenSceneGraph applications.
    • Support for reading .p3d presentation files over http connection.
    • New osgDB::DatabaseRevisions support to allow automatic refreshing of locally cached data that has been updated on a remote server, new osgdatabaserevisions example illustrates usage.
    • New osgshadercomposer example that provides a custom scheme for manage shader composition using a VirtualProgram StateAttribute.
    • Improvements to Cocoa support in osgViewer
    • Re-factor of osgDB::ReaderWriter::Options so that it now lives in the osgDB scope, and in it’s own include/osgDB/Option header file.
    • Re-factor of osgDB callbacks to allow osgDB::Options to provide callbacks that override the osgDB::Registry ReadFileCallback and WriteFileCallbacks, and for the callbacks to now be defined in their own separate include/osgDB/Callbacks header file.
    • Introduction of new osgDB::FindFileCallback and osgDB::FileLocationCallback to enable customization of find file schemes and manage of local file caches.
    • Improvements to the COLLADA plugin
    • Added support for RenderBin::SortMode::TRAVERSAL_ORDER to enable rendering of scene graph drawables in the order that they were traversed in.
    • VRML plugin ported across to work with latest versions of OpenVRML
    • Support for writing dxf files from the dxf plugin
    • zip plugin now unzips files in memory and support reading .zip files across http.
    • .x directx model plugin now supports reading from istream enable reading files across http.
    • osgVolume support added to .ive format
    • Re-factor of the X11 keyboard remapping to better handle different locals.
    • Support for customizing handling of osg::notify() messages including support.
    • Support for GL_MAX_TEXTURE_LEVEL to allow partial specification of mipmap levels in osg::Texture, osg::Image and dds plugin
    • Support for GL_EXT_blend_equation_separate
    • Improved compatibility with SWIG wrapper building
    • Build fixes under !FreeBSD and IBM AIX, and RedHat Enterprise Linux.
    • Crash fixes in osg::State, osg::Geometry and osgWidget.
    • Bug fixes to (also integrated into OpenSceneGraph-2.8.2-rc1) :
      • computation of sector range in osgSim::LightPoint
      • extension checking of FBO packed stencil support
      • position of tabs at corners of manipulators
      • threading bug in .osg plugin that occurred during multi-threaded initialization
      • alignment of Text what setting alignment after assign text string
      • loading of compressed texture arrays
      • texture generate mipmap for non power of two textures
      • regression in X11 key symbol remapping, improved support for Russian keyboards
      • regression of StencilMask setting in RenderStage
      • small memory leak in X11 usage
      • Transform::computeBound() double BoundingSphere support
      • Resize handling when master and slave Cameras share the same GraphicsContext
      • draw instanced support
      • Optimizer – MergeGeometryVisitor, RemoveLoadedProxyNodesVisitor and SpatializeGroupsVistor
      • hdr image loader
      • handling of opacity maps in 3ds loader
      • dxf loader
      • frame buffer object
      • cursor/event handling in windows
      • windows threading
      • memory leak in Collada loader
      • fixes to display lists/vbo creation that prevent crash under ATI drivers
      • subface PolygonOffset setting in OpenFlight
      • osgconv –formats under OSX
      • osgTerrain::Layer bounding volume calculation.

    O.K. it’s been two months…. but I find the sheer breadth of development is staggering, the above list doesn’t even include all the minor tweaks and improvements, and this all builds on top of the work all that went into the 2.9.1 to .4 releases. OpenSceneGraph-2.10 really is going to be awesome.

    As we get closer to OpenSceneGraph-2.10 release I’ll be make a few more developers release in the 2.9.x series, and will also start posting a few 3d presentations online so you can start to get a feel for what Present3D can do and what adding 3d presentation capabilities to your own applications will be able to deliever.

    Many thanks to all the contributors that been beveraring away on the OpenSceneGraph over the past couple of months. You rock!

    Robert Osfield

    OpenSceneGraph Project Lead.

    Hi All,

    I have just tagged the OpenSceneGraph-2.8.2-rc1, the first release candidate for the up coming stable OpenSceneGraph-2.8.2 release.  OpenSceneGraph-2.8.2 will be binary compatible with 2.8.1 and 2.8.0 so upgrading should be straight forward.

    Changes since the OpenSceneGraph-2.8.1 release

    • Build fixes for RedHat Enterprise Linux.
    • Bug fixes to :
      • computation of sector range in osgSim::LightPoint
      • extension checking of FBO packed stencil support
      • position of tabs at corners of manipulators
      • threading bug in .osg plugin that occurred during multi-threaded initialization
      • alignment of Text what setting alignment after assign text string
      • loading of compressed texture arrays
      • texture generate mipmap for non power of two textures
      • regression in X11 key symbol remapping, improved support for Russian keyboards
      • regression of StencilMask setting in RenderStage
      • small memory leak in X11 usage
      • Transform::computeBound() double BoundingSphere support
      • Resize handling when master and slave Cameras share the same GraphicsContext

    Source code

    source package : OpenSceneGraph-2.8.2-rc1.zip
    svn tag: svn co http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.8.2-rc1 OpenSceneGraph

    Testing, Testing, Testing…

    It’s been one month since the 2.8.1 stable release and we have finding and fixing issues with an average rate of around 3 a week, with most of these would found and fixed within the first week…  While it’s great that we’ve fixed more issues, the level reporting of issue right after a release also suggests that we as a community are not yet actively testing the release candidates enough.  The 2.8 series is really no different than all our previously releases, as alas it’s almost become ritual of making a release then then next day see late comers finally test it against their particular build combination/usage model and find problems, almost all of which could have been fixed with few minutes of work…  but fixing it after the release is far more expensive to do, as each release entails a great deal of community effort and core developer time to put together all the release candidates and final releases that are need when late reported bugs force another stable release.

    Please don’t assume that your particular usage combination will covered by the testing of others, and that you can wait till after a stable release before testing it.  You are all unique and special, the most effective way of ensuring the OpenSceneGraph works for you and your team is to directly test all the platforms, build combinations, hardware and applications that you use with the OpenSceneGraph is to down the source and set a build running and directly test it yourself.

    As well as personally testing a release candidate another great way to help with making sure the final release is the best we can make it is to set up a machine to do a nightly build of the OpenSceneGraph-2.8 branch and have the results automatically posted online using CDash.  Details on our CDash set up can be found at:

    http://www.openscenegraph.org/projects/osg/wiki/Build/CDash

    If you do find build or runtime issues with the OpenScenGraph-2.8.2-rc1 please post a report to the osg-users mailing list/forum and we’ll endevour to get this fixed up.

    Thanks in advance for you assistance in testing,

    Robert Osfield.

    OpenSceneGraph Project Lead.

    I am delighted to say that I’ve now tagged the OpenSceneGraph-2.8.1 stable release, this is a bug and build fix releases that is binary compatible with the OpenSceneGraph-2.8.0 stable release made back in February. You can grab the sources to the release from:

    source package : OpenSceneGraph-2.8.1.zip
    svn tag: svn co http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.8.1 OpenSceneGraph

    Binaries haven’t yet been posted, but once they are they be added to the standard OpenSceneGraph Downloads page, so keep an eye of this page or the osg-users list/forum for when binaries for the various platforms are posted.

    Updates between 2.8.1 and 2.8.0 releases include:

    • Build fixes under FreeBSD and IBM AIX, and RedHat Enterprise Linux.
    • Improved compatibility with SWIG wrapper building
    • Crash fixes in osg::State, osg::Geometry and osgWidget.
    • Bug fixes to :
      • draw instanced support
      • Optimizer – MergeGeometryVisitor, RemoveLoadedProxyNodesVisitor and SpatializeGroupsVistor
      • hdr image loader
      • handling of opacity maps in 3ds loader
      • dxf loader
      • frame buffer object
      • cursor/event handling in windows
      • windows threading
      • memory leak in Collada loader
      • fixes to display lists/vbo creation that prevent crash under ATI drivers
      • subface PolygonOffset setting in OpenFlight
      • osgconv –formats under OSX
      • osgTerrain::Layer bounding volume calculation.

    Updates between 2.8 and 2.6 include:

    • New osgVolume library for volume rendering, with support for:
      • High quality GPU based Ray tracing
      • Transfer functions
      • Per pixel lighting
      • Iso surface rendering
      • Maximum Intensity Projection rendering
      • Non-power-of-two 3D textures, and 3D texture compression
      • DICOM loading for reading dicom medical data
    • New osgAnimation library for character and scene animation.
    • New plugin for reading Biovision hierarchical files (.BVH) to generate character motion animations.
    • New osgShadow support for Light Space Perspective Shadow Maps (LispSM).
    • Three new scene graph widgets for placing traditional 2D capability into fully interactive 3D scenes:
      • PDF widget (based on libPoppler)
      • VNC client widget (based on libVNCServer)
      • Internet browser client widget (based on Gecko/UBrowser)
    • New plugins for loading Half-Life 2 maps and models.
    • New plugin for loading EXR, high dynamic range imagery
    • Improvements to DatabasePager, tailored for low latency paging.
    • Improved runtime stats collection and on screen reporting.
    • Performance improvements through optimization of matrix operations.
    • Support for the OpenGL “draw instanced” extension.
    • Support for zlib compressed native .ive and .gz files
    • Improvements to COLLADA support.
    • Build reporting using CDash
    • New packaging support using CPack
    • A wide range of build and bug fixes

    Last week I was giving an OpenSceneGraph training course, so this week have spent almost of all of it catching up with submissions and investing bug reports and making a few minor feature enhancements. Not quite sure how this week disappeared quite so quickly…. Anyhow here’s the almost weekly dev release, changes include:

    • New frame rate management controls added to Viewer::run()/!CompositeViewer::run() that provide ability to do on demand rendering, as well as capping frame rate below a specified maximum.
    • Removed ATI specific hack from PolygonOffset that was required for an older generation of buggy OpenGL drivers.
    • Fix of the handling of the PolygonOffset for subface geometry loaded in OpenFlight plugin.
    • Support for texture shadow extension added to osg::”TextureRectangle?
    • Switched triangle orientation in mdl plugin to prevent back/face being flipped by the change to OpenGL/OSG coordinate frame.
    • Support added to 3ds loader for reading from streams as well as files, opening the door to reading 3ds files over http
    • New PluginStringData map added to osgDB::!ReaderWriter::Options to make it easier to get string options passed to plugin.
    • Various minor build, typo and spelling fixes.

    To grab the source go to:

    source package : OpenSceneGraph-2.9.4.zip
    svn tag: svn co http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.9.4 OpenSceneGraph

    If you plan to try out the new support for on-demand rendering you’ll need to use a viewer::run() in your app, and then either set the Viewer’s RunFrameScheme to ON_DEMAND (the default is CONTINUOUS which is same as functionality before), or set the via the –run-on-demand command line option in osgviewer, or enable this by setting the evn var OSG_RUN_FRAME_SCHEME to ON_DEMAND.

    osgviewer cow.osg –run-on-demand

    To see the effect enable stats by pressing ‘s’ a couple of times, then watch what happens we you move around the model vs when you stop. The on-demand support knows about the need of database paging so will update automatically if new tiles are paged in, and will also updated automatically when a scene graph has update callbacks that update scene graph elements. osgParticle and shaders that do animation aren’t supported yet though so for these you’ll need to rely on the FrameRateScheme of CONTINUOUS.

    To cap the frame rate use the new Viewer::setRunMaxFrameRate(double) feature, if you have vsync on then this probably won’t be needed, but it’s very useful for cases where users systems have vsync disabled. Sadly OpenGL drivers often leave vsync off by default which is an extremely poor practice, so the max frame rate feature may well be needed across many systems. Mixing the RunMaxFrameRate usage with a system that has vysnc enabled won’t be a problem, vsync will still work to synchronization the double buffer swamp with the vblank of the display system. Setting the max frame rate to something above the expect refresh rate of the monitor will mean that systems with vysnc enable won’t be affected, but sysmtes without vysync enabled will behave much more smoothly and without consume lots energy for no reason. To try out this feature either set the env var OSG_RUN_MAX_FRAME_RATE to the desired value or use the command line option:

    osgviewer cow.osg –run-max-frame-rate 30

    To look at the effect on energy consumption with different frame schemes and max frame rates I tested my main dev system plugined into a power consumption meter, I used a whole earth paged databases as my test model. The results were quite significant, with the on-demand rendering and a stationary view my machine draw only 103W, which is pretty well the same as idle power draw. With continuous rendering (the usual standard way the OSG does rendering of frames) and vysnc on (at 60Hz) the power draw for my power draw was fluctuating around 125W. With continuous frame rendering and vysync disable frame rate went up to well over 300fps and with it the power draw went up to 150 to 160W.

    And the visual quality between all these options? Well with vsync disabled tearing is very apparent, and viewer interaction is a bit erratic so visual quality and usability are down, so we have a worse user experience and are paying 25 to 50% more power for this perverse privileged…. The visual quality with continuous and on-demand is great, continuous wins out a little consistency of user interaction, but it’s pretty close both are far better than for a system with vsync on. One has to ask the question why on earth are ATI, NVidia and Intel not enabling vsync by default on all systems?? It’s utter madness that aren’t.

    With that note I’ll leave you in peace :-)

    Next Page »