[osg-users] OpenSceneGraph-3.3.3 developer release

171 views
Skip to first unread message

Robert Osfield

unread,
Dec 19, 2014, 11:41:25 AM12/19/14
to OpenSceneGraph Users
Hi All,

I have just tagged the 3.3.3 developer release.  A quick copy and paste of what I've just written up on the website:

OpenSceneGraph-3.3.3, released on 19th December 2014, key deliverables in this dev release are:

  • New osgTerrain::DisplacementMappingTechnique that uses sharing of geometry tiles and height field textures to render the terrain, reducing main memory and GPU memory usage to less than 40% of previous usage, and reduces GPU costs to around 60% of previous requirements for a terrain.
  • New LAS plugin (depends upon libLAS and Boost)
  • New GStreamer plugin for cross platform video
  • New OpenGL extension set-up architecture that reduces both the code footprint, library size and runtime memory footprint, as well as make it easier to extend.
  • Support for glVertexAttribDivisor via new osg::VertexAttribDivisor StateAttribute
  • Support for glBlendEquationi, glBendFunci, glColorMaski and glEnable/glDisablei iva new BlendEquationi, BlendFunci, ColorMaski, and Enablei/Disablei StateAttributes to better support Multiple Render Target usage.
  • New osg::ShaderStorageBufferObject class and osgssbo example.
  • New osggpucull example that demonstrates culling on the GPU.
  • Threading safety and performance improvements to the DatabasePager
  • Refactor of osg::Drawable so that it is no subclassed from osg::Node allow it to be directly placed in the scene graph without the need for a Geode parent.
  • Standardization of callbacks in Node, Drawable, StateSet and StateAttributes
  • Improved Android toolchain build
  • Improvements to QT4 and QT5 support in osgQt
  • Improvements to the new osgUI NodeKit  and Lua Scripting support
  • Bug and build fixes

source package : OpenSceneGraph-3.3.3.zip

svn tag: svn co http://svn.openscenegraph.org/osg/OpenSceneGraph/tags/OpenSceneGraph-3.3.3 OpenSceneGraph


Many thanks to all that have contributed with code, testing and bug fixing over the past year. 

Robert.


-- ChangeLog since 3.3.2:

2014-12-19 08:27  robert

    * CMakeModules/FindGLIB.cmake: Added if () block to avoid script
      variables set to NOT-Found being used in searching

2014-12-19 08:25  robert

    * CMakeModules/FindLIBLAS.cmake: Fixed script warnings

2014-12-18 17:47  robert

    * CMakeLists.txt, CMakeModules/FindLIBLAS.cmake,
      src/osgPlugins/CMakeLists.txt, src/osgPlugins/las,
      src/osgPlugins/las/CMakeLists.txt,
      src/osgPlugins/las/ReaderWriterLAS.cpp: From Aitor Moreno, LAS
      plugin - depends upon boost and liblas and liblas-c

2014-12-18 16:52  robert

    * PlatformSpecifics/Android/Application.mk.master.in: From Adrian
      Clark, build fix for recent Android NDK using the old Android
      build approach.

2014-12-18 15:59  robert

    * CMakeLists.txt: From Mattias Helsing, "CMake have release 3.0 and
      3.1 and we have some bad checks for cmake
      major version when settings cmake policies in CMakeLists.txt.
      This fixes it"

2014-12-18 11:36  robert

    * AUTHORS.txt, applications/osgversion/Contributors.cpp: Updated
      AUTHORS

2014-12-18 11:19  robert

    * ChangeLog: Updated ChangeLog in prep for dev release

2014-12-18 11:09  robert

    * examples/osgmovie/CMakeLists.txt: Fixed warning

2014-12-18 10:59  robert

    * include/osg/DisplaySettings, src/osg/DisplaySettings.cpp: Added
      DisplaySettings::s/getNvOptimusEnablement() and
      OSG_NvOptimusEnablement env var control to control the setting of
      the NvOptimusEnablement variable

2014-12-18 09:24  robert

    * src/osgPlugins/fbx/ReaderWriterFBX.cpp: From Sukender, "Added
      options to the FBX writer: an ascii/binary switch, and the
      ability to select FBX version as the SDK handles it (Ex:
      "FBX201300").
     
      This allows the user to achieve backward compatibility, and debug
      format issues using text output."

2014-12-18 09:03  robert

    * CMakeModules/FindGStreamer.cmake: From Mattias Helsing, "The
      addition of the GStreamer cmake find script broke my build
      because
      cmake vars weren't passed correctly to find_package_handler_args,
      so
      while the find script didn't find a single required GStreamer lib
      or
      include path it still reported GSTREAMER_FOUND=TRUE (and then
      tried to
      compile the new plugin). This fixes it and correctly reports
      missing
      components."

2014-12-17 19:21  robert

    * CMakeLists.txt, CMakeModules/FindSDL2.cmake,
      examples/osgmovie/CMakeLists.txt, examples/osgmovie/osgmovie.cpp:
      Added support for using SDL2 to the osgmovie to enable it to
      handle floating point audio formats

2014-12-17 19:20  robert

    * CMakeModules/FindFFmpeg.cmake,
      src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp: From Javier Taibo,
      " I have found that since version 1.1, FFMPEG changed the way
      audio streams are retrieved, from packed to planar format. SDL
      interprets packed audio, as is used in the osgmovie example. To
      make the audio work when the OSGffmpeg plug-in is compiled
      against recent FFMPEG versions, FFmpegDecoderAudio must check for
      planar formats and in these cases request the samples as packed.
      This way all works as before. It can be checked with osgmovie
      example application.
     
      $ osgmovie --audio movie.avi.ffmpeg
      FFmpegImageStream::open audio failed, audio stream will be
      disabled: unknown audio format
     
      With the attached FFmpegDecoderAudio.cpp, audio sounds correctly.
     
      I am also attaching a modified version of FindFFmpeg.cmake that
      allows to set as FFMPEG_DIR the ffmpeg compiled in the source
      directory structure. It should not break anything as it only adds
      some additional search paths.
     
      "
     
      Note from Robert Osfield, I have found in testing that audio
      quality is not good for planar floating point formats, even with
      adding support for SDL2 to the osgmovie example. I haven't yet
      tracked down the cause of these audio problems or a solution.

2014-12-17 10:19  robert

    * src/osgPlugins/fbx/ReaderWriterFBX.cpp: From Sukender, "FBX
      writer was writing an empty file when the scene had a root node
      being a Geode.
      This was caused be the change in Drawable (now derived from Node)
      and Geode (now derived from Group).
      This fix simply sticks with previous behaviour. Another change
      could be to adapt WriterNodeVisitor.
      "

2014-12-16 17:37  robert

    * src/osgPlugins/gstreamer/GStreamerImageStream.cpp: Fixed warnings
      and memmory leaks

2014-12-16 17:15  robert

    * src/osgPlugins/gstreamer/CMakeLists.txt,
      src/osgPlugins/gstreamer/GStreamerImageStream.cpp: Fixed warnings

2014-12-16 17:08  robert

    * src/osgPlugins/gstreamer/GStreamerImageStream.cpp,
      src/osgPlugins/gstreamer/GStreamerImageStream.hpp: Improved
      handling of invalid/unhandled files
      Added support for ImageStream::LoopigMode variable
      Fixed memory leak associtied with restarting videos
      Changed Image::setData() to Image::dirty() to avoid resetting
      data

2014-12-16 11:20  robert

    * CMakeLists.txt, CMakeModules/FindGLIB.cmake,
      CMakeModules/FindGStreamer.cmake, src/osgPlugins/CMakeLists.txt,
      src/osgPlugins/gstreamer,
      src/osgPlugins/gstreamer/CMakeLists.txt,
      src/osgPlugins/gstreamer/GStreamerImageStream.cpp,
      src/osgPlugins/gstreamer/GStreamerImageStream.hpp,
      src/osgPlugins/gstreamer/ReaderWriterGStreamer.cpp: From Julen
      Garcia, "Here there is a small plugin I use to play video files.
      It is based on GStreamer http://gstreamer.freedesktop.org and I
      have used the FFmpeg plugin as inspiration."
     
      From Robert Osfield, fixed handled of row widths so that they are
      padded to a 4 byte boundary as certain row widths were being
      rendered incorrectly.

2014-12-16 09:34  robert

    * include/osg/TriangleLinePointIndexFunctor,
      include/osgUtil/MeshOptimizers, src/osgUtil/MeshOptimizers.cpp:
      From Marc Helbling, "please find enclosed a submission that
      should improve the VertexAccessOrderVisitor (pre-transform)
      optimizer:
      * it sorts primitives to keep "more complex" primitives first;
      maybe you'll prefer to have this as an option (but usually it
      should make more sense to pre-transform triangles before e.g.
      lines)
      * currently, the visitor rely on TriangleIndexFunctor and does
      not take care of points and lines (see
      https://github.com/openscenegraph/osg/blob/master/include/osg/TriangleIndexFunctor#L124-130).
      This can lead to issues e.g. if you store the wireframe lines
      along with some triangles: the triangles will be reindexed but
      not the line. I've therefore added
      osg/include/TriangleLinePointIndexFunctor to index triangles,
      lines and points and derived VertexReorder from this class.
      * to avoid issues, shared arrays are duplicated. However, in some
      cases (e.g. an UV channel shared in the geometry only) this is
      not required. I'm adding a SharedArrayOptimizer to optimize this:
      it looks for duplicated UVs before the array duplication and
      deduplicate arrays after.
      "

2014-12-15 17:15  robert

    * include/osgUtil/TriStripVisitor, src/osgUtil/TriStripVisitor.cpp:
      From Marc Helbling, "please find the mergeTriangleStrip code
      merged in osgUtil::TriStripVisitor.
      I've removed the references to DrawArrays as we should no longer
      produce any.
     
      Note that:
      * as the name suggest, it only works for triangle strips but
      could probably be easily extended to quads
      * the resulting primitive is not highly optimized; we could
      probably sort the strips in order to minimize the number of
      primitive restart
      * as we may merge DrawElementsUInt and DrawElementUShort, the
      code will only generate DrawElementsUInt"

2014-12-10 18:23  robert

    * examples/osgSSBO/osgSSBO.cpp: Build fix

2014-12-10 13:05  robert

    * include/osg/GLExtensions, src/osg/GLExtensions.cpp: Added OpenGL
      Transform Feedback extensions.

2014-12-10 12:23  robert

    * examples/CMakeLists.txt, examples/osgSSBO,
      examples/osgSSBO/CMakeLists.txt, examples/osgSSBO/osgSSBO.cpp,
      include/osg/BufferIndexBinding, include/osg/BufferObject,
      include/osg/StateAttribute, src/osg/BufferIndexBinding.cpp,
      src/osg/BufferObject.cpp: From Marcus Hein, Added support for
      OpenGL SSBO and SSBB via osg::ShaderStorageBufferObject and
      osg::ShaderStorageBufferBinding to core OSG library, and added
      new osgSSBO example

2014-12-10 11:44  robert

    * include/osg/GLDefines: Added GLDefines header

2014-12-10 11:29  robert

    * src/osgPlugins/dae/daeRMaterials.cpp: From Farshid Lashkari, "The
      Collada loader would crash while processing textures on certain
      files. I've attached the fix."

2014-12-10 10:44  robert

    * examples/osgshaderterrain/osgshaderterrain.cpp,
      include/osg/GL2Extensions, src/osg/CMakeLists.txt,
      src/osg/GL2Extensions.cpp, src/osgAnimation/RigGeometry.cpp,
      src/osgDB/ObjectWrapper.cpp: Removed old GL2Extensions class,
      replacing it with a typedef to GL2Extensions
      Removed old includes to include/osg/GL2Extensions

2014-12-10 10:38  robert

    * examples/osgfpdepth/osgfpdepth.cpp,
      examples/osgmultitexture/osgmultitexture.cpp,
      examples/osgoit/DepthPeeling.cpp,
      examples/osgscreencapture/osgscreencapture.cpp,
      examples/osgvertexprogram/osgvertexprogram.cpp,
      include/osg/BufferObject, include/osg/FrameBufferObject,
      include/osg/GL2Extensions, include/osg/GLExtensions,
      include/osg/PatchParameter, include/osg/PrimitiveSet,
      include/osg/Program, include/osg/Shader, include/osg/State,
      include/osg/Texture, include/osg/TextureBuffer,
      include/osg/Uniform, include/osgViewer/Renderer,
      src/osg/ArrayDispatchers.cpp, src/osg/BlendColor.cpp,
      src/osg/BlendEquation.cpp, src/osg/BlendEquationi.cpp,
      src/osg/BlendFunc.cpp, src/osg/BlendFunci.cpp,
      src/osg/BufferObject.cpp, src/osg/CMakeLists.txt,
      src/osg/Capability.cpp, src/osg/ClampColor.cpp,
      src/osg/ColorMaski.cpp, src/osg/FragmentProgram.cpp,
      src/osg/FrameBufferObject.cpp, src/osg/GLExtensions.cpp,
      src/osg/Geometry.cpp, src/osg/GraphicsContext.cpp,
      src/osg/Image.cpp, src/osg/Multisample.cpp,
      src/osg/OcclusionQueryNode.cpp, src/osg/PatchParameter.cpp,
      src/osg/Point.cpp, src/osg/PointSprite.cpp,
      src/osg/PrimitiveRestartIndex.cpp, src/osg/Program.cpp,
      src/osg/SampleMaski.cpp, src/osg/Shader.cpp, src/osg/State.cpp,
      src/osg/Stencil.cpp, src/osg/StencilTwoSided.cpp,
      src/osg/Texture.cpp, src/osg/Texture1D.cpp,
      src/osg/Texture2DArray.cpp, src/osg/Texture2DMultisample.cpp,
      src/osg/Texture3D.cpp, src/osg/TextureBuffer.cpp,
      src/osg/TextureCubeMap.cpp, src/osg/TextureRectangle.cpp,
      src/osg/Uniform.cpp, src/osg/VertexAttribDivisor.cpp,
      src/osg/VertexProgram.cpp, src/osgFX/SpecularHighlights.cpp,
      src/osgParticle/PrecipitationEffect.cpp, src/osgText/Glyph.cpp,
      src/osgUtil/GLObjectsVisitor.cpp, src/osgUtil/RenderStage.cpp,
      src/osgViewer/Renderer.cpp,
      src/osgViewer/ScreenCaptureHandler.cpp,
      src/osgViewer/StatsHandler.cpp: Moved GL2Extensions functionality
      into the include/osg/GLExtensions header and new GLExtensions
      object.
      Moved the #defines into new include/osg/GLDefines
      Converted all GL2Extensions usage to GLExtensions usage

2014-12-10 09:11  robert

    * include/osg/GLExtensions: Streamlined the extension functions

2014-12-09 21:33  robert

    * include/osg/GL2Extensions: Added #ifdef's around GLsync typedef

2014-12-09 20:09  robert

    * include/osg/GL2Extensions, include/osg/GraphicsContext,
      include/osg/Texture, include/osg/Texture3D, src/osg/Texture.cpp:
      Windows build fixes

2014-12-09 19:31  robert

    * runexamples.bat: Added new examples to runexamples.bat script

2014-12-09 19:22  robert

    * src/osg/Capability.cpp: Quietened down debug messages

2014-12-09 19:20  robert

    * examples/CMakeLists.txt, examples/osgblenddrawbuffers,
      examples/osgblenddrawbuffers/CMakeLists.txt,
      examples/osgblenddrawbuffers/osgblenddrawbuffers.cpp: From Wand
      Rui, "I've rewritten the osgblenddrawbuffers example to use the
      new BlendFunci and Capability classes. Hope it will tell others
      how to make use of the new functionality and why they are
      important in modern MRT-based applications."

2014-12-09 18:30  robert

    * examples/osgfpdepth/osgfpdepth.cpp,
      examples/osgoit/DepthPeeling.cpp, include/osg/FrameBufferObject,
      include/osg/GL2Extensions, include/osg/GraphicsContext,
      src/osg/BufferObject.cpp, src/osg/FrameBufferObject.cpp,
      src/osg/GL2Extensions.cpp, src/osg/GraphicsContext.cpp,
      src/osg/OcclusionQueryNode.cpp, src/osg/Texture.cpp,
      src/osg/Texture3D.cpp, src/osg/TextureRectangle.cpp,
      src/osgUtil/RenderStage.cpp: Moved FBO Extensions into
      GL2Extensions.

2014-12-09 14:58  robert

    * include/osg/PrimitiveRestartIndex: Removed no longer used
      Extension definition

2014-12-09 14:57  robert

    * include/osg/ClampColor, include/osg/ColorMaski,
      include/osg/GL2Extensions, include/osg/Multisample,
      include/osg/Point, include/osg/PointSprite,
      include/osg/PrimitiveRestartIndex, include/osg/Stencil,
      src/osg/ClampColor.cpp, src/osg/ColorMaski.cpp,
      src/osg/GL2Extensions.cpp, src/osg/Multisample.cpp,
      src/osg/Point.cpp, src/osg/PointSprite.cpp,
      src/osg/PrimitiveRestartIndex.cpp: Moved local Extensions structs
      into GL2Extensions

2014-12-09 11:14  robert

    * include/osg/GL2Extensions, include/osg/Stencil,
      include/osg/StencilTwoSided, src/osg/GL2Extensions.cpp,
      src/osg/Stencil.cpp, src/osg/StencilTwoSided.cpp: Moveved
      Stencil/StencilTwoSided::Extensions into GL2Extensions

2014-12-09 10:37  robert

    * include/osg/BlendColor, include/osg/BlendEquation,
      include/osg/Capability, include/osg/GL2Extensions,
      src/osg/BlendColor.cpp, src/osg/BlendEquation.cpp,
      src/osg/BlendEquationi.cpp, src/osg/Capability.cpp,
      src/osg/GL2Extensions.cpp: Moved local Extensions objects to
      GL2Extensions

2014-12-09 10:05  robert

    * examples/osgmultitexture/osgmultitexture.cpp,
      include/osg/GL2Extensions, include/osg/Texture,
      include/osg/Texture2DArray, include/osg/Texture3D,
      src/osg/GL2Extensions.cpp, src/osg/Image.cpp,
      src/osg/Texture.cpp, src/osg/Texture1D.cpp,
      src/osg/Texture2DArray.cpp, src/osg/Texture2DMultisample.cpp,
      src/osg/Texture3D.cpp, src/osg/TextureBuffer.cpp,
      src/osg/TextureRectangle.cpp, src/osgText/Glyph.cpp: Moved
      Texture*::Extensions functionality into GL2Extensions

2014-12-08 16:08  robert

    * examples/osgvertexprogram/osgvertexprogram.cpp,
      include/osg/FragmentProgram, include/osg/GL2Extensions,
      include/osg/VertexProgram, src/osg/FragmentProgram.cpp,
      src/osg/GL2Extensions.cpp, src/osg/VertexProgram.cpp: MOved
      VertexProgram and FragmentProgram::Extensions into GL2Extensions.

2014-12-08 11:08  robert

    * src/osgUtil/CullVisitor.cpp: Fixed memory leak in
      RenderStageCache.

2014-12-07 17:31  robert

    * examples/osgcubemap/osgcubemap.cpp, include/osg/GL2Extensions,
      include/osg/SampleMaski, src/osg/GL2Extensions.cpp,
      src/osg/SampleMaski.cpp: MOved SampleMaski::Extensions into
      osg::GL2Extensions

2014-12-05 20:05  robert

    * include/osg/GL2Extensions, include/osg/TextureCubeMap,
      src/osg/GL2Extensions.cpp, src/osg/TextureCubeMap.cpp,
      src/osgFX/SpecularHighlights.cpp: Moved TextureCubeMap::Extension
      functionality into GL2Extensions

2014-12-05 17:26  robert

    * include/osg/Drawable, include/osg/GL2Extensions,
      include/osg/State, include/osgViewer/Renderer,
      src/osg/ArrayDispatchers.cpp, src/osg/Drawable.cpp,
      src/osg/GL2Extensions.cpp, src/osg/OcclusionQueryNode.cpp,
      src/osg/State.cpp, src/osg/TextureRectangle.cpp,
      src/osgParticle/PrecipitationEffect.cpp,
      src/osgViewer/Renderer.cpp, src/osgViewer/StatsHandler.cpp: Moved
      osg::Drawable::Extensions into osg::GL2Extensions

2014-12-05 10:37  robert

    * examples/osgshaderterrain/osgshaderterrain.cpp,
      examples/osgtransferfunction/TransferFunctionWidget.h,
      src/osgPlugins/lua/LuaScriptEngine.cpp,
      src/osgPlugins/lua/lua-5.2.3/src/lauxlib.c,
      src/osgPlugins/lua/lua-5.2.3/src/lcode.c: Fixed windows build
      warnings

2014-12-05 09:52  robert

    * src/osg/BufferObject.cpp: Windows build fix

2014-12-05 08:58  robert

    * include/osg/BufferObject, include/osg/Drawable,
      include/osg/GL2Extensions, src/osg/Drawable.cpp: From the
      GLintptr + GLsizeiptr defintions to GL2Extensions header

2014-12-04 19:03  robert

    * include/osg/BlendFunc, include/osg/GL2Extensions,
      src/osg/BlendFunc.cpp, src/osg/BlendFunci.cpp,
      src/osg/GL2Extensions.cpp: Moved osg::BlenFunc::Extensions into
      osg::GL2Extensions

2014-12-04 18:13  robert

    * examples/osgscreencapture/osgscreencapture.cpp,
      include/osg/BufferObject, include/osg/GL2Extensions,
      include/osg/TextureBuffer, src/osg/BufferIndexBinding.cpp,
      src/osg/BufferObject.cpp, src/osg/GL2Extensions.cpp,
      src/osg/Geometry.cpp, src/osgViewer/ScreenCaptureHandler.cpp:
      Moved GLBufferObject::Extensions structure into
      osg::GL2Extensions

2014-12-04 18:12  robert

    * examples/osgscreencapture/osgscreencapture.cpp: Removed redundent
      spaces

2014-12-04 17:12  robert

    * include/osg/GL2Extensions, src/osg/GL2Extensions.cpp: Added
      glMemoryBarrier, glMapBufferRange and glBindBufferBase to
      GL2Extensions

2014-12-04 16:28  robert

    * src/osg/VertexAttribDivisor.cpp,
      src/osgUtil/GLObjectsVisitor.cpp: Moved old
      GL2Extensions::Get(..) usage across to new
      osg::State::get<GL2Extensions>() usage

2014-12-04 16:22  robert

    * examples/osgshaderterrain/osgshaderterrain.cpp,
      include/osg/GL2Extensions, include/osg/State,
      src/osg/FrameBufferObject.cpp, src/osg/GL2Extensions.cpp,
      src/osg/PatchParameter.cpp, src/osg/Program.cpp,
      src/osg/Shader.cpp, src/osg/State.cpp: Ported GL2Extentions
      across to using the new GL extensions approach - cutting code
      count by 3000 lines!

2014-12-04 15:10  robert

    * src/osgDB/DatabasePager.cpp,
      src/osgUtil/IncrementalCompileOperation.cpp: Build fix for when
      ref_ptr<> auto conversion is disabled

2014-12-03 17:31  robert

    * examples/osgmultiplerendertargets/osgmultiplerendertargets.cpp,
      include/osg/Capability, include/osg/StateAttribute,
      src/osg/CMakeLists.txt, src/osg/Capability.cpp: Added
      osg::Capability and Cabibilityi base classes to wrap up
      glEnable/glDisable + glEnablei/glDisablei functionality, with
      osg::Enablei and osg::Disablei concrete implementations.

2014-12-02 17:12  robert

    * include/osg/BlendEquation, include/osg/BlendEquationi,
      include/osg/BlendFunc, include/osg/BlendFunci,
      include/osg/ColorMaski, src/osg/BlendEquation.cpp,
      src/osg/BlendEquationi.cpp, src/osg/BlendFunc.cpp,
      src/osg/BlendFunci.cpp, src/osg/CMakeLists.txt,
      src/osg/ColorMaski.cpp,
      src/osgWrappers/serializers/osg/BlendEquationi.cpp,
      src/osgWrappers/serializers/osg/BlendFunci.cpp,
      src/osgWrappers/serializers/osg/ColorMaski.cpp: Added
      osg::BlendFunci, osg::BlendEquationi and osg::ColorMaski
      StateAttrirbutes that wrap the glBlendFunci, glBlendEquationi and
      glColorMaski functions

2014-12-02 15:37  robert

    * include/osg/BlendEquation, include/osg/BlendFunc,
      src/osg/BlendEquation.cpp, src/osg/BlendFunc.cpp: Moved
      BlendEquation across to using the new GL extension setup
      approach.

2014-12-02 15:21  robert

    * examples/osgblendequation/osgblendequation.cpp: Fixed typo

2014-12-02 11:10  robert

    * include/osg/BlendFunc, include/osg/State, src/osg/BlendFunc.cpp:
      Added a template get and get_exisiting method into osg::State
      that implements a new mechanism for managing OpenGL extensions.
     
      Refactored the BendFunc::Extensions usage to simplify it
      utilizing the new osg::State extension mechanism.

2014-11-28 16:20  robert

    * PlatformSpecifics/Android/android.toolchain.cmake: From Rafa
      Gaitan, "I'm attaching also a new version of the toolchain with
      support for the r10c ndk. This fixes some CMake Warnings and
      allows to use the toolchain in macosx."

2014-11-28 16:10  robert

    * CMakeLists.txt, include/OpenThreads/Version, include/osg/Version,
      src/OpenThreads/CMakeLists.txt, src/osg/CMakeLists.txt: Removed
      include/osg/Version and include/OpenThreads/Version headers as
      these are autogenerated.
     
      Changed the paths for the OpenThreads/osg Version headers to be
      placed in the PROJECT_BINARY_DIR.

2014-11-28 10:54  robert

    * include/osg/BufferObject, include/osgDB/ConvertUTF,
      src/OpenThreads/pthreads/PThread.cpp, src/osg/GLExtensions.cpp:
      Standardized on defined(__ANDROID__)

2014-11-28 10:52  robert

    * src/osgPlugins/lua/lua-5.2.3/src/llex.c,
      src/osgPlugins/lua/lua-5.2.3/src/luaconf.h: Added
      getlocaledecpoint() workaround for Android build of lua plugin

2014-11-27 15:54  robert

    * src/osgTerrain/GeometryPool.cpp, src/osgTerrain/shaders,
      src/osgTerrain/shaders/terrain_displacement_mapping_frag.cpp,
      src/osgTerrain/shaders/terrain_displacement_mapping_vert.cpp:
      Added in source shaders

2014-11-27 15:39  robert

    * src/osgTerrain/GeometryPool.cpp: Changed the name of shader files

2014-11-26 20:40  robert

    * src/osg/CMakeLists.txt: From Jason Beverage, "It looks like the
      Callback header got accidentally removed from the CMakeLists.txt
      in the submission yesterday for the geometry instancing example."

2014-11-26 19:05  robert

    * include/osgTerrain/DisplacementMappingTechnique,
      include/osgTerrain/GeometryPool: Windows build fix

2014-11-26 17:08  robert

    * applications/present3D/deprecated/Cluster.h: Fixed warnings

2014-11-26 17:04  robert

    * src/osgQt/GraphicsWindowQt.cpp: Fixed warnings

2014-11-26 16:29  robert

    * src/osgPlugins/ffmpeg/CMakeLists.txt: Fixed deprecated warnings

2014-11-26 16:15  robert

    * src/osgPlugins/pdf/CMakeLists.txt: Fixed warning

2014-11-26 16:04  robert

    * examples/osgcluster/osgcluster.cpp: Fixed warnings.

2014-11-26 16:00  robert

    * src/osgPlugins/lwo/Object.cpp: Fixed warning

2014-11-26 15:59  robert

    * src/osgWrappers/deprecated-dotosg/osg/StateSet.cpp: Fixed warning

2014-11-26 14:06  robert

    * src/osgWrappers/serializers/osgTerrain/DisplacementMappingTechnique.cpp:
      Added osgTerrain::DisplacementMappingTechnique serializer

2014-11-26 14:04  robert

    * examples/osgterrain/CMakeLists.txt,
      examples/osgterrain/ShaderTerrain.cpp,
      examples/osgterrain/ShaderTerrain.h,
      examples/osgterrain/osgterrain.cpp,
      include/osgTerrain/DisplacementMappingTechnique,
      include/osgTerrain/GeometryPool, src/osgTerrain/CMakeLists.txt,
      src/osgTerrain/DisplacementMappingTechnique.cpp,
      src/osgTerrain/GeometryPool.cpp: Renamed ShaderTerrain to
      DisplacementMappingTechnique and moved it from the osgterrain
      example testbed into the osgTerrain NodeKit

2014-11-26 13:36  robert

    * examples/osgterrain/ShaderTerrain.cpp,
      examples/osgterrain/ShaderTerrain.h,
      include/osgTerrain/GeometryPool, src/osgTerrain/CMakeLists.txt,
      src/osgTerrain/GeometryPool.cpp: Moved osgTerrain::GeometryPool
      from osgterrain example into osgTerrain NodeKit

2014-11-25 14:37  robert

    * src/osg/CMakeLists.txt: Removed GL header as it's already
      included via the ${OPENSCENEGRAPH_OPENGL_HEADER} entry.

2014-11-25 10:58  robert

    * examples/CMakeLists.txt, examples/osggpucull,
      examples/osggpucull/AggregateGeometryVisitor.cpp,
      examples/osggpucull/AggregateGeometryVisitor.h,
      examples/osggpucull/CMakeLists.txt,
      examples/osggpucull/DrawIndirectPrimitiveSet.cpp,
      examples/osggpucull/DrawIndirectPrimitiveSet.h,
      examples/osggpucull/GpuCullShaders.h,
      examples/osggpucull/ShapeToGeometry.cpp,
      examples/osggpucull/ShapeToGeometry.h,
      examples/osggpucull/osggpucull.cpp, include/osg/BufferTemplate,
      src/osg/CMakeLists.txt: From PawelKsiezopolski, "This submission
      contains a new example for OSG : a geometry instancing rendering
      algorithm consisting of two consequent phases :
     
      - first phase is a GLSL shader performing object culling and LOD
      picking ( a culling shader ).
      Every culled object is represented as GL_POINT in the input
      osg::Geometry.
      The output of the culling shader is a set of object LODs that
      need to be rendered.
      The output is stored in texture buffer objects. No pixel is drawn
      to the screen
      because GL_RASTERIZER_DISCARD mode is used.
     
      - second phase draws osg::Geometry containing merged LODs using
      glDrawArraysIndirect()
      function. Information about quantity of instances to render, its
      positions and other
      parameters is sourced from texture buffer objects filled in the
      first phase.
     
      The example uses various OpenGL 4.2 features such as texture
      buffer objects,
      atomic counters, image units and functions defined in
      GL_ARB_shader_image_load_store
      extension to achieve its goal and thus will not work on graphic
      cards with older OpenGL
      versions.
     
      The example was tested on Linux and Windows with NVidia 570 and
      580 cards.
      The tests on AMD cards were not conducted ( due to lack of it ).
      The tests were performed using OSG revision 14088.
     
      The main advantages of this rendering method :
      - instanced rendering capable of drawing thousands of different
      objects with
      almost no CPU intervention ( cull and draw times are close to 0
      ms ).
      - input objects may be sourced from any OSG graph ( for example -
      information about
      object points may be stored in a PagedLOD graph. This way we may
      cover the whole
      countries with trees, buildings and other objects ).
      Furthermore if we create osgDB plugins that generate data on the
      fly, we may
      generate information for every grass blade for that country.
      - every object may have its own parameters and thus may be
      distinct from other objects
      of the same type.
      - relatively low memory footprint ( single object information is
      stored in a few
      vertex attributes ).
      - no GPU->CPU roundtrip typical for such methods ( method uses
      atomic counters
      and glDrawArraysIndirect() function instead of OpenGL queries.
      This way
      information about quantity of rendered objects never goes back to
      CPU.
      The typical GPU->CPU roundtrip cost is about 2 ms ).
      - this example also shows how to render dynamic objects ( objects
      that may change
      its position ) with moving parts ( like car wheels or airplane
      propellers ) .
      The obvious extension to that dynamic method would be the
      animated crowd rendering.
      - rendered objects may be easily replaced ( there is no need to
      process the whole
      OSG graphs, because these graphs store only positional
      information ).
     
      The main disadvantages of a method :
      - the maximum quantity of objects to render must be known
      beforehand
      ( because texture buffer objects holding data between phases have
      constant size ).
      - OSG statistics are flawed ( they don't know anymore how many
      objects are drawn ).
      - osgUtil::Intersection does not work
     
      Example application may be used to make some performance tests,
      so below you
      will find some extended parameter description :
      --skip-dynamic - skip rendering of dynamic objects if you only
      want to
      observe static object statistics
      --skip-static - the same for static objects
      --dynamic-area-size - size of the area for dynamic rendering.
      Default = 1000 meters
      ( square 1000m x 1000m ). Along with density defines
      how many dynamic objects is there in the example.
      --static-area-size - the same for static objects. Default = 2000
      meters
      ( square 2000m x 2000m ).
     
      Example application defines some parameters (density, LOD ranges,
      object's triangle count).
      You may manipulate its values using below described modifiers:
      --density-modifier - density modifier in percent. Default = 100%.
      Density ( along with LOD ranges ) defines maximum
      quantity of rendered objects. registerType() function
      accepts maximum density ( in objects per square kilometer )
      as its parameter.
      --lod-modifier - defines the LOD ranges. Default = 100%.
      --triangle-modifier - defines the number of triangles in finally
      rendered objects.
      Default = 100 %.
      --instances-per-cell - for static rendering the application
      builds OSG graph using
      InstanceCell class ( this class is a modified version of Cell
      class
      from osgforest example - it builds simple quadtree from a list
      of static instances ). This parameter defines maximum number
      of instances in a single osg::Group in quadtree.
      If, for example, you modify it to value=100, you will see
      really big cull time in OSG statistics ( because resulting
      tree generated by InstanceCell will be very deep ).
      Default value = 4096 .
      --export-objects - write object geometries and quadtree of
      instances to osgt files
      for later analysis.
      --use-multi-draw - use glMultiDrawArraysIndirect() instead of
      glDrawArraysIndirect() in a
      draw shader. Thanks to this we may render all ( different )
      objects
      using only one draw call. Requires OpenGL version 4.3 and some
      more
      work from me, because now it does not work ( probably I
      implemented
      it wrong, or Windows NVidia driver has errors, because it hangs
      the apllication at the moment ).
     
      This application is inspired by Daniel Rákos work : "GPU based
      dynamic geometry LOD" that
      may be found under this address :
      http://rastergrid.com/blog/2010/10/gpu-based-dynamic-geometry-lod/
      There are however some differences :
      - Daniel Rákos uses GL queries to count objects to render, while
      this example
      uses atomic counters ( no GPU->CPU roundtrip )
      - this example does not use transform feedback buffers to store
      intermediate data
      ( it uses texture buffer objects instead ).
      - I use only the vertex shader to cull objects, whereas Daniel
      Rákos uses vertex shader
      and geometry shader ( because only geometry shader can send more
      than one primitive
      to transform feedback buffers ).
      - objects in the example are drawn using glDrawArraysIndirect()
      function,
      instead of glDrawElementsInstanced().
     
      Finally there are some things to consider/discuss :
      - the whole algorithm exploits nice OpenGL feature that any GL
      buffer
      may be bound as any type of buffer ( in our example a buffer is
      once bound
      as a texture buffer object, and later is bound as
      GL_DRAW_INDIRECT_BUFFER ).
      osg::TextureBuffer class has one handy method to do that trick (
      bindBufferAs() ),
      and new primitive sets use osg::TextureBuffer as input.
      For now I added new primitive sets to example (
      DrawArraysIndirect and
      MultiDrawArraysIndirect defined in
      examples/osggpucull/DrawIndirectPrimitiveSet.h ),
      but if Robert will accept its current implementations ( I mean -
      primitive
      sets that have osg::TextureBuffer in constructor ), I may add it
      to
      osg/include/PrimitiveSet header.
      - I used BufferTemplate class writen and published by Aurelien in
      submission forum
      some time ago. For some reason this class never got into
      osg/include, but is
      really needed during creation of UBOs, TBOs, and possibly SSBOs
      in the future.
      I added std::vector specialization to that template class.
      - I needed to create similar osg::Geometries with variable number
      of vertices
      ( to create different LODs in my example ). For this reason I've
      written
      some code allowing me to create osg::Geometries from osg::Shape
      descendants.
      This code may be found in ShapeToGeometry.* files. Examples of
      use are in
      osggpucull.cpp . The question is : should this code stay in
      example, or should
      it be moved to osgUtil ?
      - this remark is important for NVidia cards on Linux and Windows
      : if
      you have "Sync to VBlank" turned ON in nvidia-settings and you
      want to see
      real GPU times in OSG statistics window, you must set the power
      management
      settings to "Prefer maximum performance", because when "Adaptive
      mode" is used,
      the graphic card's clock may be slowed down by the driver during
      program execution
      ( On Linux when OpenGL application starts in adaptive mode, clock
      should work
      as fast as possible, but after one minute of program execution,
      the clock slows down ).
      This happens when GPU time in OSG statistics window is shorter
      than 3 ms.
      "

2014-11-25 10:33  robert

    * src/osgUtil/TriStripVisitor.cpp: Removed DrawArrays optimization
      to simplify the code and open the door to adding primitive
      combining.

2014-11-25 10:11  robert

    * src/osg/State.cpp: Commented out
      State::setUpVertexAttribAlias(..) debug message.

2014-11-24 15:19  robert

    * CMakeLists.txt, CMakeModules/FindAVFoundation.cmake,
      CMakeModules/FindQuickTime.cmake,
      src/osgViewer/PixelBufferCocoa.mm: From Jan Klimke, "i noticed,
      that there are a couple of additional flaws when building osg for
      Mac OS X 10.10 Yosemite.
     
      The mac os sdk version is recognized by the current CMAKE script
      as 10.1 instead of 10.10 since it cuts the version string from
      the 4th place. I introduced a more reliable version checking
      based on splitting the returned version code into MAJOR MINOR and
      PATCH parts and reassemble the OSG sdk version afterwards.
     
      I replaced the existing CMake code against the following
      (returning now version 10.10 as expected):
     
      # Determine the canonical name of the selected Platform SDK
      EXECUTE_PROCESS(COMMAND "/usr/bin/sw_vers" "-productVersion"
      OUTPUT_VARIABLE OSG_OSX_SDK_NAME
      OUTPUT_STRIP_TRAILING_WHITESPACE)
      STRING(REPLACE "." ";" MACOS_VERSION_LIST ${OSG_OSX_SDK_NAME})
      LIST(GET MACOS_VERSION_LIST 0 MACOS_VERSION_MAJOR)
      LIST(GET MACOS_VERSION_LIST 1 MACOS_VERSION_MINOR)
      LIST(GET MACOS_VERSION_LIST 2 MACOS_VERSION_PATCH)
     
      SET(OSG_OSX_SDK_NAME
      "macosx${MACOS_VERSION_MAJOR}.${MACOS_VERSION_MINOR}")
     
      Also i added the check for the new Version to some more find
      scripts.
     
      Additionally the nil object in Objective C now seems to be
      equivalent with a null_ptr that cannot be passed as GLInt
      anymore. So i switched this in the PixelBufferCocoa.mm to pass a
      zero instead of nil.
      "

2014-11-24 14:54  robert

    * include/osg/StateAttribute, include/osg/VertexAttribDivisor,
      src/osg/CMakeLists.txt, src/osg/VertexAttribDivisor.cpp,
      src/osgWrappers/serializers/osg/VertexAttribDivisor.cpp: Added
      VertexAttribDivisor class to wrap up glVertexAttribDivisor
      function

2014-11-24 14:09  robert

    * examples/osgsimplegl3/osgsimplegl3.cpp: Fixed osgsimplegl3
      example's set up of the main camera.

2014-11-24 14:01  robert

    * include/osg/State, src/osg/State.cpp: Added numTextureUnits
      parameter to the osg::State::resetVertexAttributeAlias(bool,
      unit) method, and set the default to 8.

2014-11-21 20:16  robert

    * src/osgDB/CMakeLists.txt, src/osgDB/FileUtils.cpp: From Alberto
      Luaces,"the current code uses the preprocessor for generating the
      plugin path in
      a way that when CMAKE_INSTALL_PREFIX contains something along the
      lines
      of
     
      /usr/x86_64-linux-gnu/
     
      it gets substituted as
     
      /usr/x86_64-1-gnu/
     
      that is, the string is preprocessed again, thereby making changes
      to
      anything that matches any defined symbol, as "linux" in this
      example
      (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=763816).
     
      Quoting that path directly in CMake scripts solves that problem.
      "

2014-11-21 20:15  robert

    * include/osg/Image: Added comment clarifying how
      Image::getColor(..) out of 0..1 range texcoords are handled - now
      clamped to edge.

2014-11-21 17:22  robert

    * src/osg/Image.cpp: Implemented a clamp to edge policy for the
      Image::g/setColor(color, texcoord).

2014-11-21 17:17  robert

    * src/osg/CopyOp.cpp: Added testing for Drawables in the
      CopyOp::operator(Node*) to replicate the old functionality.

2014-11-21 16:27  robert

    * include/osg/Image, src/osg/Image.cpp: From Sebastian
      Messerschmidt, "Added setColor function to modify an image based
      on texture coordinates, parallel to the getColor functionality."

2014-11-21 14:46  robert

    * examples/osgterrain/osgterrain.cpp: Added --db-affinit cpuNum
      option to osgterrain example to illustrate how to set the thead
      affinity of the DatabasePager threads.

2014-11-21 10:44  robert

    * include/osg/Texture2DMultisample: From Sebastian Messerschmidt,
      "Attached you find a change adding a getNumSamples() function to
      retrieve the value set via setNumSamples."

2014-11-21 10:37  robert

    * CMakeLists.txt, CMakeModules/ModuleInstall.cmake,
      CMakeModules/OsgMacroUtils.cmake,
      PlatformSpecifics/Android/android.toolchain.cmake,
      src/CMakeLists.txt, src/OpenThreads/pthreads/CMakeLists.txt,
      src/osgWrappers/serializers/osg/LibraryWrapper.cpp: From Rafa
      Gaitan, "I finally had some time to change the build system for
      Android using a Toolchain, which, I think, will be easier to
      maintain and uses cmake standard system to build it.
     
      My changes:
      -------------------
      - I changed the cmake files and added a toolchain for building
      OSG in Android. The toolchain is based on the one used at OpenCV.
      For building OSG for android you just need to do:
     
      mkdir build_android_static_gles2 && cd build_android_static_gles2
      cmake .. -DANDROID_NDK=<path-to-the-android-ndk>
      -DCMAKE_TOOLCHAIN_FILE=../PlatformSpecifics/Android/android.toolchain.cmake
      -DOPENGL_PROFILE="GLES2"
      -DDYNAMIC_OPENTHREADS=OFF
      -DDYNAMIC_OPENSCENEGRAPH=OFF
      -DANDROID_NATIVE_API_LEVEL=15 # optional
      -DANDROID_ABI=armeabim #optional
      -DCMAKE_INSTALL_PREFIX=<path-to-the-install-path> #optional
      make -j 8
      make install
     
      The OPENGL_PROFILE works as expected, changing it to "GLES1" it
      builds and links OSG using GLES1.
      The DYNAMIC_OPENTHREADS/DYNAMIC_OPENSCENEGRAPH parameters also
      allows to build the dynamic libraries
     
      - I also added some build fixes for android related to the
      texture formats and added some missing USE_OSG_SERIALIZER_WRAPPER
      in the osg serializer library to support loading osgb files in
      static."

2014-11-21 10:21  robert

    * CMakeModules/CheckAtomicOps.cmake: From Björn Blissing, fix for
      ambiguous defines in Atomic.cpp when compiling with MinGW and GCC

2014-11-20 17:37  robert

    * include/osg/Texture: From Claus Steuer, "XCode 6, IOs 8.1 SDK
      Compile fix : There are some undefined texture formats when
      compiling osg for IOs 8.1 with XCode 6 and OpenGLES2 enabled."

2014-11-20 17:00  robert

    * include/osg/State: From Pjotr Svetachov, "I was experimenting
      with VBO's to try to get them on par with display
      lists when drawing lots of batches and noticed that my program
      generated a lot of unneeded glClientActiveTexture calls. Digging
      deeper I found out it came from State::disableTexCoordPointer
      where
      the function would call glClientActiveTexture but not
      glDisableClientState because the geometry didn't have texture
      coordinates for that channel. This is because in our scene there
      are
      some geometries that have move than one uv channels making
      State::_texCoordArrayList grow. Then the method
      State::applyDisablingOfVertexAttributes() will call
      disableTexCoordPointer multiple times.
     
      I rearrange the method a little to combat this. Now the logic has
      the
      same ordering as disableTexCoordPointersAboveAndIncluding which
      already combats this."

2014-11-20 16:38  robert

    * src/osgPlugins/obj/ReaderWriterOBJ.cpp: From Farshid Lashkari,
      "The obj loader was overriding the existing database path list
      with the file path of the model, instead of prepending the file
      path to the path list. The latter seems to be more common
      behavior for most of the existing loader plugins. Also, the local
      options weren't actually being used when processing the scene
      graph for textures. I've attached the fix for both issues."

2014-11-20 10:52  robert

    * src/osgPlugins/Inventor/ConvertFromInventor.cpp: From Marc
      Helbling, "here is a trivial fix in the Inventor plugin. In one
      code path, the pointer validity is checked after dereferencing a
      pointer that can be null (image->valid()) instead of calling
      ref_ptr::valid (image.valid())."

2014-11-20 10:45  robert

    * src/osgUtil/MeshOptimizers.cpp: From Marc Helbling, "I've come
      across scenes that contains geometries with initialized but empty
      vertex arrays and primitives and that would make some optimizers
      crash.
     
      The submission therefore only contains a test on the size of the
      vertex array for the VertexCacheMissVisitor and the
      VertexAccessOrderVisitor visitors."

2014-11-20 10:05  robert

    * src/osg/Texture.cpp: From Christian Ruzicka, "while testing this
      commit on our OSG 3.2 version, I observed that the changes for
      ETC2 brake ETC1 support. Attached you'll find the changes to get
      ETC1 running again"

2014-11-20 09:55  robert

    * src/osgPlugins/3ds/ReaderWriter3DS.cpp: From Sukender, "Fix for
      3DS reader, which may read wrong triangles. Actually, indices may
      suffer a 'short int' overflow, in two places."

2014-11-20 09:41  robert

    * src/osg/Texture2DArray.cpp: Fixed segfalt in Texture2DArray copy
      constructor where it would apply images to an uninitialzed
      vector.

2014-11-20 09:32  robert

    * src/osgPlugins/fbx/fbxMaterialToOsgStateSet.cpp,
      src/osgPlugins/fbx/fbxMaterialToOsgStateSet.h,
      src/osgPlugins/fbx/fbxRMesh.cpp: From Marc Helbling, "patch
      adding support for ambient material in the FBX plugin. It's a
      straightfoward adaptation of the emissive support and has been
      tested on a proprietary model."

2014-11-20 09:21  robert

    * src/osgPlugins/gif/ReaderWriterGIF.cpp: From Pjotr Svetachov, fix
      for build breakage with giflib 5.0.

2014-11-20 08:26  robert

    * README.txt: From Per Nordqvist, "The README.txt is still somewhat
      confusing so I have updated it"

2014-11-19 17:45  robert

    * README.txt, configure: Removed configure script as it's no longer
      required as cmake . will now default to Release

2014-11-19 17:42  robert

    * CMakeLists.txt: Added CMake script to set the default
      CMAKE_BUILD_TYPE to Release. Approach taken from simgear.

2014-11-19 17:29  robert

    * ChangeLog, applications/osgversion/Contributors.cpp: Fixed
      Contributors names

2014-11-19 17:10  robert

    * src/osgPlugins/gif/ReaderWriterGIF.cpp: From Clement Boesch, "Fix
      remaining bit of Giflib5 usage"

2014-11-19 11:37  robert

    * src/osgWrappers/deprecated-dotosg/osg/ProxyNode.cpp: From Laurens
      Voerman, "I found a new way to crach the osgviewer:
      osgviewer "ProxyNode { FileNameList { cow.osgt } num_children 1
      }".osgs
     
      The proxy node reader wrongly assumes options to be non NULL.
     
      fixed in attached zip:
      src\osgWrappers\deprecated-dotosg\osg\ProxyNode.cpp
     
      applies to both the 3.2 branch and svn trunk"

2014-11-19 11:30  robert

    * examples/osgQtWidgets/osgQtWidgets.cpp,
      include/osgQt/QGraphicsViewAdapter, include/osgQt/QWebViewImage,
      include/osgQt/QWidgetImage, src/osgQt/QGraphicsViewAdapter.cpp,
      src/osgQt/QWidgetImage.cpp,
      src/osgViewer/ViewerEventHandlers.cpp: From Wang Rui, "The
      submission includes some fixes for osgQt library and osgQtWidgets
      example: (1) QTextEdit now works with mouse/drag events, (2)
      scrollbars will change when OSG window is resizing, (3) improve
      rendering efficiency of QGraphicsViewAdapter so that it works
      with complex Qt UI, (4) add new setBackgroundWidget() method to
      indicate a 'background widget', which will ignore mouse/key
      events on it and pass them to the 3D scene."

2014-11-19 10:43  robert

    * examples/osgterrain/ShaderTerrain.cpp: Changed the way that the
      cell size is passed to the shader

2014-11-19 09:33  robert

    * src/osg/Texture.cpp: From James Turner, "Converting the loops to
      forward versions fixed the issue. The problem is size_t is
      unsigned; at the limit condition it doesn’t go negative but wraps
      around to 0xffffffffffffffff …. and boom."

2014-11-17 15:43  robert

    * src/osgPlugins/exr/ReaderWriterEXR.cpp: Fixed typo

2014-11-17 09:19  robert

    * src/osgDB/ObjectCache.cpp: Fixed typo in comment

2014-11-14 17:44  robert

    * examples/osgterrain/ShaderTerrain.cpp: Added use of
      GL_TRIANGLE_STRIP to cut down the size of the primitive indices
      required.

2014-11-14 16:47  robert

    * examples/osgterrain/ShaderTerrain.cpp: Implemented skirt
      functionality

2014-11-13 09:40  robert

    * include/osgDB/DatabasePager, include/osgDB/ObjectCache,
      include/osgDB/Options, src/osgDB/DatabasePager.cpp,
      src/osgDB/ObjectCache.cpp, src/osgDB/Options.cpp,
      src/osgDB/Registry.cpp: Refactored the handling of use of the
      osgDB::ObjectCache in the DatabasePager to use a local thread
      specific ObjectCache to handle new additions and
      then have these additions merged with the main Registry
      ObjectCache during the main loop.

2014-11-11 18:28  robert

    * include/osgDB/ObjectCache, include/osgDB/Registry,
      src/osgDB/CMakeLists.txt, src/osgDB/ObjectCache.cpp,
      src/osgDB/Registry.cpp: Moved implementation of ObjectCache
      functionality out of Registry into a dedicated osgDB::ObjectCache
      class.

2014-11-10 16:04  robert

    * include/osgDB/DatabasePager, src/osgDB/DatabasePager.cpp: To
      handle thread safe paging and use of the osgDB::Registry
      ObjectCache, moved the handling of cache into
      osgDB::DatabasePager.

2014-11-06 10:44  robert

    * src/osgDB/InputStream.cpp: From Pjotr Svetachov, "I tried your
      fix and it exposed a bug in my fix :)
      The problem is that the readObjectFields method will add the
      object to the _identifierMap. So all the other instances of that
      image in the same file will be replaced by the created dummy
      object. In my fix this was an dummy image and I didn't notice it
      in our scene's, probably because it covered a small part of an
      object. In your fix the dummy object was not an image and that
      leads to a crash when something tries to use it as an image. I
      have attached a small fix for this bug.
     
      "

2014-11-06 10:40  robert

    * include/osg/Object, include/osgDB/DatabasePager,
      include/osgUtil/IncrementalCompileOperation,
      src/osgDB/DatabasePager.cpp, src/osgDB/InputStream.cpp,
      src/osgUtil/IncrementalCompileOperation.cpp: Introduced use of
      MarkerObject to IncrmentalCompileOperation/DatabasePager as a way
      of marking objects that have already been processed and compiled,
      thus avoid potential threading conflicts when paged subgraphs are
      reused.

2014-11-05 16:08  robert

    * include/osgDB/InputStream, src/osgDB/InputStream.cpp: Added
      handling of the reading of field properties to a dummy object for
      cached images to avoid threading issues associated with reusing
      and modifying an active object.

2014-11-05 13:38  robert

    * src/osg/OperationThread.cpp: Reinstated the original mechanism
      for OperationThread::cancel() that co-operatively releases
      blocks/barriers to make sure the thread is able to exit
      correctly.

2014-11-04 20:07  robert

    * examples/osgterrain/ShaderTerrain.cpp,
      examples/osgterrain/ShaderTerrain.h: Improvements to the
      ShaderTerrain experiemental terrain rendering technique.

2014-11-04 20:07  robert

    * src/osgTerrain/TerrainTile.cpp: Changed TerrainTile::setDirty()
      to use children needing update traversal mechanism to address
      threadng issues.

2014-11-04 20:06  robert

    * src/OpenThreads/pthreads/PThread.cpp,
      src/OpenThreads/pthreads/PThreadPrivateData.h: Change isRunning
      variable to an Atomic to address possible race condition
      asscoiated with reading and writing to the variable from
      different threads.

2014-11-04 16:29  robert

    * src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp,
      src/osgPlugins/ffmpeg/FFmpegDecoderVideo.cpp: Build fixes for
      ffmpeg LIBAVCODEC_VERSION_MAJOR >= 56

2014-11-04 11:18  robert

    * src/osgViewer/ViewerBase.cpp: Added an InitRegistry static
      intiialization and destrucion static to help control the order of
      construction and destruction of the osgDB::Registry.

2014-11-04 10:46  robert

    * examples/osgQtBrowser/osgQtBrowser.cpp,
      examples/osgunittests/MultiThreadRead.cpp,
      examples/osgunittests/osgunittests.cpp,
      examples/osguserstats/osguserstats.cpp,
      examples/osgviewerMFC/MFC_OSG.cpp, include/osg/OperationThread,
      src/OpenThreads/pthreads/PThread.cpp,
      src/OpenThreads/qt/QtThread.cpp,
      src/OpenThreads/sproc/SprocThread.c++,
      src/OpenThreads/win32/Win32Thread.cpp,
      src/osg/OperationThread.cpp, src/osgDB/DatabasePager.cpp,
      src/osgDB/ImagePager.cpp, src/osgPlugins/cfg/RenderSurface.cpp,
      src/osgPlugins/gif/ReaderWriterGIF.cpp,
      src/osgPlugins/quicktime/QuicktimeImageStream.cpp,
      src/osgPlugins/vnc/ReaderWriterVNC.cpp: Replaced use of
      while(isRunning()) { YieldCurrentThread(); } style loops with use
      of join() to avoid false positives being reported by valgrind
      when using the helgrind tool for thread debugging.

2014-10-21 15:08  robert

    * examples/osgterrain/CMakeLists.txt,
      examples/osgterrain/ShaderTerrain.cpp,
      examples/osgterrain/ShaderTerrain.h,
      examples/osgterrain/osgterrain.cpp,
      src/osgTerrain/TerrainTile.cpp: Added experimental
      osgTerrain::ShaderTerrain TerrainTechnique to osgterrain example
      to flesh out new shader based displacement mapping approach to
      osgTerrain databases.
     
      Requires shader files place in OpenSceneGraph-Data/shaders from
      OpenSceneGraph-Data's svn/trunk to function.
     
      Run osgterrain example with --shader command line option to
      select displacement mapping shader approach.

2014-10-21 14:47  robert

    * applications/osgviewer/osgviewer.cpp: Removed --sync related code
      as it's now integrated into osg::DisplaySettings and osgViewer

2014-10-21 14:46  robert

    * include/osg/DisplaySettings, include/osg/GraphicsContext,
      src/osg/DisplaySettings.cpp, src/osg/GraphicsContext.cpp,
      src/osgViewer/CompositeViewer.cpp, src/osgViewer/Viewer.cpp:
      Added osg::SyncSwapBuffersCallback to include/osg/GraphicsContext
      and support for enabling it to include/osg/DisplaySettings, and
      to the Viewer/CompositeViewer::realize() methods.
     
      To enable the sync of swap buffers set the env var
      OSG_SYNC_SWAP_BUFFERS to ON or 1, to switch off set to OFF or 0.
     
      One can also use the --sync command line option for application
      that pass on command line options to the
      osg::DisplaySettings::instance().

2014-10-21 08:27  robert

    * src/osg/StateSet.cpp: Removed checks against Drawable as these
      are no longer required.

2014-09-17 17:40  robert

    * src/osgPlugins/lua/LuaScriptEngine.cpp,
      src/osgPlugins/lua/LuaScriptEngine.h,
      src/osgPlugins/lua/ReaderWriterLua.cpp: Added support for writing
      the file path of a script to the lua package.path to help with
      loading scripts within lua.

2014-09-16 17:40  robert

    * examples/osgvolume/osgvolume.cpp,
      src/osgPlugins/p3d/ReaderWriterP3D.cpp,
      src/osgPlugins/tf/ReaderWriterTF.cpp: Changed osgvolume example
      to use the new tf plugin rather than having local code for
      reading transfer function

2014-09-16 11:00  robert

    * src/osgPlugins/tf/ReaderWriterTF.cpp: Added write support

2014-09-15 17:53  robert

    * src/osgDB/Registry.cpp, src/osgPlugins/CMakeLists.txt,
      src/osgPlugins/tf, src/osgPlugins/tf/CMakeLists.txt,
      src/osgPlugins/tf/ReaderWriterTF.cpp: Added .tf & .tf-255 plugin
      for reading ascii 1D transfer functon files in support for volume
      rendering.

2014-09-12 14:16  robert

    * include/osgUI/TabWidget, src/osgUI/TabWidget.cpp: Added basic
      frame rendering for TabWidget

2014-09-10 17:03  robert

    * include/osgUI/AlignmentSettings, src/osgUI/AlignmentSettings.cpp,
      src/osgUI/TabWidget.cpp: Improved the alignment and sizing of
      TabWidget tab headers

2014-09-10 11:59  robert

    * src/osgUI/TabWidget.cpp: Implemented the selection of tabs by
      clicking, using mouse wheel or arrow keys.

2014-09-09 16:12  robert

    * src/osgUI/Dialog.cpp, src/osgUI/TabWidget.cpp: Improved the
      handling of the dialog title text

2014-09-09 15:14  robert

    * include/osgUI/Callbacks, src/osgUI/Callbacks.cpp,
      src/osgUI/Dialog.cpp, src/osgUI/Widget.cpp: Moved the diaglog
      title bar widgets into the Widget::GraphicsSubgraph map to avoid
      them poluting the Dialog's children list and to prevent them from
      being serialized.

2014-09-09 13:37  robert

    * include/osgUI/TabWidget, include/osgUI/Widget,
      src/osgUI/ComboBox.cpp, src/osgUI/Dialog.cpp,
      src/osgUI/Label.cpp, src/osgUI/LineEdit.cpp, src/osgUI/Popup.cpp,
      src/osgUI/PushButton.cpp, src/osgUI/Style.cpp,
      src/osgUI/TabWidget.cpp, src/osgUI/Widget.cpp,
      src/osgWrappers/serializers/osgUI/Tab.cpp,
      src/osgWrappers/serializers/osgUI/Widget.cpp: Introduced
      Widget::WidgetStateSet to help localize the StateSet set up by
      Widget implementations from being serialized or
      affecting what end users apply via the standard
      Node::s/getStateSet().
     
      Further work on TabWidget.

2014-09-08 08:53  robert

    * examples/osgtransferfunction/TransferFunctionWidget.cpp: Build
      fix

2014-09-05 16:04  robert

    * include/osgUI/TabWidget, src/osgUI/CMakeLists.txt,
      src/osgUI/TabWidget.cpp,
      src/osgWrappers/serializers/osgUI/Tab.cpp,
      src/osgWrappers/serializers/osgUI/TabWidget.cpp: Added shell of
      new osgUI::TabWidget class

2014-09-05 11:05  robert

    * include/osgDB/ObjectWrapper, include/osgDB/Serializer,
      src/osgDB/ObjectWrapper.cpp,
      src/osgWrappers/serializers/osgVolume/VolumeSettings.cpp:
      Introduced support for specifying whether a serializer supports
      different types of usage - one or more of READ_WRITE_PROPERTY,
      GET_PROPERTY and SET_PROPERTY.

2014-09-03 15:54  robert

    * include/osgVolume/VolumeSettings,
      src/osgPresentation/deprecated/SlideShowConstructor.cpp,
      src/osgVolume/VolumeSettings.cpp,
      src/osgWrappers/serializers/osgVolume/VolumeSettings.cpp: Added
      setting of the IsoSurfaceProperty in VolumeSettings

2014-09-03 12:28  robert

    * include/osgUI/Callbacks, src/osgUI/Callbacks.cpp,
      src/osgUI/Dialog.cpp, src/osgUI/PushButton.cpp: Added close
      button on Dialog title bar

2014-09-02 17:01  robert

    * include/osgUI/ComboBox, src/osgUI/ComboBox.cpp: Refactored the
      handling of ComboBox item picking to make it faster and more
      reliable

2014-09-02 10:00  robert

    * src/osgUI/ComboBox.cpp: Improved handling of ComboBox popup
      toggling

2014-09-02 09:14  robert

    * src/osgUI/Callbacks.cpp, src/osgUI/Widget.cpp: Added support for
      scaling widgets via the scoll wheel.

2014-09-02 08:41  robert

    * src/osgGA/KeySwitchMatrixManipulator.cpp: Removed debugging
      message

2014-09-01 19:13  robert

    * include/osgUI/Callbacks, include/osgUI/Widget,
      src/osgUI/CMakeLists.txt, src/osgUI/Callbacks.cpp,
      src/osgUI/Dialog.cpp, src/osgUI/LineEdit.cpp,
      src/osgUI/Widget.cpp: Added DragCallback class to help dialog
      dragging support.
      Introduced a new
      Widget::computeExtentsPositionInLocalCoordinates() method that
      intersects with a ray through mouse pointer and the extents of
      the widget.

2014-08-28 15:11  robert

    * src/osgVolume/MultipassTechnique.cpp: Improved support for
      controlling the ShadingModel via the VolumeSettings object

2014-08-28 09:42  robert

    * src/osgPresentation/deprecated/SlideShowConstructor.cpp,
      src/osgVolume/Property.cpp: Improved handling of VolumeSettings

2014-08-27 15:08  robert

    * src/osgPresentation/deprecated/SlideShowConstructor.cpp,
      src/osgUI/Widget.cpp, src/osgVolume/Property.cpp,
      src/osgWrappers/serializers/osgVolume/SampleRatioProperty.cpp:
      Changed the osgUI behaviour so that events are set to be handled
      by Widgets that have focus even if they don't directly use them.

2014-08-27 15:07  robert

    * src/osg/NodeVisitor.cpp: Changed the
      NodeVisitor::apply(Drawable&) to call apply(Node&)

2014-08-27 09:25  robert

    * include/osgDB/Serializer,
      src/osgWrappers/serializers/osgVolume/VolumeSettings.cpp: Added
      support for getting osgVolumre::Property::ModifieCount

2014-08-25 16:56  robert

    * include/osgDB/Serializer, include/osgVolume/Property,
      include/osgVolume/VolumeSettings, src/osgVolume/Property.cpp,
      src/osgWrappers/serializers/osgVolume/Property.cpp,
      src/osgWrappers/serializers/osgVolume/VolumeSettings.cpp: Added
      Property::getModifiedCount() + dirty() to help with tracking
      changes. Added VolumeSettings serializers for Property objects

2014-08-25 13:43  robert

    * include/osg/StateSet, src/osg/NodeVisitor.cpp,
      src/osg/StateSet.cpp: Changed StateSet::ParentList from
      vector<Object*> to vector<Node*> to reflect that Drawable is now
      a Node.

2014-08-22 19:00  robert

    * include/osgUI/Style, src/osgUI/Popup.cpp, src/osgUI/Style.cpp:
      Improved handling of setting of the depth of the UI.

2014-08-20 14:15  robert

    * src/osgUI/Style.cpp: Reordered method implemenations to make it
      easier to compare similar methods

2014-08-19 16:58  robert

    * src/osgPresentation/deprecated/SlideShowConstructor.cpp: Added
      toggling on/off of the VolumeSettings ui via the 'E' key.

2014-08-19 16:37  robert

    * src/osgPresentation/deprecated/SlideShowConstructor.cpp: Updated
      VolumeSettings.lua reference to use ui prefix to work with the
      new OpenSceneGraph-Data/ui/VolumeSettings.lua file.

2014-08-19 09:27  robert

    * src/osgPlugins/md2/ReaderWriterMD2.cpp: Fixed MD2 danglng pointer
      crash.

2014-08-19 09:00  robert

    * examples/osgcallback/osgcallback.cpp: Fixed build

2014-08-19 08:57  robert

    * src/osgUI/Style.cpp: Fixed build

2014-08-14 19:00  robert

    * include/osgUI/ComboBox, src/osgUI/ComboBox.cpp,
      src/osgWrappers/serializers/osgUI/ComboBox.cpp: Added support for
      ComboBox::currentIndexChanged*(uint) callback API.

2014-08-13 09:24  robert

    * src/osgPresentation/deprecated/SlideShowConstructor.cpp: Resert
      default value to 1.0

2014-08-08 16:42  robert

    * src/osgPlugins/txp/ReaderWriterTXP.cpp: From Ryan Kawicki, "There
      is an issue where the model insets of a terrex terrain are being
      removed during the loading process. The issue is described below.
     
      - the issue here is that the plugin is removing group nodes if
      that group node only has one child. becuase transforms are also
      group nodes, there were cases when the transform would have only
      one child under it and would cause it to remove the translation
      portion. this would cause all the vertex data to be loaded around
      the last matrix operation, which in our case was the origin
      (0,0,0).
     
      We work off of OSG 2.8.1 but see that this has not been addressed
      on latest yet. I’ve tested this against 2.8.1 and have cleanly
      applied it to my local repository off of latest."

2014-08-08 16:34  robert

    * src/osgUtil/RenderStage.cpp: From Tim George, "Currently there is
      a problem with using a camera with a viewport with a non 0 offset
      and also using an FBO. The problem is that only area made up of
      the viewports width and height is drawn based on an offset of 0,0
      instead of using the viewports offset.
     
      It is caused by line 991 in RenderStage.cpp:
     
     
      Code:
      fbo_ext->glBlitFramebuffer(
      0, 0, static_cast<GLint>(_viewport->width()),
      static_cast<GLint>(_viewport->height()),
      0, 0, static_cast<GLint>(_viewport->width()),
      static_cast<GLint>(_viewport->height()),
      blitMask, GL_NEAREST);
     
     
     
      which is not taking into account the viewport x and y when
      performing the blit. It probably should be:
     
     
      Code:
      fbo_ext->glBlitFramebuffer(
      static_cast<GLint>(_viewport->x()),
      static_cast<GLint>(_viewport->y()),
      static_cast<GLint>(_viewport->width()) +
      static_cast<GLint>(_viewport->x()),
      static_cast<GLint>(_viewport->height()) +
      static_cast<GLint>(_viewport->y()),
      static_cast<GLint>(_viewport->x()),
      static_cast<GLint>(_viewport->y()),
      static_cast<GLint>(_viewport->width()) +
      static_cast<GLint>(_viewport->x()),
      static_cast<GLint>(_viewport->height()) +
      static_cast<GLint>(_viewport->y()),
      blitMask, GL_NEAREST);
      "
     
      Note from Robert Osfield, made small tweak to above on merge,
      changing the width+x to x+width to make it read more naturally.

2014-08-08 16:09  robert

    * src/osgUtil/MeshOptimizers.cpp: From Marc Helbling, "please find
      a fix for the vertex pretransform visitor
      (VertexAccessOrderVisitor).
      The issue with current code is that arrays are collected *before*
      duplicating shared arrays which leads to arrays that are
      correctly duplicated but that are not reordered.
     
      Also the submitted patch contains a small cleaning in
      GeometryArrayGathrer as the _useDrawElements variable is not
      used; it is only set in the GeometryArrayGathrer constructor and
      VertexAccessOrderVisitor already checks that primitives have
      indexed type."

2014-08-08 15:45  robert

    * include/osg/Node: From Glen Waldron, "Node: patch for
      remove*Callback() methods to resolve a crash"

2014-08-08 09:28  robert

    * CMakeLists.txt, include/osg/Texture: Changes to support building
      against ANDROID under OSX.

2014-08-05 18:32  robert

    * include/osg/Callback, include/osgUI/LineEdit,
      include/osgUI/Validator, src/osgUI/CMakeLists.txt,
      src/osgUI/LineEdit.cpp, src/osgUI/Validator.cpp,
      src/osgWrappers/serializers/osgUI/DoubleValidator.cpp,
      src/osgWrappers/serializers/osgUI/IntValidator.cpp,
      src/osgWrappers/serializers/osgUI/LineEdit.cpp,
      src/osgWrappers/serializers/osgUI/Validator.cpp: Implemented
      osgUI::Validator, IntValidator and DoubleValidator classes that
      manage validation/specialization of LineEdit widgets to work with
      just integer or double values.

2014-08-01 13:07  robert

    * include/osgUI/LineEdit, src/osgUI/LineEdit.cpp: Implemented
      callbacks for validate(), textChanged() and returnPressed()

2014-08-01 10:57  robert

    * src/osgUI/ComboBox.cpp, src/osgUI/LineEdit.cpp,
      src/osgUI/PushButton.cpp, src/osgUI/Widget.cpp: Moved
      responsiblity for checking current event focus onto
      Widget::handleImplementations().
     
      Added support for closing CombinBox popup when the mouse is
      clicked outside the popup or combobox widget.

2014-07-31 18:29  robert

    * include/osg/NodeVisitor, src/osgUI/Widget.cpp,
      src/osgUtil/CullVisitor.cpp, src/osgUtil/IntersectVisitor.cpp,
      src/osgUtil/IntersectionVisitor.cpp,
      src/osgUtil/UpdateVisitor.cpp,
      src/osgWrappers/serializers/osg/NodeVisitor.cpp: Added
      NodeVisitor::INTERSECTION_VISITOR VisitorType

2014-07-30 12:48  robert

    * include/osgUI/Style, src/osgUI/ComboBox.cpp,
      src/osgUI/Dialog.cpp, src/osgUI/Popup.cpp, src/osgUI/Style.cpp:
      Fixed rendering of Popups

2014-07-30 12:47  robert

    * CMakeLists.txt: Update SO version to account for new changes to
      osg::StateSet and osgUI

2014-07-30 12:47  robert

    * include/osg/StateSet, include/osg/Version,
      include/osgUtil/CullVisitor,
      src/osgWrappers/serializers/osg/StateSet.cpp: Added
      StateSet::RenderBinMode::PROTECTED_RENDERBIN_DETAILS and
      OVERRIDE_PROTECTED_RENDERBIN_DETAILS options.

2014-07-29 15:50  robert

    * include/osgUI/ComboBox, src/osgUI/ComboBox.cpp: Added preliminary
      icon to ComboBox.

2014-07-29 15:50  robert

    * src/osgUI/LineEdit.cpp: Fixed debug comment

2014-07-29 15:50  robert

    * include/osgUI/Style, src/osgUI/Style.cpp: Implemented prelimary
      icon support allowing UI widget to place image and model based
      icons on widgets

2014-07-29 15:47  robert

    * src/osgUtil/Optimizer.cpp: Added catch for NULL Transform
      pointers getting into the _transformMap.

2014-07-28 16:19  robert

    * include/osg/ComputeBoundsVisitor,
      src/osg/ComputeBoundsVisitor.cpp: Added handling of Drawables
      added directly to scene graph without Geode decorating them.

2014-07-24 14:14  robert

    * include/osgUI/LineEdit, src/osgUI/LineEdit.cpp,
      src/osgUI/PushButton.cpp: Added support for changing background
      colour of LineEdit widget when focus changes

2014-07-24 13:25  robert

    * src/osgUI/ComboBox.cpp, src/osgUI/Dialog.cpp,
      src/osgUI/LineEdit.cpp, src/osgUI/PushButton.cpp: Refined the
      colouring of widget to be more in sync with the defaults used in
      Qt.

2014-07-23 16:36  robert

    * include/osgVolume/VolumeSettings,
      src/osgPlugins/p3d/ReaderWriterP3D.cpp,
      src/osgVolume/VolumeSettings.cpp,
      src/osgWrappers/serializers/osgVolume/VolumeSettings.cpp: Added
      VolumeSettings::Filename property.

2014-07-23 15:57  robert

    * src/osgUI/Style.cpp: Changed the default text colour to black

2014-07-23 14:50  robert

    * src/osgPlugins/lua/LuaScriptEngine.cpp: Added writeFile support

2014-07-23 10:49  robert

    * src/osgPlugins/lua/LuaScriptEngine.cpp: Added
      Node:getNumParents() and Node:getParent(index) support

2014-07-22 16:02  robert

    * CMakeLists.txt, include/osg/State, include/osg/Version,
      src/osg/State.cpp, src/osgUtil/SceneView.cpp: Removed
      State::AppliedProgramObjectSet container and Obsever usage from
      osg::State to address threading bug crash.
     
      The State::AppliedProgramObjectSet wasn't ever being used
      actively in the current rev of the OSG so populating and clearing
      was no longer neccessary, allowing the code to be removed
      completely.

2014-07-21 16:36  robert

    * applications/osgviewer/osgviewer.cpp, include/osg/Types,
      src/osgPlugins/ktx/ReaderWriterKTX.h,
      src/osgPlugins/osg/BinaryStreamOperator.h,
      src/osgPlugins/pvr/ReaderWriterPVR.cpp: Centralized the calling
      of #include <stdint.h> and VS fallback into include/osg/Types
      header

2014-07-21 14:32  robert

    * src/osgUtil/CullVisitor.cpp: From Pjotr Svetachov, "I think I
      spotted some unneeded ref_ptrs in the cullvisitor. The call
      pushModelViewMatrix or pushProjectionMatrix will already keep the
      reference when adding it to the MatrixStack. In
      CullVisitor::apply
      methods for the billboard and the camera you already take a
      pointer
      instead of a ref_ptr."

2014-07-21 13:45  robert

    * src/osgText/Glyph.cpp: Added setting of glPixelStore before
      glTexSubImage2D call.

2014-07-21 13:43  robert

    * src/osgText/Glyph.cpp: From Jaap Gas, "I want to submit a bugfix
      for a crash occurring in osgText/Glyph.cpp if
      the scene tree contains (large) 2D textures from images with
      STRIDE.
     
      ============================================================================
      #0 0x00007fffe8ea4350 in __memmove_ssse3 () from /lib64/libc.so.6
      #1 0x00007fffe52ced76 in ?? () from
      /usr/lib64/libnvidia-glcore.so.310.44
      #2 0x00007fffe52d8e86 in ?? () from
      /usr/lib64/libnvidia-glcore.so.310.44
      #3 0x00007fffe53dd8be in ?? () from
      /usr/lib64/libnvidia-glcore.so.310.44
      #4 0x00007fffe53c2643 in ?? () from
      /usr/lib64/libnvidia-glcore.so.310.44
      #5 0x00007fffe53c7fdd in ?? () from
      /usr/lib64/libnvidia-glcore.so.310.44
      #6 0x00007fffe53cbabf in ?? () from
      /usr/lib64/libnvidia-glcore.so.310.44
      #7 0x00007fffe53cc1fa in ?? () from
      /usr/lib64/libnvidia-glcore.so.310.44
      #8 0x00007ffff30092fd in osgText::GlyphTexture::apply
      (this=0x1bb8cf0, state=
      ...)
      at
      /d43/jaap/dev/jaapOSG/build/OpenSceneGraph3.3.1/src/osgText/Glyph.cpp:234
      #9 0x00007ffff56c30b6 in osg::State::applyAttributeOnTexUnit
      (this=0x125f180,
      unit=0, attribute=0x1bb8cf0, as=...)
      at
      /d43/jaap/dev/jaapOSG/build/OpenSceneGraph3.3.1/include/osg/State:1713
      #10 0x00007ffff56c2f3f in osg::State::applyTextureAttribute
      (this=0x125f180,
      unit=0, attribute=0x1bb8cf0)
      at
      /d43/jaap/dev/jaapOSG/build/OpenSceneGraph3.3.1/include/osg/State:411
      #11 0x00007ffff30204da in osgText::Text::drawTextWithBackdrop
      (this=0x1baed70,
      state=..., colorMultiplier=...)
      ==============================================================================
     
      The crash disappears if I either (1) disable the use of images
      with stride
      in the (public) osgGeo-library, or (2) add the following bugfix
      to Glyph.cpp.
      This combination gives me the confidence that I understand where
      this problem
      originates from, without trying to understand the full OpenGL
      details.
     
      ===============================================================================
      @@ -221,7 +223,12 @@
      imageData[i] = 0;
      }
     
      + glPixelStorei(GL_UNPACK_ALIGNMENT,1);
     
      + #if !defined(OSG_GLES1_AVAILABLE) &&
      !defined(OSG_GLES2_AVAILABLE)
      + glPixelStorei(GL_UNPACK_ROW_LENGTH,getTextureWidth());
      + #endif
      +
      // allocate the texture memory.
      glTexImage2D( GL_TEXTURE_2D, 0, GL_ALPHA,
      getTextureWidth(), getTextureHeight(), 0,
      ================================================================================
     
      I have copied (and adapted) the added lines above from the same
      source file,
      where they were used in front of a similar call to
      glTexSubImage2D(.) around
      line 515.
      "

2014-07-21 12:21  robert

    * src/osgPresentation/CMakeLists.txt,
      src/osgPresentation/deprecated/SlideShowConstructor.cpp: Initial
      work on integtasting osgUI into Present3D

2014-07-21 12:18  robert

    * include/osg/NodeVisitor: Fixed indentation

2014-07-21 09:35  robert

    * src/osgUI/Style.cpp: Added debug messages

2014-07-18 17:17  robert

    * src/osgWrappers/serializers/CMakeLists.txt,
      src/osgWrappers/serializers/osg/NodeVisitor.cpp,
      src/osgWrappers/serializers/osgGA/EventVisitor.cpp,
      src/osgWrappers/serializers/osgUtil,
      src/osgWrappers/serializers/osgUtil/CMakeLists.txt,
      src/osgWrappers/serializers/osgUtil/CullVisitor.cpp,
      src/osgWrappers/serializers/osgUtil/UpdateVisitor.cpp: Added
      serailizer support for NodeVisitor, UpdateVisitor, CullVisitor
      and EventVisitor

2014-07-14 15:59  robert

    * examples/osgpresentation/osgpresentation.cpp,
      include/osgDB/Callbacks, include/osgDB/ReadFile,
      include/osgDB/ReaderWriter, include/osgDB/Registry,
      include/osgDB/WriteFile, src/osgDB/Callbacks.cpp,
      src/osgDB/ReadFile.cpp, src/osgDB/ReaderWriter.cpp,
      src/osgDB/Registry.cpp, src/osgDB/WriteFile.cpp,
      src/osgPlugins/V8/ReaderWriterV8.cpp,
      src/osgPlugins/lua/ReaderWriterLua.cpp,
      src/osgPlugins/python/ReaderWriterPython.cpp: Added
      readScript/writeScript methods to ReaderWriter

2014-07-14 14:09  robert

    * CMakeLists.txt, examples/osgpresentation/osgpresentation.cpp,
      include/osg/Version, include/osgDB/ClassInterface,
      include/osgDB/PropertyInterface, src/osgDB/CMakeLists.txt,
      src/osgDB/ClassInterface.cpp, src/osgDB/PropertyInterface.cpp,
      src/osgPlugins/lua/LuaScriptEngine.cpp,
      src/osgPlugins/lua/LuaScriptEngine.h: Renamed
      osgDB::PropertyInterface to osgDB::ClassInterface to better
      reflect it's functionality

2014-07-04 16:45  robert

    * include/osgPresentation/deprecated/SlideShowConstructor,
      include/osgVolume/Property, include/osgVolume/VolumeSettings,
      src/osgPlugins/p3d/ReaderWriterP3D.cpp,
      src/osgPresentation/deprecated/SlideShowConstructor.cpp,
      src/osgVolume/Property.cpp, src/osgVolume/VolumeSettings.cpp:
      Added preliminary support for writing VolumeSettings to disk from
      within Present3D in response to pressing and releasing 'Ctrl-S'.

2014-07-03 16:36  robert

    * src/osgVolume/Shaders/volume_accumulateSamples_iso_frag.cpp,
      src/osgVolume/Shaders/volume_accumulateSamples_mip_frag.cpp:
      Updated iso and mip shaders from OpenSceneGraph-Data.

2014-07-03 13:06  robert

    * src/osgPlugins/osc/OscSendingDevice.cpp,
      src/osgPresentation/deprecated/PropertyManager.cpp: Added virtual
      destructors

2014-07-03 13:05  robert

    * src/osgPlugins/osc/OscSendingDevice.cpp: Fixed line endings

2014-07-03 13:01  robert

    * include/osgPresentation/deprecated/SlideShowConstructor,
      src/osgPlugins/p3d/ReaderWriterP3D.cpp,
      src/osgPresentation/deprecated/SlideShowConstructor.cpp: Changed
      enum usage to use the new osgVolume::VolumeSettings versions and
      added support for reading a VolumeSettings file.

2014-07-03 10:01  robert

    * include/osgVolume/VolumeSettings,
      src/osgVolume/VolumeSettings.cpp: Refactor VolumeSettings so that
      it's subclassed from osgVolume::Property

2014-07-02 16:26  robert

    * include/osgVolume/VolumeSettings,
      src/osgPlugins/dds/ReaderWriterDDS.cpp,
      src/osgVolume/CMakeLists.txt, src/osgVolume/VolumeSettings.cpp,
      src/osgWrappers/serializers/osgVolume/VolumeSettings.cpp: Added
      osgVolume::VolumeSettings object

2014-07-02 15:34  robert

    * examples/osgvolume/osgvolume.cpp: Changed the default image
      output format to .osgb as .dds isn't able to represent signed
      byte, short and int data correctly.

2014-07-02 14:14  robert

    * src/osgPlugins/osg/ReaderWriterOSG2.cpp: fixed handlng of file
      type of nested files within a .osgx, .osgt and .osgb file.

2014-07-02 10:25  robert

    * include/osgViewer/ViewerEventHandlers: From Laurens Voerman,
      "just like ClusterCullingCallback (fixed in r14322) visual studio
      likes an explicit implementation of run() for
      InteractiveImageHandler.
     
      The warning is (14 times):
      include\osgViewer/ViewerEventHandlers(542): warning C4250:
      'osgViewer::InteractiveImageHandler' : inherits
      'osgGA::EventHandler::osgGA::EventHandler::run' via dominance
      (src\osgViewer\StatsHandler.cpp)
      include\osgGA/EventHandler(45) : see declaration of
      'osgGA::EventHandler::run'
     
     
      attached a zipped version of
      include\osgViewer\ViewerEventHandlers"

2014-07-01 07:31  robert

    * applications/osgviewer/osgviewer.cpp: Added #include <stdint.h>
      to address compile issue on some Linux distro's.

2014-06-30 15:31  robert

    * examples/osgvolume/osgvolume.cpp: Add dds no flip on write option
      to prevent output of .dds volume from being flipped by the dds
      plugin.

2014-06-30 13:24  robert

    * src/osgPlugins/3ds/WriterNodeVisitor.cpp: REmoved debug cout

2014-06-30 10:13  robert

    * include/osgUtil/StateGraph: From Mikhail Izmestev, "Attached fix
      to avoid vector reallocs on push_back in
      StateGraph::moveStateGraph."

2014-06-30 09:12  robert

    * AUTHORS.txt, ChangeLog: Updated ChangeLog and AUTHORS file

2014-06-30 08:56  robert

    * CMakeLists.txt, include/osg/Version: Updated version number

2014-06-30 08:46  robert

    * include/osg/Image: From Pjotr Svetachov, "Here is a small fix for
      a overflow when editing large 3d volume data."

2014-06-30 08:20  robert

    * src/osgPlugins/svg/ReaderWriterSVG.cpp: Removed space from
      #include.

2014-06-30 07:37  robert

    * src/osgPlugins/svg/ReaderWriterSVG.cpp: From Alexander
      Sinditskiy, build fix to allow building against versions older
      than librsvg-2.36.2

2014-06-28 06:22  robert

    * include/osg/ClusterCullingCallback: Replaced using
      NodeCallback::run with explict run() implementation.

2014-06-27 15:57  robert

    * src/osgPlugins/ive/DataOutputStream.cpp: From Pjotr Svetachov, "I
      made a small change to DataOutputStream.cpp which makes saving
      Geodes possible again. This is only half a fix as it only will
      save a Drawable that is part of a Geode. But this change does not
      require a version bump of the .ive format. I tried it with a few
      datasets we have here with the 3.2 stable branch and the trunk
      with this patch and there was no difference in the .ive files
      that were produced."

2014-06-27 15:55  robert

    * src/osgUtil/DelaunayTriangulator.cpp: Removed unused method.

2014-06-27 15:48  robert

    * src/osgUtil/Tessellator.cpp: From Laurens Voerman, "attached is a
      modified version of src/osgUtil/Tessellator.cpp
      current code checks for a Nullpointer and on notify level info or
      above will inform you with a crash, by dereferencing it."

2014-06-27 15:39  robert

    * AUTHORS.txt: Updated AUTHORS file

2014-06-27 15:38  robert

    * src/osg/ApplicationUsage.cpp: Added an OSG_INIT_SINGLETON_PROXY
      to make sure that the ApplicationUsage singleton gets intialized
      before usage.

2014-06-27 15:36  robert

    * AUTHORS.txt: Updated AUTHORS file

2014-06-27 15:30  robert

    * include/osg/Camera, src/osg/GraphicsContext.cpp,
      src/osgViewer/CompositeViewer.cpp, src/osgViewer/Viewer.cpp:
      Added a render order sort to the list of Cameras being tested by
      the *Viewer::generatePointerData(..) method to ensure that the
      highest Camera gets focus.




Sebastian Messerschmidt

unread,
Jan 16, 2015, 9:06:05 PM1/16/15
to OpenSceneGraph Users
Hi Robert,

would you expect problems with old osgTerrain databases (build with ~3.2.0, osgb format)?
I have some strange behaviour with a huge database, which simply not displayed anymore and somehow breaks state (See attached picture).
Also there is a warning coming from an optimzer I guess:

Warning: CollectLowestTransformsVisitor::removeTransforms() error, encountered a NULL Transform pointer

A second, much smaller database is sometimes displayed, but crashes the viewer sometimes.
Unfortunately my first email, containing a database didn't get through.

It is really hard to find the culprit.

Any hints?

I'll investigate the issue further ...

Cheers
Sebastian
_______________________________________________
osg-users mailing list
osg-...@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

screen1.png

Sebastian Messerschmidt

unread,
Jan 17, 2015, 5:49:28 AM1/17/15
to OpenSceneGraph Users
Hi Robert,

would you expect problems with old osgTerrain databases (build with ~3.2.0, osgb format)?
I have some strange behaviour with a huge database, which simply not displayed anymore and somehow breaks state (See attached picture).
Also there is a warning coming from an optimzer I guess:

Warning: CollectLowestTransformsVisitor::removeTransforms() error, encountered a NULL Transform pointer

A second, much smaller database is sometimes displayed, but crashes the viewer sometimes.
I've attached it, could you please try to load it?


It is really hard to find the culprit.

Any hints?

I'll investigate the issue further ...

Cheers
Sebastian
Hi All,
screen1.png
3D.7z

Sebastian Messerschmidt

unread,
Jan 19, 2015, 1:11:49 PM1/19/15
to OpenSceneGraph Users
Hi again,

I've identified one crash in the GLBufferObject::bindBuffer due to an uninitialized _extension member.
It seems, it gets destroyed somewhere in the middle. Unfortunately the GLExtensions object doesn't have a declared destructor, so chasing this down is harder than I thought.
I'll analyze futher.
Btw. I've already rebuild cleanly and used the HEAD for testing, but it seems the behaviour stays the same.

Cheers
Sebastian

Sebastian Messerschmidt

unread,
Jan 19, 2015, 1:48:39 PM1/19/15
to OpenSceneGraph Users
Hi Robert,

as already written, the problem is an invalidated _extensions object.
It seems to be invalidated by the State destructor, which causes the destructor of the GLExtensions object to be called. (I've got there using a memory breakpoint)
I've attached a callstack for analysis. (i've added a destructor for the GLExtensions for testing)

Cheers
Sebastian


<snip>
     osg116-osgd.dll!osg::Referenced::~Referenced()  Line 234    C++
     osg116-osgd.dll!osg::GLExtensions::~GLExtensions()  + 0x28 bytes    C++
     osg116-osgd.dll!osg::GLExtensions::`vector deleting destructor'()  + 0x7d bytes    C++
     osg116-osgd.dll!osg::Referenced::signalObserversAndDelete(bool signalDelete, bool doDelete)  Line 324 + 0x31 bytes    C++
     osg116-osgd.dll!osg::Referenced::unref()  Line 200    C++
     osg116-osgd.dll!osg::ref_ptr<osg::GLExtensions>::operator=(osg::GLExtensions * ptr)  Line 59    C++
     osg116-osgd.dll!osg::GLExtensions::Set(unsigned int contextID, osg::GLExtensions * extensions)  Line 429    C++
>    osg116-osgd.dll!osg::State::~State()  Line 136    C++
     osg116-osgUtild.dll!osg::State::`scalar deleting destructor'()  + 0x2d bytes    C++
     osg116-osgd.dll!osg::Referenced::signalObserversAndDelete(bool signalDelete, bool doDelete)  Line 324 + 0x31 bytes    C++
     osg116-osgd.dll!osg::Referenced::unref()  Line 200    C++
     osg116-osgUtild.dll!osg::ref_ptr<osg::State>::operator=(osg::State * ptr)  Line 59    C++
     osg116-osgUtild.dll!osg::RenderInfo::setState(osg::State * state)  Line 57 + 0x32 bytes    C++
     osg116-osgUtild.dll!osgUtil::SceneView::setState(osg::State * state)  Line 184 + 0x3b bytes    C++
     osg116-osgViewerd.dll!osgViewer::Renderer::updateSceneView(osgUtil::SceneView * sceneView)  Line 517    C++
     osg116-osgViewerd.dll!osgViewer::Renderer::cull()  Line 625    C++
     osg116-osgViewerd.dll!osgViewer::ViewerBase::renderingTraversals()  Line 826    C++
     osg116-osgViewerd.dll!osgViewer::ViewerBase::frame(double simulationTime)  Line 677    C++
     osg116-osgViewerd.dll!osgViewer::ViewerBase::run()  Line 647    C++
     osg116-osgViewerd.dll!osgViewer::Viewer::run()  Line 420    C++
     RenderTest_d.exe!main(int argc, char * * argv)  Line 66 + 0xb bytes    C++
     RenderTest_d.exe!__tmainCRTStartup()  Line 555 + 0x19 bytes    C
     RenderTest_d.exe!mainCRTStartup()  Line 371    C
</snip>

Robert Osfield

unread,
Jan 19, 2015, 4:28:05 PM1/19/15
to OpenSceneGraph Users
Hi Sebastian,

I haven't had chance to try and reproduce the bug yet.  The description sounds like there an initialization order issue with the osg::State.  In theory the osg::State object now does the initalization, and the osg::GraphicsContext on the first makeCurrent() should ensure that it's set up correctly, in theory this should be the first set of OpenGL calls made.

What is application you are testing within? What is the platform?

Robert.

Sebastian Messerschmidt

unread,
Jan 19, 2015, 4:42:33 PM1/19/15
to OpenSceneGraph Users

Am 19.01.2015 21:27, schrieb Robert Osfield:
Hi Sebastian,

I haven't had chance to try and reproduce the bug yet.  The description sounds like there an initialization order issue with the osg::State.  In theory the osg::State object now does the initalization, and the osg::GraphicsContext on the first makeCurrent() should ensure that it's set up correctly, in theory this should be the first set of OpenGL calls made.

What is application you are testing within? What is the platform?
Windows 7, VisualStudio 2010.
It is crashing in a minimal application as well as using osgviewer.
Have you tried to use my minimal database? It reproduces the crash when loading it with the osgviewer and stiring around with the mouse a bit. (Also take a look at the attached picture: It shows a messed up State)
I was able to fix the crash by removing the GLExentsions::Set(contextId,0) in the State destructor. But this seems plain wrong. I suspect on my platform, the State is cleared and reinitialized for some reason.
When I can spent some time on this, I can try to create a minimal example. Just out of curiosity:  Is there any reason for the State to remove the extensions for the ContextID? I suspect there is only one State per Context, which seems ok, but I cannot grasp, why it is released in my scenario.

Also I had problems after the fix loading other databases; It seems the range lists in paging are invalid. It randomly displays the wrong tiles with wrong facing. I'll try to hunt this down too.
Any suggestions how to narrow down the problem on my side?

Cheers
Sebastian

Robert Osfield

unread,
Jan 20, 2015, 3:47:01 AM1/20/15
to OpenSceneGraph Users
Hi Sebastian,

On 19 January 2015 at 21:42, Sebastian Messerschmidt <sebastian.m...@gmx.de> wrote:
Windows 7, VisualStudio 2010.
It is crashing in a minimal application as well as using osgviewer.

Thanks for the additional details.

Have you tried to use my minimal database?

Haven't tried yet, will try this morning once I've got through my email and admin work.
 
It reproduces the crash when loading it with the osgviewer and stiring around with the mouse a bit. (Also take a look at the attached picture: It shows a messed up State)
I was able to fix the crash by removing the GLExentsions::Set(contextId,0) in the State destructor. But this seems plain wrong. I suspect on my platform, the State is cleared and reinitialized for some reason.
When I can spent some time on this, I can try to create a minimal example. Just out of curiosity:  Is there any reason for the State to remove the extensions for the ContextID? I suspect there is only one State per Context, which seems ok, but I cannot grasp, why it is released in my scenario.

The design is meant to have the osg::State created by an osg::GraphicsContext and managed through the lifetime of that GraphicsContext.  One shouldn't in theory be creating osg::State or destroying osg::State outside of this context usage.

Something somewhere is obviously trying to do it's own thing w.r.t osg::State, right now I don't know where this might be.

 

Also I had problems after the fix loading other databases; It seems the range lists in paging are invalid. It randomly displays the wrong tiles with wrong facing. I'll try to hunt this down too.
Any suggestions how to narrow down the problem on my side?

What do you mean by range lists?  You'll need to send me a screen shot.

Robert.


Sebastian Messerschmidt

unread,
Jan 20, 2015, 5:22:51 AM1/20/15
to OpenSceneGraph Users
Am 20.01.2015 um 09:46 schrieb Robert Osfield:
Hi Sebastian,

On 19 January 2015 at 21:42, Sebastian Messerschmidt <sebastian.m...@gmx.de> wrote:
Windows 7, VisualStudio 2010.
It is crashing in a minimal application as well as using osgviewer.

Thanks for the additional details.

Have you tried to use my minimal database?

Haven't tried yet, will try this morning once I've got through my email and admin work.
 
It reproduces the crash when loading it with the osgviewer and stiring around with the mouse a bit. (Also take a look at the attached picture: It shows a messed up State)
I was able to fix the crash by removing the GLExentsions::Set(contextId,0) in the State destructor. But this seems plain wrong. I suspect on my platform, the State is cleared and reinitialized for some reason.
When I can spent some time on this, I can try to create a minimal example. Just out of curiosity:  Is there any reason for the State to remove the extensions for the ContextID? I suspect there is only one State per Context, which seems ok, but I cannot grasp, why it is released in my scenario.

The design is meant to have the osg::State created by an osg::GraphicsContext and managed through the lifetime of that GraphicsContext.  One shouldn't in theory be creating osg::State or destroying osg::State outside of this context usage.
Okay, so maybe in the GraphicsWindow implementation for Windows is broken. I'll try to investigate into this direction.

Something somewhere is obviously trying to do it's own thing w.r.t osg::State, right now I don't know where this might be.

 

Also I had problems after the fix loading other databases; It seems the range lists in paging are invalid. It randomly displays the wrong tiles with wrong facing. I'll try to hunt this down too.
Any suggestions how to narrow down the problem on my side?

What do you mean by range lists?  You'll need to send me a screen shot.
I've attached the screenshots. It happens with the formerly attached database.
Doing cross testing, it works fine with a osg111 version (I don't have the osgversion with this deploy, so it is hard to tell you which version this is exactly).




Robert.


t3.jpg
t2.jpg
t1.jpg

Robert Osfield

unread,
Jan 20, 2015, 6:28:04 AM1/20/15
to OpenSceneGraph Users
Hi Sebastian,

On 20 January 2015 at 10:41, Robert Osfield <robert....@gmail.com> wrote:

I will now focus on why the stats is causing a crash as it's something I can reliably recreate and get a stack trace from.  Fixing this might address or reveal what other things are going amiss.

The issue with the crash at my end look to be related to the SceneView constructing it's own osg::State that is then replaced by the one that the GraphicsWindow creates, but the destructor in the osg::State was always resetting the GLExtensions::Set() back to zero regardless of whether this osg::State was just a tempory one or not.

I have have add a check into the osg::State destructor to avoid calling GLExtensions::Set() if the local State::_glExtensions pointer is NULL.  This fixes the crash and is now checked into svn/trunk.  I'm still get bad font for the stats though, and the tiles still appear inappropriately in your dataset.  Will keep investigating.

Robert.
 

Sebastian Messerschmidt

unread,
Jan 20, 2015, 6:33:12 AM1/20/15
to OpenSceneGraph Users
Ok. Good that you can reproduce it.
If I can provide any details/additional test results, let me know.

Robert Osfield

unread,
Jan 20, 2015, 8:49:20 AM1/20/15
to OpenSceneGraph Users
Hi Sebastian,

I have now been able to reproduce the odd behaviour with the svn/trunk version of the OSG and your data. 

OSG-3.2.2 mostly works fine, I only have to rotate the viewer camera around to see the tiles appear and then the LOD's all work fine, it does however cause problems with the font of the stats when I bring them up.  I do however the the "Warning: CollectLowestTransformsVisitor::removeTransforms() error, encountered a NULL Transform pointer" with OSG-3.2.2 as well.

When I try to use the stats on svn/trunk with this test model I get the messy fonts or decent fonts and a crash.  The odd render looks it might be related to cluster culling - with the times appear when viewing from the back face of the tile when it should actually be culled.  At this stage of the investigation I really don't know if all these issues are related.

For my other paged I've been working with during the dev of the displacement mapping functionality I haven't seen any problems with the visualization of database or stats.  However, if I use the old GeometryTechnique when rendering the same database if I try to enable stats I get a crash.  This is rather odd difference but it's consistent.  I haven't had a chance to look at the stats issue yet as my primary focus has been fleshing out the displacement mapping functionality.

There is chance that all these issue are connected, there is also a chance that changes to the serializers has introduced a binary incompatibility with the .osgb format that is causing some of these problems.  I simple don't have any answer yet though.

I will now focus on why the stats is causing a crash as it's something I can reliably recreate and get a stack trace from.  Fixing this might address or reveal what other things are going amiss.

Robert.

Robert Osfield

unread,
Jan 20, 2015, 11:36:06 AM1/20/15
to OpenSceneGraph Users
Hi Jamie,

Could you try svn/trunk to see if the fix I checked in today address this crash?

Thanks,
Robert.

On 20 January 2015 at 16:30, jamie robertson <jamiero...@hotmail.com> wrote:
Hi,

If it's of any help I've observed pretty much the same thing, when using the old geometrytechnique (win 7 VS2010). I've tried with .osgb and .ive vpb generated terrain databases.

With a singlethreaded viewer it seems to work although crashes when opening the stats.

With a multithreaded viewer though I consistently get a crash in osg::State during the first frame.

Cheers

Jamie


Code:
osg115-osgd.dll!osg::State::bindVertexBufferObject(osg::GLBufferObject * vbo)  Line 516 C++
osg115-osgd.dll!osg::State::setVertexPointer(const osg::Array * array)  Line 666        C++
osg115-osgd.dll!osg::Geometry::drawVertexArraysImplementation(osg::RenderInfo & renderInfo)  Line 789   C++
osg115-osgd.dll!osg::Geometry::drawImplementation(osg::RenderInfo & renderInfo)  Line 741       C++
osg115-osgd.dll!osg::Drawable::draw(osg::RenderInfo & renderInfo)  Line 582 + 0x16 bytes        C++
osg115-osgUtild.dll!osgUtil::RenderLeaf::render(osg::RenderInfo & renderInfo, osgUtil::RenderLeaf * previous)  Line 81 + 0x19 bytes     C++
osg115-osgUtild.dll!osgUtil::RenderBin::drawImplementation(osg::RenderInfo & renderInfo, osgUtil::RenderLeaf * & previous)  Line 487 + 0x19 bytes       C++
osg115-osgUtild.dll!osgUtil::RenderStage::drawImplementation(osg::RenderInfo & renderInfo, osgUtil::RenderLeaf * & previous)  Line 1402 C++
osg115-osgUtild.dll!osgUtil::RenderBin::draw(osg::RenderInfo & renderInfo, osgUtil::RenderLeaf * & previous)  Line 430 + 0x17 bytes     C++
osg115-osgUtild.dll!osgUtil::RenderStage::drawInner(osg::RenderInfo & renderInfo, osgUtil::RenderLeaf * & previous, bool & doCopyTexture)  Line 933     C++
osg115-osgUtild.dll!osgUtil::RenderStage::draw(osg::RenderInfo & renderInfo, osgUtil::RenderLeaf * & previous)  Line 1241 + 0x1b bytes  C++
osg115-osgUtild.dll!osgUtil::SceneView::draw()  Line 1379 + 0x37 bytes  C++
osg115-osgViewerd.dll!osgViewer::Renderer::draw()  Line 750 + 0xf bytes C++
osg115-osgViewerd.dll!osgViewer::Renderer::operator()(osg::GraphicsContext * __formal)  Line 910 + 0xf bytes    C++
osg115-osgd.dll!osg::GraphicsContext::runOperations()  Line 771 + 0x33 bytes    C++
osg115-osgd.dll!osg::RunOperations::operator()(osg::GraphicsContext * context)  Line 137 + 0xf bytes    C++
osg115-osgd.dll!osg::GraphicsOperation::operator()(osg::Object * object)  Line 53 + 0x19 bytes  C++
osg115-osgd.dll!osg::OperationThread::run()  Line 431 + 0x26 bytes      C++
osg115-osgd.dll!osg::GraphicsThread::run()  Line 41     C++
ot20-OpenThreadsd.dll!OpenThreads::ThreadPrivateActions::StartThread(void * data)  Line 113 + 0xf bytes C++
msvcr100d.dll!_callthreadstartex()  Line 314 + 0xf bytes        C
msvcr100d.dll!_threadstartex(void * ptd)  Line 297      C
kernel32.dll!76e4338a()



------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=62397#62397

Robert Osfield

unread,
Jan 20, 2015, 1:38:31 PM1/20/15
to OpenSceneGraph Users
Hi Sebastien,

Is there any chance you could rebuild the database so that the .osgb files it writes a from svn/trunk.  This might help us determine whether it's a binary format change that is at the core of the problem with viewing your model.

Cheers,
Robert.

Sebastian Messerschmidt

unread,
Jan 21, 2015, 5:21:35 PM1/21/15
to OpenSceneGraph Users
Hi Robert,

Attached is a link[1] to the database build with the current trunk of OSG and VPB.
It works as intended with the trunk osgviewer.
However, I think I just found the next issue :-(
I cannot use vpbmaster anymore for compiling. It gets stuck after adding all tasks (I've waited a fair amout of time) . I didn't find an indication why the tasks are not starting (no osgdem process is started).
So the presented database is structured differently, as it was build using osgdem soley.

[1] https://drive.google.com/file/d/0Bz3BDTPpY5sxekZhd1ZMU2VSYkU/view?usp=sharing


Cheers
Sebastian

Sebastian Messerschmidt

unread,
Jan 28, 2015, 4:29:51 AM1/28/15
to OpenSceneGraph Users
Hi Robert,

Did you have a chance to look into this?

Robert Osfield

unread,
Jan 28, 2015, 4:32:59 AM1/28/15
to OpenSceneGraph Users
On 28 January 2015 at 09:29, Sebastian Messerschmidt <sebastian.m...@gmx.de> wrote:
Hi Robert,

Did you have a chance to look into this?

Sorry not yet. 

Currently wrapping my head around controlling shaders in a more compatible way to old fixed function pipeline.

Robert.
 

Sebastian Messerschmidt

unread,
Jan 29, 2015, 2:23:53 AM1/29/15
to OpenSceneGraph Users
Okay.

If you are doing any work on the ShaderComposition, please spent 5 minutes on this, as this is a relatively small change to enable user defined composition schemes:

<snip>
Great. I've been doing something like this by modifying the ShaderComposition (as proposed by you) and injection defines at start of the composed shader.
It still seems to be a clutch, so I'm looking forward to your ideas. If you want to, I'm totally happy to share my insights.
I had some request to review it some months ago, but you where into some other stuff at this time, so it might have ended up below the radar. (The topic was "[osg-users] ShaderComposer and some missing features")
</snip>

In my derived ShaderComposer I ended up in having a bunch of defines and an include system composing the shaders. The defines are like "techniques" where you enable bumpmapping/HDR or whatever you like. The shader composition will then create the combinations as needed and inject the code and includes. (which usually hold utility functions or define the technique-specific functionality).


Cheers
Sebastian

Sebastian Messerschmidt

unread,
Feb 26, 2015, 5:08:20 AM2/26/15
to OpenSceneGraph Users
Hi Robert,

with osgb/t serialization problems solved, are there any plans to adress the osgTerrain-Issues regarding the state-problem/missing tiles?

Cheers
Sebastian

Robert Osfield

unread,
Feb 26, 2015, 6:29:25 AM2/26/15
to OpenSceneGraph Users
Hi Sebastian,

On 26 February 2015 at 10:08, Sebastian Messerschmidt <sebastian.m...@gmx.de> wrote:
with osgb/t serialization problems solved, are there any plans to adress the osgTerrain-Issues regarding the state-problem/missing tiles?

The database 3D.7z you posted works fine for me with svn/trunk.  The only oddity is I get a warning:


Warning: CollectLowestTransformsVisitor::removeTransforms() error, encountered a NULL Transform pointer

I don't know the cause of this, but could easily be an issue with the source data.  Rebuilding the database from source data is something worth doing now that various fixes have been checked into VirtualPlanetBuilder.

Basically I need a clear way to recreate problems.

Robert.

Sebastian Messerschmidt

unread,
Feb 26, 2015, 6:53:50 AM2/26/15
to OpenSceneGraph Users
But you had the issues with strange missing tiles too, right? (see the email from the January 20th.
Recompiling would be my total last Option, as it would take a week or more.


Basically I need a clear way to recreate problems.
I've sent you some compiled database [1] for checking, but you were busy with shader composition.

https://drive.google.com/file/d/0Bz3BDTPpY5sxekZhd1ZMU2VSYkU/edit

Also the first database sent (opening this thread) will be totally messed. (culling goes crazy and sometimes stats display will be garbage).
I know it would be totally better to recompile the databases, but I cannot do this with any minor release unfortunately, since it it simply takes a lot of resources.

Cheers
Sebastian

Robert Osfield

unread,
Feb 26, 2015, 8:23:16 AM2/26/15
to OpenSceneGraph Users
Hi Sebastian,

On 26 February 2015 at 11:53, Sebastian Messerschmidt <sebastian.m...@gmx.de> wrote:
But you had the issues with strange missing tiles too, right? (see the email from the January 20th.

With svn/trunk I don't see any issues with the 3D.z database, just the warning about NULL Transforms that was present in OSG-3.2.2 as well.

Have you tried latest svn/trunk?

 
Recompiling would be my total last Option, as it would take a week or more.

Are talking about your database or your checkout of the OSG.

 



Basically I need a clear way to recreate problems.
I've sent you some compiled database [1] for checking, but you were busy with shader composition.

https://drive.google.com/file/d/0Bz3BDTPpY5sxekZhd1ZMU2VSYkU/edit

Also the first database sent (opening this thread) will be totally messed. (culling goes crazy and sometimes stats display will be garbage).
I know it would be totally better to recompile the databases, but I cannot do this with any minor release unfortunately, since it it simply takes a lot of resources.

Well I've done what I can, various bugs have been fixed along the way.  The database you've provided is working as far as I can tell.

It's really now up to you to test at your end.  Recompiling the OSG should not take "a lot of resources".  I recompiled the fresh builds of the OSG under Windows and Linux this morning is prep for OSG-3.3.4, it didn't take me a week.

Robert.
 

Sebastian Messerschmidt

unread,
Feb 26, 2015, 8:54:06 AM2/26/15
to OpenSceneGraph Users
Am 26.02.2015 um 14:23 schrieb Robert Osfield:
Hi Sebastian,

On 26 February 2015 at 11:53, Sebastian Messerschmidt <sebastian.m...@gmx.de> wrote:
But you had the issues with strange missing tiles too, right? (see the email from the January 20th.

With svn/trunk I don't see any issues with the 3D.z database, just the warning about NULL Transforms that was present in OSG-3.2.2 as well.

Have you tried latest svn/trunk?
Yes, this one works fine with the trunk.


 
Recompiling would be my total last Option, as it would take a week or more.

Are talking about your database or your checkout of the OSG.
I'm talking about my big database (In the scale of half a terrabyte), not about OSG. I understood you meant recompiling/rebuilding the database.

 



Basically I need a clear way to recreate problems.
I've sent you some compiled database [1] for checking, but you were busy with shader composition.

https://drive.google.com/file/d/0Bz3BDTPpY5sxekZhd1ZMU2VSYkU/edit

Also the first database sent (opening this thread) will be totally messed. (culling goes crazy and sometimes stats display will be garbage).
I know it would be totally better to recompile the databases, but I cannot do this with any minor release unfortunately, since it it simply takes a lot of resources.

Well I've done what I can, various bugs have been fixed along the way.  The database you've provided is working as far as I can tell.

It's really now up to you to test at your end.  Recompiling the OSG should not take "a lot of resources".  I recompiled the fresh builds of the OSG under Windows and Linux this morning is prep for OSG-3.3.4, it didn't take me a week.
I'm not talking recompiling OSG. I'm referring to the re-attached database from the start of this thread, which is a downscaled version of my huge database, and shows problems with culling and somehow cripples the stats-viewer.
They worked for quite a while and got broken with the new 3.3.3/4 trunks.
Sorry, if there is some misunderstanding of some kind. I tryed to debug what is going on but I'm simply clueless and I somehow would expect the attached database to still work.
t3.jpg
screen1.png
3D.7z

Robert Osfield

unread,
Feb 26, 2015, 9:38:48 AM2/26/15
to OpenSceneGraph Users
Hi Sebastian,

On 26 February 2015 at 13:38, Sebastian Messerschmidt <sebastian.m...@gmx.de> wrote:
'm not talking recompiling OSG. I'm referring to the re-attached database from the start of this thread, which is a downscaled version of my huge database, and shows problems with culling and somehow cripples the stats-viewer.

Argg.. Why on earth would you keep naming different archives the same name.  How on earth I am supposed to know what is what?

 

They worked for quite a while and got broken with the new 3.3.3/4 trunks.
Sorry, if there is some misunderstanding of some kind. I tryed to debug what is going on but I'm simply clueless and I somehow would expect the attached database to still work.

This variant doesn't work on my system.  I have no clue when it's different.  I can't say whether it's a bug in the database generation, in .osgb parsing or rendering.

I quite literally can't keep afford to chasing this stuff up with so little to go on.

Robert.
 

Sebastian Messerschmidt

unread,
Feb 26, 2015, 9:48:23 AM2/26/15
to OpenSceneGraph Users
It worked with older osg-versions, so database generation can be rules out. It stopped working with the 3.3.3 developer release.

I quite literally can't keep afford to chasing this stuff up with so little to go on.
It is visible only from the back-side, so stirring around with the mouse will display it. The information is in the thread, so I can only try to resummarize, what is going on.
Any idea what might got broken on the way? With all due respect, and I have a lot for your work, I don't think that unintentional incompatibilities regarding the format can be tolerated.
In retrospective you encouraged me and others to try the trunk, and there we are ... I found a couple of bugs and tried to give as much detail and context as possible here - and also I offered to do whatever needed t chase down the bug.
I do understand, that you cannot spend your time on chasing arbitrary bugs, with no samples, context etc. provided, but please try to see it from my point of view: Things got broken, and I don't know how to fix them.

Robert Osfield

unread,
Feb 26, 2015, 11:10:38 AM2/26/15
to OpenSceneGraph Users
Hi Sebastian,

On 26 February 2015 at 14:48, Sebastian Messerschmidt <sebastian.m...@gmx.de> wrote:
It worked with older osg-versions, so database generation can be rules out. It stopped working with the 3.3.3 developer release.

If bugs existed in the original database format that have been addressed in new versions, but don't have a workaround for these old buggy datasets then one certainly can't rule out database generation being a problem.

This is why I've asked about generating database from scratch.
 so little to go on.
It is visible only from the back-side, so stirring around with the mouse will display it. The information is in the thread, so I can only try to resummarize, what is going on.
Any idea what might got broken on the way?

No.
 
With all due respect, and I have a lot for your work, I don't think that unintentional incompatibilities regarding the format can be tolerated.

While I'd love to see the OSG bug free there is limit on what I can do to fix bugs that I don't have enough to work on to fix.
 
In retrospective you encouraged me and others to try the trunk, and there we are ... I found a couple of bugs and tried to give as much detail and context as possible here - and also I offered to do whatever needed t chase down the bug.
I do understand, that you cannot spend your time on chasing arbitrary bugs, with no samples, context etc. provided, but please try to see it from my point of view: Things got broken, and I don't know how to fix them.

FYI, none of the hours I have worked this month have been paid for.  I just working away here for free trying to get OSG the best shape I can.  But like everyone else I have bills to pay.

So please understand when I push back it's because I *really* can't afford to keep chasing things without anything solid to work with.

Robert.



 
 

 

Robert Osfield

unread,
Mar 3, 2015, 10:06:26 AM3/3/15
to OpenSceneGraph Users
Hi Stephan,

I have return to the issue of the visualization problems with the database you provided.  Eventually was able to isolate the problem to the binary parsing of the ClusterCullingCallback which in the end was fixable by just adding a osg::Callback entry into the ClusterCullingCallback serializers associates list, as this is now required as the NodeCallback no longer takes responsibility for the NestedCallback serialization, this is now move to osg::Callback.

The "Warning: CollectLowestTransformsVisitor::removeTransforms() error, encountered a NULL Transform pointer" looks to be an erroneous error, as the case it occurs perfectly benign - so I've addressed it by removing this reporting code.

Could you please update to svn/trunk and let me know if these problem have been resolved.

I will now wrap up the next dev release (3.3.4) in prep for 3.4 stable release.  Testing is really important now as we are just weeks away from a stable release.

Robert.

Sebastian Messerschmidt

unread,
Mar 3, 2015, 12:09:17 PM3/3/15
to OpenSceneGraph Users
Hi Robert,
Hi Stephan,
You don't seem to like my name ;-)
The fix works great! All older VPB-databases are running smoothly again, saving us weeks of compilation. Where can I donate? :-)


Robert.
Cheers
Sebastian

Robert Osfield

unread,
Mar 3, 2015, 12:36:13 PM3/3/15
to OpenSceneGraph Users
HI Sebastian,

On 3 March 2015 at 17:09, Sebastian Messerschmidt <sebastian.m...@gmx.de> wrote:
Hi Robert,
Hi Stephan,
You don't seem to like my name ;-)

Sorry about that, too many hours coding of late.
 
The fix works great! All older VPB-databases are running smoothly again, saving us weeks of compilation. Where can I donate? :-)

Blood or organ donation? ;-)

Robert.
 

 
Reply all
Reply to author
Forward
0 new messages