diff --git a/ChangeLog b/ChangeLog index e886868dd..69cb6b546 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,363 @@ +2008-09-18 16:03 +0000 [r8897] robert: + + * Added Serializer wrappers + +2008-09-18 15:50 +0000 [r8896] robert: + + * Moved Serializer header from VPB into osgDB. + +2008-09-18 15:44 +0000 [r8895] robert: + + * Updated wrappers + +2008-09-18 15:18 +0000 [r8892-8893] robert: + + * refactored the getWindows(..) and getContexts(..) methods so that + they produce consistent ordering based on the order Camera/slave + camera ordering. + + * From Mathias Froehlich, "Attached one namespace/scope lookup + problem which shows up on irix." + +2008-09-18 14:48 +0000 [r8891] robert: + + * From Christopher Blaesius, "Soft shadow mapping is basically the + same as hard shadow mapping beside that it uses a different + fragment shader. So for me it makes sense that + osgShadow::SoftShadowMap is derived from osgShadow::ShadowMap, + this makes it easier to maintain the two classes. Additional + SoftShadowMap also provides the same Debug methods as ShadowMap." + +2008-09-18 13:54 +0000 [r8889-8890] robert: + + * Updated wrappers + + * From Alan Dickinson, change methods to virtual. + +2008-09-18 13:18 +0000 [r8888] robert: + + * From John Argentieri, added missing _stripTextureFilePath( false + ) initializer. + +2008-09-18 13:09 +0000 [r8887] robert: + + * From Chris Denham, added missing ccopy of polyOffset in copy + constructor + +2008-09-18 13:05 +0000 [r8886] robert: + + * From Chris Denham, " I think I may have discovered a bug in + osgShadow/ShadowMap.cpp that results in incomplete shadows being + generated. The problem seems to caused by an incorrect + interpretation of the spot light cutoff angle. The valid ranges + for spot cutoff are 0-90 and 180, i.e half the 'field of view' + for the spotlight. Whereas the shadow map code seems to assume + the the spot cutoff is equal to the field of view. This results + in the shadows generated by the spotlight getting clipped at half + the spot cutoff angle. I have fixed this in my copy of + ShadowMap.cpp: =============================== //Original code + from OSG 2.6: if(selectLight->getSpotCutoff() < 180.0f) // + spotlight, then we don't need the bounding box { osg::Vec3 + position(lightpos.x(), lightpos.y(), lightpos.z()); float + spotAngle = selectLight->getSpotCutoff(); + _camera->setProjectionMatrixAsPerspective(spotAngle, 1.0, 0.1, + 1000.0); + _camera->setViewMatrixAsLookAt(position,position+lightDir,osg::Vec3(0.0f,1.0f,0.0f)); + } =============================== // My modifications: float fov + = selectLight->getSpotCutoff() * 2; if(fov < 180.0f) // + spotlight, then we don't need the bounding box { osg::Vec3 + position(lightpos.x(), lightpos.y(), lightpos.z()); + _camera->setProjectionMatrixAsPerspective(fov, 1.0, 0.1, 1000.0); + _camera->setViewMatrixAsLookAt(position,position+lightDir,osg::Vec3(0.0f,1.0f,0.0f)); + } This change seems correct for spot cutoff in the range 0, 90, + but since OpenGL doesn't claim to support cutoffs >90 && <180, + I'm not sure how shadow map should deal with those cases, but + ignoring spot cut off greater than 90 here seems reasonable to + me. " + +2008-09-18 12:57 +0000 [r8885] robert: + + * From Ralf Habacker, "the appended patch fixes the problem + reported on + http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/2008-January/006110.html. + " > Using QOSGWidget - QWidget + osgViewer creating the graphics + context. > > Windows Error #2000: [Screen #0] + GraphicsWindowWin32::setWindow() - Unable > to create OpenGL + rendering context. Reason: The pixel format is invalid. > > > > + And then the following fate error pops up: > > > > The + instruction at "0x014c7ef1" referenced memory at "0x000000a4", + The > memory could not be "read". > > Click on Ok to terminate + the program > > Click on CANCEL to debug the program > > + +2008-09-18 12:50 +0000 [r8884] robert: + + * From Robert Osfield and Christophe Loustaunau, fixes for support + for 16bit and 32bit tiff images + +2008-09-18 10:52 +0000 [r8883] robert: + + * From Mathias Froehlich, "I did some performance test runs with + the development gcc-4.4 version. To make it compiel with future + gcc's we sppear to need the attached missing includes ..." + +2008-09-18 10:49 +0000 [r8882] robert: + + * From Mathieu Marache, "This is an addition for osgSim + reader/writer for the osg ascii file format adding + osgSim::OverlayNode support. " + +2008-09-18 10:39 +0000 [r8880-8881] robert: + + * From Tim Moore, "his submission fixes a bug when the + ModularEmitter and ParticleSystem are in different frames of + reference. Specifically, it supports the case where the + ParticleSystem is not in the world frame. One way this can come + up is if your world coordinate system is Earth-centric; the float + coordinates of particles don't have enough precision to avoid + terrible jitter and other rendering artifacts, so it's convenient + to root the particle systems in a local Z-up coordinate system + that gets moved around from time to time. " Tweak from Robert + Osfield, converted code to use new Drawable::getWorldMatrices + method + + * Improved the constness of parameters the + Node::getWorldMatrices(..) method. Added + Drawable::getWorldMatrices(const Node*) method. + +2008-09-17 20:02 +0000 [r8879] robert: + + * From Rob Bloemkool, "This is a submission for + src/osgPlugins/ogr/ReaderWriterOGR.cpp - adds display of options + when using osgconv --formats. - adds useGroupPerFeature option to + have each feature in a separate group. Usage: OSG_OPTIMIZER=OFF + osgconv -e ogr -O addGroupPerFeature " + +2008-09-17 19:51 +0000 [r8878] robert: + + * From Ewe Woessner, "I looked at the Anaglyphic stereo + implementation in SceneView.cpp and think I spotted some + copy-paste bugs. osg::ColorMask* leftColorMask = + _renderStageLeft->getColorMask(); if (!leftColorMask) { + leftColorMask = new osg::ColorMask(); + _renderStageLeft->setColorMask(leftColorMask); ^^^^ here it said + right, I think this should be Left. } // ensure that right eye + color planes are active. osg::ColorMask* rightColorMask = + _renderStageRight->getColorMask(); ^^^^ similar here, I think + this should be right if (!rightColorMask) { rightColorMask = new + osg::ColorMask(); + _renderStageRight->setColorMask(rightColorMask); } and i further + removed an unnecessary setColorMask." + +2008-09-17 19:25 +0000 [r8877] robert: + + * From Mattias Helsing, CMakeLists.txt changes: "I installed latest + Cmake(2.6.1) on a new machine and got a CMP008 warning from + cmake. This fix set up osg to use the old behaviour which have + worked before. We might set this to NEW but I need to do more + testing first. I'l be able to test this on winxp with msvc80/90 + and ubuntu hardy with gcc-4.2. quote from cmake cvs log policy + CMP0008 to decides how to treat full path libraries that do not + appear to be valid library file names. Such libraries worked by + accident in the VS IDE and Xcode generators with CMake 2.4 and + below." OsgMarcroUtils.cmake changes: "On Philips suggestion + truncated a redundant if/else construction in OsgMacroUtils to + avoid developer warnings in cmake-2.6.1 concerning cmake policy + CMP0008 which allows full paths to libraries only with valid + library names " + +2008-09-17 18:56 +0000 [r8874-8875] robert: + + * From Alberto Luaces, "Cygwin's cmake build adds a "d" postfix to + the plugins installed in debug mode. Nevertheless, the code + doesn't acknowledge that, so I had problems with debug versions + of the library not being able to open their plugins whereas the + release versions worked fine. I have made the same changes in + Registry.cpp that are available for the rest of platforms + appending that "d" to their plugins. I have also updated the + CMakeLists.txt file to get "_DEBUG" defined at compilation time. + I have copied the already existent conditional block because of + cmake's bizarre operator precedence. Since Cygwin defines both + CYGWIN and WIN32, the following would suffice: IF(CYGWIN OR UNIX + AND NOT WIN32 AND NOT APPLE) Sadly, it actually doesn't work, so + I wrote a new conditional block just for Cygwin. I could join the + two blocks when the parentheses support is added in newer + versions of cmake." + + * From Adrian Egli, "i came around reviewing my code, and found now + finally a solution to remove the polygon offset issue. as we all + know the polygon offset has a different behaviour on different + GPU system (ATI, NVidia) and this make the use of polygon offset + complicate. so i looked for a solution to remove this offset. i + changed the shader, also the filtering (default: on) use now a + correct 3x3 filter: 1 0 1 0 2 0 1 0 1 div: 6 of course a better + one would be 1 2 1 2 4 2 1 2 1 div: 16 but this isn't as + performant as the simple filter above is. because we need only 5 + texture lookups instead of 9, and the result is still good, if + you wish we can add a enum to change the pcf filter type once, if + there is a need. testet on NVidia Quatro 570M and on ATI Radeon + X1600 " + +2008-09-17 18:51 +0000 [r8873] robert: + + * From Adrian Egli, "I changed the PSSM shadow map implementation, + if we have filtered turned on, it should be now correct. The + implementation is more robut on different scene. i tested it on + NVIDIA card against a park scene, a chess board and a terrain. + unfort. i couldn't test it on any ATI system. may there will be + still another problem there. if there are still some artefacts. + we should try out better fZOffSet value " + +2008-09-17 18:42 +0000 [r8872] robert: + + * From Bill Prendergast, "Found a typo in CameraRenderOrderSortOp + in osg/GraphicsContext.cpp (V2.6.0 and prior) as noted below: + struct CameraRenderOrderSortOp { inline bool operator() (const + Camera* lhs,const Camera* rhs) const { if + (lhs->getRenderOrder()getRenderOrder()) return true; if + (rhs->getRenderOrder()getRenderOrder()) return false; ---> + return lhs->getRenderOrderNum()getRenderOrderNum(); ^^^ ^^^ + } }; Corrected code attached." + +2008-09-17 17:25 +0000 [r8871] robert: + + * From Christophe Loustaunau," I have found some errors on the + example osgGeometryShaders. It's about the varying in the + geometry shader. take a look at the varying vec4 v_color. In the + vertex shader, v_color is initialized to gl_vertex then in the + geometry shader v_color is initialized to gl_PositionIn[0] and in + the fragment shader v_color is used as the fragment color. Try to + initialized v_color to vec4(1.0, 0.0, 0.0, 1.0) in the vertex + shader and comment the line : " v_color = v;\n" in the geometry + shader, and you will see the lines as black ! It's because you + have to use keywords in and out. extract from : + http://www.opengl.org/registry/specs/EXT/geometry_shader4.txt : + in - for function parameters passed into a function or for input + varying variables (geometry only) out - for function parameters + passed back out of a function, but not initialized for use when + passed in. Also for output varying variables (geometry only). + Then for a geometry shader, a varying must be an array : extract + from : + http://www.opengl.org/registry/specs/EXT/geometry_shader4.txt : + Since a geometry shader operates on primitives, each input + varying variable needs to be declared as an array. Each element + of such an array corresponds to a vertex of the primitive being + processed. If the varying variable is declared as a scalar or + matrix in the vertex shader, it will be a one-dimensional array + in the geometry shader. Each array can optionally have a size + declared. If a size is not specified, it inferred by the linker + and depends on the value of the input primitive type. Here is a + patch based on the svn version of osg that correct that. " + +2008-09-17 17:13 +0000 [r8870] robert: + + * From Max Bandazian, "Lines 302-305 of WindowManager.cpp seem to + have a parenthesizing error - the code is if( (!win || + win->getVisibilityMode() == Window::VM_PARTIAL) && + !win->isPointerXYWithinVisible(x, y) ) continue; But it probably + should be if (!win || (win->getVisibilityMode() == + Window::VM_PARTIAL) && !win->isPointerXYWithinVisible(x, y))) + continue; The effect of the bug is to segfault if a + non-osgWidgets::Window node hasn't been excluded from picking via + NodeMask." + +2008-09-17 17:07 +0000 [r8869] robert: + + * Updated wrappers + +2008-09-17 16:14 +0000 [r8868] robert: + + * From Mathias Froehlich, "This is a generic optimization that does + not depend on any cpu or instruction set. The optimization is + based on the observation that matrix matrix multiplication with a + dense matrix 4x4 is 4^3 Operations whereas multiplication with a + transform, or scale matrix is only 4^2 operations. Which is a + gain of a *FACTOR*4* for these special cases. The change + implements these special cases, provides a unit test for these + implementation and converts uses of the expensiver dense matrix + matrix routine with the specialized versions. Depending on the + transform nodes in the scenegraph this change gives a noticable + improovement. For example the osgforest code using the + MatrixTransform is about 20% slower than the same codepath using + the PositionAttitudeTransform instead of the MatrixTransform with + this patch applied. If I remember right, the sse type + optimizations did *not* provide a factor 4 improovement. Also + these changes are totally independent of any cpu or instruction + set architecture. So I would prefer to have this current kind of + change instead of some hand coded and cpu dependent assembly + stuff. If we need that hand tuned stuff, these can go on top of + this changes which must provide than hand optimized additional + variants for the specialized versions to give a even better + result in the end. An other change included here is a change to + rotation matrix from quaterion code. There is a sqrt call which + couold be optimized away. Since we divide in effect by + sqrt(length)*sqrt(length) which is just length ... " + +2008-09-17 14:23 +0000 [r8864-8867] robert: + + * Updated osgwidget examples to use the new osg::clone() methods + + * Updated wrappers of osgWidget + + * Tweaks to facilitate osgWrapper build + + * Introduce new templated clone(..) methods that return the correct + type of object cloned. + +2008-09-17 11:43 +0000 [r8863] robert: + + * Added support for finding DCMTK-3.5.4 installed lib/include + placement + +2008-09-16 18:41 +0000 [r8862] robert: + + * Added osgVolume to docs and wrappers + +2008-09-16 15:32 +0000 [r8858-8859] robert: + + * Introduced beginings of osgVolume NodeKit. + + * Complted the first pass at the DCMTK based dicom loader + +2008-09-16 09:31 +0000 [r8857] robert: + + * Change the GLSL textureRec and texture2D parameters to use .st to + make sure they only use 2D coords. Add setResizeNonPowerOfTwoHint + to false for Texture2D. + +2008-09-15 19:59 +0000 [r8856] robert: + + * Added optional usage of DCMTK in the dicom plugin + +2008-09-15 11:27 +0000 [r8855] robert: + + * From Ralf Habacker, removed redundent SwitchLayer::clear() + +2008-09-14 10:31 +0000 [r8853] robert: + + * Introduced Geometry::containsSharedArrays() and + Geometry::duplicateSharedArrays() to support a fix to the + osgUtil::Simplifier that couldn't handle shared arrays + +2008-09-13 13:38 +0000 [r8852] robert: + + * Added reading of whole directories of images + +2008-09-13 09:09 +0000 [r8851] robert: + + * Introduced TransferFunction1D::assign(ValueMap&). + +2008-09-12 15:41 +0000 [r8850] robert: + + * Removed use of ints and reading from gl_FragColor in shader + +2008-09-11 16:11 +0000 [r8849] robert: + + * Updated version numbers in prep for up comming dev release + +2008-09-11 16:06 +0000 [r8848] robert: + + * Added an svn update into the make ChangeLog entry. + 2008-09-11 16:01 +0000 [r8847] robert: * Updated wrappers