Hi All, First up, many thanks to all to those who've contributed to the OSG since 2.5.2 and those help test the SVN version/get it into a serviceable state after so many build sensitive changes. Now things have calmed down it feels like a good time put out the 2.5.3 dev release, you can grab it from:
http://www.openscenegraph.org/projects/osg/wiki/Downloads/DeveloperReleases Details are: * OpenSceneGraph-2.5.3, released on 29th June 2008. OpenSceneGraph-2.5.3 introduces atomic reference counting via new OpenThreads::Atomic and AtomicPtr classes, new autogenerated include/OpenThreads/Config and include/osg/Config files that source their settings from user editable CMake build options - these new files make it easier for 3rd party applications build against the same options as the OpenSceneGraph itself was compiled with. Also introduced are improvements to the CompositeViewer::addView/removeView() to fix texture issues and crashes that occured when adding views to existing viewers, support for X11's override redirect functionality, bundles support under OSX when using CMake (OSX build now requires CMake 2.6), new osg::MixinVector which avoids inheritance from std::vector<> in PrimitiveSet and Array class, solving a potential memory leak due to std::vector<> lack of a virtual destructor, a new osgUtil::Optimizer::FlattenStaticTransformsDuplicatingSharedSubgraphsVisitor that duplicates any subgraphs that have different transforms as parents, and a new control StateSet::setNestedRenderBin(bool) which allows users to control whether the associated RenderBin should be nested within the parents RenderBin, or placed in the enclosing RenderStage. Finally various bug and build fixes. source package : OpenSceneGraph-2.5.3.zip svn tag: svn co http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.5.3 OpenSceneGraph Cheers, Robert. -- ChangeLog since between 2.5.2 and 2.5.3 2008-06-26 19:21 +0000 [r8502] robert: * Updated wrappers 2008-06-26 18:34 +0000 [r8501] robert: * From Paul Martz, "The method IntersectionVisitor::apply(osg::PagedLOD&) appears to attempt to identify a "highest res" child of the PagedLOD and only allow intersection on that child. The implementation appears to be flawed in two cases: 1) The "highest res" child is assumed to be the child with index "getNumFileNames()-1" or "getNumChildren()-1". As a result, PagedLODs that do not sort children from furthest to nearest will intersect with the wrong child. (see attached "case1.osg" to reproduce this problem.) 2) The code assumes there is only one highest res child. As a result. PagedLODs with multiple children at the same highest res range can only intersect one of those children. ("case2.osg" demonstrates this issue; you can only pick the quad on the right.) I've attached a modified IntersectionVisitor.cpp that attempts to resolve these issues. It identifies a highest res range based on the range mode, then continues traversal on all valid children corresponding to that range description. Only in the case of a malformed PagedLOD does the code fall back to getting the last child in the list. " 2008-06-26 18:06 +0000 [r8500] robert: * From Morten Haukness, "When cloning effects osg crashes because the copy constructur tries to run av pure virtual method (setUpEmitterAndProgram). The right thing to do when cloning an effect is to run the inherited version og buildEffect and setUpEmitterAndProgram. " 2008-06-26 16:45 +0000 [r8499] robert: * Changed the removeCamera() method so that it now actively calls releaseGLObjects() on all children of a camera that aren't shared with other cameras on that context. This change fixes problems with allocating and deleting views. 2008-06-26 15:06 +0000 [r8498] robert: * From Mathias Froehlich, updated CMakeLists.txt to build the Atomic.cpp 2008-06-26 13:09 +0000 [r8496-8497] robert: * From Eric Sokolowski, added enforcement of CMake 2.6.0 under OSX. * From Eric Sokolowski, Cmake support for osgviewerCocoa 2008-06-26 12:08 +0000 [r8495] robert: * From Mathias Froehlich, build fixes for various unices 2008-06-26 10:33 +0000 [r8494] robert: * From Mathias Froehlich, added do not edit comments to Config.in so that the autogenerated Config files have an appropriate warning notice 2008-06-26 10:27 +0000 [r8493] robert: * From Mathias Froechlich, "Attached is a change to that atomic stuff to move the win32, msvc implementation of the atomic increment and decrement into a implementation file. This way inlining and compiler optimization can no longer happen for these implementations, but it fixes compilation on win32 msvc targets. I expect that this is still faster than with with mutexes. Also the i386 gcc target gets atomic operations with this patch. By using an implementation file we can guarantee that we have the right compiler flags available." 2008-06-23 15:11 +0000 [r8491] robert: * Fixed pedantic warning 2008-06-23 14:51 +0000 [r8490] robert: * From Mathias Froehlich, "fixed win32/win64 configure check and win32/win64 atomic related compile failures with msvs2005. Attached changes to make win32 really use the atomic stuff. There are pointer typecast problems and some historic alignment restrictions that I just took from a previous similar implementation of mine without looking deep enough. " 2008-06-23 11:14 +0000 [r8489] robert: * From Mathieu Marache, "Suibject: CMakeList ADD_DEFINITION for CMAKE_DEBUG_POSTFIX broken I needed a -DCMAKE_DEBUG_POSTFIX="d" not a -D"CMAKE_DEBUG_POSTFIX=d". This corrects the build for the CMake 2.4 and 2.6 series The error was in compiling osgDB/Registry.cpp " 2008-06-23 10:18 +0000 [r8488] robert: * Commented out the explict install of the Config files as including these files into the header list allows the normal Cmake install support to install them. 2008-06-23 09:57 +0000 [r8487] robert: * From Eric Sokolowsky, "I have made a number of changes intended to get a few things working better on OSX. However, since I'm still pretty new at Mac development and cmake I'm not entirely certain that the changes I have made are benign on other platforms. I have tested these changes on Leopard with CMake 2.6 generating Xcode 3.0 projects, compiling on ppc and i386 for 10.5 and 10.4, and on Linux (CentOS) and everything still seems to work ok. Here are the changes I made (against OSG svn as of this afternoon): - Added osgviewerCocoa example to APPLE builds - Fixed corrupt Xcode project generation with CMake 2.6 dealing with ADD_DEFINITIONS and CMake Policy CMP0005 on Leopard - Resolved CMP0006 warning for examples and programs by setting BUNDLE DESTINATION to same as RUNTIME DESTINATION with CMake 2.6 - Fixed freetype plugin on Leopard to avoid OpenGL linking problem - Figured out how to use a custom Info.plist included in the project (see osgviewerCocoa application CMakeLists.txt)" 2008-06-23 08:06 +0000 [r8486] shuber: * From Stephan Huber: added missing config files and updated xcode-project 2008-06-21 17:56 +0000 [r8485] robert: * Quietened down debug info 2008-06-21 17:50 +0000 [r8484] robert: * Added support for X11's overrideRedirect functionality 2008-06-21 11:34 +0000 [r8483] robert: * Converted tabs to four spaces 2008-06-20 19:52 +0000 [r8481-8482] robert: * Changed the include/osg/Config and include/OpenThreads/Config references to use the assocaited CMake variable for these headers * Updated ChangeLog 2008-06-20 17:32 +0000 [r8480] robert: * From Terry Welsh, added missing MixinVector header 2008-06-20 16:57 +0000 [r8479] robert: * Added OSG_WINDOWING_SYSTEM cmake option string to allow toggling between X11 and Carbon under OSX. 2008-06-20 15:50 +0000 [r8476-8477] robert: * From Mathias Froehlich, moved optional config variables into include/osg/Config file that is automatically created by cmake according to its own settings. * Updated ChangeLog 2008-06-20 15:28 +0000 [r8475] robert: * Changed const double* to const Matrix::value_type* to ensure changes in Matrix type don't break the build 2008-06-20 13:16 +0000 [r8474] robert: * From Terry Welsh, new flatten static transforms visitor that duplicates subgraphs that are shared beneath differnt static transforms From Robert Osfield, made a range of changes to Terry's visitor integrating it into osgUtil::Optimizer and changing the code to use a style more like the rest of the OSG. 2008-06-20 11:16 +0000 [r8473] robert: * From Mathias Froehlich, made the include of bin directory for include/OpenThreads/Config only used when doing out of source builds 2008-06-20 11:11 +0000 [r8472] robert: * Updated version numbers for dev releases 2008-06-20 10:46 +0000 [r8471] robert: * From Mathias Froehlich, "Fixes a compile of src/osgSim/ShapeAttribute.cpp on suse 10.2." 2008-06-20 09:46 +0000 [r8470] robert: * From Melchior Franz, fixed typo on variable name 2008-06-20 09:42 +0000 [r8469] robert: * From Mathias Froehlich, add search path to enable out of source builds to find include/OpenThreads/Config. 2008-06-19 20:42 +0000 [r8468] robert: * Updated wrappers 2008-06-19 20:38 +0000 [r8467] robert: * From Neil Groves, "I have taken the liberty of updating a few files so that there is no longer any derivation from std::vector. I have done this by adding a new file osg/MixinVector and by updating only two others: osg/PrimitiveSet and osg/Array. You will notice that this actually removes what is acknowledged as a \u2018hack\u2019 in osg/PrimitiveSet. With the original code I did manage to find memory leaks with some compiler options on VC 8 and 9, as well as Intel compiler. I determined the leak existence by instrumenting the destructor code, and by use of a garbage collector as a leak detector (in a similar manner to the Firefox project). Hence in contrast to what I said originally, it is exhibiting symptoms on at least some platforms. Since I am trying to be a good OSG citizen I got out my editor and started hacking! I have built and tested on Linux (Ubuntu) with GCC 4.x and Windows VC 8 SP1. It appears that nothing is broken, and that I\u2019m using less memory J" 2008-06-19 17:35 +0000 [r8466] robert: * From Mathieu Marache, "submission for inclusion to support mpg and avi files when using the quicktime plugin on windows" 2008-06-19 17:30 +0000 [r8465] robert: * From Mathias Froehlich, added support for using OpenThreads::Atomic for thread safe ref/unref. 2008-06-19 14:57 +0000 [r8464] robert: * from Andrew Bettison, LineStipple support for .ive 2008-06-19 14:45 +0000 [r8463] robert: * From Adrian Egli, "Improvements to the PSSM implementation" 2008-06-19 14:35 +0000 [r8462] robert: * From Rudolf Weidemann, "in the OpenFlight format materials can have editable names. In the OSG OpenFlight plugin these names are ignored when reading, and empty strings are written. As we need these names in the OSG scene graph by our application, I changed the plugin code, so the names are now stored in class "osg::Material" (derived from "osg::Object") by material->setName(); (see "PaletteRecords.cpp, line 195) when reading the file, and written to file by dos.writeString( m.Material->getName(), 12 ); (see MaterialPaletteManager.cpp, line 80). As these names otherwise get lost when reading an OpenFlight file and writing it again e.g. by osgconv example.flt converted_example.flt these changes make the plugin more complete. The changes were made to OSG revision 8425, and were tested by osgconv example.flt converted_example.flt comparing the material palettes of both files inside Multigen Creator." 2008-06-19 14:29 +0000 [r8461] robert: * From Farshid Lashkari, "I noticed some problems when setting up CameraNodes that inherit viewport settings in stereo mode. It seems that the SceneView::cull() method will pass the full size viewport to the left/right cullvisitors, instead of the modified stereo viewport. I made quite a few changes to SceneView to fix the issue. The SceneView::cullStage() method will now receive the viewport as an argument, instead of using the global viewport. The SceneView::cull() method will pass the modifed viewport to cullStage when rendering in stereo. There are 2 new private methods computeLeftEyeViewport() and computeRightEyeViewport() that will compute the stereo viewports. I also modified the draw() function so it applies the correct viewport to the prerender stages. These changes are only necessary for horizontal/vertical split stereo." 2008-06-19 14:14 +0000 [r8460] robert: * From Andrew Bettison, "Attached are changes for src/osgPlugins/ive (version 2.4.0) that implement LineStipple read/write support for the ive file format." 2008-06-19 13:49 +0000 [r8459] robert: * From Paul Melis, "Here is a reworked version of the osgviewerWX example. It changes the GraphicsWindowWX to only inherit from osgViewer::GraphicsWindow and adds a standalone widget, called OSGCanvas, that derives from wxGLCanvas. This solves a problem with the GraphicsWindowWX instance being destructed twice (see "Crash in osgviewerWX" of June 12th on osg-users). At program exit, the main frame deletes all of its children widgets and therefore calls GraphicsWindowWX's destructor, bypassing OSG's reference counting. The GraphicsWindowWX instance is then later destructed a second time when the reference held by osg::Camera goes to zero. This bug isn't exposed by the example directly, but if people are going to use the example as a basis (like the poster in the mentioned thread) they very likely will run into this problem. " 2008-06-19 13:28 +0000 [r8458] robert: * Updated wrappers to fix OpenThreads::Atomic build issues. 2008-06-19 12:02 +0000 [r8457] robert: * From Michael Platings, fixed typo error in renderbin assignment 2008-06-19 11:58 +0000 [r8456] robert: * In Program::PerContextProgram changed const Uniform* to osg::ref_ptr<const Uniform*> to avoid the possibility of a uniform being deleted and another being created and assigned at the same address which previously confused the uniform tracking code and introduced a bug. 2008-06-19 11:09 +0000 [r8455] robert: * From Michael Platings and Robert Osfield, added support for controlling, via StateSet::setNestedRenderBin(bool) whether the new RenderBin should be nested with the existing RenderBin, or be nested with the enclosing RenderStage. 2008-06-18 20:27 +0000 [r8453-8454] robert: * Updated wrappers * From Michael Platings, implemented check against max number of supported samples to ensure that the number of samples is safely capped to what the hardware is capable of, avoiding GL errors and graceful fallback 2008-06-18 20:17 +0000 [r8452] robert: * From Liang Aibin: "1. Location: <OSG_SOURCE_ROOT>\src\osgPlugins\osg\Fog.cpp Reason: ".osg" writter plugins output incorrected string for osg::Fog's Mode. How to Fix: Line 138 in Fog.cpp: case(Fog::LINEAR): return "NERVER"; Change to: case(Fog::LINEAR): return "LINEAR"; 2. Location: <OSG_SOURCE_ROOT>\src\osgPlugins\ive\ Reason: ".ive" writter plugins missing to process "osg::Fog". How to Fix: (1). Line 86 in ReadWrite.h: Add: #define IVEFOG 0x00001133 (2). In CMakeLists.txt "SET(TARGET_SRC" section Add: Fog.cpp "SET(TARGET_H" section Add: Fog.h (3). In DataInputStream.cpp Line 54,Add: #include "Fog.h" Line 1185,Add: else if(attributeID == IVEFOG){ attribute = new osg::Fog(); ((ive::Fog*)(attribute))->read(this); } (4). In DataOutputStream.cpp Line 57,Add: #include "Fog.h" Line 832,Add: // This is a Fog else if(dynamic_cast<const osg::Fog*>(attribute)){ ((ive::Fog*)(attribute))->write(this); } (5). Add newly created ive::Fog Object in Fog.h and Fog.cpp. " 2008-06-18 16:46 +0000 [r8450-8451] robert: * Updated wrappers * Added a wrapString(const char*) which automatically handles null strings. 2008-06-18 16:28 +0000 [r8449] robert: * Convert string handling to use strdup and free rather then awkward new char[] code paths 2008-06-18 14:21 +0000 [r8448] robert: * Added --fbo-samples value and --color-samples value command line paramters for enabling fbo multisampling 2008-06-18 14:09 +0000 [r8447] robert: * From Michael Platings and Paul Palumbo, multi-sample FBO support 2008-06-18 12:01 +0000 [r8446] robert: * From Jean-Sebastien Guay, "When copying a node that had uniforms on it, the copy constructor of osg::Uniform would not copy the array of the original uniform (either _intArray or _floatArray) because none had been allocated and the copy constructor checks that *both* this's array and rhs's array are valid. I added a call to allocateDataArray() if rhs has (at least) one valid array, which should allocate the right array according to the type. Since the type was copied from rhs, it should create the same array as rhs has, so then it should copy the data in the following lines. " 2008-06-18 11:56 +0000 [r8445] robert: * From Bob Kuehne, "added multi-texture support (alpha/trans images)" 2008-06-18 11:51 +0000 [r8444] robert: * Updated wrappers 2008-06-18 11:13 +0000 [r8443] robert: * From Bob Kuehne, "this submission extends the osgViewer::RecordCameraPathHandler to have an optionally-enabled auto-incrementing filename. default behavior is still the same, but there's one new method to enable autoincrementing filenames." From Robert Osfield, modified the above so that the number increments come after the filename rather than before. 2008-06-18 10:51 +0000 [r8442] robert: * From Gino van den Bergen, "Added support for vrml primitive caching" 2008-06-18 10:46 +0000 [r8441] robert: * From David Callu, "fixed bounding box bug" 2008-06-17 17:43 +0000 [r8440] robert: * From Mathias Froehlich, OpenThreads::Atomic support 2008-06-16 20:22 +0000 [r8439] robert: * Added overriding of CullSettings::inheritCullSettings() into osg::Camera to properly inherit the clear colour. 2008-06-16 16:06 +0000 [r8438] robert: * Changed class to struct 2008-06-16 13:20 +0000 [r8437] robert: * Added mutex to serialize access to the trpager 2008-06-16 09:32 +0000 [r8436] robert: * Checking in missing header changes 2008-06-12 16:33 +0000 [r8434] robert: * Refactored the management of the request queues so that the appropraite mutex is locked when DatabaseRequest objects are modified _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

