Permalink
Switch branches/tags
OpenSceneGraph_1_2_release_revision_2 OpenSceneGraph_1_2_release_revision_1 OpenSceneGraph_1_1_release_revision_1 OpenSceneGraph_1_0_0_release_revision_1 OpenSceneGraph_0_9_9_release_revision_1 OpenSceneGraph_0_9_8_release_revision_2 OpenSceneGraph_0_9_8_release_revision_1 OpenSceneGraph_0_9_7_release_revision_2 OpenSceneGraph_0_9_7_release_revision_1 OpenSceneGraph-3.5.9 OpenSceneGraph-3.5.8 OpenSceneGraph-3.5.7 OpenSceneGraph-3.5.6 OpenSceneGraph-3.5.5 OpenSceneGraph-3.5.4 OpenSceneGraph-3.5.3 OpenSceneGraph-3.5.2 OpenSceneGraph-3.5.1 OpenSceneGraph-3.5.0 OpenSceneGraph-3.4.1 OpenSceneGraph-3.4.1-rc3 OpenSceneGraph-3.4.1-rc2 OpenSceneGraph-3.4.1-rc1 OpenSceneGraph-3.4.0 OpenSceneGraph-3.4.0-rc11 OpenSceneGraph-3.4.0-rc10 OpenSceneGraph-3.4.0-rc9 OpenSceneGraph-3.4.0-rc8 OpenSceneGraph-3.4.0-rc7 OpenSceneGraph-3.4.0-rc6 OpenSceneGraph-3.4.0-rc5 OpenSceneGraph-3.4.0-rc4 OpenSceneGraph-3.4.0-rc3 OpenSceneGraph-3.4.0-rc2 OpenSceneGraph-3.4.0-rc1 OpenSceneGraph-3.3.9 OpenSceneGraph-3.3.8 OpenSceneGraph-3.3.7 OpenSceneGraph-3.3.6 OpenSceneGraph-3.3.5 OpenSceneGraph-3.3.4 OpenSceneGraph-3.3.3 OpenSceneGraph-3.3.2 OpenSceneGraph-3.3.1 OpenSceneGraph-3.3.0 OpenSceneGraph-3.2.3 OpenSceneGraph-3.2.2 OpenSceneGraph-3.2.2-rc3 OpenSceneGraph-3.2.2-rc2 OpenSceneGraph-3.2.2-rc1 OpenSceneGraph-3.2.1 OpenSceneGraph-3.2.1-rc7 OpenSceneGraph-3.2.1-rc6 OpenSceneGraph-3.2.1-rc5 OpenSceneGraph-3.2.1-rc4 OpenSceneGraph-3.2.1-rc3 OpenSceneGraph-3.2.1-rc2 OpenSceneGraph-3.2.1-rc1 OpenSceneGraph-3.2.0 OpenSceneGraph-3.2.0-rc4 OpenSceneGraph-3.2.0-rc3 OpenSceneGraph-3.2.0-rc2 OpenSceneGraph-3.2.0-rc1 OpenSceneGraph-3.1.10 OpenSceneGraph-3.1.9 OpenSceneGraph-3.1.8 OpenSceneGraph-3.1.7 OpenSceneGraph-3.1.6 OpenSceneGraph-3.1.5 OpenSceneGraph-3.1.4 OpenSceneGraph-3.1.2 OpenSceneGraph-3.1.1 OpenSceneGraph-3.1.0 OpenSceneGraph-3.0.1 OpenSceneGraph-3.0.1-rc3 OpenSceneGraph-3.0.1-rc2 OpenSceneGraph-3.0.1-rc1 OpenSceneGraph-3.0.0 OpenSceneGraph-3.0.0-rc7 OpenSceneGraph-3.0.0-rc6 OpenSceneGraph-3.0.0-rc5 OpenSceneGraph-3.0.0-rc4 OpenSceneGraph-3.0.0-rc3 OpenSceneGraph-3.0.0-rc2 OpenSceneGraph-3.0.0-rc1 OpenSceneGraph-2.9.16 OpenSceneGraph-2.9.15 OpenSceneGraph-2.9.14 OpenSceneGraph-2.9.13 OpenSceneGraph-2.9.12 OpenSceneGraph-2.9.11 OpenSceneGraph-2.9.10 OpenSceneGraph-2.9.9 OpenSceneGraph-2.9.8 OpenSceneGraph-2.9.7 OpenSceneGraph-2.9.6 OpenSceneGraph-2.9.5 OpenSceneGraph-2.9.4 OpenSceneGraph-2.9.3 OpenSceneGraph-2.9.2
Nothing to show
Commits on Mar 13, 2009
  1. Updated ChangeLog

    robertosfield committed Mar 13, 2009
  2. Warning fixes

    robertosfield committed Mar 13, 2009
  3. From Bryan Thrall, "The attached ReaderWriterGLSL.cpp conveniently se…

    robertosfield committed Mar 13, 2009
    …ts the shader type when
    
    the filename extension is "vert" or "frag" but still lets this be
    overridden by the Options (for those crazy people who store their
    fragment shaders in .vert files :) )."
Commits on Mar 12, 2009
  1. From Frank Midgley, "I tried running osgconv --formats yesterday on O…

    robertosfield committed Mar 12, 2009
    …S X and got no results. Turns out the changes discussed in the "osgDB::listAllAvailablePlugins win32 fix" thread back in Sep '08 broke this. The OSG_PLUGIN_EXTENSION macro is being defined in src/osgDB/CMakeLists.txt from CMAKE_SHARED_LIBRARY_SUFFIX which is "dylib" on OS X. The problem is that all of the plug-ins are setup in OsgMacroUtils.cmake with:
    
           ADD_LIBRARY(${TARGET_TARGETNAME} MODULE ${TARGET_SRC} ${TARGET_H})
    
    which gives them .so extensions.  Since ".so" != ".dylib" osgDB::listAllAvailablePlugins finds no plug-ins.  I believe the correct solution is to use CMAKE_SHARED_MODULE_SUFFIX instead.  This builds and runs correctly on OS X but I have not tested on other platforms.
    
    Attached is an updated src/osgDB/CMakeLists.txt based on rev 9915.  The change is at line 108.  To validate: build and then run bin/osgconv --formats.  You should get many screenfuls of plug-in features, extensions and options."
  2. From Konstantin Sinitsyn, "At this moment, I just introducing to OSG.…

    robertosfield committed Mar 12, 2009
    … When I reviewing optimizer code, I find a mistake in Optimizer::RemoveLoadedProxyNodesVisitor, as it seems. This optimizer removes proxy nodes that fully loaded and in some cases attach their childs to parrents directly (without creating of group). I dont understand how this works, because if proxy node doesn't have any attributes such as name, description, node mask and any callbacks, then new group does not created to hold proxy node childs. And code below trying to attach their children to all parents but seems like only first child beeing attached to all parents correctly.
    
    "
  3. Introduced a releaseAllOperation after completeion of OperationThread…

    robertosfield committed Mar 12, 2009
    …::run() to enable CUDA integration (in osgCuda) to be able to free up its resources. Code drawn from a submission from Mick.
  4. Updated wrappers

    robertosfield committed Mar 12, 2009
  5. Moved IncrementalCompileOperation out of include-src/osgUtil/GLObject…

    robertosfield committed Mar 12, 2009
    …Visitor into their own files.
    
    Added support to IncrementCompileOperation for controlling how much time is alloted to compilation and flush
  6. Added support for tracking the time since the last clear() call to en…

    robertosfield committed Mar 12, 2009
    …able other
    
    classes to be able to find out how long the current graphics frame has been running.
  7. From Michael Platings, "I've been looking at the discussion from 2006…

    robertosfield committed Mar 12, 2009
    … ("[osg-users] osgDB/Reentrant Mutex not threadsafe ?") about this, and having looked closely at OpenThreads::ReentrantMutex it's still not thread safe in the following situation:
    
     
    In my example case, there are 2 threads - one is a worker thread created by OpenThreads::Thread. The other thread is the main thread i.e. the thread that is intrinsically created when you execute the application. The crucial problem is that for the main thread, OpenThreads::Thread::CurrentThread() will return null.
     
    I'll demonstrate this by breaking ReentrantMutex::lock() into sub-statements:
     
    1.) if (_threadHoldingMutex==OpenThreads::Thread::CurrentThread())
     
    2.) if (_lockCount>0){
     
    3.)
    OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_lockCountMutex);
    ++_lockCount;
    return 0;
     
    4.)
    int result = Mutex::lock();
    if (result==0)
    {
    OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_lockCountMutex);
     
    5.)
    _threadHoldingMutex = OpenThreads::Thread::CurrentThread();
    _lockCount = 1;
    return result;
     
     
    An error will occur in the following case:
    1) The worker thread calls lock(), it gets to the start of statement 5.
    2) The main thread calls lock(). Statement 1 is evaluated as true as _threadHoldingMutex is null, and OpenThreads::Thread::CurrentThread() returns null.
    3) The worker thread executes statement 5.
    4) The main thread executes statement 2 and evaluates it as true, because the worker thread has set _lockCount to 1. The main thread executes statement 3, and now can access the mutexed-data at the same time as the worker thread!
     
    The simple solution to this is to always protect access to _lockCount and _threadHoldingMutex using _lockCountMutex. I have done this in the file I am submitting."
Commits on Mar 11, 2009
  1. Changed audio playing so that it only happens for a single movie to a…

    robertosfield committed Mar 11, 2009
    …void
    
    problems with audio stalling.
  2. Added handling of Image::isImageTranslucent(), when it is enabling bl…

    robertosfield committed Mar 11, 2009
    …ending.
    
    Added handling of Image::getPixelAspectRatio() in geometry sizing.
    Added scaling of the projection matrix to ensure that aspect ratio is honoured with running in fullscreen mode
  3. From Tanguy Fautre,

    robertosfield committed Mar 11, 2009
    Clean up of the FFmpeg plugin's class API/AudioStream API. 
    Implementation of isImageTransparent().
    Implementation of Image:g/setPixelAspectRatio()
  4. Added View::removeEventHandler(..) method and added check into addEve…

    robertosfield committed Mar 11, 2009
    …ntHandler() to prevent handlers being added twice.
  5. From Philip Lowman, "At a cost of bumping the required version to CMa…

    robertosfield committed Mar 11, 2009
    …ke 2.4.4 (released all the way back on November 21, 2006)... this cmake script patch
    
    1. Makes IF/ELSE/ENDIF code blocks easier to read by replacing code like this:
    
    IF(FOO)
       MESSAGE("FOO is true")
    ELSE(FOO)
      MESSAGE(" ??? ELSE(FOO)??? ")
    ENDIF(FOO)
    
    with this:
    
    IF(FOO)
       MESSAGE("FOO is true")
    ELSE()
      MESSAGE("FOO is clearly false")
    ENDIF()
    
    2. Also adds an ELSEIF() where it makes sense to do so (safe to use as of CMake 2.4.4)"
  6. From Neil Hughes, "I've spent the past four days playing with PNG fil…

    robertosfield committed Mar 11, 2009
    …es on 3DS objects, and I think I may have come across a small issue with the 3DS loader.
    
    At the company where I work we model literally thousands of 3DS models for all types of objects. Most don't have transparent textures applied to them, but a few do. The issue is that a texture may have an alpha channel defined, yet its 3DS material definition is not marked as being an alpha source, or transparent. This can happen for any number of modelling reasons (so I'm told) but the net effect is that when a 3DS object is loaded with such a material applied, the stateset creation for the 3DS geometry omits to add the GL_BLEND attribute as neither of the conditions that it currently tests for are satisfied under this scenario.
    
    However, one thing that is apparently an indication of transparency/alpha information that we do make use of when modelling, but that the 3DS reader omits to test, is that we assign to the transparent texture to the opacity_map of the 3DS material structure.
    
    Now, having discussed with our modellers the theory behind the opacity map, it seems that it is safe to say that if an opacity map is specified, then the reader should really apply the GL_BLEND attribute as it is an indication of some form of blending being required between materials.
    
    With this in mind, I have made a minor change to the function createStateSet below, from the ReaderWriter3DS.cpp file, that checks for an opacity map having been specified, and in such a scenario the GL_BLEND attribute is applied to the geometry. This fixed our issue, and thought it might be helpful to others."
  7. From Mathias Froehlich, "small addition to osg::Texture to include al…

    robertosfield committed Mar 11, 2009
    …l possible depth test variants for
    
    the shadow depth comparison."
  8. From Stephan Huber, files were are missed by Robert in check in of ch…

    robertosfield committed Mar 11, 2009
    …anges to GraphicsWindowCarbon.cpp
  9. From Lionel Lagarde, "the attachment contains a correction of the Opt…

    robertosfield committed Mar 11, 2009
    …imizer::MergeGeometryVisitor.
    
    When 2 geometries are merged, the primitive sets of the second geometry
    are copied to the first geometry.
    
    The primitive sets were copied with a std::insert into the first geometry
    primitive set vector. It doesn't work when the geometry is using VBOs (because
    the element buffer object of the primitive set is not updated).
    
    The correction replaces
    
    lhs.getPrimitiveSetList().insert( lhs.getPrimitiveSetList().end(),
                                    rhs.getPrimitiveSetList().begin(),
                                    rhs.getPrimitiveSetList().end() );
    
    by
     for( primItr=rhs.getPrimitiveSetList().begin();
       primItr!=rhs.getPrimitiveSetList().end();
       ++primItr )
    {
      lhs.addPrimitiveSet(primItr->get());
    }"
  10. Fixed crash due to Geometry::copyToAndOptimize(..) not handling cases…

    robertosfield committed Mar 11, 2009
    … where indices are present, but no arrays are assocaited with them.
  11. From David Callu, "osgManipulator Object have not META_Object macro c…

    robertosfield committed Mar 11, 2009
    …all in class definition.
    
    > I add META_OSGMANIPULATOR_Object macro which define className, libraryName,
    > isSameKindAs methods.
    > Clone method is not appropriate for osgManipulator Object."
  12. From Lionel Lagarde, "The copy constructor of the nodes and the drawa…

    robertosfield committed Mar 11, 2009
    …bles do :
    
    Node::Node(Node &node, copyop) :
      _stateSet(copyop(node.getStateSet()),
    
    It doesn't call the setStateSet method of osg::Node (or osg::Drawable). So the parent
    list of the state set is not updated with the new node (drawable)."
  13. From Martin Beckett, added get/setScrollWheelZoomDelta() support for …

    robertosfield committed Mar 11, 2009
    …controlling the mouse scroll wheel zoom delta.
  14. From Stephan Huber, "refactored the code and moved

    robertosfield committed Mar 11, 2009
    some stuff out into DarwinUtils.h/.mm so both implementations can share
    some of the code. There's even a bugfix for GraphicsWindowCarbon, which
    fixes some issues with multiple windows on different screens."
Commits on Mar 10, 2009
  1. From Mathias Froehlich, "an other topic pointed out by some Microsoft…

    robertosfield committed Mar 10, 2009
    … verification tool:
    
    On destruction of some static variables, the global referenced mutex is used
    to lock access to the parent lists of state attributes, nodes and so on.
    This even happens past the mutex is already destroyed.
    
    This change to Referenced.cpp revision 9851 uses the same technique like the
    DeleteHandlerPointer already in Referenced.cpp to return an zero pointer for
    the global referenced lock if it is already destroyed."
  2. From Konstantin Matveyev, submitted by Valery Bickov:

    robertosfield committed Mar 10, 2009
    "There is error in WoW shader, you can see it by this simple example:
    osgviewer cessna.osg --wowvx-42 --clear-color 0,0,0
    
    Clear color may be choosed any with at least one component equals to 0
    or 1. In my case I see weird blinking between normal image and image
    with depth map at right side on the screen."
  3. From Martin Beckett, "Modified osgGA::TrackballManipulator so that os…

    robertosfield committed Mar 10, 2009
    …gGA::GUIEventAdapter::SCROLL performs a zoom.
    
    Arbitrarily zooms 10% in/out for each click."
    
    Note from Robert Osfield, flipped the orienation of the zoom to make the right mouse key zoom and the scroll wheel work in the same direction.
  4. Completed support for automatic detection of plugin features.

    robertosfield committed Mar 10, 2009
    Cleaned up debug out of various plugins to ensure a clean osgconv --formats.
  5. Made bool isImageTranslucent() const virtual to allow subclasses to p…

    robertosfield committed Mar 10, 2009
    …rovide their own implementation