Commit Graph

6660 Commits

Author SHA1 Message Date
Cedric Pinson
8d6a01b62d From Cedric Pinson, add missing file 2009-12-09 23:42:29 +00:00
Cedric Pinson
53d5b56202 From Cedric Pinson,
Add check in RigTransformSoftware if bones are null
Indent TimelineAnimationManager
Add check for NaN in UpdateCallback.cpp
Fix TimelineAnimationManager clear target (a refactore of Timeline is require for futur)
Fix Computation of bounding box for RigGeometry
2009-12-09 18:45:46 +00:00
Robert Osfield
f099dab160 Updated wrappers 2009-12-09 14:34:24 +00:00
Robert Osfield
5f61d14dc6 Fixed support for compiling VBO's 2009-12-09 13:55:10 +00:00
Robert Osfield
6e7c02b5d8 Added a Geometry::compileGLObjects() to handle compilation of VBO + EBO's. 2009-12-09 13:51:02 +00:00
Robert Osfield
db7528386f From Ulrich Hertlein, .osg support for osgFX::Outline 2009-12-09 10:18:13 +00:00
Robert Osfield
8c7b2c097c Compile fixes for GLES 2009-12-09 09:37:19 +00:00
Robert Osfield
e0154c2d28 From Ulrich Hertlein, "attached is a stencil buffer-based constant-width outline f/x with example. I've also modified osgfxbrowser to setup the stencil buffer accordingly." 2009-12-08 17:41:44 +00:00
Robert Osfield
65c6fdd8ca Added check for image compatibility with existing texture object, releasing the existing texture object in cases when the new image size/pixel format is not compatible. 2009-12-08 17:33:01 +00:00
Robert Osfield
248386861b From Sukender, "I experienced as some users before: I tried to rescale an image without a valid rendering context... And had problems to unserstand what the "GL_OUT_OF_MEMORY" meant! So I added a few comments for future users." 2009-12-08 17:25:45 +00:00
Robert Osfield
d54b6907b8 Fixed typo 2009-12-08 16:58:21 +00:00
Robert Osfield
6c0d321e3d From Fabien Lavignotte, "i have a problem with my application, i am currently playing with Texture2D::SubloadCallback to optimize my image data transfer, and also avoid double buffering when using a drawing thread.
There is a small bug with your change and SubloadCallback, the texture object is destroy at each call of Texture2D::apply because the modified count is never updated when using SubloadCallback.
I have made a small fix to avoid that, see attachement."

From Robert Osfield, added an if (_image.valid()) before the getModified() that Fabien added to avoid problems when no _image is assigned but an subload callback is.
2009-12-08 16:02:43 +00:00
Robert Osfield
57d0729484 Updated wrappers 2009-12-08 15:39:04 +00:00
Robert Osfield
7603931eb4 Added catch for changes in image pixel format and dimensions so that the texture object is released when the image changes enough to warrant a new texture object. 2009-12-08 14:25:16 +00:00
Robert Osfield
78a31776be Re-order the setting of the VBO's 2009-12-07 16:45:33 +00:00
Robert Osfield
9e9b6b8843 Updated wrappers 2009-12-05 10:13:43 +00:00
Robert Osfield
8c11e7be48 From Tatsuhiro Nishioka, "> The workaround/solution was to add a block of code at the end of the
> loader to un-premultiply the alpha (now in the codebase).

Applying the code brightens the semi-transparent portion, but the black edges are still there (same on both osgviewer and FlightGear).
Therefore I believe that the alpha channel is completely ignored (on png, gif, tiff, etc...). I tweaked and tweaked and finally got a workaround.

Please commit the enclosed file to fix these issues.

My workaround is a bit tricky (and some lines are even weird for me), but it resolves the black edges.
These workarounds also work on GIF, TIFF, TGA, and PSD as long as I've tested so far.

Please read this for more info on this issue:
http://macflightgear.sourceforge.net/home/development-notes/devnote-dec-02-2009
http://macflightgear.sourceforge.net/home/development-notes/devnote-dec-03-2009

I'm very happy if some of you guys find a better means of solving the black edges.

"
2009-12-04 17:25:23 +00:00
Robert Osfield
039455ef30 Converted tabs to four space 2009-12-04 17:24:27 +00:00
Robert Osfield
6773aca87a From Sukender,
"Here is our freshly baked 3DS reader/writer (named 'v0.5' to differentiate from previous one). Changes are against trunk rev. 10819.
Short changelog (from rev 10819):
- Added 3DS writer
- Sync'd with latest lib3DS
- Added options, especially "flattenMatrixTransforms" to get the "old" behaviour (else the reader correctly maps to OSG the transforms from the 3DS file).

What should be done:
- Check with pivot points, with and without "flattenMatrixTransforms" option.
- We ran tests on it, but we can never be 100% sure there is no bug. Testing from the community would of course be helpful."
2009-12-04 11:31:04 +00:00
Robert Osfield
c262112fbb From Mathieu Marache, "I replaced the Vec4 by a float and used only the x component of the shadow2DProj . This works on my apple box." 2009-12-04 09:57:08 +00:00
Robert Osfield
8080f46444 From Julen Garcia,"I've been lately working also with the ffmpeg plugin and I implemented pause(), seek() and getReferenceTime(). I think that I have solved the internal clock issues (maybe not in the most elegant way :?" 2009-12-02 18:58:45 +00:00
Robert Osfield
11abf29c14 From Farshid Lashkari, "I had to make a few small changes to some cmake files to enable the OSG_MSVC_GENERATE_PLUGINS_AND_WRAPPERS_MANIFESTS option for Visual Studio 2008." 2009-12-02 14:58:47 +00:00
Robert Osfield
b278660799 From Nico Kruithof, "Attached is a patch that makes the spherical manipulator frame rate independent. This is similar to what Lee did for the trackball manipulator a couple of months ago." 2009-12-02 14:21:13 +00:00
Robert Osfield
3c8fe13194 Quitened down debug info 2009-12-02 12:37:45 +00:00
Robert Osfield
2be82dd8d7 Quiten down debugging message 2009-12-01 19:40:29 +00:00
Robert Osfield
4d762a81a6 Updated wrappers 2009-11-30 13:44:41 +00:00
Robert Osfield
3a71cd80fa Attempted compile fix. 2009-11-27 18:14:27 +00:00
Robert Osfield
41ba8ce585 From Christian Ehrlicher, "during profiling my program I found out that there's a lot of memory
(de)allocation going on in OverlayNode::cut().

So instead creating inner-loop variables 'distances' and 'newVertices'
every time, I moved the creation out of the loop and just do a clear() +
reserve() inside the loop. This allows std::vector<> to reuse the old
memory instead allocating new when the new size <= oldsize."
2009-11-27 16:47:38 +00:00
Robert Osfield
9b3e02f4e9 From Jason Daly, "The DDS reader test for DXT1 images with 1-bit alpha wasn't thorough enough. It performed the first check (color_0 <= color_1), but it didn't actually scan the texel block to see if the transparent color (0x03) was there. As a result, DXT1 files without any alpha were getting switched to RGBA format (instead of being left just RGB).
The attached code fixes this problem."
2009-11-27 15:48:57 +00:00
Robert Osfield
6ff21888f3 From Wang Rui, "I just successfully built the pdf plugin on Windows XP and MSVC and
fixed a small bug then:

ReaderWriterPDF.cpp, line 133, change:

std::string uri = std::string("file:") + foundFile;

to:

#if defined(WIN32) && !defined(__CYGWIN__)
           std::string uri = std::string("file:///") + foundFile;
#else
           std::string uri = std::string("file:") + foundFile;
#endif


That's because glib accepts "file:///C:\\data\\file.pdf" as URIs on
Windows, as well as "file:/home/data/file.pdf" on Unix, but
"file:C:\\data\\file.pdf" is not recognized.

Now I could read my Chinese translation of OSGQSG with osgpdf. :P"
2009-11-27 15:35:57 +00:00
Robert Osfield
36b5e59019 From Paul Martz, "This change address the following issue: an app opens a Viewer on a multidisplay system, configured to setUpViewAcrossAllDisplays, with a non-default clear mask. In this case, OSG failed to propagate the clear mask to the slave Cameras, resulting in the clear mask being ignored. To fix this issue, this revision adds a new CullSettings::VariablesMask bit, CLEAR_MASK, to explicitly control inheritance of the clear mask. This bit is set by default, which means that the clear mask now inherits by default, whereas previously it did not." 2009-11-27 15:32:43 +00:00
Robert Osfield
9ce90775c2 From Chris Denham, "I discovered what seems to be a missing call to FreeLibrary for osgDB.dll The result of this is that it prevents me from dynamically unloading my DLL (which uses OSG). This is because initialisation of the osg::Registry instance results in a call to GetModuleHandleEx (to get the filename of the DLL). This call to GetModuleHandleEx increments the module refcount, but there was no matching call to FreeLibrary for the returned handle. Unlike the old GetModuleHandle function, GetModuleHandle does (by default) increment the refcount.
I have added the missing call to FreeLibrary in osgDB::FileUtils., and now my the runtime unload of MY dll is working properly. It has also cured some related problems I was having with memory leak checks being reported.

I have attached a fix to osgDB/FileUtils.cpp based on version 2.9.5 svn revision 10374
"
2009-11-27 12:21:44 +00:00
Robert Osfield
5d6ce1a25f From Cory Riddell, "Small edit to ReaderWriterDOT.cpp. It wasn't checking the file extension
and so, if the .dot plugin was loaded, it would happily handle any file
name extension.

To reproduce the bug, first save a scene to a dot file (to load the dot
plugin), then try to write the scene to an osg file. If you look at the
osg file, you will see that it is a dot file."
2009-11-27 12:17:20 +00:00
Robert Osfield
980db2c772 Updated wrappers 2009-11-27 11:48:21 +00:00
Robert Osfield
6ebeff658a Implement deleteAllTextureObject/BufferObjects functionality.
Cleaned up warnings.
2009-11-27 11:43:18 +00:00
Robert Osfield
ab8d93a181 Introduced preliminary osg::deleteAllGLObjects() and osg::discardAllGLObjects() functions and associated support into Texture and BufferObjects 2009-11-26 12:33:07 +00:00
Robert Osfield
7255941cf6 Updated wrappers 2009-11-24 15:26:54 +00:00
Robert Osfield
a3adc3d07c From Martin Scheffler, "osgParticle: method to set start and end tile for particle texture (for animated particles). I also updated examples/osgParticle to show the feature.
The texture in data/Images should be copied to osg-data. I created the texture myself with the help of an explosion generator, so no license issues there.
"
2009-11-24 15:00:11 +00:00
Robert Osfield
f79f465467 From Farshid Lashkari,
"I've attached a small fix to osgUtil::SceneView so that is uses a scissor test when clearing the stencil buffer for stencil based stereo."

and

"I've added another small change for stencil based stereo, so please use this newer version. This newer version simplifies the calls to glOrtho and glRecti when drawing the stipple pattern. This change also happens to fix an issue where the stencil stereo would not work with certain viewport settings. I'm not exactly sure why this was happening, it might be a graphics driver issue, but either way I think the changes should be fine."
2009-11-24 14:32:51 +00:00
Robert Osfield
49d6a96a5a From Lilin Xiong, "when using stlport5.3 (vc 2003) , this line cann't be compiled:
_instances[0] = new WGLExtensions;
    change to:
   _instances[HGLRC(0)] = new WGLExtensions;"
2009-11-24 14:22:12 +00:00
Robert Osfield
5f04576abd Updated wrappers 2009-11-24 14:20:59 +00:00
Robert Osfield
6d3e7f83e2 From Terry Welsh, "As I mentioned here
http://www.mail-archive.com/osg-users@lists.openscenegraph.org/msg33967.html
, interpolating through HSV space gives a rainbow color effect which
does not mimic the simple RGB color interpolation that OpenGL does.
It's overkill and causes unexpected visual artifacts.  In the attached
files I've removed the conversion to HSV so that interpolation happens
in RGB space."
2009-11-24 14:12:54 +00:00
Robert Osfield
3599be9708 From Wojciech Lewandowski, "I have extended a list of texture targets that can be used with shadow comparison. These targets are avaialble in in OpenGL 3.x shadow sampler variants. Changes are based on current SVN." 2009-11-24 13:24:30 +00:00
Robert Osfield
b3abc0842f From Chris Hanson, " Add support for "OutputTextureFiles" option to IVE plugin to permit creation of external
.dds texture files from internally-embedded textures during IVE writes."

From Robert Osfield, fixed a bug in the above submission, and changed the way that the filename of the file is passed into DataOutputStream to avoid issues with the .ive's plugins ability to read from istreams.
2009-11-23 11:00:07 +00:00
Robert Osfield
d09323f93e From Chris Hanson, " Add support for requesting and setting the current directory (a la getcwd/chdir) via a
C++-friendly string-class API.

 Prevent osgDB::concatPaths from faulting if the supplied "left" path string is empty."
2009-11-23 10:19:37 +00:00
Robert Osfield
6365810f8b From Paul Martz, typo fixes 2009-11-23 09:53:08 +00:00
Robert Osfield
4759cb951e From Colin MacDonald, "In my application I have a custom graphics context class, derived from
osg::GraphicsContext, in order to give good integration with the
application's GUI toolkit.  This works really well.

However, I need to share OpenGL texture resources with the standard
osgViewer GraphicsContext implementations, in particular the
PixelBuffers.  This is essential for my application to conserve graphics
memory on low-end hardware.  Currently the standard osg implementations
will not share resources with another derived osg::GraphicsContext,
other than the pre-defined osgViewer classes e.g. PixelBufferX11 is
hardcoded to only share resources with GraphicsWindowX11 and
PixelBufferX11 objects, and no other osg::GraphicsContext object.

To address this in the cleanest way I could think of, I have moved the
OpenGL handle variables for each platform into a small utility class,
e.g. GraphicsHandleX11 for unix.  Then GraphicsWindowX11, PixelBufferX11
and any other derived osg::GraphicsContext class can inherit from
GraphicsHandleX11 to share OpenGL resources.

I have updated the X11, Win32 and Carbon implementations to use this.
The changes are minor.  I haven't touched the Cocoa implmentation as
I'm not familiar with it at all and couldn't test it - it will work
unchanged.

Without this I had some horrible hacks in my application, this greatly
simplifies things for me.  It also simplifies the osgViewer
implementations slightly.  Perhaps it may help with other users'
desires to share resources with external graphics contexts, as was
discussed on the user list recently."

Notes from Robert Osfield, adapted Colin's submission to work with the new EGL related changes.
2009-11-21 16:41:02 +00:00
Robert Osfield
40d46a8687 From Chris Hanson, " Remove vestigial (and because it was undocumented, potentially harmful) code to ignore
filenames starting with a dash "-" character from the (std::vector<std::string>&) version
of osgDB::readNodeFiles. Handling of argument strings is properly implemented in the
osgDB::readNodeFiles(osg::ArgumentParser& arguments,const Options* options)
variant, which most code uses. The (std::vector<std::string>&) version is only called by
the osgconv utility, which does its own argument handling and stripping prior to calling
readNodeFiles().

 Also, documented this behaviour in the header comments.

 I believe this code removal is a meritful change because leavign the code in causes an
unexpected and undocumented behaviour (ignoring any filename starting with a dash) that
could bite users in the future. This behaviour is not needed for existing functionality
because existing code uses other APIs to handle dash-prefixed arguments anyway.

"
2009-11-20 14:51:43 +00:00
Robert Osfield
255f6dda41 Moved the ImagePager update to before the main scene graph update traversal 2009-11-20 14:40:58 +00:00
Robert Osfield
d9c1f45231 From Wang Rui, "I've made a small fix to osgViewer/Scene.cpp, which is already attached. I would like to explain what I've done and why.
In Scene::updateSceneGraph(), change:

if (getSceneData())
{
        updateVisitor.setImageRequestHandler(getImagePager());
        getSceneData()->accept(updateVisitor);
}
if (getDatabasePager())
{
        // synchronize changes required by the DatabasePager thread to the scene graph
        getDatabasePager()->updateSceneGraph((*updateVisitor.getFrameStamp()));
}

to

if (getDatabasePager())
{
        // synchronize changes required by the DatabasePager thread to the scene graph
        getDatabasePager()->updateSceneGraph((*updateVisitor.getFrameStamp()));
}
if (getSceneData())
{
        updateVisitor.setImageRequestHandler(getImagePager());
        getSceneData()->accept(updateVisitor);
}

That is, just swap the positions of two 'if () {...}' segments.

While working on a paged terrain, I need to collect every newly allocated PagedLODs and make them temporarily unrenderable in the next frame, which are all done in a update callback. But I found that these PagedLODs will always be shown before collecting them, because of the unsuitable sequence in Scene::updateSceneGraph(). DatabasePager is synchronized AFTER the user updating traversal, that is, user cannot IMMEDIATELY find out changes made by DatabasePager.
 "
2009-11-20 14:39:15 +00:00