From e281c264a76b3828039e94c3c7231561d814636d Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 18 Dec 2014 11:19:11 +0000 Subject: [PATCH] Updated ChangeLog in prep for dev release git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14616 16af8721-9629-0410-8352-f15c8da7e697 --- ChangeLog | 1097 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1097 insertions(+) diff --git a/ChangeLog b/ChangeLog index 71354a0a4..5f49a61a3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,1100 @@ +2014-12-18 11:09 robert + + * examples/osgmovie/CMakeLists.txt: Fixed warning + +2014-12-18 10:59 robert + + * include/osg/DisplaySettings, src/osg/DisplaySettings.cpp: Added + DisplaySettings::s/getNvOptimusEnablement() and + OSG_NvOptimusEnablement env var control to control the setting of + the NvOptimusEnablement variable + +2014-12-18 09:24 robert + + * src/osgPlugins/fbx/ReaderWriterFBX.cpp: From Sukender, "Added + options to the FBX writer: an ascii/binary switch, and the + ability to select FBX version as the SDK handles it (Ex: + "FBX201300"). + + This allows the user to achieve backward compatibility, and debug + format issues using text output." + +2014-12-18 09:03 robert + + * CMakeModules/FindGStreamer.cmake: From Mattias Helsing, "The + addition of the GStreamer cmake find script broke my build + because + cmake vars weren't passed correctly to find_package_handler_args, + so + while the find script didn't find a single required GStreamer lib + or + include path it still reported GSTREAMER_FOUND=TRUE (and then + tried to + compile the new plugin). This fixes it and correctly reports + missing + components." + +2014-12-17 19:21 robert + + * CMakeLists.txt, CMakeModules/FindSDL2.cmake, + examples/osgmovie/CMakeLists.txt, examples/osgmovie/osgmovie.cpp: + Added support for using SDL2 to the osgmovie to enable it to + handle floating point audio formats + +2014-12-17 19:20 robert + + * CMakeModules/FindFFmpeg.cmake, + src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp: From Javier Taibo, + " I have found that since version 1.1, FFMPEG changed the way + audio streams are retrieved, from packed to planar format. SDL + interprets packed audio, as is used in the osgmovie example. To + make the audio work when the OSGffmpeg plug-in is compiled + against recent FFMPEG versions, FFmpegDecoderAudio must check for + planar formats and in these cases request the samples as packed. + This way all works as before. It can be checked with osgmovie + example application. + + $ osgmovie --audio movie.avi.ffmpeg + FFmpegImageStream::open audio failed, audio stream will be + disabled: unknown audio format + + With the attached FFmpegDecoderAudio.cpp, audio sounds correctly. + + I am also attaching a modified version of FindFFmpeg.cmake that + allows to set as FFMPEG_DIR the ffmpeg compiled in the source + directory structure. It should not break anything as it only adds + some additional search paths. + + " + + Note from Robert Osfield, I have found in testing that audio + quality is not good for planar floating point formats, even with + adding support for SDL2 to the osgmovie example. I haven't yet + tracked down the cause of these audio problems or a solution. + +2014-12-17 10:19 robert + + * src/osgPlugins/fbx/ReaderWriterFBX.cpp: From Sukender, "FBX + writer was writing an empty file when the scene had a root node + being a Geode. + This was caused be the change in Drawable (now derived from Node) + and Geode (now derived from Group). + This fix simply sticks with previous behaviour. Another change + could be to adapt WriterNodeVisitor. + " + +2014-12-16 17:37 robert + + * src/osgPlugins/gstreamer/GStreamerImageStream.cpp: Fixed warnings + and memmory leaks + +2014-12-16 17:15 robert + + * src/osgPlugins/gstreamer/CMakeLists.txt, + src/osgPlugins/gstreamer/GStreamerImageStream.cpp: Fixed warnings + +2014-12-16 17:08 robert + + * src/osgPlugins/gstreamer/GStreamerImageStream.cpp, + src/osgPlugins/gstreamer/GStreamerImageStream.hpp: Improved + handling of invalid/unhandled files + Added support for ImageStream::LoopigMode variable + Fixed memory leak associtied with restarting videos + Changed Image::setData() to Image::dirty() to avoid resetting + data + +2014-12-16 11:20 robert + + * CMakeLists.txt, CMakeModules/FindGLIB.cmake, + CMakeModules/FindGStreamer.cmake, src/osgPlugins/CMakeLists.txt, + src/osgPlugins/gstreamer, + src/osgPlugins/gstreamer/CMakeLists.txt, + src/osgPlugins/gstreamer/GStreamerImageStream.cpp, + src/osgPlugins/gstreamer/GStreamerImageStream.hpp, + src/osgPlugins/gstreamer/ReaderWriterGStreamer.cpp: From Julen + Garcia, "Here there is a small plugin I use to play video files. + It is based on GStreamer http://gstreamer.freedesktop.org and I + have used the FFmpeg plugin as inspiration." + + From Robert Osfield, fixed handled of row widths so that they are + padded to a 4 byte boundary as certain row widths were being + rendered incorrectly. + +2014-12-16 09:34 robert + + * include/osg/TriangleLinePointIndexFunctor, + include/osgUtil/MeshOptimizers, src/osgUtil/MeshOptimizers.cpp: + From Marc Helbling, "please find enclosed a submission that + should improve the VertexAccessOrderVisitor (pre-transform) + optimizer: + * it sorts primitives to keep "more complex" primitives first; + maybe you'll prefer to have this as an option (but usually it + should make more sense to pre-transform triangles before e.g. + lines) + * currently, the visitor rely on TriangleIndexFunctor and does + not take care of points and lines (see + https://github.com/openscenegraph/osg/blob/master/include/osg/TriangleIndexFunctor#L124-130). + This can lead to issues e.g. if you store the wireframe lines + along with some triangles: the triangles will be reindexed but + not the line. I've therefore added + osg/include/TriangleLinePointIndexFunctor to index triangles, + lines and points and derived VertexReorder from this class. + * to avoid issues, shared arrays are duplicated. However, in some + cases (e.g. an UV channel shared in the geometry only) this is + not required. I'm adding a SharedArrayOptimizer to optimize this: + it looks for duplicated UVs before the array duplication and + deduplicate arrays after. + " + +2014-12-15 17:15 robert + + * include/osgUtil/TriStripVisitor, src/osgUtil/TriStripVisitor.cpp: + From Marc Helbling, "please find the mergeTriangleStrip code + merged in osgUtil::TriStripVisitor. + I've removed the references to DrawArrays as we should no longer + produce any. + + Note that: + * as the name suggest, it only works for triangle strips but + could probably be easily extended to quads + * the resulting primitive is not highly optimized; we could + probably sort the strips in order to minimize the number of + primitive restart + * as we may merge DrawElementsUInt and DrawElementUShort, the + code will only generate DrawElementsUInt" + +2014-12-10 18:23 robert + + * examples/osgSSBO/osgSSBO.cpp: Build fix + +2014-12-10 13:05 robert + + * include/osg/GLExtensions, src/osg/GLExtensions.cpp: Added OpenGL + Transform Feedback extensions. + +2014-12-10 12:23 robert + + * examples/CMakeLists.txt, examples/osgSSBO, + examples/osgSSBO/CMakeLists.txt, examples/osgSSBO/osgSSBO.cpp, + include/osg/BufferIndexBinding, include/osg/BufferObject, + include/osg/StateAttribute, src/osg/BufferIndexBinding.cpp, + src/osg/BufferObject.cpp: From Marcus Hein, Added support for + OpenGL SSBO and SSBB via osg::ShaderStorageBufferObject and + osg::ShaderStorageBufferBinding to core OSG library, and added + new osgSSBO example + +2014-12-10 11:44 robert + + * include/osg/GLDefines: Added GLDefines header + +2014-12-10 11:29 robert + + * src/osgPlugins/dae/daeRMaterials.cpp: From Farshid Lashkari, "The + Collada loader would crash while processing textures on certain + files. I've attached the fix." + +2014-12-10 10:44 robert + + * examples/osgshaderterrain/osgshaderterrain.cpp, + include/osg/GL2Extensions, src/osg/CMakeLists.txt, + src/osg/GL2Extensions.cpp, src/osgAnimation/RigGeometry.cpp, + src/osgDB/ObjectWrapper.cpp: Removed old GL2Extensions class, + replacing it with a typedef to GL2Extensions + Removed old includes to include/osg/GL2Extensions + +2014-12-10 10:38 robert + + * examples/osgfpdepth/osgfpdepth.cpp, + examples/osgmultitexture/osgmultitexture.cpp, + examples/osgoit/DepthPeeling.cpp, + examples/osgscreencapture/osgscreencapture.cpp, + examples/osgvertexprogram/osgvertexprogram.cpp, + include/osg/BufferObject, include/osg/FrameBufferObject, + include/osg/GL2Extensions, include/osg/GLExtensions, + include/osg/PatchParameter, include/osg/PrimitiveSet, + include/osg/Program, include/osg/Shader, include/osg/State, + include/osg/Texture, include/osg/TextureBuffer, + include/osg/Uniform, include/osgViewer/Renderer, + src/osg/ArrayDispatchers.cpp, src/osg/BlendColor.cpp, + src/osg/BlendEquation.cpp, src/osg/BlendEquationi.cpp, + src/osg/BlendFunc.cpp, src/osg/BlendFunci.cpp, + src/osg/BufferObject.cpp, src/osg/CMakeLists.txt, + src/osg/Capability.cpp, src/osg/ClampColor.cpp, + src/osg/ColorMaski.cpp, src/osg/FragmentProgram.cpp, + src/osg/FrameBufferObject.cpp, src/osg/GLExtensions.cpp, + src/osg/Geometry.cpp, src/osg/GraphicsContext.cpp, + src/osg/Image.cpp, src/osg/Multisample.cpp, + src/osg/OcclusionQueryNode.cpp, src/osg/PatchParameter.cpp, + src/osg/Point.cpp, src/osg/PointSprite.cpp, + src/osg/PrimitiveRestartIndex.cpp, src/osg/Program.cpp, + src/osg/SampleMaski.cpp, src/osg/Shader.cpp, src/osg/State.cpp, + src/osg/Stencil.cpp, src/osg/StencilTwoSided.cpp, + src/osg/Texture.cpp, src/osg/Texture1D.cpp, + src/osg/Texture2DArray.cpp, src/osg/Texture2DMultisample.cpp, + src/osg/Texture3D.cpp, src/osg/TextureBuffer.cpp, + src/osg/TextureCubeMap.cpp, src/osg/TextureRectangle.cpp, + src/osg/Uniform.cpp, src/osg/VertexAttribDivisor.cpp, + src/osg/VertexProgram.cpp, src/osgFX/SpecularHighlights.cpp, + src/osgParticle/PrecipitationEffect.cpp, src/osgText/Glyph.cpp, + src/osgUtil/GLObjectsVisitor.cpp, src/osgUtil/RenderStage.cpp, + src/osgViewer/Renderer.cpp, + src/osgViewer/ScreenCaptureHandler.cpp, + src/osgViewer/StatsHandler.cpp: Moved GL2Extensions functionality + into the include/osg/GLExtensions header and new GLExtensions + object. + Moved the #defines into new include/osg/GLDefines + Converted all GL2Extensions usage to GLExtensions usage + +2014-12-10 09:11 robert + + * include/osg/GLExtensions: Streamlined the extension functions + +2014-12-09 21:33 robert + + * include/osg/GL2Extensions: Added #ifdef's around GLsync typedef + +2014-12-09 20:09 robert + + * include/osg/GL2Extensions, include/osg/GraphicsContext, + include/osg/Texture, include/osg/Texture3D, src/osg/Texture.cpp: + Windows build fixes + +2014-12-09 19:31 robert + + * runexamples.bat: Added new examples to runexamples.bat script + +2014-12-09 19:22 robert + + * src/osg/Capability.cpp: Quietened down debug messages + +2014-12-09 19:20 robert + + * examples/CMakeLists.txt, examples/osgblenddrawbuffers, + examples/osgblenddrawbuffers/CMakeLists.txt, + examples/osgblenddrawbuffers/osgblenddrawbuffers.cpp: From Wand + Rui, "I've rewritten the osgblenddrawbuffers example to use the + new BlendFunci and Capability classes. Hope it will tell others + how to make use of the new functionality and why they are + important in modern MRT-based applications." + +2014-12-09 18:30 robert + + * examples/osgfpdepth/osgfpdepth.cpp, + examples/osgoit/DepthPeeling.cpp, include/osg/FrameBufferObject, + include/osg/GL2Extensions, include/osg/GraphicsContext, + src/osg/BufferObject.cpp, src/osg/FrameBufferObject.cpp, + src/osg/GL2Extensions.cpp, src/osg/GraphicsContext.cpp, + src/osg/OcclusionQueryNode.cpp, src/osg/Texture.cpp, + src/osg/Texture3D.cpp, src/osg/TextureRectangle.cpp, + src/osgUtil/RenderStage.cpp: Moved FBO Extensions into + GL2Extensions. + +2014-12-09 14:58 robert + + * include/osg/PrimitiveRestartIndex: Removed no longer used + Extension definition + +2014-12-09 14:57 robert + + * include/osg/ClampColor, include/osg/ColorMaski, + include/osg/GL2Extensions, include/osg/Multisample, + include/osg/Point, include/osg/PointSprite, + include/osg/PrimitiveRestartIndex, include/osg/Stencil, + src/osg/ClampColor.cpp, src/osg/ColorMaski.cpp, + src/osg/GL2Extensions.cpp, src/osg/Multisample.cpp, + src/osg/Point.cpp, src/osg/PointSprite.cpp, + src/osg/PrimitiveRestartIndex.cpp: Moved local Extensions structs + into GL2Extensions + +2014-12-09 11:14 robert + + * include/osg/GL2Extensions, include/osg/Stencil, + include/osg/StencilTwoSided, src/osg/GL2Extensions.cpp, + src/osg/Stencil.cpp, src/osg/StencilTwoSided.cpp: Moveved + Stencil/StencilTwoSided::Extensions into GL2Extensions + +2014-12-09 10:37 robert + + * include/osg/BlendColor, include/osg/BlendEquation, + include/osg/Capability, include/osg/GL2Extensions, + src/osg/BlendColor.cpp, src/osg/BlendEquation.cpp, + src/osg/BlendEquationi.cpp, src/osg/Capability.cpp, + src/osg/GL2Extensions.cpp: Moved local Extensions objects to + GL2Extensions + +2014-12-09 10:05 robert + + * examples/osgmultitexture/osgmultitexture.cpp, + include/osg/GL2Extensions, include/osg/Texture, + include/osg/Texture2DArray, include/osg/Texture3D, + src/osg/GL2Extensions.cpp, src/osg/Image.cpp, + src/osg/Texture.cpp, src/osg/Texture1D.cpp, + src/osg/Texture2DArray.cpp, src/osg/Texture2DMultisample.cpp, + src/osg/Texture3D.cpp, src/osg/TextureBuffer.cpp, + src/osg/TextureRectangle.cpp, src/osgText/Glyph.cpp: Moved + Texture*::Extensions functionality into GL2Extensions + +2014-12-08 16:08 robert + + * examples/osgvertexprogram/osgvertexprogram.cpp, + include/osg/FragmentProgram, include/osg/GL2Extensions, + include/osg/VertexProgram, src/osg/FragmentProgram.cpp, + src/osg/GL2Extensions.cpp, src/osg/VertexProgram.cpp: MOved + VertexProgram and FragmentProgram::Extensions into GL2Extensions. + +2014-12-08 11:08 robert + + * src/osgUtil/CullVisitor.cpp: Fixed memory leak in + RenderStageCache. + +2014-12-07 17:31 robert + + * examples/osgcubemap/osgcubemap.cpp, include/osg/GL2Extensions, + include/osg/SampleMaski, src/osg/GL2Extensions.cpp, + src/osg/SampleMaski.cpp: MOved SampleMaski::Extensions into + osg::GL2Extensions + +2014-12-05 20:05 robert + + * include/osg/GL2Extensions, include/osg/TextureCubeMap, + src/osg/GL2Extensions.cpp, src/osg/TextureCubeMap.cpp, + src/osgFX/SpecularHighlights.cpp: Moved TextureCubeMap::Extension + functionality into GL2Extensions + +2014-12-05 17:26 robert + + * include/osg/Drawable, include/osg/GL2Extensions, + include/osg/State, include/osgViewer/Renderer, + src/osg/ArrayDispatchers.cpp, src/osg/Drawable.cpp, + src/osg/GL2Extensions.cpp, src/osg/OcclusionQueryNode.cpp, + src/osg/State.cpp, src/osg/TextureRectangle.cpp, + src/osgParticle/PrecipitationEffect.cpp, + src/osgViewer/Renderer.cpp, src/osgViewer/StatsHandler.cpp: Moved + osg::Drawable::Extensions into osg::GL2Extensions + +2014-12-05 10:37 robert + + * examples/osgshaderterrain/osgshaderterrain.cpp, + examples/osgtransferfunction/TransferFunctionWidget.h, + src/osgPlugins/lua/LuaScriptEngine.cpp, + src/osgPlugins/lua/lua-5.2.3/src/lauxlib.c, + src/osgPlugins/lua/lua-5.2.3/src/lcode.c: Fixed windows build + warnings + +2014-12-05 09:52 robert + + * src/osg/BufferObject.cpp: Windows build fix + +2014-12-05 08:58 robert + + * include/osg/BufferObject, include/osg/Drawable, + include/osg/GL2Extensions, src/osg/Drawable.cpp: From the + GLintptr + GLsizeiptr defintions to GL2Extensions header + +2014-12-04 19:03 robert + + * include/osg/BlendFunc, include/osg/GL2Extensions, + src/osg/BlendFunc.cpp, src/osg/BlendFunci.cpp, + src/osg/GL2Extensions.cpp: Moved osg::BlenFunc::Extensions into + osg::GL2Extensions + +2014-12-04 18:13 robert + + * examples/osgscreencapture/osgscreencapture.cpp, + include/osg/BufferObject, include/osg/GL2Extensions, + include/osg/TextureBuffer, src/osg/BufferIndexBinding.cpp, + src/osg/BufferObject.cpp, src/osg/GL2Extensions.cpp, + src/osg/Geometry.cpp, src/osgViewer/ScreenCaptureHandler.cpp: + Moved GLBufferObject::Extensions structure into + osg::GL2Extensions + +2014-12-04 18:12 robert + + * examples/osgscreencapture/osgscreencapture.cpp: Removed redundent + spaces + +2014-12-04 17:12 robert + + * include/osg/GL2Extensions, src/osg/GL2Extensions.cpp: Added + glMemoryBarrier, glMapBufferRange and glBindBufferBase to + GL2Extensions + +2014-12-04 16:28 robert + + * src/osg/VertexAttribDivisor.cpp, + src/osgUtil/GLObjectsVisitor.cpp: Moved old + GL2Extensions::Get(..) usage across to new + osg::State::get() usage + +2014-12-04 16:22 robert + + * examples/osgshaderterrain/osgshaderterrain.cpp, + include/osg/GL2Extensions, include/osg/State, + src/osg/FrameBufferObject.cpp, src/osg/GL2Extensions.cpp, + src/osg/PatchParameter.cpp, src/osg/Program.cpp, + src/osg/Shader.cpp, src/osg/State.cpp: Ported GL2Extentions + across to using the new GL extensions approach - cutting code + count by 3000 lines! + +2014-12-04 15:10 robert + + * src/osgDB/DatabasePager.cpp, + src/osgUtil/IncrementalCompileOperation.cpp: Build fix for when + ref_ptr<> auto conversion is disabled + +2014-12-03 17:31 robert + + * examples/osgmultiplerendertargets/osgmultiplerendertargets.cpp, + include/osg/Capability, include/osg/StateAttribute, + src/osg/CMakeLists.txt, src/osg/Capability.cpp: Added + osg::Capability and Cabibilityi base classes to wrap up + glEnable/glDisable + glEnablei/glDisablei functionality, with + osg::Enablei and osg::Disablei concrete implementations. + +2014-12-02 17:12 robert + + * include/osg/BlendEquation, include/osg/BlendEquationi, + include/osg/BlendFunc, include/osg/BlendFunci, + include/osg/ColorMaski, src/osg/BlendEquation.cpp, + src/osg/BlendEquationi.cpp, src/osg/BlendFunc.cpp, + src/osg/BlendFunci.cpp, src/osg/CMakeLists.txt, + src/osg/ColorMaski.cpp, + src/osgWrappers/serializers/osg/BlendEquationi.cpp, + src/osgWrappers/serializers/osg/BlendFunci.cpp, + src/osgWrappers/serializers/osg/ColorMaski.cpp: Added + osg::BlendFunci, osg::BlendEquationi and osg::ColorMaski + StateAttrirbutes that wrap the glBlendFunci, glBlendEquationi and + glColorMaski functions + +2014-12-02 15:37 robert + + * include/osg/BlendEquation, include/osg/BlendFunc, + src/osg/BlendEquation.cpp, src/osg/BlendFunc.cpp: Moved + BlendEquation across to using the new GL extension setup + approach. + +2014-12-02 15:21 robert + + * examples/osgblendequation/osgblendequation.cpp: Fixed typo + +2014-12-02 11:10 robert + + * include/osg/BlendFunc, include/osg/State, src/osg/BlendFunc.cpp: + Added a template get and get_exisiting method into osg::State + that implements a new mechanism for managing OpenGL extensions. + + Refactored the BendFunc::Extensions usage to simplify it + utilizing the new osg::State extension mechanism. + +2014-11-28 16:20 robert + + * PlatformSpecifics/Android/android.toolchain.cmake: From Rafa + Gaitan, "I'm attaching also a new version of the toolchain with + support for the r10c ndk. This fixes some CMake Warnings and + allows to use the toolchain in macosx." + +2014-11-28 16:10 robert + + * CMakeLists.txt, include/OpenThreads/Version, include/osg/Version, + src/OpenThreads/CMakeLists.txt, src/osg/CMakeLists.txt: Removed + include/osg/Version and include/OpenThreads/Version headers as + these are autogenerated. + + Changed the paths for the OpenThreads/osg Version headers to be + placed in the PROJECT_BINARY_DIR. + +2014-11-28 10:54 robert + + * include/osg/BufferObject, include/osgDB/ConvertUTF, + src/OpenThreads/pthreads/PThread.cpp, src/osg/GLExtensions.cpp: + Standardized on defined(__ANDROID__) + +2014-11-28 10:52 robert + + * src/osgPlugins/lua/lua-5.2.3/src/llex.c, + src/osgPlugins/lua/lua-5.2.3/src/luaconf.h: Added + getlocaledecpoint() workaround for Android build of lua plugin + +2014-11-27 15:54 robert + + * src/osgTerrain/GeometryPool.cpp, src/osgTerrain/shaders, + src/osgTerrain/shaders/terrain_displacement_mapping_frag.cpp, + src/osgTerrain/shaders/terrain_displacement_mapping_vert.cpp: + Added in source shaders + +2014-11-27 15:39 robert + + * src/osgTerrain/GeometryPool.cpp: Changed the name of shader files + +2014-11-26 20:40 robert + + * src/osg/CMakeLists.txt: From Jason Beverage, "It looks like the + Callback header got accidentally removed from the CMakeLists.txt + in the submission yesterday for the geometry instancing example." + +2014-11-26 19:05 robert + + * include/osgTerrain/DisplacementMappingTechnique, + include/osgTerrain/GeometryPool: Windows build fix + +2014-11-26 17:08 robert + + * applications/present3D/deprecated/Cluster.h: Fixed warnings + +2014-11-26 17:04 robert + + * src/osgQt/GraphicsWindowQt.cpp: Fixed warnings + +2014-11-26 16:29 robert + + * src/osgPlugins/ffmpeg/CMakeLists.txt: Fixed deprecated warnings + +2014-11-26 16:15 robert + + * src/osgPlugins/pdf/CMakeLists.txt: Fixed warning + +2014-11-26 16:04 robert + + * examples/osgcluster/osgcluster.cpp: Fixed warnings. + +2014-11-26 16:00 robert + + * src/osgPlugins/lwo/Object.cpp: Fixed warning + +2014-11-26 15:59 robert + + * src/osgWrappers/deprecated-dotosg/osg/StateSet.cpp: Fixed warning + +2014-11-26 14:06 robert + + * src/osgWrappers/serializers/osgTerrain/DisplacementMappingTechnique.cpp: + Added osgTerrain::DisplacementMappingTechnique serializer + +2014-11-26 14:04 robert + + * examples/osgterrain/CMakeLists.txt, + examples/osgterrain/ShaderTerrain.cpp, + examples/osgterrain/ShaderTerrain.h, + examples/osgterrain/osgterrain.cpp, + include/osgTerrain/DisplacementMappingTechnique, + include/osgTerrain/GeometryPool, src/osgTerrain/CMakeLists.txt, + src/osgTerrain/DisplacementMappingTechnique.cpp, + src/osgTerrain/GeometryPool.cpp: Renamed ShaderTerrain to + DisplacementMappingTechnique and moved it from the osgterrain + example testbed into the osgTerrain NodeKit + +2014-11-26 13:36 robert + + * examples/osgterrain/ShaderTerrain.cpp, + examples/osgterrain/ShaderTerrain.h, + include/osgTerrain/GeometryPool, src/osgTerrain/CMakeLists.txt, + src/osgTerrain/GeometryPool.cpp: Moved osgTerrain::GeometryPool + from osgterrain example into osgTerrain NodeKit + +2014-11-25 14:37 robert + + * src/osg/CMakeLists.txt: Removed GL header as it's already + included via the ${OPENSCENEGRAPH_OPENGL_HEADER} entry. + +2014-11-25 10:58 robert + + * examples/CMakeLists.txt, examples/osggpucull, + examples/osggpucull/AggregateGeometryVisitor.cpp, + examples/osggpucull/AggregateGeometryVisitor.h, + examples/osggpucull/CMakeLists.txt, + examples/osggpucull/DrawIndirectPrimitiveSet.cpp, + examples/osggpucull/DrawIndirectPrimitiveSet.h, + examples/osggpucull/GpuCullShaders.h, + examples/osggpucull/ShapeToGeometry.cpp, + examples/osggpucull/ShapeToGeometry.h, + examples/osggpucull/osggpucull.cpp, include/osg/BufferTemplate, + src/osg/CMakeLists.txt: From PawelKsiezopolski, "This submission + contains a new example for OSG : a geometry instancing rendering + algorithm consisting of two consequent phases : + + - first phase is a GLSL shader performing object culling and LOD + picking ( a culling shader ). + Every culled object is represented as GL_POINT in the input + osg::Geometry. + The output of the culling shader is a set of object LODs that + need to be rendered. + The output is stored in texture buffer objects. No pixel is drawn + to the screen + because GL_RASTERIZER_DISCARD mode is used. + + - second phase draws osg::Geometry containing merged LODs using + glDrawArraysIndirect() + function. Information about quantity of instances to render, its + positions and other + parameters is sourced from texture buffer objects filled in the + first phase. + + The example uses various OpenGL 4.2 features such as texture + buffer objects, + atomic counters, image units and functions defined in + GL_ARB_shader_image_load_store + extension to achieve its goal and thus will not work on graphic + cards with older OpenGL + versions. + + The example was tested on Linux and Windows with NVidia 570 and + 580 cards. + The tests on AMD cards were not conducted ( due to lack of it ). + The tests were performed using OSG revision 14088. + + The main advantages of this rendering method : + - instanced rendering capable of drawing thousands of different + objects with + almost no CPU intervention ( cull and draw times are close to 0 + ms ). + - input objects may be sourced from any OSG graph ( for example - + information about + object points may be stored in a PagedLOD graph. This way we may + cover the whole + countries with trees, buildings and other objects ). + Furthermore if we create osgDB plugins that generate data on the + fly, we may + generate information for every grass blade for that country. + - every object may have its own parameters and thus may be + distinct from other objects + of the same type. + - relatively low memory footprint ( single object information is + stored in a few + vertex attributes ). + - no GPU->CPU roundtrip typical for such methods ( method uses + atomic counters + and glDrawArraysIndirect() function instead of OpenGL queries. + This way + information about quantity of rendered objects never goes back to + CPU. + The typical GPU->CPU roundtrip cost is about 2 ms ). + - this example also shows how to render dynamic objects ( objects + that may change + its position ) with moving parts ( like car wheels or airplane + propellers ) . + The obvious extension to that dynamic method would be the + animated crowd rendering. + - rendered objects may be easily replaced ( there is no need to + process the whole + OSG graphs, because these graphs store only positional + information ). + + The main disadvantages of a method : + - the maximum quantity of objects to render must be known + beforehand + ( because texture buffer objects holding data between phases have + constant size ). + - OSG statistics are flawed ( they don't know anymore how many + objects are drawn ). + - osgUtil::Intersection does not work + + Example application may be used to make some performance tests, + so below you + will find some extended parameter description : + --skip-dynamic - skip rendering of dynamic objects if you only + want to + observe static object statistics + --skip-static - the same for static objects + --dynamic-area-size - size of the area for dynamic rendering. + Default = 1000 meters + ( square 1000m x 1000m ). Along with density defines + how many dynamic objects is there in the example. + --static-area-size - the same for static objects. Default = 2000 + meters + ( square 2000m x 2000m ). + + Example application defines some parameters (density, LOD ranges, + object's triangle count). + You may manipulate its values using below described modifiers: + --density-modifier - density modifier in percent. Default = 100%. + Density ( along with LOD ranges ) defines maximum + quantity of rendered objects. registerType() function + accepts maximum density ( in objects per square kilometer ) + as its parameter. + --lod-modifier - defines the LOD ranges. Default = 100%. + --triangle-modifier - defines the number of triangles in finally + rendered objects. + Default = 100 %. + --instances-per-cell - for static rendering the application + builds OSG graph using + InstanceCell class ( this class is a modified version of Cell + class + from osgforest example - it builds simple quadtree from a list + of static instances ). This parameter defines maximum number + of instances in a single osg::Group in quadtree. + If, for example, you modify it to value=100, you will see + really big cull time in OSG statistics ( because resulting + tree generated by InstanceCell will be very deep ). + Default value = 4096 . + --export-objects - write object geometries and quadtree of + instances to osgt files + for later analysis. + --use-multi-draw - use glMultiDrawArraysIndirect() instead of + glDrawArraysIndirect() in a + draw shader. Thanks to this we may render all ( different ) + objects + using only one draw call. Requires OpenGL version 4.3 and some + more + work from me, because now it does not work ( probably I + implemented + it wrong, or Windows NVidia driver has errors, because it hangs + the apllication at the moment ). + + This application is inspired by Daniel Rákos work : "GPU based + dynamic geometry LOD" that + may be found under this address : + http://rastergrid.com/blog/2010/10/gpu-based-dynamic-geometry-lod/ + There are however some differences : + - Daniel Rákos uses GL queries to count objects to render, while + this example + uses atomic counters ( no GPU->CPU roundtrip ) + - this example does not use transform feedback buffers to store + intermediate data + ( it uses texture buffer objects instead ). + - I use only the vertex shader to cull objects, whereas Daniel + Rákos uses vertex shader + and geometry shader ( because only geometry shader can send more + than one primitive + to transform feedback buffers ). + - objects in the example are drawn using glDrawArraysIndirect() + function, + instead of glDrawElementsInstanced(). + + Finally there are some things to consider/discuss : + - the whole algorithm exploits nice OpenGL feature that any GL + buffer + may be bound as any type of buffer ( in our example a buffer is + once bound + as a texture buffer object, and later is bound as + GL_DRAW_INDIRECT_BUFFER ). + osg::TextureBuffer class has one handy method to do that trick ( + bindBufferAs() ), + and new primitive sets use osg::TextureBuffer as input. + For now I added new primitive sets to example ( + DrawArraysIndirect and + MultiDrawArraysIndirect defined in + examples/osggpucull/DrawIndirectPrimitiveSet.h ), + but if Robert will accept its current implementations ( I mean - + primitive + sets that have osg::TextureBuffer in constructor ), I may add it + to + osg/include/PrimitiveSet header. + - I used BufferTemplate class writen and published by Aurelien in + submission forum + some time ago. For some reason this class never got into + osg/include, but is + really needed during creation of UBOs, TBOs, and possibly SSBOs + in the future. + I added std::vector specialization to that template class. + - I needed to create similar osg::Geometries with variable number + of vertices + ( to create different LODs in my example ). For this reason I've + written + some code allowing me to create osg::Geometries from osg::Shape + descendants. + This code may be found in ShapeToGeometry.* files. Examples of + use are in + osggpucull.cpp . The question is : should this code stay in + example, or should + it be moved to osgUtil ? + - this remark is important for NVidia cards on Linux and Windows + : if + you have "Sync to VBlank" turned ON in nvidia-settings and you + want to see + real GPU times in OSG statistics window, you must set the power + management + settings to "Prefer maximum performance", because when "Adaptive + mode" is used, + the graphic card's clock may be slowed down by the driver during + program execution + ( On Linux when OpenGL application starts in adaptive mode, clock + should work + as fast as possible, but after one minute of program execution, + the clock slows down ). + This happens when GPU time in OSG statistics window is shorter + than 3 ms. + " + +2014-11-25 10:33 robert + + * src/osgUtil/TriStripVisitor.cpp: Removed DrawArrays optimization + to simplify the code and open the door to adding primitive + combining. + +2014-11-25 10:11 robert + + * src/osg/State.cpp: Commented out + State::setUpVertexAttribAlias(..) debug message. + +2014-11-24 15:19 robert + + * CMakeLists.txt, CMakeModules/FindAVFoundation.cmake, + CMakeModules/FindQuickTime.cmake, + src/osgViewer/PixelBufferCocoa.mm: From Jan Klimke, "i noticed, + that there are a couple of additional flaws when building osg for + Mac OS X 10.10 Yosemite. + + The mac os sdk version is recognized by the current CMAKE script + as 10.1 instead of 10.10 since it cuts the version string from + the 4th place. I introduced a more reliable version checking + based on splitting the returned version code into MAJOR MINOR and + PATCH parts and reassemble the OSG sdk version afterwards. + + I replaced the existing CMake code against the following + (returning now version 10.10 as expected): + + # Determine the canonical name of the selected Platform SDK + EXECUTE_PROCESS(COMMAND "/usr/bin/sw_vers" "-productVersion" + OUTPUT_VARIABLE OSG_OSX_SDK_NAME + OUTPUT_STRIP_TRAILING_WHITESPACE) + STRING(REPLACE "." ";" MACOS_VERSION_LIST ${OSG_OSX_SDK_NAME}) + LIST(GET MACOS_VERSION_LIST 0 MACOS_VERSION_MAJOR) + LIST(GET MACOS_VERSION_LIST 1 MACOS_VERSION_MINOR) + LIST(GET MACOS_VERSION_LIST 2 MACOS_VERSION_PATCH) + + SET(OSG_OSX_SDK_NAME + "macosx${MACOS_VERSION_MAJOR}.${MACOS_VERSION_MINOR}") + + Also i added the check for the new Version to some more find + scripts. + + Additionally the nil object in Objective C now seems to be + equivalent with a null_ptr that cannot be passed as GLInt + anymore. So i switched this in the PixelBufferCocoa.mm to pass a + zero instead of nil. + " + +2014-11-24 14:54 robert + + * include/osg/StateAttribute, include/osg/VertexAttribDivisor, + src/osg/CMakeLists.txt, src/osg/VertexAttribDivisor.cpp, + src/osgWrappers/serializers/osg/VertexAttribDivisor.cpp: Added + VertexAttribDivisor class to wrap up glVertexAttribDivisor + function + +2014-11-24 14:09 robert + + * examples/osgsimplegl3/osgsimplegl3.cpp: Fixed osgsimplegl3 + example's set up of the main camera. + +2014-11-24 14:01 robert + + * include/osg/State, src/osg/State.cpp: Added numTextureUnits + parameter to the osg::State::resetVertexAttributeAlias(bool, + unit) method, and set the default to 8. + +2014-11-21 20:16 robert + + * src/osgDB/CMakeLists.txt, src/osgDB/FileUtils.cpp: From Alberto + Luaces,"the current code uses the preprocessor for generating the + plugin path in + a way that when CMAKE_INSTALL_PREFIX contains something along the + lines + of + + /usr/x86_64-linux-gnu/ + + it gets substituted as + + /usr/x86_64-1-gnu/ + + that is, the string is preprocessed again, thereby making changes + to + anything that matches any defined symbol, as "linux" in this + example + (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=763816). + + Quoting that path directly in CMake scripts solves that problem. + " + +2014-11-21 20:15 robert + + * include/osg/Image: Added comment clarifying how + Image::getColor(..) out of 0..1 range texcoords are handled - now + clamped to edge. + +2014-11-21 17:22 robert + + * src/osg/Image.cpp: Implemented a clamp to edge policy for the + Image::g/setColor(color, texcoord). + +2014-11-21 17:17 robert + + * src/osg/CopyOp.cpp: Added testing for Drawables in the + CopyOp::operator(Node*) to replicate the old functionality. + +2014-11-21 16:27 robert + + * include/osg/Image, src/osg/Image.cpp: From Sebastian + Messerschmidt, "Added setColor function to modify an image based + on texture coordinates, parallel to the getColor functionality." + +2014-11-21 14:46 robert + + * examples/osgterrain/osgterrain.cpp: Added --db-affinit cpuNum + option to osgterrain example to illustrate how to set the thead + affinity of the DatabasePager threads. + +2014-11-21 10:44 robert + + * include/osg/Texture2DMultisample: From Sebastian Messerschmidt, + "Attached you find a change adding a getNumSamples() function to + retrieve the value set via setNumSamples." + +2014-11-21 10:37 robert + + * CMakeLists.txt, CMakeModules/ModuleInstall.cmake, + CMakeModules/OsgMacroUtils.cmake, + PlatformSpecifics/Android/android.toolchain.cmake, + src/CMakeLists.txt, src/OpenThreads/pthreads/CMakeLists.txt, + src/osgWrappers/serializers/osg/LibraryWrapper.cpp: From Rafa + Gaitan, "I finally had some time to change the build system for + Android using a Toolchain, which, I think, will be easier to + maintain and uses cmake standard system to build it. + + My changes: + ------------------- + - I changed the cmake files and added a toolchain for building + OSG in Android. The toolchain is based on the one used at OpenCV. + For building OSG for android you just need to do: + + mkdir build_android_static_gles2 && cd build_android_static_gles2 + cmake .. -DANDROID_NDK= + -DCMAKE_TOOLCHAIN_FILE=../PlatformSpecifics/Android/android.toolchain.cmake + -DOPENGL_PROFILE="GLES2" + -DDYNAMIC_OPENTHREADS=OFF + -DDYNAMIC_OPENSCENEGRAPH=OFF + -DANDROID_NATIVE_API_LEVEL=15 # optional + -DANDROID_ABI=armeabim #optional + -DCMAKE_INSTALL_PREFIX= #optional + make -j 8 + make install + + The OPENGL_PROFILE works as expected, changing it to "GLES1" it + builds and links OSG using GLES1. + The DYNAMIC_OPENTHREADS/DYNAMIC_OPENSCENEGRAPH parameters also + allows to build the dynamic libraries + + - I also added some build fixes for android related to the + texture formats and added some missing USE_OSG_SERIALIZER_WRAPPER + in the osg serializer library to support loading osgb files in + static." + +2014-11-21 10:21 robert + + * CMakeModules/CheckAtomicOps.cmake: From Björn Blissing, fix for + ambiguous defines in Atomic.cpp when compiling with MinGW and GCC + +2014-11-20 17:37 robert + + * include/osg/Texture: From Claus Steuer, "XCode 6, IOs 8.1 SDK + Compile fix : There are some undefined texture formats when + compiling osg for IOs 8.1 with XCode 6 and OpenGLES2 enabled." + +2014-11-20 17:00 robert + + * include/osg/State: From Pjotr Svetachov, "I was experimenting + with VBO's to try to get them on par with display + lists when drawing lots of batches and noticed that my program + generated a lot of unneeded glClientActiveTexture calls. Digging + deeper I found out it came from State::disableTexCoordPointer + where + the function would call glClientActiveTexture but not + glDisableClientState because the geometry didn't have texture + coordinates for that channel. This is because in our scene there + are + some geometries that have move than one uv channels making + State::_texCoordArrayList grow. Then the method + State::applyDisablingOfVertexAttributes() will call + disableTexCoordPointer multiple times. + + I rearrange the method a little to combat this. Now the logic has + the + same ordering as disableTexCoordPointersAboveAndIncluding which + already combats this." + +2014-11-20 16:38 robert + + * src/osgPlugins/obj/ReaderWriterOBJ.cpp: From Farshid Lashkari, + "The obj loader was overriding the existing database path list + with the file path of the model, instead of prepending the file + path to the path list. The latter seems to be more common + behavior for most of the existing loader plugins. Also, the local + options weren't actually being used when processing the scene + graph for textures. I've attached the fix for both issues." + +2014-11-20 10:52 robert + + * src/osgPlugins/Inventor/ConvertFromInventor.cpp: From Marc + Helbling, "here is a trivial fix in the Inventor plugin. In one + code path, the pointer validity is checked after dereferencing a + pointer that can be null (image->valid()) instead of calling + ref_ptr::valid (image.valid())." + +2014-11-20 10:45 robert + + * src/osgUtil/MeshOptimizers.cpp: From Marc Helbling, "I've come + across scenes that contains geometries with initialized but empty + vertex arrays and primitives and that would make some optimizers + crash. + + The submission therefore only contains a test on the size of the + vertex array for the VertexCacheMissVisitor and the + VertexAccessOrderVisitor visitors." + +2014-11-20 10:05 robert + + * src/osg/Texture.cpp: From Christian Ruzicka, "while testing this + commit on our OSG 3.2 version, I observed that the changes for + ETC2 brake ETC1 support. Attached you'll find the changes to get + ETC1 running again" + +2014-11-20 09:55 robert + + * src/osgPlugins/3ds/ReaderWriter3DS.cpp: From Sukender, "Fix for + 3DS reader, which may read wrong triangles. Actually, indices may + suffer a 'short int' overflow, in two places." + +2014-11-20 09:41 robert + + * src/osg/Texture2DArray.cpp: Fixed segfalt in Texture2DArray copy + constructor where it would apply images to an uninitialzed + vector. + +2014-11-20 09:32 robert + + * src/osgPlugins/fbx/fbxMaterialToOsgStateSet.cpp, + src/osgPlugins/fbx/fbxMaterialToOsgStateSet.h, + src/osgPlugins/fbx/fbxRMesh.cpp: From Marc Helbling, "patch + adding support for ambient material in the FBX plugin. It's a + straightfoward adaptation of the emissive support and has been + tested on a proprietary model." + +2014-11-20 09:21 robert + + * src/osgPlugins/gif/ReaderWriterGIF.cpp: From Pjotr Svetachov, fix + for build breakage with giflib 5.0. + +2014-11-20 08:26 robert + + * README.txt: From Per Nordqvist, "The README.txt is still somewhat + confusing so I have updated it" + +2014-11-19 17:45 robert + + * README.txt, configure: Removed configure script as it's no longer + required as cmake . will now default to Release + +2014-11-19 17:42 robert + + * CMakeLists.txt: Added CMake script to set the default + CMAKE_BUILD_TYPE to Release. Approach taken from simgear. + +2014-11-19 17:29 robert + + * ChangeLog, applications/osgversion/Contributors.cpp: Fixed + Contributors names + 2014-11-19 17:10 robert * src/osgPlugins/gif/ReaderWriterGIF.cpp: From Clement Boesch, "Fix