From 7a0c31cb3bdcfdbed48e5b01c75d4a236a14439c Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 25 Apr 2002 10:10:04 +0000 Subject: [PATCH] Removed these old files that do little in the context of the current OpenSceneGraph disitribution apart from clogs things up! --- ChangeLog.preCVS | 2207 ---------------------------------------------- FAQ | 340 ------- TODO | 169 ---- 3 files changed, 2716 deletions(-) delete mode 100644 ChangeLog.preCVS delete mode 100644 FAQ delete mode 100644 TODO diff --git a/ChangeLog.preCVS b/ChangeLog.preCVS deleted file mode 100644 index 9a447cc39..000000000 --- a/ChangeLog.preCVS +++ /dev/null @@ -1,2207 +0,0 @@ -Pre CVS OSG Change log -====================== - -21th September 2001 - osg-20010921.tar.gz - - o Fixed compilation problem under Windows due to ctime being included - in the osg::Timer header file. The ctime refrence has been replaced - by time.h. Also fixed typo in osgGLUT/Viewer.cpp which was causing - compilation problems. - o Made the new osg::Matrix::translate/scale/rotate static method inline - to help improve peformance. - o Fixed bugs in osg::Matrix::preMult and postMult. - - -19th September 2001 - osg-20010919.tar.gz - - o Cleaned up the implementation of the osg::Timer class so it is easy - to read and maintain, and have added support for gettimeofday under - unix OS's where no other realtime timer is available, if this isn't - available either than - o Added FrameStamp class which encapsulates the frame number, - reference time and the calander time that a frame in schedualed. - o Fixed a couple of bugs & integrated further fixes from Paul Fredrikson, - to the new Matrix implemention, double checked results against the old - matrix class and am now getting consistent results. For this dev - version onwards the new Matrix class simply replaces the old one. The - new Matrix class contains old style methods to keep things compiling, - however these are deprecated and will be removed, probably by the next - full release. Check the header file for deprecated methods. You can - also comment in the #define WARN_DEPRECATED at the top of Matrix.cpp - and this will produce console warnings. - o From Don Burns - fixes to src/osgPlugins/osg/GeoSet.cpp adding in - an iterator increment to the code for outputing interleaved arrays, - previously the code entered an .osg writing inifite loop for this - data type. - o Have added #ifndef WIN32 around the call to the new OptimizeStateVisitor - which was added to sgv to prevent its use automatically under Windows - - thus avoiding the windows crash due to the MSVC++ buggy SLL implementation. - -14th September 2001 - osg-20010914.tar.gz - - o Added osgUtil::StateOptimizeVisitor which traversing the scene - graph and builds up a map of all StateAttributes and StateSets - and then removes the duplicates. This promotes state sharing - throughout the scene graph which inturn can significantly improve - performance thanks to reduced state changing. Particularily - effective on datasets where a great deal of duplicated state exists. - Even on already optimized datasets such as Performer town up - o Added pure virtual compare(const osg::StateAttribute&) - method to osg::StateAttribute, and implemented it in all the - subclasses from StateAttribute. Added <,== & != operator - on StateAttribute and Matrix to support new StateOptimizeVisitor. - o Added META_Object, META_Node and META_StateAttribute macros to - Object, Node and StateAttribute respectively which define the - standard pure virtual methods such as clone, className - & isSameKindAs. Changed all the appropriate header files to - use these macro's rather define them in each header, these cleans - up the headers considerably. - o Corrected the implementation of osg::Light::getType so it correctly - uses a unique type for each of the OpenGL lights (GL_LIGHT0.. - GL_LIGHT7 relates to osg::StateAttriburte::LIGHT_0..LIGHT_7. - o Changed the definition of osg::StateStateAttribute::Type to - is now a unsigned int rather than an enum, and have changed the - name of the previous Type enum list to be Types. This makes it - more consistent with the difination of values found in StateAttribute - and also easier to extend with having to cast to an enum. - o From Pail Fredrikson, updated Maitrx.new implemention which uses - the same matrix orientation as the original Matrix implemention. - -11th September 2001 - osg-20010911.tar.gz - - o From Paul Fredrikson - added new proposed Matrix implemention, its - been added in as Matrix.new and Matrix.cpp.new, the old Matrix - implemetion has been moved to Matrix.old and Matrix.cpp.old, and - new Matrix and Matrix.cpp directs compilation to Matrix.new if - USE_NEW_MATRIX is defined, otherwise defaults to Matrix.old. Once - a new implementation is settled and thoroughly tested then the - old one will be completely replaced by the new one. - o Added osg::NodeVisitor::s/getTraversalNumber(..) and s/getReferenceTime(..) - to better support syncronization of different traversals of the scene - graph and support osgcluster syncornization through the traversal number - and refernce time. - o Added osg::NodeVisitor::s/getTraversalMask(..), s/getNodeMaskOverride(..) - and validNodeMask(..) and modified all osg::Node's and its - subclass' ::accept(NodeVisitor) methods to check NodeVisitor:: - validNodeMask(..) and only call the NodeVisitor::apply(..) if it - returns true. This extra functionality allows users to switch on/off - nodes and their subgraph using a Node::s/getNodeMask() and since - a bit mask is used this can be done selectively for different - traversals, by using diffent bits for a traversal type (i.e app/cull). - o Added reuse of AlphaFunc and TexEnv objects between ImpostorSprites - into osg::ImpostorSpriteManager. - o Added osgcluster demo (can be found in src/Demos/osgcluster/), this - demo demonstrates a simple implmentation of keeping camera in sync - between entirely seperate apps running on different machines, and - what you get is multi-channel graphics cluster! osgcluster uses - UDP packets to keep the camera position in sync between other - osgcluster viewers running on other machines in the local area - network. - o Changes to osg::Camera - added osg::Camera::setFOV(), osg::Camera:: - s/getAdjustAspectRatioMode(), and osg::Camera::adjustAspectRatio(), - and renamed AdjustAxis enumerate AdjectAspectRatioMode. - o Updates to osg::NodeCallback and osgUtil::AppVisitor. - - -24th August 2001 - osg-20010824.tar.gz - - o Changed the impostor viewport so it is centered in the middle of - main viewport instead of the bottom left hand corner. The later - was causing problems with the windowing decoration was obscuring - the backbuffer drawing and texture read. - o Changed the default resolution to 800x600 for osgGLUT::Viewer and - osg::Viewer so that the demos appear ok on very small screens such - as laptops. - o Three items added for support of app traversal callbacks. - - added osg::NodeCallback for use as an app callback on osg::Node's - which is called by an app visitor. - - added osg::Node::setAppCallback()/getAppCallback(). - - added osgUtil::AppVisitor and made it default AppVisitor on SceneView. - note: new files are include/osg/NodeCallback, - include/osgUtil/AppVisitor and src/osgUtil/AppVisitor.cpp. - o Changed osgreflect and osgcube demos so they use an app callback, - instead of its own app visitor/glutTimerCallback repsectively. - o Changed the texture object type from osg::uint to GLunit in osg::Texture - to solved comptability problems under MacOS. - o Fixed spelling mistake of Minimum which occured several times - in include/osgUtil/VisualsRequirementsVisitor. - o Removed Lighting.cpp as it is nolonger used in any Makefiles, - and is only laying around due to not be removed earlier. - o From Bryan Woods - updated Metrowerks files for the MacOS port. - -22nd August 2001 - osg-20010822.tar.gz - - o Removed osg::StateSet::getAttributeVector() and getModeVector() - since they were simply hacks around MSVC++ bugs which are both - fixed by using STLport under windows, along with other bugs reported - under Windows. Its is now recommended that Windows users adopt - STLport instead of the MSVC++ one since the later is just plain flakey. - o From Ben Discoe - fixed typo of a bookmark in index.html - o Added osg::Viewport for encapsulating glViewport and for passing around - viewport object between various osg classes. Also helps avoid some - portability issues which have arisen over OpenGl types under MacOS. - o From Bryan Woods - updated Metrowerks files for the MacOS port. - -9th August 2001 - osg-0.8.42.tar.gz - - o Toned down the specular light values set by default in osgUtil::SceneView:: - setDefaults from 0.8 to .1, this reduces the effect of scaling of - normals on lighting - which was causing a bad flikering affect on - models contains scaling. This points to a need to automatically - scale the normals, but more on this in a future release. - o Removed WXFLAGS from Make/makedefs.* since it is nolonger required. - o From Randall Hopper - fixed compliations problems under IRIX on flt plugin. - o Fixed bugs in osg::Camera::calc_fovx() and calc_fovy() which causing - them to return incorrect values. - o Added code to osgimpostor demo to insert an Impostor above models - which don't have an osg::Group at their root. - o Fixed bug in osgUtil::VisualsRequirementsVisitor so that by default the - alpha and stencil buffers are not required. - o Added reporting of visuals requested in osgGLUT::Viewer::open(), accessible - only as INFO, so doesn't get reported by default. To see the reporting - set the environmental variable OSGNOTIFYLEVEL INFO - - 8th August 2001 - osg-20010808.tar.gz - - o Made the new flt loader the standard flt loader for the release, - deleted the old one. - o From Brede Johansen - fix to material sharing in new flt loader. - - new default values for the light source in - SceneView::setDefaults. - o From Randall Hopper - fixes to osgWX and wxsgv. - - 7th August 2001 - osg-20010807.tar.gz - - o Updated version numbers to reflect the imminent 0.8.42 release. - o Fixes to osg::Camera::calc_fovx() and calc_fovy() which were incorrectly - takening into account zNear in calculation of field of view. - o From Randall Hopper - fixes to warnings under IRIX in the .dw plugin. - o From Randall Hopper/Robert Osfield - fixes for the unix Makefile and - source files in src/Demos/wxsgv demo. - o From Karsten Weiss - bug fixes to osg::Group::removeChild and replaceChild. - - 6th August 2001 - osg-20010806.tar.gz - - o From Ben Discoe - integated osgWX library and Demos wxsgv viewer, which - demonstrates osg integration with wxWindows!!! - note, Unix Makefiles have not been tested yet, and the - the MS projects are not linked up by default. - o From Ben Discoe - fixed a misleading typo in src/osgUtil/Registry.cpp. - - added a guard into SceneView::draw() to prevent - a crash when no scene data is attached to the - scene view and the draw method is called. - o Fixed waning in osg::CullingVolume::operator = (..) related to a missing - return *this; - o Renamed osgUtil::BufferRequirementsVisitor to - osgUtil::VisualsRequirmentsVisitor to make it more in keeping with the - setting up of OpenGL 'visuals', and changed the apply(StateSet&) - method to applyStateSet(StateSet&) to prevent warnings under IRIX. - o Converted src/osgPlugin/newflt/Makefile from dos style text into unix - style text. - - 5th August 2001 - osg-20010805.tar.gz - - o Fixed culling bug related to having osg::Transform within the - scene graph which scale dramatically - the bug was in osg::Plane - which didn't renormalize the plane equation after transformation. - Renormalization is required for the isCulled(BoundingSphere&,..) - method. - o From Geoff Michel - primitive and depth complextity statistics added - to osgUtil::RenderBin/RenderStage and osgGLUT::Viewer. New class - osgUtil::Statistics records no of primitive etc per frame. - o Fixed bug in osgUtil::CullVisitor::pushCullViewState(..) where - the up vector was being incorrectly transformed, resulting in - sporadic impostor orientations. - o From Randall Hooper - fixes to CullVisitor to solve inappropriate warnings - which occured when the near and far values were calculated with the - range numerically rounding errors. Also fix to osg::Matrix::transform3x3 - which was implementated incorrectly. - o From Brede Johansen - - integrated update flt loader which will allow it - to handle old Open Flight file versions. - - also Integrated a small patch to osgPlugins/flt/flt2osg.cpp from - Judd Tracy w.r.t converting ConvertFromFLT::visitDOF(..) to use - osg::Transform instead or osg::Group. I have added a comment - to this method as it still isn't complete, and will need the - osg::Transform's matrix to be set up to refelct the DOFRecord. - - Testing with Berkleys dataset revealled that the new flt loader was - creating one triangle per geoset which causes a massive loss in performance, - I've look for an obvious cause for this, but don't understand the code - enough to track it down. I have reverted to the old flt (0.8.41) plugin - and moved the new flt plugin to src/osgPlugins/newflt. I will make it - the default once the problem has been fixed. RO. - o Added osg::Matrix::set(const float* ) implemention to src/osg/Matrix.cpp. - o Fixed typos of "spshere","albiet","overiden" & "completly" in include/osg. - - -25th July 2001 - osg-0.8.41 - - o Replaced osg::Camera::setModelTransform(..) with more flexible - osg::Camera::attachTransform(TransformMode,Matrix*) which allows - for setting of both a EYE_TO_MODEL or MODEL_TO_EYE transforms. - osg::Camera::getTransform(TransformMode) and dirtyTransform() - has also been added, the later to allow the Camera to know about - external modifications to attach transforms. - o Updated NEWS file. - o Removed second entry for png plugin from src/osgPlugins/Makefile. - - 24th July 2001 - osg-20010724.tar.gz - - o Updated the INSTALL file to include mention of make install and - make help. - o Fixed two bugs in the osg::Impostor implementation, the first related - to the handling of empty impostors, the second was the handling of - impostors composed of depth sorted bins. - - 23rd July 2001 - osg-20010723.tar.gz - - o Bumped version numbers up to 0.8.41 in preperation for the release. - o Fixed a bug in src/osgPlugin/pfb's conversion of Performer texture - filter modes into osg, the mag filter was being set with a invalid - enumerant. The bug resolved itself as OpenGL errors being reported - to the console on loading some .pfb files. - o Added osgUtil::RenderStageLighting to encapsulate the lighting - of the osgUtil::RenderStage, and to allow sharing of lighting - between RenderStages, such when using pre-rendering stages. - o Added osg::Drawable::s/getSupportDisplayList() which can be used - to prevent display lists from being used on specified drawables. - Typical use would be to protect dynamic drawables such as continous - level of details drawables from being encapsulated with a display - list. Attempts to turn on display lists on such a drawable will - now results in a warning, and will have no affect on the drawable. - o Added osgUtil::BufferRequirementsVisitor to traverse a scene graph - establishing the OpenGL buffers required to support rendering of - that scene graph. The results can then be used by applications to - set up there windows with the corret visuals. Modified osgGLUT:: - Viewer::open() to use the new visitor and set up the buffers - accordingly. The calls to gluInitDisplayString in the demos are - now redundent and have been removed. - - 21th July 2001 - osg-20010721.tar.gz - - o Added support for depth sorting of impostor sprites into - osgUtil::CullVisitor and added public methods to osg::CullVisitor - to allow the switching on or off or impostor depth sorting, and - the turning on or off of impostors. - o Added demo osgviews to demostrate multiple views of single scene, - not currently functional, will fix later. - o From Randall Hopper - support for multiple viewports in osgGLUT::Viewer. - o From Geoff Mitchel - new OpenGL based stats reporting added to - osgGLUT::Viewer. Similar in style to Performer's perfly stats. - o Fixed the osg::Camera::home() method so its sets to the OpenGL - defaults position of looking down the z axis, with the upvector - along the +ve y axis. - o Fixed a warning in osg::State. - - 18th July 2001 - osg-20010718.tar.gz - - o Further improvements to the osg::Impostor implementation, various - bugs have been fixed and out of date ImpostorSprite's can now be - reused via an osg::ImpostorSpriteManager, which is stored in the - osgUtil::CullVisitor. - o Added an osgUtil::InsertImpostorsVisitor which traverses the - scene graph inserting osg::Impostor nodes above osg::Group's - (and its subclasses such osg::Transform) and converts osg::LOD - nodes into osg::Impostor nodes. The demo osgimpostor has been - modified to use the new InsertImpostorsVisitor. - - 13th July 2001 - osg-20010713.tar.gz - - o Various improvements to the osg::Imposter implementation, now includes - pixel error calculation which will work for both perspective and - othographic projections. The Impostor doesn't currently support - texture reuse, but the much of the code to support is implemented, - yet have to tie up the loose ends for the next release now. - o Fixes to osg::Texture::copyTexSubImage2D to ensure that _mag_filter - was set to LINEAR, to ensure that mipmaps arn't used. - o Fixed Visual C++ workspace file for .dw plugin, to ensure under - debug build it correctly links to glu library. - - 12th July 2001 - osg-20010712.tar.gz - - o Added src/Demo/osgimpostor to demonstrate how to use the new osg::Imppostor - node and to test the impostor implementation. - o Implemented first cut of osg::Impostor, ImpostorSprite, - and RenderToTextureStage. Implemention not complete, and bugs exists - which prevent the textured quad appearing with its texture?! - o Fixed osg::Camera::zNear()/zFar() methods which returning the wrong values. - o Updated AUTHORS file. - o From Geoff Mitchel, .dw (design workshop) loader plugin. - o Fixed coordinate transformation in osgPlugins/obj - Alias Wave OBJ loader. - o Fixed minor unsigned to signed comparision warning in osg::Texture. - - 1st July 2001 - osg-20010701.tar.gz - - o Rewritten osg::Camera class to support Otho, Frustum and Perspective - projection modes. Significant API changes have been made, the new - Camera implementation is not backwards compatible. - o Added osg::ClippingVolume to represent a convex clipping volume. - o Added osg::Plane class to support view frustum clipping and other operations - requiring plane operations. - o Made corrections to osgtexture usage details. - o From Ulrich Hertlein - fixes to osg::Texture to prevent bind of textures - to NULL image data and added missing #include to - osgUtil::IntersectVistor. - o Removed the erroneous inline keyword from infront of - osg::StateSet::setRenderBinToInherit(..) which was causing compilation - errors under IRIX. - o Fixed file permission problems in include/osg/Object, and osgDB. - o Fixed a bug in osgGlut::Viewer where view frustum culling and small - feature culling could be toggled off, - o Fixed a bug in osg::Quat::makeRot(Vec3,Vec3) where the angle - calculated was incorrectly calculated. Also added a couple of - set methods and made the constructors inline. - o Added osg::Drawable::dirtyBound() which should be called when geometry - is updated. Note it does not dirty geodes above - this will have to be - done by caller. - - June 26th osg-20010626.tar.gz - - o Several changes related to making the NewCullVisitor now the - standard CullVisitor, since it now has greater functionalility, - performance and more robust than the previous incarnation of - CullVistor. - - Removed osgUtil::Renderer as this is now rendundent thanks to - the new RenderStage functionality. - - Replaced osgUtil::CullVisitor by osgUtil::NewCullVisitor and - removed NewCullVisitor references as these are nolnger needed. - - Moved osgUtil::CullViewState out of osgUtil::CullVisitor header - and into its only file header and source files. - - Updated osgUtil::SceneView to only refer to new standard CullVisitor. - - Updated Unix and VisualStudio files accordingly. - o Fixed problem related to calculation of the near far planes when - a non-uniform transformation exists in the scene graph. - o Fixed problem related to view fustum culling when a non-uniform - transformation exists in the scene graph. Solution was to use - the transpose of the inverse transformation matrix to transform - plane normals rather than the transformation matrix as used for - points. - o Fixed two bugs in osg::notify(), pinpointed by Randall Hooper. - The first was in osg::initNotifyLevel() - the check for DEBUG was - hidding the settings for DEBUG_FP and DEBUG_INFO since it was first - of these in the if/else code and all contain the word DEBUG. The - solution was to move DEBUG check to the last entry. - The second bug was related to osg::setNotifyLevel() - if this method - was called before the first call to osg::notify() then osg::notify - would automatically call initNotifyLevel and overwrite the - setNotifyLevel value. The fix was to make setNotifyLevel call - initNotifyLevel itself before setting the value, and add protection - into initNotifyLevel so that the internal code is never executed - more than once. - - June 22nd - osg-20010622.tar.gz - - o Added osgUtil::NewCullVisitor::createOrReuseMatrix() and - createOrReuseRenderLeaf() methods to allow reuse of what was temporary - memory from frame to frame. Combined with the new near and far - plane code, the cull traversal for models like Performer town is - now 40-60% faster, and on models with a large nuber of internal - transforms the figure can be 80+% faster :-) - o Changed the techinique for calculating the near and far planes inside - NewCullVsitor to be more efficient - now about up to and over 4 times - faster! Makes a particular difference on models with large numbers - of transform nodes. - o Changed osg::Draw::drawImmediateMode() so that it takes an osg::State - as a parameter. - o Changed the referencs to -glut in unix Makefiles so that is is specified - by a $(GLUTLIB) paramter, which is now set in the Make/makedefs.* files. - This allows the GLUTLIB to be changed to allow linking to static glut - libraries. It defaults still defaults to -glut as before, so no change - in standard behavior will be noticed. - o Added osgUtil::RenderToTextureStage in preperation for support for - Imposters. - o Added osg::Impostor, ImpostorSprite header and source files, these files - are simply shells for future integration work, and do not currently function - as Impostors. Modified osg::NodeVisitor and osg::CullVisitor so that - they now recognise the Impostor node. - - June 18th - osg-20010618.tar.gz - - o Reverted to the prev_ReaderWriterPNG.cpp since I was having problems - loading png files that used to work. This will break other png files - for which the new_ReaderWriterPNG.cpp was created to handle. Both - clearly arn't up to job and need a rewrite. Will do this later... - o Made osg::Camera::draw_PROJECTION() and osg::Camera::draw_MODELVIEW() - virtial functions to allow subclassing. - o Removed the references to opengl.lib and glu.lib from the lwo loaders - as they arn't required. - o Under Unix, changed the names of the jpeg and tiff plugins from libdb_jpg.so - and libdb_tif.so to libdb_jpeg.so and libdb_tiff.so respectively, and - used the new addFileExtensionAlias to alias the common file etension to - use these new names. This makes it consistent with the name of the - directories and source files in the distribution. Windows already used - this convention. - o Added osgDB::Registry::addFileExtensionAlias(,) to allow file extension - to be aliased to appropriate osgPlugins. Current default aliases are: - addFileExtensionAlias("rgba", "rgb"); - addFileExtensionAlias("int", "rgb"); - addFileExtensionAlias("inta", "rgb"); - addFileExtensionAlias("bw", "rgb"); - addFileExtensionAlias("jpg", "jpeg"); - addFileExtensionAlias("jpe", "jpeg"); - addFileExtensionAlias("tif", "tiff"); - addFileExtensionAlias("geo", "lwo"); - addFileExtensionAlias("lw", "lwo"); - o Pulled libtiff, libpng and libjpg win32 image libraries from the - OpenIL image library distrbution and placed them into a zip archive - for win32 users to install, instead of having to trawl the internet - for them. - - June 15th 2001 - osg-20010615.tar.gz - - o Updated the TARGET_INCLUDE_FILES to reflect current set of include - files so that make install works properly once more. - o Fixed the src/osgUtil/Tesselate.cpp so that it detects the - defination of GLU_VERSION_1_2 and use modern glu tesselation - functions rather than the old style deprecated glu tess functions. - This fixed compilation problems under recent versions of Mesa. - o Fixed the texture coordinates of the top of the tank in the hangglide - demo - the center point texture coords were not being initiliaed - o Fixed a crash in osg::Texture::apply() which occurred when it was - called without a valid image being attached. The fix is simply - to add an _image.valid() check at the begining of the method. - o Changed src/Demos/sgv/Makefile so that it defaulted to *not* linking - with Performer - the previous dev release had this as default which - it shouldn't have. - - - June 13th 2001 - osg-20010613.tar.gz - - o Added support osg::StateSet::RenderBinDetails into .osg - reader/writer plugin. This now allows multi-pass models to be saved - and loaded, such as osfreflect demo can now be reproduced in a .osg - file. - o Added support for osg::Stencil, osg::Depth, osg::ClipPlane and - osg::ColorMask classes to .osg reader/writer plugin. - o Added support osg::Drawable:UseDisplayList into .osg reader/writer plugin. - o Fixed the src/osgPlugins/pfb/ConvertFromPerformer.cpp so that is scales - the shininess value correctly when converting materials to osg. - o Added checks to osg::Material::set*(..) methods to use the new bounds - checking utilties to clamp values to valid ranges. - o Added include/osg/BoudingChecking header file with template definitions for - clamping paramters to specified ranges. template functions provided are: - clampGEQUAL(...), clampLEQUAL(..) amd clampBetweenRange(). - - - 11th June 2001 - osg-20010611.tar.gz - - o Went through library source adding, where required to suppress spurious - warnings in during MSVC++ debug compilation, pragma warning ( disable 4786) - o Changed the mapping of coordinates in the .obj and .lwo loaders from - +x east, +y upwards, +z north (as specified in file specs) to the OSG's - +x east,+y north,+z updwards. The windings of triangles has also been - flipped to handle this change. - o Added a RegistryPtr class to handle the destruction of the the - registry, assinging NULL to the pointer once the registry is - deleted. Subsequent calls to the get() of RegistryPtr will - return NULL, which can be used for testing whether the registry - still exists or not. This means that Registry::instance() will - now return NULL if the registry has been automatically deleted. - The RegisterDotOsgWrapperProxy and RegistryReaderWriterProxy have - been modified to use this new property to prevent the registry - being called once it has been deleted. This has been done to - prevent out of order destruction causes seg faults on exit. - o Added Tesselator to src/osgUtil to be used in for breaking up - concave polygons into triangles - uses the glu tesselator. - o Reimplemeted src/osgPlugins/lwo to use new tesselator and allocate - seperate vertex lists for each material type. - o From Randall Hopper - Added missing int from static definition in - src/GLUT/Viewer.cpp. - o Removed use to OSGHOME from src/osgPlugins/lwo & obj Makefiles, - replacing with normal relative include paths for makedefs and rules. - o Removed unnecessary glib reference from src/osgPlugins/lwo/Makefile. - - 7th June 20001 - osg-200010607.tar.gz - - o From Ulrich Hertlein - .obj and .lwo loaders. Various fixes and porting - to Windows done by Robert Osfield. - o Fixed bug in osgcube related to the color of the cube having an alpha - value of 0.0, which resulted in all OpenGL fragmennts failing the - AlphaFunc test which is now on by default. Changed the alpha to 1.0 - for opaque. - o Implemented a multi-pass reflection demo in src/Demos/osgreflect which - uses the stencil buffer to tag mirror bits, and 5 render bins to order rendering - as Mark Kilgard's paper "Improving Shadow and Reflections via the - Stencil Buffer" which can be download at the NVidia website. - o Moved osg::Stencil, osg::Depth and osg::ColorMask from src/Demos/osgreflect - into the core osg library. - o Added osg::ClipPlane StateAttribute subclass to encapsulate OpenGL's - glClipPlane function. - - - 31st May 2001 - osg-20010531.tar.gz - - o Added osg::Stencil, osg::Depth and osg::ColorMask StateAttribute - subclasses to the osgreflect demo to enable multi-pass use of the - stencil buffer. osgreflect.cpp has yet to be modified to take - advatange of these new state class or multi-bin functionality, - this will be done for the next dev release. The Stencil, Depth - and ColorMask classes will be added into the core osg for the - next release. - o Added beginings of osgUtil::NewCullVisitor which will support the - new multi-pass/stage functionality, and replace osgUtil::CullVisitor - once the functionality is finalised. osgUtil::SceneView has been - modified to use either NewCullVisitor & RenderBin etc or the - previous CullVisitor/Renderer functionality. SceneView defaults - to the NewCullVisitor. - o Added beginings of osgUtil::RenderBin,osgUtil::DepthSortedBin and - osg::RenderStage to support multi-pass and multi-stage rendering. - o Fixed bug in osg::Matrix::mult(const Matrix& lhs,const Matrix& rhs) - which occured when either the lhs or rhs paramters were the same - matrix and 'this'. The osg::Matrix::invert(const Matrix& m) also - sufferd the potential problem. In both methods I've added checks - against the 'this' pointer to trap these cases and create a temporary - copy of 'this' before proceeding. - o From Ulrich Hertlein - support for texture subloading in osg::Texture. - - 25th May 20001 - osg-20010525.tar.gz - - o Added new osgUtil::RenderLeaf class for storing drawable, matrix & - depth data and for rendering in conjunction with osgUtil::Renderer. - RenderLeaves are themselves stored inside the RenderGraph and - replace the previous pair which did a similar job. - The new class allows extension, via subclassing, of the data stored - in a RenderLeaf, such as id's for picking, and also override of - the local rendering behavior via a its virtual render(..) method. - o Changed the printing of frame rate stats so that it prints out - appropriately every second rather than every frame, therefore - reducing the overhead of printing out to the terminal. - o Added prioritizeTextures() method to osgUtil::Renderer which parses - the draw bins and calculates the most appropriate texture priotization. - o Added getTextureObject(..) and getTextureObjectSize() to osg::Texture - to allow details of the texture object to be publicly accessed. - o Implemented view frustum culling that switches of redundent checks - against the side sides of the view frustum when traversing children. - -19th May 2001 - osg-0.8.40 (minor updates made to release of 18th May) - - o Small correction to NEWS file. - o Small updates to index.html. - o Removed '-ldl' from makedefs.irix.* as it is not required. - - 18th May 2001 - osg-0.8.40 - - o Updated Make/makedefs.* to better support FreeBSD compilation. - o Updated index.html and doc/Doxyfiles/* to include references to - the osgDB library and osgtexture demo program. - o Changed the default IRIX make to make.std, and make.nonstd to - make irix.old. - o Added src/Demos/osgtexture - a demo to demostrate the various texture - modes possible with osg::Texture. - o Fixed CullVisitor::setCullingActive(..) so that it now sets - the current CullViewState's modes as it should, previously only the - CullVisitor::pushMatrix() was setting these values. - o From Zang Zong Shan - bug fix to osg::Group::removeChild() to ensure that - the parent is removed from its child properly. - o From Karsten Wiess (with small mods for to avoid sqrt by Robert Osfield) - added osg::BoundingSphere::intersects( const BoundingSphere& bs ) - o Add comments to methods include/osg/StateSet and StateAttribute. - o Added osg::Texture::readImageFromFramebuffer(...) from Karsten Weiss' - Imposter code. Note, name of method has been changed (from get..) and - State parameter added to allow the handling of multiple contexts. - o Changed the png plugin to use code from simage rather than previous - png code that the osg used, solving a crash reported on some png - files. - o Added temporary fixes into include/osg/StateSet, src/osg/StateSet.cpp - and src/osgPlugins/osg/StateSet.cpp to get round a crash under Windows - when saving a dot osg file. Actual problem has not been isolated, - so fix will be removed once real problem has been solved. - o From - added support for IMB_MIRROR_REPAT extension into - osg::Texture and .osg plugin. - o Added code to osgPlugins/osg/Texture.cpp to record the original - name of the image filename to be passed onto the image filename, - instead of the absolute path with name as recorded by the image - plugins themselves. This changes preserves the name from loaded - .osg through to any subsequent save .osg. - - 10th May 2001 - osg_20010510.tar.gz - - o Bumped version numbers up to 0.8.40 - o Added #include to osgUtil/SmoothingVisitor. - - 9th May 2001 - osg-20010509.tar.gz - - o From Randall Hooper - modifications to osg::Timer, Makefile's and - the addition of Makefile/makedefs.freebsd Makefile/makerules.freebsd - to add support for the FreeBSD flavor of Unix! - o From Axel Volley - fixes to FieldReader and RenderGraph headers and - to Make/makedefs.irix.* to fix compilation problems which have - occurred under IRIX with the latest dev versions. - o Added the ability to clean and reuse the RenderGraph tree from - frame to frame, thus reducing the memory overhead of allocation - and deleting on each frame. - - 8th May 2001 - osg-20010508.tar.gz - - o Added osg::StateAttribute::clone()=0 to the StateAttribute header file - to complete the overriding of osg::Object's virtual methods. - o Revised the StateAttribute/StateSet/State API a small amount to make - it more consistent. - o Fixed memory leak in new version of CullVisitor where more Matrices - were being allocated than required, and were left unreferenced. - o Fixed viewing bug in hangglide, introduced in osg-20010418.tar.gz - with the modifications to the osg::CameraManipulator base class. - o Added const and inline to methods in include/osg/* header files, - making it more explicit which methods are inline, and which paramters - and returns types are const. The later can help compilers produce - appropriate compiler errors when inappripriate things are done with - return types, which is good for compile error detection, and also - allows the compiler to more aggressive optimizer code. - o Fixed compilation error in osg::Output::open(,,,) under windows by - removing method. This is not a problem to end users since the - method was only added for absolute completness of overriding the - ofstream::open() method. - - 6th May 2001 - osg-20010506.tar.gz - - o Added osg::State::apply(const osg::StateSet*) to apply a StateSet - without requiring a pushStateSet(),apply(),popStateSet() as required - in previous dev version. Combined with the two changes changes - below draw traversal times have been reduced significantly on - models with large number of state changes (such as billboarded trees - in Performer town.) Both Cull and Draw traversal times are now - faster than previous releases. - o Moved the support for tranform Matrices in the osgUtil::RenderGraph - into a Drawable/Matrix pair rather than one per RenderGraph element. - Modifed osgUtil::CullVisitor and osgUtil::Renderer to reflect this - change. - o Added 'inline' keyword to numerous methods in osg and osgUtil header - files to give a less subtle hints to compilers than a inline method - is indeed inline. VisualC++ particularily seems to need inline - to specified explicitly. - o Added osgDB::Output::s/getPathNameHint() and Output::setPathNameHint(..) - to to help future support for absolute filepaths, relative file paths - in the .osg outout. Currently only implements AS_IS and FILENAME_ONLY. - - 3rd May 2001 - osg-20010503.tar.gz - - o Modified osgUtil::SceneView to reference the RenderGraph and Renderer's. - o Modified osgUtil::CullVisitor so it creates a RenderGraph instead on - the previous DrawBin. - o Added osg::StateSet::g/setRenderingHint(..) to allow hints to be passed - on to the Renderer to allow it place the drawables in the appropriate - rendering bin for rendering. This allows, for instance the rendering - transparent bin to be addressed independantly from the current GL_BLEND - mode. An int is used so more than just Opqaue or Transparent bins could - be referenced from within the scene graph (but these must be handled - by Renderer subclasses.) - o Replaced osgUtil::DrawBin by osg::Renderer which traverses a RenderGraph - to generate its own render bins, supports basic coursed grained state - sorting. Designed to subclassed to allow users to modify the rendering - behaviour. - o Implemented new osgUtil::RenderGraph class for storing state, matrix and - drawable data produced from a cull traversal (such as by CullVisitor.) - o Removed all osg::StateAttribute subclasses static void enable()/disable() - as these have been made redundent by the new osg::State/StateSet & - StateAttribute functionality. - o Removed osg::Lighting since it is now redundent thanks to new - functionality of osg::State/StateSet & StateAttribute functionality. - o Reworked the .osg, .pfb, .3ds and .flt loaders to use the new - osg::StateSet class. - o Reworked osgUtil, osgDB, osgGLUT, Demos/osgcube, osgreflect and hanglide - to use the new osg::StateSet class. - osg::StateSet class. - o Renamed osgUtil::GeoStateManipulator to osgUtil::StateSetManipulator - be consitent with GeoState's replacement. - o Replaced osg::GeoState with new more flexible osg::StateSet. - osg::GeoState nolonger exists so users will have to port to use the - new osg::StateSet. Functionality can easily be mapped across to the - StateSet so this should not be difficult task. - o Removed the deprecated RenderVisitor since it has now been replaced - by the more flexible and powerful CullVisitor/DrawBin pair (which - themselves may be replaced later by more flexible and powerful...:) - o Fixed osg:Geode::computeBound() method so that it handled empty geode's - correctly setting the Bounding Sphere to default initialized state to - represent and empty sphere. Previous (nan,nan,nan) was calculated for - the center of the bounding sphere for empty data. - o To fix a compliation collision when #define DEBUG is used and Notify is - included, have changed enum NotifySeverity { ... DEBUG=5, FP_DEBUG=6 } - to enum NotifySeverity { ... DEBUG_INFO=5, DEBUG_FP=6 } - - 18th April 2001 - osg-20010418.tar.gz - - o From Neil Salter, additions to osgUtil of new - osgUtil::GUIEventHandler, - osgUtil::SceneViewManipulator and - osgUtil::GeoStateManipulator. - o Fixed date problems in distribution which occured in osg-20010416.tar.gz. - o Added make stats option to the root Makefile to allow the number of lines - of code in each component of the OSG to be logged. - - 16th April 2001 - osg-20010416.tar.gz - - o Added Don Burns sgv key bindings documentaiton into doc/sgv.html - o Added s/getState() to osgUtil::DisplayListVisitor to provide state - for the compile display list method to use. Added new DisplayListMode - COMPILE_ON_DISPLAY_LISTS which is implemented so that if display - lists are already switched on in the traversed scene graph are - compiled. - o Added support for multiple OpenGL contexts (and hence multiple seperate - texture object and display lists) into osg::Texture::apply(State&) and - osg::Drawable::draw(State&). This allows the OSG to work in multipipe - systems. - o Added (State& state) parameter to both osg::StateAttribute::apply(State&) - and osg::Drawable::draw(State&) to allow the handling multiple OpenGL - context. All subclass' of StateAttribute and Drawable have been updated - to reflect this new paramter. - o Added s/getContextID() to osg::State to handle the specification of - a unique unsigned int to specifiy the current active OpenGL context. - This value is in turn used by osg::Texture and osg::Drawable to - manage multiple texture binds and display lists, one for each - OpenGL context, thus enabling multi-pipe support. - o Fixed the osgDB::Registry::writeObject() so that it supports the - writing of osg::Object UniqueID out to .osg. - - 7th April 2001 - osg-20010407.tar.gz - - o Added numerous get and set methods to a large proportion of classes in - the core osg library. Made methods const correct where appropriate. - Also modifed several enum type names to be more consistent from class - to class. - o From Karsten Wiess - added osg::Matrix::makeRot(Vec3,Vec3). - o Added ostream << operator to osg::Matrix for debugging purposes. - o Changed osg::Object::isSameKindAs(Object*) to be const correct i.e - isSameKindAs(const Object*) const. All subclasses of osg::Object - have been updated to reflect this change. - o Changed the osg::Billboard::get* functions so that they return - values rather than requiring the paramter passesing. This has been - done to be more consistent with the rest of the osg, make it easier - to use and improve the potential for compiler optimization. - o Moved loadObject/Image/NodeFile from include/osg/Registry into - include/osgDB/ReadFile, and renamed them readObject/Image/NodeFile - to keep consistency with ReaderWriter & Registry. - o Moved saveObject/Image/NodeFile from include/osg/Registry into - include/osgDB/ReadFile, and renamed them writeObject/Image/NodeFile - to keep consistency with ReaderWriter & Registry. - o Moved database & dynamic plugin support out of core osg library into - seperate osgDB library which is now an optional layer above the core osg. - o Moved osg ascii support & ReaderWriter out of core osg library and into - a seperate osgPlugins osg plugin. - o Moved rgb image reader out of core osg library and into a seperate - osgPlugins osg plugin. - o Removed osg::Scene since it is now redundent thanks to the new ability - to attach osg::GeoState to all internal nodes within the scene graph. - o Removed osg::Sequence as it was nothing more than a shell implemention, - which could be inappropriately used. Will implement properly later. - - 29th March 2001 - osg-20010329.tar.gz - - o renamed the following methods in osg::GeoSet for consistancy: - getNumIndices() -> getNumCoordIndices() - getCIndex() -> getCoordIndices() - getNumNIndices() -> getNumNormalIndices() - getNIndices() -> getNormalIndices() - getNumCIndices() -> getNumColorIndices() - getColIndex() -> getColorIndices() - getNumTIndices() -> getNumTextureIndices() - getTIndex() -> getTextureIndices() - o Itegrated changes from Bryan Woods for Mac port: - - include/osg/Timer - small macintosh #define comment out. - - src/osg/FileNameUtils.cpp - added using std::tolower,std::stlen - within #machintosh guards. - - src/osgGLUT/Viewier.cpp - #ifndef machintosh printing out - of library name and version in constructor. - - src/sgv.cpp & repsective files osgcube,osgreflect and hanglide have - moved the glutInit(,) call to the top of each main function. - - updated the Metroworks file - o Added a src/Demos/sgv/Makefile.performer and Makefile.standard to - all the direct linking to Performer hack to be easily applied to - sgv to get round the know problems with dynamically linking to - Peformer. - o Changed osgUtil::SceneViewer::draw() method so it would clear background - even if no model have been attached to the scene view. - o Changed include/osg/Notify to use #ifdef __GNUC__ instead of __linux - as guard for dummy code required to prevent a gcc warning. - - - -25th March 2001 - osg-0.8.39.tar.gz - - o Added option for uint indices in osg::GeoSet to allow very large models - to be represented. - o Moved the distribution version numbering from previous osg-0.8-39.tar.gz - style to more standard osg-0.8.39.tar.gz The distribution directory also - now reflects the new version numbering, so rather than the - OpenSceneGraph-0.8 the directory will be osg-0.8.39. These two changes - bring the OSG into line with established conventions in the open source - world. - o From Karsten Wiess - added small piece of dummy code into - include/osg/Notify to prevent inappropriate gcc warnings. - o From Neil Salter - - updated the doc/Doxyfiles directory to handle the - proposed version number i.e. osg-0.8.39 for next version. - - updated NEWS file to be compatibile with new automated scripts for - generating Doxygen documentation for distribution. - - updated osg banner in html pages to indicate documentation is - from the distribution. - o Fixed typo in src/osgPlugins/lib3ds/track.cpp which caused the lib3ds - to fail to build. - - 21st March 2001 - osg_src-20010321.tar.gz - - o Added osg::StateAttribute base class, changed all state attribute - classes so that they now inherit from osg::StateAttribute and - changed osg::GeoSet to work with osg::StateAttribute. All - StateAttrbute subclasses (Texture/TexGen...) all now register - with the osg::Registry, and all .osg file reading uses these - prototype as per image,node, and drawable prototypes. Although - osg::GeoState is still hardwired to certain state attributes - as before much of the infrastructure around it has be upgraded - to pave the way for a more flexible osg::GeoState. - o Removed _drawBin->reset() from CullVisitor::reset() since it - should be reset extrenal to the CullVisitor. - o Added osgUtil::SceneView::s/getDrawBin() methods. - o Changed the lib3ds includes to be local header paths and - changed lib3ds/float.h to lib3ds/lib3ds_float.h to avoid - collisions with the system float.h. Note, the changes to - path required changes to both the source, Unix Makefile and - VisualStudio lib3ds.dsp files. - o Changed the usage text to reflect the name of osgreflect. - o Removed app and cull traversal calls from osgGLUT::Viewer::draw(), - since there are now handled by their own app() and cull() methods. - - 18th March 2001 - osg_src-20010318.tar.gz - - o Implemented base class osg::Drawable from which osg::GeoSet is now - derived. osg::Geode now contains a list of osg::Drawables, and - osg::Registry and osg::Input have been extended to handle dynamic - exensions of osg::Drawable in file IO. Numerous files have been - modified to support the new structure, it is also likely to break - user code, look at the code with the plugins and demos to see how - adapt code to the new style. The changes are likely to be minimal - - for instance geode->addGeoSet(geoset) would change to - geode->addDrawable(geoset). Some .osg files no longer load due to - a bug introduced with the above changes - still investigating it, - likely to be just a typo somewhere... - o Renamed DCS -> Transform. - o Renamed Seg -> LineSegment. - - 15th March 2001 - osg_src-20010315.tar.gz - - o Added osgUtil::SceneView::setAppVisitor(), getAppVisitor() and - app() to support user defined app traversal. - o Added support for the new SceneView::app() traversal into osgGLUT/Viewer - and cleaned up the app(),cull() and draw() methods. - o Added an AppVisitor to the Demos/osgreflect which rotates the loaded - model about its center point. - o Added a osg::NodeVisitor::reset() to be called prior to each traversal - to allow subclasses to flush internal set for each traversal. - - 14th March 2001 - osg_src-20010314.tar.gz - - o Added reflection demo, which can be found in Demos/osgreflect. - o Made osg::Reference::_refCount mutable and the ref() & unref() const - methods, to faciliate the referencing of const objects. - o Added support for attaching osg::GeoState to internal nodes in the - scene graph. This enables subgraph's state to be overridden, which - enables several multipass techniques, such as planar reflections. - o Added src/osg/State.cpp to help manage pushing and popping of current - state. include/osg/State previously existed but was just a shell, - and has now been updated to provide funcitonal interface! - - o Fixed a typo in VisualStudio/Demos/osgcube/osgcube.dsp which caused debug - build link time errors - a space was missing between two library names. - o Added osg::FrontFace state attribute class for managing the OpenGL - glFrontFace(,) on a per osg::GeoState basis. - Added files include/osg/FrontFace and src/osg/FrontFace.cpp and - modified include/osg/GeoState, src/osg/GeoState.cpp. - o Added osg::GeoState::merge(osg::GeoState* lhs,osg::GeoState* rhs) - method to osg::GeoState, for use in the new osgUtil::DrawBin. - o Updated comments in include/osgUtil/SmoothingVisitor, TriStripVisitor - and include/osg/Scene. - o Corrected header guards in DisplayListVisitor to be consistent with rest - of library, and updated comments. - o Update NEWS with small revisions. - o Fixed crash in NvTriStrip due to TriStripVisitor calculating the - number of vertices one to small, which resulted in memory errors. - - 6th March 2001 - osg_src-20010306.tar.gz - - o Added new class osgUtil::CullVisitor and osgUtil::DrawBin which are - steps towards spliting up the osgUtil::RenderVisitor into its component - parts. - o Updated NvTriStripObject.cpp with patch from NVidia. - o Updated the NEWS information to allow automatic parsing of the file - for NEWS and headlines on the osg website implmented by Neil Salter. - o From Karsten Weiss - added comments and correct typo's in - include/osg/Scene and include/osg/Group - o Added osg::PolygonMode state attribute class for managing the OpenGL - glPolygonMode(,) on a per osg::GeoState basis. - Added files include/osg/PolygonMode and src/osg/PolygonMode.cpp and - modified include/osg/GeoState, src/osg/GeoState.cpp and - src/osgGLUT/Viewer.cpp to utilize the new class. - - - 4th March 2001 - osg_src-20010304.tar.gz - - o Changed osg::Scene and osg::DCS to use osg::ref_ptr<> instead of - directly managing dynamically memory. - o Fixed crash due memory errors in osgUtil::IntersectVistor. - o Updated NEWS with main items for ChangeLog dating back to the first - days of the ChangeLog. - o Changed the file extension checking methods in ReaderWriterOSG, - ReaderWriterRGB, ReaderWriterOSGTGZ, ReaderWriterTGZ, ReaderWriterZIP - to use use new function osg::equalCaseInsensitive(lhs,rhs). - o General purge of warnings in libs and plugins. - o From Neil Salter - - spelling corrections to include/osgGLUT/Viewer. - - updates to doc/Doxyfiles/*. - o Added extensions guard to src/Demos/hangglide/ReaderWriterFLY.cpp - which fixes the bug where the hangglide demo does can only read - .osg or .fly input files. - o Updated the index.html and doc/index.html with the OSG banner and - new text and various clean ups. Added doc/OpenSceneGraphBanner.jpg - o Fixes to get dev version below compiling under IRIX std and non std - compile options - FileNameUtils.cpp, Seg.cpp, NvTriStrip.cpp and - lib3ds/quat.cpp. - - 1st March 2001 - osg_src-20010301.tar.gz - - o Macintosh port of osg from Bryan with mods for integration by Robert. - - Added Metrowerks make files. - - Added strdup defintion into src/osg/FileUtils.cpp to ensure compatiblity - under mac. - - Added #defined(macintosh) into include/osg/Types to define M_PI etc. - - Integrated changes to src/osg/DynamicLibrary.cpp for macintosh port. - - Integrated changes to src/osg/FileNameUtils.cpp for macintosh port. - - Integrated changes to src/osg/FileUtils.cpp for macintosh port. - - Integrated changes to src/osg/Registry.cpp for macintosh port. - - Integrated changes to src/osg/Texture.cpp for macintosh port. - - Integrated changes to src/osg/Timer.cpp for macintosh port. - - Integrated changes to src/osg/GLExtensions.cpp for macintosh port. - - Integrated changes to src/osgUtil/RenderVisitor.cpp for macintosh port. - - Integrated changes to src/osgUtil/IntersectVisitor.cpp for macintosh port. - - Integrated changes to include/osgGLUT/Viewer for macintosh port. - - Integrated changes to src/osgGLUT/Viewer.cpp for macintosh port. - - Integrated macintosh timmer support into include/osg/Timer - - Modified src/osg/Texture.cpp to take account of the new file - name type in osg::Image. - - Converted osg::Image::_fileName from char* to std::string to - avoid issues with portability due to strdup not being availble - on mac. - - 28th Faburary 2001 - osg_src-20010228.tar.gz - - o Updated the osgUtil::TriStripVisitor to create seperate tri strips, - which fixes crashes which occured under Windows. Significant - speed up is can be achieved for many datasets by applying the - tri stripper. However, right now it can flip triangle orientation - which if back face culling is on may cause a model to apparantly - disapper... Turn off back face culling to see all surfaces. This - 'feature' will be fixed to maintain surface orientation before and - after tri stripping. - - 24th Feburary 2001 - osg_src-20010224.tar.gz - - o Modified osg::GeoSet to support sharing of the coord, normal, texture and - colour index list in both the .osg IO and the handling fast paths for - rendering. - o Added support for smoothing groups to 3ds plugin. - o Added support for beautify to unix makefiles and ran it on .cpp files. - o Added osgUtil::TriStripVisitor which use NvTriStrip to create - optimized triangular strips. Modified osgGLUT::Viewer to tri - strip when 'R' is pressed (for tRi strip). *Note* this is work in - progress and its is known to crash in certain circumstances. - o From Karsten Weiss - added comments to osg::Switch. - o Removed redundent src/Demos/hangglide/Trees.cpp. - o Added < operator to osg::Vec2,3 & 4. - o Changed the implementation of osgUtil::SmoothingVisitor to fix a bug - and to increase algorithm speed - now O(nlogn) rather than O(n^2). - -17th Feburary 2001 - osg_src-0.8-38.tar.gz - - o Added REPLACE to osg::TexEnv which supports the equivilant GL_REPLACE - texture environment mode. - o Fixed osg::GeoSet rendering bug which occurs when an coord index - list is mixed with normals (or colors) which are attached to the - geoset on a per vertex basis. - o Made appropriate osgUtil::RenderVisitor get methods const. - o Changed osg::Geode::getNumGeosets() to osg::Geode::getNumGeoSets() for - consistentcy and made it and several other osg::Geode methods const. - - 15th Feburary 2001 - osg_src-20010215.tar.gz - - o Added beginings of a 3ds loader, based on lib3ds, can now load meshes - and textures. - o Added file search function osg::findFileInDirectory(..) which has - the option of doing case insensitve comparisons of names. Useful for - handling dos mixed case filenames under unix. 3ds files are particularily - prone to incorret case between filename in .3ds file and file on disk, - this method allows these problem filename to be handled gracefully - under unix. Also add osg::equalCaseInsensitive() which takes two - strings and compares them for equality ignoring case to support the - above osg::findFileInDirectory(..) - o Added new demo app - osgconv which takes loads specified files, and then - writes out the resultant model to a specified file. - o Updated version number in doc/Doxyfiles/Doxyfile_all, src/osg/Version.cpp - src/osgUtil/Version.cpp and src/osgGLUT/Version.cpp. - o Added include/osgGLUT into the TARGET_DIRS list in Make/makedefs.linux - and Make/makedefs.irix.nonstd & makedefs.irix.std - -10th Feburary 2001 - osg_src-0.8-37.tar.gz - - o Moved camera manipulator registration from osgGLUT::Viewer::constructor, - and setting of home in osgGLUT::Viewer::init() to happen in - osgGLUT::Viewer::run() and only when not other initialized. This allows - programs with use the the osgGLUT::Viewer class can set up there own - camera manipulators as in src/Demos/hangglide. - o Moved src/osgPlugins/fly to src/Demos/hangglide and created a simply - hang glider flight simulator. - o Added support for ARB and S3TC texture compression into osg::Texture and - methods to control the way that the internalFormat is used for OpenGL - textures. - o Updated version numbers in src/osg/Version.cpp, osgUtil/Version.cpp, - osgGLUT/Version.cpp and doc/Doxyfile. - o Removed src/osgPlugins/matrix.h&.cpp,vector.h&.cpp,oldtrees.cpp. - o From Karsten Wies - fix to src/osg/Switch.cpp to solve IO bug, - corrections to comments in include/osg/Registry. - o From Neil Salter - changes to support both doc++ and doxygen documention. - - 29th January 2001 - osg_src-20010129.tar.gz - - o Moved src/Demos/cube to src/Demos/osgcube to remove install conflicts - under RH7, changed cube.cpp to osgcube.cpp, changed src/Demos/osgcube/Makefile - changed VisualStudio/VisualStudio.dsw and VisualStudio/Demos/cube etc.. - o Removed two obsolete object files in src/osg/{ExtensionSupported.o,OSG.o} - o Removed vi swp file OpenSceneGraph-0.8/dist/.osg.spec.swp - o Fixed file permission of in doc/MindMap and doc/UML. - o Removed comma's at end of enumerator list in include/osg/GeoState - and src/osgPlugins/FaceRecord.h - -28th January 2001 - osg_src-0.8-36.tar.gz - - o Rewrote the implementation of osg::notify() once again to solve - a crash under Windows when an int is passed to the absorb stream. - Have moved the ofstream to a local static definition in osg::notify() - rather than a global in Notify.cpp. Note, the absorb stream is - now always set to "nul" or "/dev/null" under Windows and Unix - respectively, and can no longer be set to a user file. - o Did spell check on include/osg/Notify, Notify.cpp, FAQ. - o Added a couple of comments to src/osg/Billboard.cpp to explain - current incomplete implementation. - o Fixed minor warning in include/osg/mem_ptr. - o Updated src/osg/Version.cpp, src/osgUtil/Version.cpp & src/osgGLUT/Version.cpp - to version 0.8.36. - -25th January 2001 - osg_src-0.8-35.tar.gz - - o Added basic comments to osgUtil::GUIActionAdapter explain a little of - how it might be used in. - o Added reading from .osg files of the "Axis x y z" for osg::Billboard, - previously osg::Billboard::readLocalData ignored the Axis paramter - even though it was saved. - o From Karsten Weiss : - - Spelling corrections to comments in include/osg/Object & Node. - - Extra comments to include/osg/Matrix. - o Fixed bug in osg::Image::ensureDimensionsArePowerOfTwo() where - message was being written out without guarding against the - image name being NULL. - o Fixed the osg::notify() messaging function under Windows, with - same functionality that has exisited under unix - allowing users - to absorb messages, send them to cerr, cout or to a nominated file, - controlled via environmental variables, or set functions with the - application. - o Went through all include/osg header files removing redundent - includes to minimize compile time. Removed include's - of glu.h and glx.h in the include/osg/GL header file as these - are only required in specific cases. - o Removed UnrefOp functor from inclide/osg/Referenced and changed - all dependent files to use osg::ref_ptr<> instead for handling memory. - o From Don Burns : - -code for smoothing normals on osg::GeoSet's, integrated code - into osgUtil::SmoothingVisitor (RO) - -Bug fix for for_each_triangle() to ensure that - orientation of triangles is correct. - o Added new osg::mem_ptr template class (include/osg/mem_ptr) for - refence counting with data which does not internally support - ref/unref themselves (as required my ref_ptr and supplied normally - by deriving form osg::Referenced) instead delagating the - responisbility of reference counting and deleting unreferenced - memory to an associated osg::MemoryAdapter. - o Moved osg::ref_ptr from include/osg/Referenced into its own - header file include/osg/ref_ptr. Cleaned up numerous files - to include the new header file. - o Moved osg::MemoryAdapter from osg::Node into its own file, - include/osg/MemoryAdapter, and moved osg::ReaderWriter from - osg::Registry into its own file include/osg/ReaderWriter. - o Clean up most warnings associated with the new -W -Wall pedantic - warnings option. - o Rename include/osg/OSG to FileUtils to reflect its now less central - role in the OSG scene graph, renamed osg::FindFile osg::findFile, - osg::SetFilePath to osg::setFilePath, added osg::getFilePath() and - add osg::getDirectoryContents. Removed most references to the - old include/osg/OSG as they wern't required! Renamed the references - which were required. - o Renamed osgUtil::GUIActionAdapter::needRedraw() to requestRedraw(), - needContinuousUpdate() to requestContinuousUpdate() and - needWarpPointer to requestWarpPointer. Removed the redundent bool - paramter from requestRedraw. Updated Trackball, Drive and Flight - manipulators and osgGLUT to reflect new names. - Changed the default drive mode so it uses left and right mouse - buttons for speed control instead of using the mouse y position. - Both are still availble via original 'A' and 'Q' keybindings. - o Moved contents of README to INSTALL, and made README a bare bones - readme. Updated index.html to link to both. - o Moved include/osg/ExtensionSupported to include/osg/GLExtensions. - Renamed osg::ExtensionSupported to osg::isGLExtensionSupported, - reimplemented osg::isGLExtensionSupported to use std::set's for - increased speed. Added osg::getGLExtensionFuncPtr() as a cross - platform way to get OpenGL extension functions. Updated Point.cpp - and Texture.cpp to use the new methods and clean up the support - for OpenGL extensions. Cleaned up include/OSG/GL. - o From Axel Volley: - Added support for OBJECT_LINEAR and EYE_LINEAR TexGen modes, - Added support for the Anistropic texture filter extension to - Texture.cpp. - o Moved the information about plugin dependancies from README to index.html - and made the links to the appropriate web sites. Added links for data - sources. - o Updated the FAQ in to reflect progress to beta and new documetation details. - o Moved the createNodeFromImage functionality from the image readers - into osg::Registry::readNode(), removing readers readNode() functions. - Added osg::Registry::setCreateNodeFromImage(bool flag) and equivilant - get function to support the switching on and off of this functionality. - This is then is by the new archieve functionality. - o Added src/osgPlugins/tgz for general tarball models. - o Added src/osgPlugins/zip for general zipped models. - o From Don, src/osgPlugins/osgtgz for a osg tarball models. - dist/Irix for creating IRIX binary distributions. - o Removed redundent NSPlugin and src/Viewer directorties. - o Fixed compilation error in src/osgPlugin/flt under IRIX - related to flt::Record::Record(const Record&):Referenced() {}. - - -6th December 2000 - osg_src-0.8-34.tar.gz - - o To bring the main branch inline with the autoconf branch, and inline - with standard open source conventions, have made the following changes. - - - Copied and doc/index.html to index.html and modified to ref. README - file and new relative paths of the documention. - - Added AUTHORS file. - - Rename and moved doc/CHANGES.txt to ChangeLog, - doc/TODO.txt to TODO, - doc/FAQ.txt to FAQ, - LICENSE to COPYING. - README.txt to README. - - Note, removing the .txt from files means that Windows won't be able to - pick up on the file type automatically. However, they didn't have the - Win32 style end of line conventions so they still wern't much use. By - adding the index.html to the root directory this now allows Win32 users - to browse the relevant files via Netscape or IE which can handle the - unix style text files. I felt this was the best compromise. - - o Added notify messages to osg::Registry::read/writeOject/Node/Image() - for when a plugin for a file extensions hasn't been found and for - when a file hasn't been successfully read. - o Added Axel Volley's UML diagrams to doc/UML. - o Added mind maps on DesignPatterns and MissionState to doc/MindMaps. - o Added new library command line options (see below) into src/Demos/sgv. - o Integrated Graeme Harkness's reworking of src/Viewer into src/osgGLUT - and Demos/sgv. Added Graeme's new Demos/cube which provides a simple - demonstration of animation. - o Added ReaderWriterPFB::readImage() to enable the loading of .pfu images - into the osg, even if .pfb arn't used. Note, you'll need to run the - viewer something like 'sgv -e pfb datfile.osg. - o Added pfMultiprocess(0) to ReaderWriterPFB.cpp. - o Added -W predatic warning option to compilation under Linux, and cleaned - up the headers and source in response. - o Added osg::Image::ensureDimensionsArePowerOfTwo() and a call - to it from osg::Texture::apply() when mip mapped textures are required. - Added packing aligment value to osg::Image, defaulting to 4 if the - image width is a factor of 4, otherwise defaulting to 1. - osg::Texture::apply() now used this osg::Image::_packing value to set - glPixelStorei(); - o Added sgv usage help to Viewer.cpp. Running 'sgv' will now report - the command line options for sgv. Outputs the following : - - usage: - sgv [options] infile1 [infile2 ...] - - options: - -l libraryName - load plugin of name libraryName - i.e. -l osgdb_pfb - Useful for loading reader/writers which can load - other file formats in addition to its extension. - -e extensionName - load reader/wrter plugin for file extension - i.e. -e pfb - Useful short hand for specifying full library name as - done with -l above, as it automatically expands to the - full library name appropriate for each platform. - - o Added command line options -l and -e to Viewer.cpp to assist usage - of plugins which can load more than indicated by their standard - file extension type. See above for details. For instance pfb plugin - can load *many* file formats. - Try 'sgv -e pfb /usr/share/Performer/data/teapot.dxf'. - o From Ben Discoe, added osg::Matrix::setTrans() and getTrans(). - o Moved src/pfPlugin to src/osgPlugins/pfb and added code to enable - the plugin to work with the osg as a plugin in addition to it - previous functionality as a Performer plugin. Creating a link - from lib/osgPlugins/osgdb_pfb.so to lib/libpfosg.so - should be sufficient from Performer to pick up on the library. - Added support for copying image data across from pfTexture to - osg::Image texture and handling of pfMaterial::getColorMode(). - Added to src/osgPlugins/pfbREADEME.txt to documentation some - of the features and issues of the Performer plugin. - o Fixed bug in osg::GeoState related to loading and saving of the - new alpha_test paramter, which wasn't initialised in the osg::GeoState - constructor. - - -22nd December 2000 - osg_src-0.8-33.tar.gz - - o Integated Brede Johansen's update to flt loader. - o Added function osg::getLowerCaseFileExtension() to osg/FileNameUtils, - modifed osg::Registry::createLibraryNameForFile() and - osg::ReaderWriterRGB::readImage() to use this function for correctly - recognising upper case extensions as equivilant to their lower case - counterpart, i.e. .RGB should be interepreted as .rgb. - o Fixed intersection bug which occured of osg:GeoSet's containing - osg::GeoSet::TRIANGLES primitive bug. Bug was due to compilers - incorrectly optimizing a templated function & functor, fixed - by small reordering of the code, works perflectly now?! - o Updated the README.txt with info on the dependancies of the new plugins. - o Created VisualC++ project files for gif,jpeg,tga,tiff image loaders. - o Commented out disabling of depth testing for transparent bin as it - was causing visual artifacts on several models. - - 21st Decemeber 2000 - osg_src-20001221.tar.gz - - o Added an osg::createGeodeForImage(Image* image) method in osg/Image - to create a geometry node around a image so that it can visualised - within the scene without having to create all the required Geode, - GeoSet, GeoState and Texture classes. Added a call to above from - each of the image loaders so that images themselves can be loaded - into sgv... Thereby making sgv an 3D image viewer! - o From Don, added facility in osg::Texture so that if - _min_filter == LINEAR || _min_filter == NEAREST then - create a glTexImate2D, otherwise create a gluBuild2DMipmaps texture. - o From Don, added code to display able depth testing of the transparent - bin in the osgUtil::RenderVisitor:render() method. - - 20th Decemeber 2000 - osg_src-20001220.tar.gz - - o Incorportated the following image loaders from the simage library. - src/osgPlugins/gif - /jpeg - /pic - /tga - /tiff - Note, have only written unix makefile's so far, VisualStudio files need - to be written before the next release. - o Changed osgGetVersion() and osgUtilGetVersion() so that they - return const char* instead of the original float. - o added osg::GeoSet::s/getUseDisplayList(),dirtyDisplayList() and - virtual method drawImmediateMode() which draws primitive without - ever calling or creating a display list. The draw() has been - changed to handle the new _useDisplayList flag so that it - automatically creates a display list if the flag is true and - uses the display list on further calls to draw(). draw() is nolonger - a virtual method and therfore should *not* be overriden, - drawImmediateMode() is now the method to override. This allows - subclasses of osg::GeoSet to automatically take advantage of display - lists. - o From Brede, added option to osgUtil::SceneView to enable the automatic - calculate of near and far planes on each frame to be switched on/off. - o From Kartsen, spelling fixes to comments in Switch and GeoSet. - - - 18th December 2000 - osg_src_20001218.tar.gz - - o Changed the directory structure in preperation for autoconf - integration. - o Converted pf2osg and osg2pf into a libpfosg.so plugin for Performer, - instead of stand alone conversion programs, new pffb plugin can be - found in src/pfPlugin. - o Changed the osg::Material default _colorMode to OFF, and - the global material _colorMode default to AMBIENT_AND_DIFFUSE. - o Added read/write support for interleaved arrays into osg::GeoSet. - - 16th December 2000 - osg_src_20001216.tar.gz - - o Added osg::AlphaFunc state object. - o Added support for osg::AlphaFunc into osg::GeoState. - o Added support for osg::AlphaFunc into flight_park.fly. - o Changed osg::Material::apply() so only required glMaterial's are - called. - o Integrated Don's work on adding glVertexArrays etc to osg::GeoSet. - - 12th December 2000 - osg_src-20001212.tar.gz - - o Integrated Karsten's standardisation of the library header guards. - o Added osg::LightSource node. - o Added get methods to osg::Light. - o Modified osgUtil::RenderVisitor is track osg::LightSource nodes. - o Modified osgUtil::SceneView so that it can handle headlight, - sky light, and no scene view lights for the extra lights it - adds to the scene for viewing. In the later mode only osg::LightSource's - will light the scene. - o Modified Viewer.cpp so that it toggles between the above scene view - lighting modes above using the 'L' key. - o Changed osg::Geode and osg::Group to rely upon ref_ptr<> for memory - management rather the previous mode which required explicit ref and - and unref statements. - o Made osg::GeoSet::draw() and osg::GeoSet::getBound() virtual functions - to allow user-drawn objects. A short term fix only. - - -8th December 2000 - osg_src-0.8-32.tar.gz - - o Added osg::Node::s/getNodeMask() as a fore runner to full implementation - of TraversalMasks. - o Added osg::loadNodeFile(),osg::loadImageFile() and osg::loadObjectFile() - to osg/Registry header, as convienince functions for loading data. - o Added osg::Camera::s/getFieldOfView() methods and split up the - draw method into draw_PROJECTION() and draw_MODELVIEW() methods. - Converted osg::SceneView is use these methods instead own gl calls. - o Added osg::Timer class for high resolution, low overhead time stamping, - converted sgv to use it. Timer class based on Don's real time frame - scheduling library. - o Added extension guards to .rgb reader/writer to prevent it from trying - to load non rgb models. Accepted extensions are rgb,rgba,int,inta & bw. - o Added osg::Node::setUserData(void*,MemoryAdapter*), osg::Node::getUserData() - and osg::Node::getMemoryAdapter() and osg::MemoryAdapter to support user data. - o Added png image file format loader. - o From Ben Discoe: - - updated LOD to use distance squared for evaluating child usage to - remove need to computing sqrt. - - png to osg::Image conversion code. - o From Kartsen Weiss, fixes and improvents to sgv help message. - o From Brede Johansen: - - added osg::Node::setName( const char* name )to get round a crash - under Windows, caused by a VisualC++ bug, which occurs under to - multiple assignment of C style string to C++ strings. - - bug fix for .rgb plug-in to solve problems with some textures - with alpha values. The water tower, fences and fences now render - properly in Performer Town! - o Added osgUtil::SceneView::set/getBackgroundColor() for setting the - background colour used by glClearColor(). - o Added osgUtil::SceneView::projectWindowIntoObject(), - projectWindowXYIntoObject() and projectObjectIntoWindow() to - assist converting to and from window coordinates and object - coordinates. - o Added osg::Image* osg::Texture::getImage() to osg::Texure and - converted it to use ref_ptr for handling the image memory. - Added osg::Texture::getFilter() && getWrap() and seperated out - enum TextureMode into enum WrapParameter & WrapMode, and - FilterParameter & FilterMode. - o Converted osg::GeoSet to use ref_ptr for handling the - geostate memory. - -2nd December 2000 - osg_src-0.8-31.tar.gz - - o Added osgUtil::SceneView to encapsulate the details required to - render a view of a scene - the scene data, light, global geostate, - camera and rendervisitor. - o Cleaned up Viewer/Viewer.h & .cpp to use the new osgUtil::SceneView. - o Integated Brede Johansen's update to flt loader. - o Added .txt extension to README,CHANGES,TODO and FAQ to aid reading - of files under Windows. - o Added osg/Version and osgUtil/Version which provide - external C functions for getting library name and version. - Also can be used by autoconf to check for existance of the - osg and osgUtil libraries. - o Implemented missing osg::Camera::home(); - o Fixed bug in osg::Material::apply() where no texture would - be appear on surfaces on the first frame. glBindTexture was not - being called with the correct parameter on creation of the OpenGL - texture. - o Removed redundent glEnable(GL_LIGHTING) from Viewer.cpp. - o Changed the osg::Light::setDirection(Vec4&) to setDirection(Vec3&). - o From Karsten Weiss : - Comments added to osg::Light and osg::RenderVisitor. - Fixes to make install parts of osg/src/Makefile. - - -28th November 2000 - osg_src-0.8-30.tar.gz - - o Added osg::Object::isSameKindAs(Object* obj) to aid object type - comparions. This allowed osg::Object::readClone(Input& fr) to - be extended to automatically detect 'Use ObjectID' syntax in .osg files, - which fixes errors in reading .osg files saved from some data models - created correctly by the flt loader. - o Integated Brede Johansen's update to flt to handle transparency. - o Commented out the flt::Registry::instance()->removedPrototype() call from RegisterRecordProxy() - flt::RegisterRecordProxy destructor, which was causing a segmentation - fault on exit under Linux due to destruction ordering - gnu c++ doesn't - seem to honour construction/destruction order?! Prior to this 'fix', - did the following changes to clean up memory allocation & - deallocation as an attempt to fix the segmentation fault on exit! - Changed the memory allocation of RegisterRecordProxy children to use - osg::ref_ptr<> for automatic deallocation. Removed the flt::Record::_init(), - _copy() and _free() moving the functionality into the constructor and - destructor to simplify. flt::Record copy operator and copy constructor - made private to prevent misuse. - o Rewrote osg::Material so that it handles both FRONT and BACK - face materials within one class, with support for FRONT_AND_BACK. - o Added two sided lighting toggle to Viewer and NSPlugin. - o Changed the LODBias in Viewer and NSPlugin to 1.0 (previously 2.0). - o Added '#define GL_GLEXT_LEGACY 1' to osg/GL to fix compilation problems - which occur on some implementation of OpenGL under Linux. - -18th Novemeber 2000 - osg_src-0.8-29.tar.gz - - o Integrated Don Burns' Linux Netscape plug-in. - o Added osg::PolygonOffset state attribute. - o Added support for osg::Point and osg::PolygonOffset into osg::GeoState. - o Extended osg::CullFace to encompass which face to cull, i.e - FRONT,BACK or FRONT_AND_BACK, and added IO support. - o Added read/write ascii to osg::Point and osg::PolygonOffset - o From Don, moved light source from above model, to behind eye point - for sgv and the Netscape plug-in. - o Fixed material inheritance bug, by modifing osg::GeoState so that - it now inherits attributes from the global state if they are not - set locally. - o From Brede Johansen, bug fixes in flt loader, setting of externals - and redudent 'dummy' groups in LOD's. - o Changed the default compilation of loaders so that pf2osg and osg2pf - are not compiled by default under Linux or IRIX, ideally the presence - of Performer should be detected automatically and compilation set - accordingly, however this may have to wait for autoconf work. - o Fixed warnings generated by gcc-2.96 in flt,fly,pf2osg and Viewer. - o Changed 'const int' and 'const bool' returns type in Loaders/flt to - 'int' and 'bool' respectively. This fixed silly warnings under IRIX. - o In Loaders/flt changed all cout, cerr and printf's to osg::notify(). - o From Karsten Weiss : - - Updated OSG_ROOT/README to account for sh shells & added contact details. - - Changed variable 'or' to 'ori' in Loaders/fly/base.cpp to enable compilator - under later versions of gnu c++. - - Comments added to BoundingBox, Lighting, CullFace and Quat. - - BoundingBox::contains() bug fixed. - - Changes to remove warnings generated in Loader/flt with gcc-2.96. - o Updated FAQ. - o Updated OSG_ROOT/README with contact details. - o Changed osg::Registry and flt::Registry to use ref_ptr<> to automatically - handle attached prototypes memory usage. - o Removed flt/Referenced.h and replaced flt::Referenced with osg::Referenced. - o Removed vnf loader is it was only a to help import a single file from - an now out of date format, its existance was clogging up the distribution. - -10th November 2000 - osg_src-0.8-28.tar.gz - - o Added Brede Johansen .flt loader. - o Integrated Neil Salter's new implementation of osg::notify() which - uses a NotifyInit class with a 'nifty' counter to ensure construction. - o Changed osg::TexEnv,TexMat,Fog,Point,Transparency & Material so that - they area all derived from osg::Object. All state components are - now derived from osg::Object. - o Changed osg::GeoState::setAttribute(..) and getAttribute() methods - so that they deal with osg::Object's rather than void*. - o Changed osg::GeoState so that it uses ref_ptr<> to automatically - manage attribute memory whilst supporting attribute sharing. - o Added to osg::ref_ptr<> extra operators =,==,!= & a valid() method. - o Added osg::Point which enables control of OpenGL point size. - o Added osg::ExtensionSupported which allows the querring of - support for OpenGL extensions. - o Changed the default global lighting mode to ON in sgv. - o Changed the toggling bahviour in sgv between lighting and texture - ON and OFF, new behaviour should be more consistent. - -6th November 2000 - osg_src-0.8-27.tar.gz - - o Added option in osgUtil::FlightManipulator for automatically yawing - the camera into the bank, and made it the default operation. - o Changed the implementation of osg::notify() to default to simply - cout for all platforms, rather than just Windows. This is a - temporary measure to fix the crashes under IRIX and Linux. - Work is underway to provide a robust implementation of osg::notify(). - o Added Neil Salter's Doxyfile makefile to docs/ for generating Doxygen - documetation. - o Changed the #define's in include/osg/Transparency to enumerated - types and removed the SGTRANSPARENCY_ prefix as its now within - the scope of the Transparency class itself. - o Changed the #define's in include/osg/TexEnv to enumerated - types and removed the SGTEXENV_MODE_ prefix as its now within - the scope of the TexEnv class itself. - o Changed the #define's in include/osg/TexGen to enumerated - types and removed the SGTEXGEN_ prefix as its now within - the scope of the TexGen class itself. - o Changed the #define's in include/osg/Material to enumerated - types and removed the SGMAT_ prefix as its now within - the scope of the Material class itself. - o Changed the #define's in include/osg/Fog to enumerated - types and removed the FOG_ prefix as its now within - the scope of the Fog class itself. - o Changed the #define MIN_CACHE_SIZE in include/osg/Field to enumerated - type, therefore keeping it within the Field's scope. - o Changed the #define MINIMUM_FIELD_READER_QUEUE_SIZE in include/osg/ - FieldReaderIteraor to enumerated type, therefore keeping it within - the FieldReaderIterator's scope. - -3rd November 2000 - osg_src-0.8-26.tar.gz - - o Removed the GSET_ prefix from the osg::GeoSet enumerated types as - its no longer required, since the enumerated types are within the - osg::GeoSet's scope. - o Added osg::notify() function for redirecting messages either to - stdout or stderr (cout or cerr) or /usr/tmp/osg.info, depending upon - the severity level set. The environmental variable OSGNOTIFYLEVEL can - be set to overide the default level which is osg::NOTICE. - See include/osg/Notify for more details of the levels available. - Current implementation only works under Linux and IRIX, under Windows - the output is simply directed to cout. - o In osgUtil::DriveManipulator added the option to use the mouse y poistion - to govern the speed in addition to the previous left button to speed up, - right button to slow down/reverse. The two modes can be toggled by pressing - 'q' and 'a' respectively. Default is using the mouse y position for speed. - o Changed osgUtil::TrackballManipulator so that it supports proper - trackball style manipulation. - o Added a zoom limit to the osgUtil::TrackballManipulator to prevent - the user from zooming into a point. Under this limit the zoom - operation nolonger zooms in but pushes the eye and look points - forward down the look vector, keeping the distance constant. - o Added osg::Camera::getLookVector() and osg::Camera::getFocalDistance() - methods. - o Added osgUtil::DriveManipulator. - o Renamed osgUtil::GUIUpdateState to osgUtill::GUIActionAdapter - and moved it to its own file. - o Fixed bug in osgUtil::IntersectVisitor related to reference counting - and NULL object. - o Added osgUtil::FlightManipulator. - o Modified sgv to enable support for multiple camera manipulators. - o Added resize event and window min and max to osgUtil::GUIEventAdapter. - o Added resize event and window min and max to GLUTEventAdapter. - -27th October 2000 - osg_src-0.8-25.tar.gz - - o Added support for string descriptions to be added to osg::Node's, - which can be saved and loaded via .osg data file. - o Fixed bugs in osg::FieldReaderIterator & osg::GeoSet related to the - osg::FieldReaderIterator::matchSequence() method, detected when - implementing string descripters IO. - o Modified osg::Light so its derives from osg::Object. - o Added osg::Matrix::preScale(),postScale() methods. - o Added methods to osgUtil::CameraManipulator. - o Added osgUtil::GUIEventAdapter::time() to log the time of an event. - o Rewrote osgUtil::GUIUpdateState so it now based on virtual functions. - o Implementated trackball functionality in osgUtil::TrackballManipulator. - o Ported sgv over to use new osgUtil::CameraManipulator rather than - old trackball functionality, removed original trackball code. - o Changed the frame delay in sgv to default to off, pressing '-' - turns the frame delay on, then successively slow sgv down, pressing - '+' reduces the frame delay again until it turns off as before. - o Added matrix multiplication methods into osg::Camera, and added - method for calculating the side vector of the camera. - o Added methods to osgUtil::CameraManipulator to extend the - functionality which can be exposed to users of a generic camera - maniupluator. - o Added osgUtil::RenderVisitor::setLookAt(const Camera&) method - to make it convinient to use camera's with the render visitor. - o From Don, added Unix Makefile support for make install, instlinks, - home and automatic detection of OS type. Changed target lib directory - for loader plug-in to lib/OSGLoaders. - o Added /usr/lib{32}/OSGLoaders DSO search path for and to prepend - file name with "OSGLoaders/" if the standard search fails. - o Renamed osgUtil::GUIEventAdaptor to osgUtil::GUIEventAdapter. - o Renamed osg::RP<> to osg::ref_ptr<> to make it clearer its - usage and to be more consistent with STL's auto_ptr<>. - o Added osgUtil::CompileGeoSetsVisitor, original existed in sgv. - o Changed the osg::GeoSet::compile() method so that it calls - the GeoSet's GeoState apply method before creating the - OpenGL Display List. Note, the state is still NOT compiled - into the Display List. This improves performance significantly - when running the program remotely. - o Cleaned up the methods in osgUtil::CameraManipulator. - o Added support for returning intersection normals from - osgUtil::IntersectVisitor. - -20th October 2000 - osg_src-0.8-24.tar.gz - - o With assistance for Simon Cooke and Brede Johansen added support - for relative include, lib and bin paths into the VisualStudio - workspace files. - o Changed the link to glut from glut.lib to glut32.lib in VisualStudio - workspace files. - o Updated the root READE to reflect the simplified Windows compilation. - o Added support for osg::GeoState into osg::Scene. - o Added osg::Quat::get(Matrix&) & osg::Quat::set(Matrix&) into osg::Quat, - submission from Brede Johansen, orginal source from gamasutra.com. - o Fixed crash in osgUtil::RenderVisitor::reset(), caused by an - unguarded ptr->unref(). - o Added -Wall to Linux makedefs, and fixed resultant warnings. - o Added preliminary interfaces to osgUtil::GUIEventAdaptor, - osgUtil::GUIUpdateState and base class osgUtil::CameraManipulator. - -14th October 2000 - osg_src-0.8-23.tar.gz - - o Updated the root README file to mention the Data download, - the dependancies (i.e GLUT) and slightly clearer Win32 - instructions. - o Added == operator into osg::Vec2, osg::Vec3 and osg::Vec4. - o Removed float* and const float* conversion operators from - osg::Vec2, osg::Vec3 and osg::Vec4. - o Added Neil Salter's osgUtil work on camera manipulators into - the osg distribution under include/osgUtil and src/osgUtil and - moved the original src directory to src/osg. Modified Linux - and IRIX makefile to account for new library and structure. - o Moved osgUtil::Camera into osg::Camera. - o Moved osg::RenderVisitor and osg::IntersectVisitor into - osgUtil:: RenderVisitor and osgUtil::IntersectVisitor. - o Added osgUtil/Export into osgUtil to handle DLL's under Windows. - o Modified Viewer.cpp to take account of the new osgUtil - library and placement of RenderVisitor and IntersectVisitor. - -7th October 2000 - osg_src-0.8-22.tar.gz - - o Fixed crash under Windows when activating the osg::IntersectVisitor - in the scene graph viewer sgv. Bug appears to be an MS Visual C++ - bug when using a std::multiset iterator and combining std::map and - std::multiset. Replacing the later by a std::vector has curred the - problem, but also required an explicit sort on the vector in - osg::IteratorVisitor::intersect() to achieve the desired functionality. - o Fixed the use of gluUnproject() in Viewer.cpp so that it properly - resolved the difference in window coordinates between GLUT mouse - position which origin is top left, and OpenGL which is bottom left. - This fixed picking problems apparent under previous release. - o Cleaned up the intersection messages and added timing code to report - the length of time required for the osg::IntersectVisitor to traverse - the scene. - o Added '-OPT:Olimit=0' compile flag to IRIX makedefs to allow large - methods, such as the osg::for_each_triangle() template function, - to be optimised. - o Streamlined the intersect code a little, improving performance by - around 20% over previous release. - - -5th October 2000 - osg_src-0.8-21.tar.gz - - o Added support for shooting a ray through the scene in Viewer.cpp, - by pressing 'i' a ray is shot from the mouse position projected onto - the near and far plane into the scene reporting back the hit objects, - uses the new osg::IntersectVisitor. Note, results are not 100% - reliable yet, to be worked on. - o Completed first iteration of osg::IntersectVisitor. - Visitor allows the intersection of specified segment with the scene, - reporting back node path to intersected geoset's and intersection - point and object to world transformation. - o Added templated function osg::for_each_triangle() to include/osg/GeoSet - which allows a functor to iterated through all triangles within a - osg::GeoSet. The function decomposses quads and polygons into triangles. - o Added osg::Node::getParent(), getParents() and getNumParents() to - osg::Node to allow public access to parent list. - o Added more doc++ comments to osg::Node & osg::Object. - -21st September 2000 - osg_src-0.8-20.tar.gz - - o Added new osg::Seg class for representing a single line segment, - providing methods for intersecting with BoundingSpheres, BoundingBoxes - and triangles(not implemented yet), and for transforming the segment. - Typical use is for ray based intersections of the scene. - o Added the beginnings of a new osg::IntersectVisitor for traversing - a scene to find the intersection of attached osg::Seg's with osg::GeoSet's. - osg::Seg and osg::IntersectVisitor should be completed for the next release. - o Added !operator to osg::RP<> and made osg::RP<>::get() const. - o Moved osg::BoundingBox from osg/Types to its own osg/BoundingBox - and added default constructor which initializes it to an invalid - bounding box (by setting xMaxxMax and other useful methods for - accessing and updating the bounding box. Changed the internal - representation from eight floats to two osg::Vec3 one each for - min and max values. - o Moved osg::BoundingSphere from osg/Types to its own osg/BoundingSphere - and added default constructor which initializes it to an invalid - bounding sphere (by setting radius<0), added isValid() method which - returns true if radius is zero or positive and other useful methods - for accessing and updating the bounding sphere. - o Modified osg::Node so that getBound() return a reference to the - internal node's BoundingSphere (which could be invalid), rather - than the previous version which required the passing of BoundingSphere - which was written to if there was a valid bounding box. This - new implementation is more efficient (less copying of data) and more - convenient to work with. - o Added culling active flags into osg::RenderVisitor and Viewer.cpp, - to allow view frustum and small feature culling to be switched on - and off at run-time, using 'C' and 'c' to toggle each culling technique - repsectively. - - -15th September 2000 - osg_src-0.8-19.tar.gz - - o Added osg::RenderVisitor::setTransparencySortMode() to allow two - modes of depth sorting the transparency bin - the original - implementation is set with LOOK_VECTOR_DISTANCE and new - implementation OBJECT_EYE_POINT_DISTANCE. The osg::RenderVisitor::apply - methods have been modified to support both modes. The later produces - better results when rendering billboards such a trees. - o Added osg::RenderVisitor::calcNearFar(double& near,double& far), to - be called after the cull traversal, which goes through the resultant - opaque and transparent binds for their depth range. Returns false - if the bins are empty and near and far planes cannot be set, true on - success. The near and far plane can then be used when setting OpenGL's - near and far planes. The near plane is return as is and may be zero or - negative and therefore will need to be clamped by the calling function - if the using gluPerpsective() when setting up the OpenGL projection - matrix. This clamping will not be required when use gluOrtho(). - o Viewing.cpp has been modified to support the new calcNearFar method, - and does the required clamping to capture invalid values. This has - solved problems with Z fighting which existed before on models such - as Tux_rocket.osg. - o Added project file VisualStudio/libFly/libFly.dsp to support the .fly - loader plug-in. Modified several of the .cpp & .h files in - Loaders/fly to enable compilation under Win32 and to remove the - resulting 'double to float conversion' warnings under Win32. - o Improved support for plug-ins under Win32 by adding the environmental - variable PATH to the search path used for located the required .dll. - o Modified osg::Registry::createLibraryNameForExt so that under Win32 - the when linking to the debug build of the osg library (osgd.dll) - the debug build of the plug-in is also sought (for instance osg_flyd.dll). - When using the release build of the osg library (osg.dll) it will - default to using the release build of the plug-in (i.e. osg_fly.dll). - Mixing debug and release builds under Win32 causes problems with - the osg::Registry - producing two or more versions of the singleton! - This is a appears to be MS linker bug as its does not resolve the symbols - correctly between debug and release builds **!! - o To README added example autoexect.bat extract for a helping Windows - users getting up and running. - -7th September 2000 - osg_src-0.8-18.tar.gz - - o Implemented a parent list for osg::Node to allow nodes to keep - track of their parents. The links to their parents are automatically - managed osg::Group::addChild() and removeChild() and destructor. - o Added osg::Node::ascend(NodeVisitor&) which traverses the nodes - parent list applying the node visitor to each node in turn. This - is equivalent to osg::Node::traverse(NodeVisitor&), but typically - won't need to be overridden like traverse() is. - o Added support for parent traversal into osg::NodeVisitor so that - scenes can be traversed upwards as well as the traditional top - down traversal. This is useful for propagating changes of leaf - and internal nodes upto their parents which enclose them. - o Added osg::Node::dirtyBound() method which set the _bound_computed - flag to zero so that the next osg::getBound() is forced to recompute - the bounding sphere. - o Added support into osg::DCS for calling dirtyBound() recursively - up the nodes parent paths. This fixes the report view frustum - culling bug when viewing Torus.osg. - o Changed the #define is osg::Texture to enum TextureMode. - o Removed the SGTEX_ prefix from osg::Texture::TextureMode's. - o Removed the SGSTATE_ prefix from osg::GeoState::AttributeType - and osg::GeoState::AttributeType. - -4th September 2000 - osg_src-0.8-17.tar.gz - - o Changed osg::Sequence so it derives from osg::Group rather than - osg::Switch. - o Improved the support for pfSwith in the Performer converter pf2osg. - o Changed osg::Node so that the node name _name is now a std::string - rather than a C style char* string. This clears up a problem with - osg:::Node::setName which was erronously handling the freeing of mememory. - o Changed Loader/osg2pf.cpp and Viewier/Viewer.cpp inlight of the - change to std::string name in osg::Node. - o Fixed (again?!) compilation problem on Irix (missing osg:: in - Loaders/osg2pf.) - o Fixed a bug in Viewer.cpp related to loading multiple files, which - resulted in sgv viewing an empty model. - - -3rd September 2000 - osg_src-0.8-16.tar.gz - - o Fixed compilation problem on Irix (missing osg:: in Loaders/osg2pf.) - o Basic Implemention of small feature culling in osg::RenderVisitor, based - on culling objects with small screen size projected into the - viewport. - o Added support for Don Burns real-time frame schedualer into sgv. - To compile the viewer with Don's library RTfs use the - Viewer/Makefile.rtfs which links with the appropriate libraries - and define's SGV_USE_RTFS which is now used in Viewer.cpp to - utilise the frame rate schedualing. - o Changed osg::Light::init() so that it set the internal variables - to predefined constants rather than capturing the values from - the current OpenGL state as done previously. The previous versions - of osg::Light needed to be constructed in a valid current context. - The capturing of the current OpenGL light state can now done with - a new method osg::Light::captureLightState(). - o Added osg::Image::scaleImage(int s,int t,int r) which uses - gluScaleImage to scale up/down the image. Useful for scaling down - images for graphics cards which can not handle large images, such - as the Voodoo1,2 & 3. - - -27th August 2000 - osg_src-0.8-15.tar.gz - - o Implemented osg::Switch node with similar functionality to performer, - allowing all, none or a single child to be selected. - o From Graeme, ostream << operator's added to osg::Vec2/3/4 and osg::Quat. - o From Graeme, Added osg::Qauat::makeRot which creates a rotation Quat - which will rotate vec1 to vec2. - o Fixed some of the /// comments on osg::Quat so that doc++ handles it - better as it doesn't seem to like multi-line usage of ///. - o Fixed compilation problem on Windows with GeoSet.cpp - required - the inclusion of to handle the use of FLT_MAX. - -25th August 2000 - osg_src-0.8-14.tar.gz - - o Implemented basic view frustum in the render visitor. - Performance is now pretty close to Performer on Performer - town on the Onyx2. - o Modified the iostream includes so that the .h versions - can be included by defining OSG_USE_IO_DOT_H, or by default - includes the standard C++ version without the .h. - - -21st August 2000 - osg_src-0.8-13.tar.gz - - o Removed old converter code in OSG.cpp as its is now enterirly replaced - by functionality in osg::Registry and osg::DynamicLibrary. - o Added support for '/' and '*' keys into sgv for altering the LOD bias. - o Added support for '?' key into sgv for printing out help. - o Added support for 'o' key into sgv for output scene to "saved_model.osg". - o Small improvements to osg2pf, now can handle normals. - o Added osg::GeoState::getMode and osg::GeoState::getAttribute() methods. - o Fixed compilation problem under Irix in sgv.cpp. - o Fixed compilation problems under Windows. - o Added new models Data/esprit.osg and Data/paraglider.osg. - o Re-exported Cow.osg, Tux.osg and Tux_rocket.osg from Performer, - correcting artifacts relating to state inheritance in the previous - .osg models. - o Removed Loaders/osg as it was only there to illustrate how to write and - reader/writer library (as loading functionalilty is is already built - into libosg.so.) Loaders/fly and Loaders/vnf both serve the purpose - of illustrating read/writer functionality, making Loaders/osg redundent. - -17th August 2000 - osg_src-0.8-12.tar.gz - - o Fixed a bug with the CompileGeoSets visitor in Viewer.cpp where - the visitor was not using the new traversal conventions. The - bug ment that 0.8-11 would have only compiled OpenGL display list - for the first child of an LOD, Switch and Sequence and leave the - rest to be rendered without display lists. This fix now allows - all osg::GeoSet to be visited and display lists compiled - which - should improve performance on systems where display list are - important. - o Implemented a *very* basic view frustum culling to get a handle - on the potential performance improvements. I've added the ability - cull objects wholely behind the eye point. This is clearly much - less powerful at culling than proper view frustum culling but is - much quicker to implement. Performance improvement is _non_existant_ - through to *AMAZING*. On lowly PI233 & TNT Linux box I'm now - getting 5 frames a sec when viewering the whole model, through - to 6-8 frames a sec looking close up to the town to 40-50 frames - when looking at the out-lying farms and mountains. Full view - frustum culling promises even better results! - -16th August 2000 - osg_src_0.8-11.tar.gz - - o Completed basic LOD functionality in osg:LOD and osg::RenderVisitor. - o Modified Performer to OSG converter to handle LOD's. - o Added a templated function write out arrays of data to osg::Output, - while enable multiple values to written out on each line, defaulting - to 10 values per line. - o Modified osg::GeoSet to use enabling duplicated code to be removed - and the .osg file format to be more compact virtual of the multiple - values values per line. - o Added the ablity to chain osg::NodeVisitor's together to enable - user defined traversers to be used in preferences to the standard - osg::Node::traverse(). - o Added a traversal mode to osg::NodeVisitor to enable osg::Node::traverse() - to distingush whether to traverse all children or only those which are - active such as when traversing a switch or sequence. - -10th August 2000 - osg_src_0.8-10.tar.gz - - o Further work of the OSG to Performer converter osg2pf. Can now - convert basic geometry. - o Fixed the osg::Billboard::computeBound() so it accounts for the - billboard positions correctly. - o Fixed a memory deallocation problem in RenderVisitor which caused - a serious memory leak which would eventually grind the system to - a halt on big models. - o Added support for a global osg::GeoState into Viewer.cpp and - osg::GeoState, also add the ability to overide local state modes - with the global state, or inherit the local state from the - global state. This enables the sgv keys 't' and 'l' to work - as would as one would expect. - o Created a new method osg::GeoState::apply(GeoState* global,GeoState* prev) - which takes the previously applied GeoState and then only applies the - differences. This is crude step to mimic the pushState and popState in - Performer's pfState class - but does achieve the lazy state updating. This - just a short term step, but does give some healthy performance improvements - - the old way produced a draw time of ~42ms on Performer town, with - the new lazy updating of state the draw time is ~25ms (on a Onyx2 IR.) - This is the about same draw time as Perfly when culling is - switched off. Enabling culling in Perfly more than halves the - draw time. - o Modified osg::Billboard::calcTransform() & calcRotation() to do the - hand coded maths calculations rather than using generic osg::Matrix - operations to do it. This has cut the cull traversal down for 16ms to - 12ms. Combined with the new lazy state updating frame rates on - Performer town now hits 24 frames a second. - o Added data access methods to osg::GeoSet and osg::Referenced. - -7th August 2000 - osg_src-0.8-09.tar.gz - - o Added some temporary timing code to Viewer to reveal rendering - bottle necks. - o Modified osg::RenderVisitor so it handles osg::Billboards more - efficiently by storing the inverse matrix stack in sync with the - current matrix stack. - o Changed Make/makedefs.linux and Make/makedefs.irix to use -O2 - instead of the previous -g setting. This speeds up the cull - traversal by 2-3 times. - -5th August 2000 - osg_src-0.8-08.tar.gz - - o Fixed build problems under Windows. - o Added basic support for pfLOD,pfSwitch and pfSequence into pf2osg. - o Implemented osg::Switch and osg::LOD to just traverse their first - child rather than all their children as osg::Group does. This is - a temporary measure to get round the lack of full implementations - of osg::Switch and osg::LOD. - o Added osg::Sequence basic interface, core functionality remains - to be implemented. - -3rd August 2000 - osg_src-0.8-07.tar.gz - - o Added osg/FileNameUtils which is a collection of useful functions - for parsing filenames. - o Further work on the Performer converter pf2osg, now can load - most models from the Performer distribution, including Performer - town. Performance with sgv compares well with perfly on most - models but Performer town is significantly slower than with - perfly (5fps vs 50fps on a Onyx2 IR). It looks like the OSG - current simplicistic state management needs a revamp to get - performance up where it belongs... This is will be done in - the near future. - o Added support for flat shaded primtives into osg::GeoSet as per - pfGeoSet, this was required to bring across several key peformer - models such as Performer town. - o Added bare bones of an OSG to Performer conversion program, - osg2pf under Loaders/osg2pf. - o Modified osg::Node so that it saves and loads its name if it has - one. - -28th July 2000 - osg-0.8-06.tar.gz - - o Futher work on Performer converter pf2osg. - o Bug fixes to osg::GeoSet revealled by the Performer work. - -26th July 2000 - osg-0.8-05.tar.gz - - o Added support for osg::Object sharing in the reading and writing of - the .osg format. This enables a MASSIVE speed up on models which - can share GeoState's. Expect order of magnitude of speed up on - models such as /usr/share/Performer/data/iris.flt (from the Performer - distribution and converted using the new pf2osg converter. - o Added support of pfObject sharing in the Performer converter, taking - advantage on the above. - o Bug fixes to the writing of osg::GeoSet's to .osg files. - -19th July 2000 - osg-0.8-04.tar.gz - - o Due to problems with integrating Performer as plug-in on Linux, - have converted it to work as a conversion program - now called - pf2osg and can be found in Loaders/pfb. - -5th July 2000 - osg-0.8-03.tar.gz - - o Bugs fixes to support in osg::GeoSet for normal, colour - and texture coordinate binding, and modified the .osg - ascii format to reflect this. - o Added glMaterialColor() to Viewer/Viewer.cpp to enable - colors to be activated on osg::GeoSet's. Without it - untextured models would turn only be coloured by - current glMaterial rather than the current glColor. - o Moved the compilation of the display lists from the init - stage into the draw function, as the requests to glGenLists - was failing within the Viewing::init's glContext. glDisplay - lists are now created correctly with a nice improvement in - speed :-) - -4th July 2000 - osg-0.8-02.tar.gz - - o new version numbering scheme to be consistent with the - RedHat scheme - ie. ProjectName-Version-Release. The - current alpah release has been assigned as version 0.8, - and the release number 02 reflecting this is the second - release under the new scheme (alot can happen in day:-) - o Support for RedHat RPM distributions has been added, and - can be found in OpenSceneGraph-0.8/dist/RedHatRPM. - o Further work on the Peformer loader, which can now read - in pfGroup,pfDCS,pfGeode, pfGeoSet and small bit of - pfGeoState/pfMaterial. - o Improved the support in osg::GeoSet for normal, colour - and texture coordinate binding, and modified the .osg - ascii format to reflect this. - o All .osg ascii files in Data were updated to reflect - the new binding information. - -3rd July 2000 - osg_src_20000703.tar.gz - - o Changed the return types for several of the operators in osg::Vec2/3/4. - o Further work on osg::Billboard. - o Further work on Loader/pfb. - -27th June 2000 - osg_src_20000627.tar.gz - - o Added make snapsrc and make snapdata to the root Makefile to - allow smaller source only and data only distributions. - o Completed Billboard::Mode::AXIAL_ROT functionalilty which fits - the case of billboarded trees, POINT_ROT_EYE and POINT_ROT_WORLD - left to complete. - o Removed the reference to Image library in pfb Makefile which caused - the build of the Performer loader to break under linux. - -26th June 2000 - osg_20000626.tar.gz - - o Added the Don Burns' hang gliding flight simulator database - loader example into distribtion under Loader/fly. The data - file used to select which components of the database to load - has been added as Data/flight_park.fly. The scene can be - loaded in the standard way i.e. "sgv flight_park.fly" - o Created the beginings of a Performer .pfb loader. The work is - ongoing, the first signs of life can be found in Loaders/pfb. - o Continued work on osg::Registry related to dynamic loading - of Reader/Writer plug-ins, its now works as intended! - o Continued work on the new osg::Billboard class, completing the - class interface and saving and loading functions. Calculation - of the rotation matrix used to orientate the billboard towards - the eye point is final element left to implement - coming soon! - o Added support for osg::Billboard into osg::RenderVisitor. - o Fixed a bug in osg::RenderVisitor::pushMatrix() relating to - pre/post multiplication of matrices. - o Changed the * operator in osg::Matrix to return a osg::Matrix - rather than a osg::Matrix*. - -20th June 2000 - osg_20000620.tar.gz - - o Fixed Irix compile problems related to missging std:: from use of - std library strings in Loaders/Osg/osg.cpp on Irix. - o Fixed crash in sgv due to Loaders/Osg/osg.cpp using the same static - variable name as src/ReaderWriterOSG.cpp. - o Removed temporary code (from osg_20000619) in Viewer.cpp which was - used for testing loading and closing at runtime of dynamic libraries - (plug-ins). - -19th June 2000 - osg_20000619.tar.gz - - o New osg::Vec2, Vec3 and Vec4 have been written and placed in individual - header files, replacing original typdef float[] versions in osg/Types. - The new Vec classes now add a range maths operations with them such - as multiplication, dot and cross product. - o New osg::DynamicLibrary class has been written to encapsulate the loading - and closing of dynamic libraries across different platforms with one - consistent interface. - o osg::DynamicLibrary support has been added to osg::Registry, - not fully implemented yet, but will soon replace the old style dso - support seen in osg/OSG.cpp. - o osg::Registry, osg::RegisterReaderWriterProxy, - osg::RegisterObjectProxy, have all been modified to support the - removal of automatically deleted Prototypes and ReaderWriters from - the Registry. Automatic deletion occurs when a dynamic library is - closed - the proxies now deregister themselves when this happens - ensuring that these deleted objects are never referenced. - This facility enables reader/writer plug-ins to be loaded when - needed then closed to free up the space again, all at run-time. - o Renamed include/osg/ReferencedPointer to include/osg/Referenced to - reflect the main class it defines. - -6th June 20000 - osg_20000606.tar.gz - - o Modified the root Makefile so that it can target linux or irix - compilation directly by copying the appropriate makerules/makedefs. - README now reflects the simplified make. - o Changed the names of Make/makedefs.sgi and Make/makedefs.sgi - to Make/makedefs.irix and Make/makedefs.irix to make it more - consistent and allow for sgi's new Linux boxes:-) - -29th May 20000 - osg_20000529.tar.gz - - o Added clean up of 'so_locations' & 'ii_files' into sgi build rules. - o Fixed compilation problems due to shortcomming of MicroSoft C++ 6.0 - when handling static const's declared within the scope of class. - Have changed to #define, less C++ but works... - -28th May 20000 - osg_20000528.tar.gz - - o Moved the doc directory to docs to be consistent with other Open Source - software projects. - o Created osg::Billboard class, currently only 1/3rd complete. - o Implemented the .osg ASCCII file read and write methods for osg::DCS. - o Moved defines & enums which were in the osg global namespace into the - classes they are associated (this has now broken the Win32 - - currently investigating.) - o Removed the virtual int osg::Node::classType() function as its - function is better served by RTTI such as dynamic_cast<>. - o Added automatic register proxy to osg::Scene so it properly - registers itself with osg::Registry. - o Added shell of the osg::LOD and osg::Switch classes which will - be implemented fully at a later date. - o Changed a cout to printf in src/Registry.cpp to fix a dumb - crash under Win32 - MicroSoft still can't write decent compilers... - o Modified several library class so that they use the convention of - _variableName for class member variables, these classes were - developed before the the above convention was adopted as standard. - o Fixed bug in Geoset_osg.cpp related to GL Display Lists. - o Merged file_p.cpp into file.cpp files and removed file_p.cpp - exept for GeoSet_p.cpp which was kepth seperate due to its size. - GeoSet_p.cpp has been renamed GeoSet_ogl.cpp to reflect its primary - function. - -25th May 2000 - osg_20000525.tar.gz - - o Changed library header files in include/osg/ from C style .h - to the new Standard C++ style without suffix. For instance - include/osg/Node.h has become include/osg/Node. - o Moved all osg::Branch functionality to osg::Group, and removed - osg::Branch. - o Changes to src/*.cpp, Viewer/* and Loaders/Osg/* to account for - the above header and osg::Group changs. - o Fixed some inappropriate permission in the data directory. - -22nd May 2000 - osg_20000522.tar.gz - - o Added to the FAQ. - o Added more functionality to the osg::Matrix. - o Incorportated makedefs.sgi fix to handle .cpp extensions. - -16th May 2000 - osg_20000516.tar.gz - - o Added more doc++ comments to headers file. - -14th May 2000 - osg_20000514.tar.gz - - o moved .cxx extensions to .cpp. - o removed sg prefix from all library files and class as they were - redudent virtue of the new osg namespace. - o changed the include/OSG to include/osg to keep it consistent with - library and namespace capitilization. - o added osg namespace it the remaining classes which were missed the - first time round! - o add first iteration of the FAQ. - o fixed the permission of files - many incorrectly had executable - permissions. - -9th May 2000 - osg_20000509.tar.gz - - o reduced the STL platform specific #ifdef's. - o remove using namespace from all header files, so not to pollute user space. - -8th May 2000 - osg_20000508.tar.gz - - o osg namespace implemented. - -6th May 2000 - osg_20000506.tar.gz - - o Added CHANGES list for logging changes from version to version. - o Added TODO list for list desired functionality and development activity. - o Beautified the code using bcpp. - -2nd May 2000 - osg_20000502.tar.gz - - Release first alpha version, compiles under Windows95, Linux and Irix, - distribtion includes : - - o unix makefiles for Linux, Irix and Win32 via MS VC++6.0 workspace files. - o basic GLUT based scene graph viewer - sgv. - o basic Scene Graph nodes, such as sgBranch, sgGeode. - o basic Drawing primitive and state containers GeoSet and GeoState. - o basic Maths/Geometry classes such as sgMatrix, sgVec2/3/4. - o refence counting and smart pointers via sgReferenced and sgRP<> classes. - o support for automatic object registration with sgRegistry. - o support for automatic reader writer plug-ins with sgReaderWriter/sgRegistry. - o input parsing classes sgField,sgFieldReader. - o .osg ascii file reader/writer. - o .rgb/.rgba (sgi format) images reader. - o automatically generated documention from header files using doc++. diff --git a/FAQ b/FAQ deleted file mode 100644 index 77ff00798..000000000 --- a/FAQ +++ /dev/null @@ -1,340 +0,0 @@ -o API's feature set - - - scene graph based? - - The scene graph is arranged with geometry nodes (osg::Geode's) as leaf - nodes and internal nodes such as osg::DCS's/Groups/LOD etc for position the - geometry objects within the scene and organizing scene behavior. - - - culling techniques? - - Currently view frustum culling, small feature culling, and OpenGL's - native backface culling. The OSG has been designed so it can be - easily extended, so if you have a favored culling technique it - won't be difficult to utilize it in the OSG. - - - terrain / indoor support - - The osg::GeoSet encapsulates all the main OpenGL drawing primitive - so its possible to represent pretty well anything you can with straight - OpenGL including terrain and room objects and characters. More - details below. - - However, if you wish to take advantage of specific optimization such - as adaptive meshing such as ROAM, or procedural culling such as when - entering a room or when racing round a track then the OSG's could be - easily extend to achieve this. This is demonstrated in VTP Enviro - which is is based on the OSG, extended osg::GeoSet to provide CLOD - for terrain. - - These features are not currently on the todo list for version 1.0 as - we intend to keep the OSG focused on the core scene graph. However, - you're more than welcome to take on the challenge yourself. - - - etc, etc (the viz sim capabilities of it) - - Key features of OpenGL are encapsulated such as Points, Lines, Triangle - and Quad Meshed primitives in osg::GeoSet, and Textures, Projected & - Environmental Textures, Transparency etc. in osg::GeoState. - - The osgUtil::RenderVisitor currently implements the cull/draw traversal - placing objects to be rendered in either a transparency bin or a - opaque bin. The transparent bin is depth sorting w.r.t to the eye point - to ensure transparent objects appear correctly. The opaque bin - is sorted w.r.t to their osg::GeoState to minimize OpenGL state changes - to avoid cache misses in the rendering pipeline. - - osg::Billboards can be used for rendering trees, or even particle - effects such a smoke, snow, explosions etc. - - -o What is the design philosophy behind the OSG. - - (An extract from an email from Don Burns beginnings of the OSG.) - - Thought I'd jot a couple of thoughts down regarding OSG. A full - simulation package should really be made up of four parts: - - - Scene Graph - - Traversers (App, Cull, Draw) - - An MP harness - - Channel configuration - - The Scene Graph is just that. It manages a tree structure of different - node types that allow management over the behavior of graphical - objects. The Traversers allow us to use the scene graph to render - scenes in the most efficient manner, as well as providing maximum - functionality for a real-time simulation. The stages are (taken from - the Performer approach) : - - App - This is the application part of the simulation that interfaces - with the outside world, that is control devices, pilot input, animation - engines, effects, event engines, etc, etc (there's much more). This is - also the stage that determines what the viewpoint is and consequently - the viewing frustum. App does a full traversal of the scene graph, - calling callbacks that may be attached to nodes. - - Cull - This stage takes the information that has been updated by App - (mainly the viewing frustum) and effects a cull of all objects, based on - trivial accept or reject based on whether the bounds are contained in - the viewing frustum or not. Every node should have a bound associated - with it reflecting the bounds of all children under it. This way, Cull - can quickly prune a large section of the scene graph, during traversal. - It also implies that scene graphs should be organized spatially, such - that groups of objects that are close to each other should also be close - to each other on the scene graph. During traversal, Cull gathers all - leaf nodes that wind up being trivially accepted and creates a display - list of geosets with their geostates. These are then sorted by - geostate, binning things like states that contain transparencies, and - need to be sorted back to front and drawn last. Cull can also perform - accepts/rejects of geosets based on their bounding boxes. Note that - geosets have bounding boxes and geodes have bounding spheres. This for - efficiency. - - Cull also needs to gather nodes that would cause any glcommands, such as - SCSs and DCSs which create transforms. - - Draw- This does not traverse the scene graph, but rather, traverses the - resultant display list produced by Cull. Draw is to be as brain-dead as - possible since it has the bulk of compute time reserved for actually - drawing. (Unless, of course you have the luxury of an SGI machine that - does all transforms down in the graphics hardware... perhaps NV10 will - help a bit on this end). - - The MP harness is a set of management routines for doing - multiprocessing. Ideally, you want to be able to run App, Cull and Draw - as separate processes on their own dedicated processors. Further, you - want to run one complete Draw process for every graphics subsystem that - you will be rendering to. In our case, we can assume that most of our - users will be on single processor PC's, in which case we stand to - benefit from Cull's capability to prune the scene graph, but not much - else. However, this day and age four processor PC's are not that - uncommon, and Linux does have pretty good support for this. - - The MP issues include, process (or thread) management and - synchronization. Performer has several MP models. We also need to - consider that this software will probably run on separate PCs - altogether, so that the SGI concept of a single machine with multiple - rendering pipes needs to be extended to include multiple PC's, which - need to be synchronized across Ethernet or something. - - Note that each Draw process needs its own Cull process, but that there - can be only one App for multiple Cull/Draw pairs. This model might - extend quite nicely to a multiple PC environment, in which each PC runs - a Cull/Draw pair, and one central machine runs App, broadcasting the - viewing frustum for each viewing channel and synchronizing all. - - Lastly, channel configuration. Currently we now do this by opening a - window, choosing a visual, size, etc. It is often desirable to have - multiple channels (or viewports) for one simulator. There is a whole - package of routines that can be written to set this up and initialize - it. - - That all being said, as I write this my feeling is that we should limit - the scope of OSG to that of only the first item above. That is, Open - Scene Graph will be a Scene Graph and nothing more. Limiting the scope - will allow us to concentrate on quality and robust functionality. This - is one of the best software steps that was taken during the design of - OpenGL, in my opinion. I recall Iris GL and all of its end-all, be-all - approach, becoming very convoluted and confusing as it tried to be a - windowing system, an input device interface, an imaging package and so - forth. Once the spec defined it as being a rendering API and nothing - more, the picture got much clearer. - - Once OSG is in place and it becomes useful, we can then write the - traversers, etc, but not limit our version of traversers. My thinking - is that we can publish examples and documents on How to Write an - OSG Traverser, or some such and sit back and watch the world develop - the best. This will also leave us flexible to use the OSG as a protocol - for doing 3D on the web, or whatever. We can write the viewers, - traversers, MP harnesses, and channel config software as separate - packages. - - Further, I think this will help in the acceptability of OSG as a good - standard scene graph. One of Performer's biggest weaknesses is that it - is a huge API and the learning curve is so steep that many but the most - hearty are put off by it. We can make the Scene Graph that anyone can - use. - - -o Would the OSG be a good candidate for terrain visualization. - - Terrain is one of the great candidates for scene graphs. Two management - schemes will help you out : Level Of Detail management and Visibility - Culling. - - LOD management consists of defining your visual database (including your - terrain) with differing levels of detail. The further away you are the - less detail your terrain needs to have and you can cut down on the amount - of polygons required to render it. - - You can also do this with objects in your scene. For example from 10 - meters, you'd like a barn to have all the details present, but from 1000 - meters, you could probably get away with the lack of the silo, windows and - detail around the doors. From 10000 meters it could just as easily be a - square red box and at 15000 meters it might as well not be there since - its representation may be less than a pixel on the screen. - - Visibility Culling is also important to high performance rendering, - especially if your visual database is large. All nodes on the scene graph - have a bounding sphere. Each parent node has a bounding sphere that - encompasses all of its children. The Cull process traverses the scene - graph and tests each node for whether any part of it is in the current - viewing frustum. If not it throws it away. - - With this in mind, you can arrange your database to make best use of - culling. For example, if you have a lot of trees on your terrain. Rather - than having one Group node that contains all trees (in which case Cull - would have to test every tree for visibility), you arrange your trees in - a hierarchical fashion, such that trees are group by geographical - location. Then neighboring groups of trees can be parented together, - groups of groups can be parented together and so forth. This way Cull can - visit a high level node, determine that none of the trees under it are - visible and proceed to test the rest of the scene graph. - - This also works for terrain. Rather than defining one large piece of - terrain, you should break it up into smaller sections. This way, what is - not in the viewing frustum can be discarded and the rendering pipeline - left unbothered by transforming and clipping polygons that would never - appear anyway. - - One of the goals of OSG is to be, again, "Just a scene graph". Which - means that the Cull traversal would not be included as part of the - software. It would be up to the user to provide that, OR, we can add it - as a separate piece outside of the scene graph. We want users to not be - limited to what WE think might be the best cull traversal, but rather - leave it as an exercise to optimize, be creative and/or create specific - cull/draw traversals that best suit your needs. - - One such traversal I can think of is a game in which you are on a track. - At any point on this track you can know exactly what is in view and what - is not. You could do something much more creative with this if you are - not limited to the implementation "hard coded" in the scene graph - software. - -o What are the intended target platforms? - - Any platform which supports OpenGL and Standard C++! - - The real limit being the platforms available to the core developers, - if you have a platform which you need supported and have some time - to contribute please contact us. - - -o What platforms are currently supported? - - The OSG is currently developed under Windows95/98/NT/2000/XP, Linux,Irix, FreeBSD Mac OSX - and Solaris. Platform specific makedefs are provided for Unix, and VisualC++ 6.0 - Workspace files for MS Windows platforms. - - -o I'm wondering when the OSG will be ready for release. - - An alpha version has been available since May 2000. The current - version is very much a work in progress will the API still in flux. - - Once the design converges to a stable API we will issue it as a beta, - depending on the various factors one would hope to have the API nailed - down during early-mid 2002. - - A full release with stable API and implementation will be available in - later half of the summer 2002. - - -o What are the dependencies of the OSG? - - Kept to a minimum by design. The osg scene graph library simply requires OpenGL/Mesa - and compiler support for Standard C++. This means that there is not platform specific - depedancies, and should allow the OSG to be ported easily to new platforms. - - The scene graph viewer sgv depends upon the osg library and GLUT, so should be portable - to any platform which GLUT can be ported to. The viewer can also be compiled with FLTK - using its GLUT compatibility code. - - -o Do you think Open Scene Graph could be a nice replacement for Inventor? - - Depends what your want from your scene graph. If you primary interest - is a visual simulation application then the performance emphasis of the - OSG will be appropriate, if you want to develop a modeling - application and wish to take advantage out of the box UI tools then - Inventor may be better. - - -o What differentiation between the OSG and other OS projects such as OpenRM/ - SGL/OpenSG/DDG Toolkit? - - I have briefly looked both the SGL, DDG and the OpenSG. Both the SGL - are the OpenSG show some uncanny similarities with the OSG, especially - since they all were developed independently. The influence of sgi's Performer, - Inventor and Cosmo3D more than likely providing the starting place for designing - each of these scene graphs. DDG doesn't show quite the same heritage, - and possibly loses a little cleanness of design with it. OpenRM is - an attempt at a Object Orientated scene graph but it C... This is - about a close as I got with it, as IMHO C++ really is currently the best - language for a modern scene graph - - The OSG is also strongly influenced by Performer, this a due to the - application which the OSG was first developed for : a Hang Gliding - Flight simulator which can use either Performer or the OSG for its - scene graph. The OSG does not try to implement the whole of Performer - though, just concentrating of the scene graph to keep the scope in - manageable proportions. The need for the OSG comes about because - Performer is only available on Irix with Linux only happening very - recently, and Performer is closed source of course. - - The OSG also takes advantage of the features of Standard C++ and Design - Patterns to help make the library cleaner and improve its extensibility. - - Many of the current scene graphs, including Inventor and its clones, don't - use STL so end up having define their own container and many common - algorithms. We're glad to say that Standard C++ compilers are now - common enough that we don't have to descend the lowest common denominator - like many older scene graphs. - - The OpenSG design document looks like it describes a very powerful - scene graph design, taking on almost all what Performer tackles today. - However, this will mean that it will be big, and like the Inventor clones - will take *alot* of work to fully implement. If you need all the features - then the OpenSG may well be worth the wait. If you need less features then - the more humble goals of the OSG may well be right for you. - - -o Is there a class diagram for the OSG, or white paper on the projects goals? - - The documentation in the distribution has been generated automatically - using the excellent Open Source tool doc++, which creates class diagrams. - UML diagrams have been generated and can be found in the documentation - directory, along with mind maps on design patterns used in the osg, - and the mission/goals of the osg. - - We haven't written an official white paper on projects goals or a design - overview yet. Knowledge of Performer will help in understanding some of the basics - of design, as will a familiarity with Design Patterns. - - -o Do you need C++ coding support? - - Yes, indeed! Check out the TODO list which comes with the distribution, - and email us with what you fancy contributing to. - - -o Any recommendations for useful programming books to read to help understand - and contribute to the OSG? - - Good practices are surprisingly hard to come by. C and C++ give you so - much rope to hang yourself, but there's few books which really give a - developers the rule book of good coding practices. I found Effective - C++ a refreshing contribution to this end. The Design Patterns book can - be pretty useful as well. - - -o Is there a mailing list? - - Yes indeed, hosted by source forge, so to subscribe head to : - http://sourceforge.net/projects/openscenegraph and follow the - 'Lists' link and follow the instructions. - -o How do I submit my contributions? - - Up till then send your changes, to diff --git a/TODO b/TODO deleted file mode 100644 index b13eae008..000000000 --- a/TODO +++ /dev/null @@ -1,169 +0,0 @@ -OSG TODO List -============= - -Main categories -=============== - -o Core OSG Library - - the core OSG library itself (include/OSG and src/) -o Reader/writer plug-ins - - the reader/writers plug-ins for third party file formats. -o Viewers & Application plug-ins - - osg viewers and plug-ins to third party applications such as Netscape. -o Under development - - listing of TODO items which are currently under developement. -o Work completed - - listing of TODO items which have been done and hence removed - from the above TODO catagories. --- - -o Core OSG Library - ================ - - General - . Header & code documentation/reference guide. - . Programming guide. - . Naming conventions. - . mutli-threading/shared memory support. - - - Maths - . double matrix class. - - - Nodes - . add osg::Sequence for basic animation. - . add osg::Morph for interpolating between geometries. - . add osg::Engine. - . add support for Multi-texturing into osg::GeoSet/osg::GeoState. - . add support for pixel/vertex shaders into osg::GeoSet/osg::GeoState. - . utilise stl vectors for osg::GeoSets? - . add osg::Terrain node. - . add proxy node for lazy loading of nodes, when needed. - . implement visual proximity to assist loading of proxied data - when the view frustum nears an unloaded proxy node, and deleting - of unused proxied data. - . implement support for modified status/lazy evaluation of node data - and observer style pattern. - . manipulator decoration nodes? - . spacial subdivision decoration nodes? - . improved osgUtil:TriStripVisitor to replace NvTriStrip code. - . update of osgText to latest FTGL. - . create osg::Drawable::PrimtiveFunrctor - . support for volume rendering. - . occlusion culling. - . integrated osgEnv. - . implement a osg::CameraRelativeNode for earth sky/HUD's etc. - . thread safety. - . osgMultipipe. - . multi-textureing -> multi-pass support for platforms which do not - support multi-texturing. - . improve tri-intersection code. - . osgParticles - support for particle effects. - . osgAnimation - support for skinning etc. - . osgShader - suppor for shader languages. - . improved impostor implementation - use depth textures? - . clean up multi-bin control. - . osgUtil::MultiSceneView/Multi-channel configuration. - . support for node kits via the plugins mechanism. - . Added ImageGroup's which can be attached to textures for animation. - - - Visitors - . improve state sorting of opaque bins in osg::RenderBin. - . add statistics visitor for logging the stats of the scene graph. - . add OpenGL picking visitor. - - - IO/Plug-in support - . improve the ascii parsing class osg::Field, osg::FieldReader etc. - . add support for file path logging into osg::Input. - . add binary data reading and writing into osg::Input/osg::Output to - support part binary .osg files. - - -o Reader/writer plug-ins - ======================= - - .iv/.wrl Inventor/VRML ascii. - - .dxf Autocads ascii format. - - .dem digital elevation map. - - .d3d? MS's Direct 3D file formats if they have one.. - - 3D Studio plugin to export to .osg. - - Miya plugin to export to .osg. - -o Viewers & Application plug-ins - =============================== - - OSG scene graph viewer - sgv. - . add command line reading for specifying data search paths and data, - -D for data search path, -d for data. - . add command line reading for specifying library search paths and - libraries/plug-ins, -D for library search path, -l for libraries. - - Internet Explorer plug-in. - - .osg to Inventor file plug-in. - - Tutorials example programs. - - -o Under development - ================= - Sign up here if would like to take on a task :-) - - - add osg::Billboard for trees etc. - - Netscape plug-in. - - Mac port. - - tri stripping visitor. - - .obj Alias wavefront's format.(functioning already.) - - .lwo Light Waves's format.(functioning already.) - - .pfb loader for Performer binary files (functioning already.) - - .flt Open Flight format (functioning already.) - - .3ds 3D Studio format (functioning already.) - -o Work completed - ============== - - osg namespace implemented. - - reduce the STL platform specific #ifdef's. - - remove using namespace from all header files, so not to pollute user space. - - remove the sg prefix from sgNode etc, now that the osg namespaces exits. - - FAQ for distribution and web site. - - full maths support in osg::Vec2, osg::Vec3 and osg::Vec4. - - change the osg::Registry to use plug-in RW's on loading a plug-in - instead of the plug-in functions found in sg.cxx. - - add support for removal of plug-ins from osg::Registry, - - add .osg support into DCS node. - - clean up inheritance relationship between osg::Node, osg::Object etc. - - add osg::Switch for handling optional rendering of children. - - add osg::LOD (level of detail) group node for load management. - - add view frustrum culling into osg::RenderVisitor. - - add support for mutliply referenced nodes into osg::Input. - - add a quaternion class. - - improve osg::BoundingBox and osg::BoundingSphere. - - add hit and intersect classes for collision detection. - - add intersect visitor. - - add camera manipualotors for trackball, drive and flight mouse control. - - add compile OpenGL display lists visitor (currently in sgv). - - library version and description functions. - - add support for OpenGL Vertex Array into osg::GeoSet. - - .gif GIF Images! - - .jpg JPEG Images. - - .tiff TIFF Images. - - .png PNG Images. - - .tga TGA Images. - - .pic PIC Images. - - add timing/timestamp class. - - document how to get the OSG compiled and running under all - platforms, Win32 being priority as it's the least obvious. - - .gz (as osgtgz and .tgz) Automatic unzipping of GNU zipped files. - - .zip Automatic unzipping of windows zipped files. - - add osg::State for mainting image of the OpenGL state. - - improve osg::GeoState -> improved version call osg::StateSet. - - create a base class to provide interface to objects which can render, - derive osg::GeoSet from this. - - add support for multi-pass rendering. - - full maths support in osg::Matrix class. - - osg::Plane class. - - add osg::Camera class. - - add osg::EarthSky class for rendering earth and sky backgrounds. - - return error messages of on failed loading/saving. - - .bmp Windows Bitmap files. - - .tar Automatic unpacking of directories and loading of contents. - - add handling of memory of osg::GeoSet's attributes. - - Added tracking of matrix stacks in osg::State. - - improved stereo support. - - improved makefiles. - - improve the node callback mechanism. - - CVS support for when source is made fully public. - - full maths support in osg::Matrix class.