Commit Graph

7711 Commits

Author SHA1 Message Date
Robert Osfield
d88a6af8c1 Changed the handling of unkown nodes on write so that the code now ignores the non supported nodes allows the overall write to continue. 2011-02-26 15:52:51 +00:00
Robert Osfield
a7fd352b40 Removed TrapezoidalShadowMap due to discovery of patent on algorithm. 2011-02-24 11:54:44 +00:00
Cedric Pinson
56a8dc7c92 Cedric Pinson: Fix divide by zero when Action has 0 frames, and add a warning message because it means something wrong on input data 2011-02-23 22:52:01 +00:00
Robert Osfield
a25c4e4ab2 From Wojciech Lewandowski, intial cut at new TrapezoidalShadowMap ShadowTechnique 2011-02-23 16:46:34 +00:00
Robert Osfield
9cfb248b46 From Wojciech Lewandowski, various tweaks to osgShadow shadow mapping classes to improve consistency and enable more debug info output 2011-02-23 16:45:44 +00:00
Robert Osfield
c45717fef0 Inverted the orientation of the 't' transparency control so that it's full on at the bottom of the screen, and full transparent at the bottom. 2011-02-23 14:09:29 +00:00
Robert Osfield
d73f37e841 Added test code to explore problems with LightSpacePerspectiveShadowMap implementation handling of different datasets and camera settings. 2011-02-22 14:21:34 +00:00
Robert Osfield
bff1ada14b Changed the handling of erroneous dicom files so that the loading of a directory of dicom files is not abondonded when one or more erroneous files are encountered. 2011-02-22 10:53:58 +00:00
Robert Osfield
66ccbf42de Added computePositions() call to Text3D::resizeGLObjectsBuffers(uint) 2011-02-21 12:29:13 +00:00
Robert Osfield
cdb0f277a4 Added missing Terrain.h reference 2011-02-21 10:02:53 +00:00
Robert Osfield
3d2cb2f713 Fixed build of various LiSPSM algorithms 2011-02-20 09:57:07 +00:00
Michael PLATINGS
caa9ef591e Disabled the RGB components of the opacity texture 2011-02-18 11:04:01 +00:00
Robert Osfield
83954e3f52 From Philipp Svehla, "We’ve added support for users to override the default values for child elements in asset tags (for the collada writer). This support was added for the following child elements:
- contributor

        - author

        - authoring_tool

        - comments

        - copyright

        - source_data

   - created

   - keywords

   - modified

   - revision

   - subject

   - title

   - unit

        - name

        - meter

   - up_axis



With this support, users are able to include additional information in their models.  Additionally, tools such as sketchup that support asset tags use the values appropriately within their imported models."
2011-02-14 16:24:12 +00:00
Robert Osfield
059a7c052d From Tim Moore, "This patch fixes some performance problems with the DXF loader. It removes some unnecessary copies of vertex coordinates (which were causing an exponential explosion). It also replaces BIND_PER_PRIMITIVE normals with BIND_PER_VERTEX so that the resulting geometry will be on the fast path." 2011-02-14 16:09:51 +00:00
Robert Osfield
c7bf98cca9 From Jan Peciva, "Improvements:
- Use OSG routines to load images instead of simage library (removes
dependency on 3rdParty simage library). Applies to Coin Inventor clone only.
"
2011-02-14 15:04:40 +00:00
Robert Osfield
6f09acace9 Moved ProgramBinary into osg::Program scope 2011-02-14 15:01:56 +00:00
Robert Osfield
3128c8063e From Sukender, "Here are two sumbissions for DAE.
1. daeRGeometry.cpp (rev 12132). A tiny sumbission which fixes a quite important bug: a parameter was forgotten in Collada ReaderWriter, and texture coordinates could not be loaded properly. So:
"
Added missing paramter when calling createGeometryData(). Fixes missing texture coordinates (in "bind_vertex_input").
"

2. ReaderWriterDAE.cpp (rev 12132):
"
Added "baseImageDir" as a plugin string data, in order to manually specify base directory to use when relativising image file names. This is used to properly write files, when images are not located in a subdirectory (like "../images" for some software).
"
2011-02-14 14:16:58 +00:00
Robert Osfield
b5a14f8d68 From Johannes Bauerle, "I experienced problems using binary shaders in osgt files (=the osg-serializer plugins). At runtime std::bad_alloc errors were thrown when using binary shaders.
The reason is that the .osgt text files do not provide size information about the contained binary shader hence leading to a bad allocation when reading the shader data, probably size 0 ? The reader method in the responsible serializer class (serializers/osg/BinaryShader) is correct and does not need to be changed as it queries the size as expected. The writer method supports two paths(binary output .osgb and text output .osgt/.osgx). Only the text path is affected as the binary path writes the size.

I extended the writer in the text path by the size information. The results before and after the fix are shown below:

Erroneous code for binary shader in osgt file before fix:

Data {
    0a
    0d
    0
    ...
}

Corrected code for binary shader in osgt file after fix:

Data 524 {
   0a
   0d
   0
   ...
}

After my fix the the thrown error disappeared."
2011-02-14 13:54:15 +00:00
Robert Osfield
54afbb9ff8 From Jahannes Bauerle, "l discovered that the shader class(/src/osg/Shader.cpp) shows wrong behavior when using binary shaders . When shader objects are compared the reference pointer behind the _shaderBinary member is not included in the comparison.
I included binary shaders into an osgt model file. These shaders only consists of the binary shader code, I did not supply the text version additionally. When loading the model  the osg::Optimizer threw away all shaders except the first one. In the current trunk version of the file two shader objects are identical despite differing _shaderBinary members as the compare method of the Shader class does not include the comparison of that member.

The fix in this submission adds the check for identity of the referenced binary shaders to the shader class.

When comparing two shader objects with text source shaders the new lines of comparison are not even executed as the comparison returns false in the previous lines when the text shaders differ.

With this fix I get expected behavior, the Optimizer handles the different shaders correctly."
2011-02-14 13:50:14 +00:00
Robert Osfield
aca9c9c848 Set debug message to INFO 2011-02-14 12:55:44 +00:00
Robert Osfield
1d55efb721 From Michael Platings, I've added initial support to osg for glGetProgramBinary and glProgramBinary. This means that shader programs can now be cached to disk and later reloaded, which is much faster than linking shaders from source code. This should mean significantly shorter load times for people who use lots of combinations of shaders. 2011-02-14 12:54:21 +00:00
Robert Osfield
597f978128 Fixed typo 2011-02-14 12:14:36 +00:00
Robert Osfield
e3225a2c4b Added check against the NodePath being empty. 2011-02-11 09:18:36 +00:00
Robert Osfield
a55c3be960 Tweak to output details 2011-02-10 14:24:39 +00:00
Robert Osfield
310a28dbee From Martin von Gagern, build fix for latest ffmpeg changes 2011-02-10 12:23:18 +00:00
Robert Osfield
bd13580ff5 Added const 2011-02-08 14:36:15 +00:00
Robert Osfield
4b4754c3cf Implementated experimental reuse of PBO's after download 2011-02-07 14:19:58 +00:00
Robert Osfield
e0924886bd Added support for enabling the assignment of PixelBufferObjects to loaded Images to aid the download of images to the GPU.
Feature can be enabled/disabled (default) by setting the env :

   OSG_ASSIGN_PBO_TO_IMAGES  to ON or OFF
2011-02-04 12:43:00 +00:00
Robert Osfield
d218a8c9a7 Added support for getting the current screen refresh rate using the XrandR extension. 2011-02-04 10:27:05 +00:00
Robert Osfield
bd6009f9f2 Refactored NodeTrackerManipulator to use osg::ObserverNodePath rather than it's only local equivilant. 2011-02-03 17:07:01 +00:00
Robert Osfield
7ec37ae029 Added call to GraphicsCostEstimator::calibrate. 2011-02-03 14:27:50 +00:00
Robert Osfield
6496e35421 Moved GraphicsCostEstimator ref pointer into osg::State 2011-02-03 12:42:23 +00:00
Robert Osfield
88ce98b47d Moved GraphicsCostEstimator from osgUtil into core OSG library 2011-02-03 12:22:09 +00:00
Michael PLATINGS
dcf3187745 Updated information about the FBX SDK version 2011-02-02 16:44:21 +00:00
Robert Osfield
c08d77f7bb From Sukender, "Vertices in DOUBLE PRECISION were not handled by Remapper classes. I added missing virtual methods." 2011-02-01 18:12:59 +00:00
Robert Osfield
88f9e7dda8 Fixed the setting of the Drawable modes 2011-02-01 12:18:47 +00:00
Robert Osfield
99fc347212 Added experimental timing and PBO usage into ICO+GCE classes 2011-02-01 12:18:22 +00:00
Robert Osfield
cb26484ac7 Fixed bug in PixelBufferObject constructor for the case when a null Image is passed in to it. Added extra checks for NULL buffer data. 2011-02-01 12:17:40 +00:00
Robert Osfield
6e80cdcfb2 Temporarily disabled the cost estimate code for the 2.9.11 release 2011-01-28 14:24:30 +00:00
Robert Osfield
54d16c74ad From Ulrich Hertlein, "I adapted the Cocoa implementation so that it reports the unmodified key
and the modified key as requested. Can other OS X developers please test
the attached file, to make sure it works for everybody?

I fixed the problem with the caps-lock-key, too."
2011-01-28 13:54:44 +00:00
Robert Osfield
1c9d800756 Fixed size of default font 2011-01-28 12:34:49 +00:00
Robert Osfield
b4eaccc3c2 From Per Fahlberg, warning fixes 2011-01-28 11:07:51 +00:00
Robert Osfield
523b77ee8f From Ulrich Hertlien, "the changes from r12126 (see below) in dae/domSourceReader.h cause compiler errors on OS X
with gcc-4.2.1:

In file included from
/Users/uli/Projects/osg/OpenSceneGraph/src/osgPlugins/dae/daeRAnimations.cpp:3:
/Users/uli/Projects/osg/OpenSceneGraph/src/osgPlugins/dae/domSourceReader.h:43: error:
explicit specialization in non-namespace scope 'class osgDAE::domSourceReader'
/Users/uli/Projects/osg/OpenSceneGraph/src/osgPlugins/dae/domSourceReader.h:45: error:
explicit specialization in non-namespace scope 'class osgDAE::domSourceReader'
/Users/uli/Projects/osg/OpenSceneGraph/src/osgPlugins/dae/domSourceReader.h:47: error:
explicit specialization in non-namespace scope 'class osgDAE::domSourceReader'
/Users/uli/Projects/osg/OpenSceneGraph/src/osgPlugins/dae/domSourceReader.h:49: error:
explicit specialization in non-namespace scope 'class osgDAE::domSourceReader'
/Users/uli/Projects/osg/OpenSceneGraph/src/osgPlugins/dae/domSourceReader.h:51: error:
explicit specialization in non-namespace scope 'class osgDAE::domSourceReader'
...

The attached file fixes this."
2011-01-28 10:53:49 +00:00
Robert Osfield
9b6e3fbe94 From Andreas Roth, "simple fix to support quad buffer stereo in osgQt" 2011-01-27 18:49:22 +00:00
Robert Osfield
2a18c8b02a From Eric Buehler, "I believe that the osgWidget::Window::HA_CENTER alignment should be center aligned rather than by the origin, as the osgWidget::Window::VA_TOP causes.
The current setAnchorHorizontal() command doesn't center the center of the object, it just center's the object's origin.  The following change to osgWidget::Window::update() will correct that behavior so that it is consistent with setAnchorVertical() behavior.
"
2011-01-27 17:14:28 +00:00
Robert Osfield
278203240b From Sukender, "I found the bug I was chasing! Here is my "twin" submission, from latest trunk rev: 12124.
1. DAE submission:
DAE plugin now correctly writes images URI in Collada file, when images are used twice.
I also greatly improved readability and maintenability of geometry reading (mainly daeRGeometry.cpp), by factorizing code, templatizing it (for double/single precision), and removing ugly macros.

2. osgDB submission:
I updated osgDB::getPathRelative(): it is now far more readable, it handles more cases (especially when you want to relativise "a/c" from "a/b", which results in "../c"), and I added comments to make it clearer to maintain."
2011-01-27 17:12:23 +00:00
Robert Osfield
67ae23f2cf From Alexander Sinditskiy, "reason of this changes described in http://forum.openscenegraph.org/viewtopic.php?t=7596
and another problem is:
example osgkeyboard is not work (keys not highlight) if user have 2 keyboard layout native and english and current user layout is native

I try to explain my changes

we need something that is identify key without modifier keys and layout  -> this is UnmodifedKey

I think osg must have its own UnmodifiedKeys table. Code must be run same on different platforms. This can de guaranteed by UnmodifiedKeys table.

Mikhail Izmestev helped me. He implemented VirtualKey changes in GraphicsWindowX11"
2011-01-27 16:23:48 +00:00
Robert Osfield
373f3931e9 Implement first pass at texture compile estimation 2011-01-26 18:47:55 +00:00
Robert Osfield
a4f2cbe577 Replaced CompileStats with GraphicsCostEstimator 2011-01-26 16:47:40 +00:00
Robert Osfield
3762dc49b9 From Mourad Biyfarguine, "This is a fix to some 'potentially uninitialized local variable' warnings in src/osg/glu/libutil/mipmap.cpp." 2011-01-26 16:46:58 +00:00
Robert Osfield
f9428e9f45 From Mathias Froehlich, build fix for Solaris 2011-01-26 16:45:36 +00:00
Robert Osfield
740b29d0f7 From Wang Rui, "I've found a problem when using QFont (osgQt/QFontImplementation.cpp)
to read fonts: only the first character of a whole text is correctly
shown and others are disappeared. I haven't got into the font
implementation so can't explain why this happened and how it should
work under other platforms, but it seems to be fixed by specifying
width and height of the glyph object. The source file is attached for
future developments. At present it just works for my own project. :-)
"
2011-01-26 16:10:42 +00:00
Robert Osfield
9df072ce05 Moved GraphicsCostEstimator into osgUtil. 2011-01-26 12:51:46 +00:00
Robert Osfield
9bb86b5534 Fixed warnings 2011-01-25 16:48:53 +00:00
Robert Osfield
abea92ee91 From Mathias Froehlich, build fixes 2011-01-24 21:12:25 +00:00
Cedric Pinson
a503b143cc From Michael Platings, Fix animation duration when adding channel to animation 2011-01-24 11:45:45 +00:00
Robert Osfield
71f97cb3bc Added #include to fix build 2011-01-21 14:11:22 +00:00
Robert Osfield
90508f282a From Sukender, "
DAE plugin was linking ORIGINAL images in the Collada file, using image->getName() as a path (even if images were modified in memory!). As the behaviour was not the one of other plugins (3DS, FBX, and such), I made the plugin relativise images filenames (as those plugins) and write the image which is in memory. However, in order to avoid removing features, I kept the previous behaviour but moved it in an option. Here are the options of the plugin I changed:
- daeForceTexture was unclear in this new context and removed in favor of two new options
- daeLinkOriginalTexturesNoForce: Writes reference to the original image if found, instead of writing the image in memory
- daeLinkOriginalTexturesForce: Writes reference to the original image even if not found, instead of writing the image in memory
Of course, if you specify no option, images are written as for other plugins.

Other thing I changed is the UTF8 support as I told you in a previous conversation. Now there is a simple option, "daeNamesUseCodepage", which makes all names except filenames (materials, animation, geometries...) be considered as encoded using current codepage. If so, they'll be converted to UTF8 when writing; else they are written directly. Of course, filenames follow OSG_USE_UTF8_FILENAME as usual.

I did "
2011-01-21 13:40:28 +00:00
Michael PLATINGS
cc207c1112 From Sukender: I had to call code from the FBX plugin (to relativise paths). I thus extracted it from FBX and moved it in osgDB (FileNameUtils) 2011-01-21 12:17:18 +00:00
Robert Osfield
43afbab09e From Sukender, getPathRelative() method. 2011-01-21 11:46:15 +00:00
Robert Osfield
6d1944b9e2 From Matthew Johnson-Roberson, "Small fix for operation thread to protect the access to _operations vector by functions getNumOperationsInQueue() and empty(). It is simply an addition of OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_operationsMutex);
to protect against accessing while writing which was segfaulting in VPB
specifically in void ThreadPool::run(osg::Operation* op)
in the waiting loop

while (_operationQueue->getNumOperationsInQueue() >= _maxNumberOfOperationsInQueue)
"
2011-01-20 12:32:20 +00:00
Robert Osfield
34aca88715 From Simon Julier, "I have been using the ply plugin to read files created by bundler and pmvs2 (http://grail.cs.washington.edu/software/pmvs/). This program generates models in the form of vertices only. However, the existing ply reader implementation was not able to handle the models generated in a satisfactory manner for two reasons:
1. It did not support normals applied to individual vertices.
2. It would only support red / green / blue colour triples, but the pmvs models are generated with diffuse colours. (The PLY format, http://local.wasp.uwa.edu.au/~pbourke/dataformats/ply/, lists specular and ambient colour forms as well.)

To partially overcome these limitations, please find attached modified versions of

src/osgPlugins/ply/vertexData.cpp
src/osgPlugins/ply/vertexData.h

The changes I've made are:

1. I have changed the boolean hasColor flag to a vertexField (which is a boolean operation on an enum) to indicate what fields are present in the ply file. (This is required because Turk's ply reader spits out warnings for every line where you try to read fields which do not exist.)
2. I have modified the code to apply valid normals to either triangles or vertices.
3. I have kludged in "support" for the various colour variants. Specifically, all the colour specified can be read from the file. However, they are all applied in the same way (namely as a colour array, bound to each vertex)."
2011-01-20 12:23:04 +00:00
Robert Osfield
d21009c323 From Simon Julier, "I ran across linking errors with osgdb_exr. Specifically, I found it was necessary to link against libImlIlf, libImlThread, libHalf, libIex and libzip.
I have attached a patch, against the trunk from 13:30 today, which consists of the following:

1. CMakeModules/FindOpenEXR.cmake: Look for libIlmThread and libIex as well. 2. src/osgPlugins/CMakeList.txt: Only include the exr subdirectory if both the OpenEXR and zip libraries were found. 3. src/osgPlugins/exr/CMakeLists.txt: Add ZIP_LIBRARY to TARGET_EXTERNAL_LIBRARIES."
2011-01-19 10:57:58 +00:00
Robert Osfield
6fb5387473 From Sukender, normalized option names 2011-01-19 10:38:39 +00:00
Robert Osfield
fc32aa4918 From Sukender, "Added ability for writer to read from Vec3/4d/f. Plugin now warns if it finds another type of data" 2011-01-19 10:31:49 +00:00
Robert Osfield
975aea4a2b From Sukender, "Factorized the depth loop ("while ( lastDepth >= _nodePath.size() )...") into a method called updateCurrentDaeNode(). Added missing calls into apply(osg::LightSource &) and daeWriter::apply(osg::Camera &) and daeWriter::apply(osg::CameraView &)" 2011-01-19 09:53:34 +00:00
Robert Osfield
0ed6049390 From Sukender, "Fixed ReaderWriterDAE::ConvertFilePathToColladaCompatibleURI(): It now handles paths containing '#' character as expected." 2011-01-19 09:36:21 +00:00
Robert Osfield
45f2b29a77 From Sukender and Robert Osfield, clean up of options 2011-01-19 09:34:26 +00:00
Robert Osfield
f2f9bb11b0 Moved the StateSet query and texcoord settings to within the if (vertices) block to avoid
an attempt to dereferences geometry->getStateSet() when non Geometry drawable is intersected.
2011-01-18 15:00:36 +00:00
Robert Osfield
57cf04a6bb Fixed CompileSet so it returns true when there is nothing to compile at all. 2011-01-18 11:20:53 +00:00
Robert Osfield
bf99528322 Build fix 2011-01-18 09:54:47 +00:00
Robert Osfield
11cd5a89ed Implemented better coupling of DatabasePager and IcrementalCompileOperation,
removing functional duplication and opening the door to dynamic enabling/disabling
of pre compile based on load.
2011-01-17 17:17:19 +00:00
Robert Osfield
2b3bba8587 From Guy Volckaert, "Changes to the openflight plugin to support replacing double sided polygons by 2 opposite facing polygons. This is sometimes required to resolved lighting and intersection issues. A new import option was was added to activate this feature called "replaceDoubleSidedPolys". 2011-01-14 14:30:19 +00:00
Robert Osfield
fac9992bca From Sukender, "- Lowered one notify level (it's now coherent with the "if" just above)" 2011-01-14 13:31:07 +00:00
Robert Osfield
a4f9c19440 From Sukender, "TIFF plugin now outputs messages coming from libtiff.
"
2011-01-14 12:03:37 +00:00
Robert Osfield
ad530c0fc7 From Sukender, "Small submission: - 3DS reader now takes care to not create Texture2D duplicates" 2011-01-14 11:49:55 +00:00
Robert Osfield
a1eabf18b5 Fixed for build with non autoatic ref_ptr<> to C pointer conversion 2011-01-14 11:46:43 +00:00
Robert Osfield
b0dd272186 From Brad Christiansen, "Attached is a fix which implements the lazy loading of optional layers (if requested) in the new osgb/osgt formats." 2011-01-14 11:00:11 +00:00
Robert Osfield
0da6d7f298 From Tim Moore, added missing ImageProcessor header reference 2011-01-13 18:05:59 +00:00
Robert Osfield
1b67e3ad1f Added ImageProcessor interface class and plugin mechnanism for ImageProcessor implementations to osgDB::Registry.
Add NVidiaTextureTools based plugin that provides an ImageProcessor implementation within an nvtt plugin.
2011-01-13 14:59:29 +00:00
Robert Osfield
f61a6aa4e7 Refactored the way that the DatabasePager passes the Terrain decorator node onto the TerrainTile.
The DatabasePager now passes the Terrain pointer into the ReaderWriter's via osgDB::Options object,
rather than pushing a NodePath containing the Terrain onto NodeVisitor.  This
change means that the DatabasePager nolonger needs to observer the whole NodePath and
will be lighter and quicker for it.

The change also means that ReadFileCallback can now run custom NodeVisitor's on the scene graph without
having to worry about TerrainTile's constructing scene graphs prior to the Terrain being assigned.

Also changed is the NodeVisitor::DatabaseRequestHandler which now requires a NodePath to the node that you wish
to add to rather than just the pointer to the node you wish to add to.  This is more robust when handling scenes
with multiple parental paths, whereas previously errors could have occurred due to the default of picking the first
available parental path.  This change means that subclasses of DatabasePager will need to be updated to use this new
function entry point.
2011-01-12 19:29:24 +00:00
Robert Osfield
534052f7cb From Sukender, "FBX plugin did not relay the osgDB::ReaderWriter::Options* when writing images (the writeImage() call). Now it does." 2011-01-11 17:29:47 +00:00
Robert Osfield
1f0a8aff32 Changed dos endings to unix line endings 2011-01-11 17:29:11 +00:00
Robert Osfield
49113e03dc From Mikhail Izmestev, "Current osgManipulator::AntiSquishCallback stops update traversal of childrens." 2011-01-11 17:23:22 +00:00
Robert Osfield
8dc2607c43 Changed debug messages to INFO 2011-01-11 17:05:24 +00:00
Robert Osfield
3cac9e9603 From Glenn Waldron, "Attached is a fix to State::convertVertexShaderSourceToOsgBuiltIns. The method was incorrectly inserting new declarations before a GLSL "#version" directive, which must always be the first line in a shader. This patch detects the #version directive and ensures that new declarations are inserted after it.
Attached is the modified State.cpp file.

I have also attached a sample transcript, showing the new code working properly. I ran it against osgEarth's shaders and it works as expected.

"
2011-01-11 17:04:37 +00:00
Robert Osfield
e4b1b6228d From Tim Moore, "This patch fixes a race condition in Renderer::ThreadSafeQueue that was causing some notifications of available SceneView objects to be missed. I saw a very noticeable performance problem (60 fps -> 8 fps) in DrawThreadPerContext mode in an osgEarth application before this patch. I had high hopes that this change might fix the much-discussed multiple GPU problem; no such luck, but I think the root cause of that is probably a similar threading issue." 2011-01-11 16:58:17 +00:00
Robert Osfield
88987d194a From Guy Volckaert, warning fixes 2011-01-11 16:18:49 +00:00
Robert Osfield
74cf034404 Unified more of the 2D and 3D text setup, fixed bugs in Text3D setup
which address the problems of black 3D text and the kerning causing problems with font positioning.
2011-01-11 11:39:31 +00:00
Robert Osfield
d59ac54b31 Improved the handling of application argument output when the options are very long. 2011-01-10 13:28:23 +00:00
Robert Osfield
c606604a7e Added check for invalid face size to prevent a crash 2011-01-05 11:43:37 +00:00
Robert Osfield
a30265de46 Added extra checks to osg::Geometry::verifyArrays(std::ostream&) 2011-01-04 10:21:50 +00:00
Robert Osfield
d644a6dfe3 Added osg::Geometry::verifyArray(std::ostream&) method to enable checks to be done on osg::Geometry to see if the arrays
are big enough to handle the primitives used in the geometry.

Added usage of verifyArray into osgfilecache so that it reports any problems on reading files in paged database.
2011-01-03 19:41:06 +00:00
Robert Osfield
25ef1a9e58 Added iterator include 2010-12-24 19:47:31 +00:00
Robert Osfield
0d814bb6b8 Refactored IncrementalCompileOperation to make it more flexible. 2010-12-24 19:19:48 +00:00
Robert Osfield
149200f0e9 Fixed warnings 2010-12-23 13:11:15 +00:00
Robert Osfield
d2c19014ac Deleted old makefile files that are no longer required now we have CMake 2010-12-23 10:45:43 +00:00
Robert Osfield
007c8b9df6 From Ulrich Hertlein (applied by Robert Osfield), "OpenThreads/win32/Win32Condition.h is not used anymore and could be removed from the
repository and win32/OpenThreads.mak and win32/CMakeLists.txt."
2010-12-23 10:05:55 +00:00
Robert Osfield
410b4fd109 Converted FrameStamp::g/setFrameNumber from int to uint 2010-12-22 20:11:05 +00:00
Robert Osfield
b5d4d9954a From Tim Moore, Dereference the databaseRequest while the queue is locked. This prevents the request from being
deleted at an unpredictable time within addLoadedDataToSceneGraph.
2010-12-21 12:54:06 +00:00
Robert Osfield
c38a1eb56d Introduced a local reference to the appropriate EasyCurl object to avoid seperate getEasyCurl() incurring a mutex lock overhead. 2010-12-21 12:51:15 +00:00
Robert Osfield
56a8df7ba7 Improved indentation to make it more readable and consistent with OSG. 2010-12-21 10:23:31 +00:00
Robert Osfield
7507242891 Cleaned up the frame number increment. 2010-12-21 09:36:03 +00:00
Robert Osfield
fce0121d26 From Paul Martz, Fix for "in expGeometryRecords.cpp lines 813-820, we write the UV list data incorrectly. According to the FLT spec, the data should be grouped per-vertex, not per-layer.
We should have:
 UV for vertex 0, layer 1
 UV for vertex 0, layer 2
 UV for vertex 1, layer 1
 UV for vertex 1, layer 2
  ...etc...

Instead, we have this:
 UV for vertex 0, layer 1
 UV for vertex 1, layer 1
  ...etc...
 UV for vertex 0, layer 2
 UV for vertex 1, layer 2
  ...etc..."
2010-12-21 09:12:18 +00:00
Robert Osfield
89f9aa2ddd From Andy Skinner, "In this file I’ve changed TriangleFunctor to TemplatePrimitiveFunctor, and added operator() methods for:
·        points (just look at points in frustum)

·        lines (simple line clip—replace the external point)

·        quadrilaterals (call operator() for triangles twice)"
2010-12-20 17:04:59 +00:00
Robert Osfield
f3df40aa70 From Andy Skinner, "We use a shared array for our OpenSceneGraph arrays, and the existing (deprecated) OSG plugin casts the Array to IntArray and FloatArray and the like. Because our arrays don’t use FloatArray, this crashes for us.
Attached is src/osgWrappers/deprecated-dotosg/osg/Geometry.cpp.  It gets the data pointer out and casts it to a pointer to the element type, rather than casting the array object itself.  This seems to work."
2010-12-20 16:23:27 +00:00
Robert Osfield
716a00ec59 From Trajce Nikolov, Fixes to avoid cracks in older archives, tested with archives 2.0, 2.1, 2.2 . 2010-12-20 10:49:30 +00:00
Robert Osfield
758bf7c3d9 From Trajce Nicklov, "I went thru the TileMapper today very carefuly and I remove all the tileStack approach - it made everything simplier and I think more proper. Cleaned the code as well. It was tested on huge archive with many lods as well with variable lods. Fix attached." 2010-12-19 13:25:45 +00:00
Robert Osfield
362edaa1b9 From Tim Moore, fix for race conditions in takeOrGenerate() methods 2010-12-17 13:43:41 +00:00
Robert Osfield
d8e3225cd8 Fixed warnings 2010-12-17 11:46:42 +00:00
Robert Osfield
634dd421fc Fixed the GLBufferObjectSet::deleteAllGLBufferObjets() and TextureObjectSet::deletaAllTextureObjects() methods
and improved the checkConsistency() usage so it's now possible to switch if off completed from being compiled in.
2010-12-17 10:59:05 +00:00
Robert Osfield
95feb34ffa Fixed the size computation 2010-12-15 19:44:29 +00:00
Robert Osfield
0e7cedab3a Improvements to GLBufferObject and TextureObject pools 2010-12-15 12:34:16 +00:00
Robert Osfield
c26a241c55 Added report of ration of current size to max target size for buffer. 2010-12-14 20:22:34 +00:00
Robert Osfield
3580108b3a Added AnimationCompletedCallback, s/getTimeScale and s/getTimeOffset() method to enable finer control of AnimationPathManipulator. 2010-12-14 20:07:00 +00:00
Robert Osfield
65f95fe3fe Added methods for checking sizes of various buffer object/texture object pool sizes. 2010-12-14 19:29:01 +00:00
Robert Osfield
4b4b438d44 Removed redundent MinimumNumberOfTextureObjectsToRetainInCache static variable 2010-12-14 15:28:31 +00:00
Robert Osfield
cc348f86cb Moved Performer and Inventor plugins into block protected to only compile when not using GLES. 2010-12-14 08:58:27 +00:00
Robert Osfield
bf6d45a531 Have moved gecko plugin to deprecated 2010-12-13 17:36:02 +00:00
Robert Osfield
543b2ee56e Added resizeGLObjectBuffers(uint) and relaseGLObjects(State*) to BufferData. 2010-12-13 17:09:31 +00:00
Robert Osfield
eb9510eb72 Moved GraphicsWindowQt from osgviewerQtContext into osgQt. 2010-12-13 16:25:50 +00:00
Robert Osfield
c665fdc973 Form Richard Schmidt, "The following features were added:
* the glsl plugin now supports processing #includes. The file extension sets the shader type.

* the registry releases gl objects of the shared state manager
 "
2010-12-13 12:16:57 +00:00
Robert Osfield
ea5d88e54f Added TODO notes 2010-12-12 10:00:57 +00:00
Robert Osfield
d9ab15bd4c From Wojciech Lewandowski, added docs on Swap Method env vars and command line options 2010-12-12 09:58:45 +00:00
Robert Osfield
c12b04368a From Trajce Nikolov, "attached is a fix for the txp loader (in TileMapper). The code was giving wrong parent tile ids using the stack - I implemented differnt approach for that" 2010-12-12 09:52:29 +00:00
Robert Osfield
244e751146 From David Fries, "The ffmpeg lockmanager was introduced in ffmpeg 52 30 1, but
later backported to 52 20 1, so add that to the version check
in ReaderWriterFFmpeg.cpp."
2010-12-12 09:40:16 +00:00
Robert Osfield
b4dad9bac3 From David Fries, "Avoid a terrapage crash with outstanding
requests to a removed archive file.  ReaderWriterTXP::getArchiveName
will create an archive if it doesn't exist.  This is causing a crash
if the terrain is removed and there are outstanding database requests
in the database pager.  The request will create a new archive, and as
the archive is newly create doesn't have the materials etc to support
the subtile that was just loaded.  To fix the problem getArchiveName
will only return existing archives.  createArchiveName was added to
create archives.
"
2010-12-12 09:37:14 +00:00
Robert Osfield
df5210f729 From Wang Rui, "I've found a possible bug in the new SmoothingVisitor implementation
(with a great 'crease angle' feature), which will crash if the normal
array is already set but without BIND_PER_VERTEX. I just believe that
we should reallocate the normal array in these cases, as the old
implementation does.
"
2010-12-12 08:56:58 +00:00
Robert Osfield
09ebb061c2 From Cedric Pinson, "Here a small fix about gdal plugin used to read dem file, if you dont
setup the log level to INFO it does not work. It's because of this line:
OSG_INFO << "   GetGeoTransform == "<<
dataset->GetGeoTransform(geoTransform)<<"

I have just put the function outside of an stream stuff, and it works.
It's possible we have other code like that in other plugins, I guess
it's a side effect of the MACRO stuff about notification."
2010-12-11 15:12:09 +00:00
Robert Osfield
017a03ffe5 Refactor of DatabasePage/IncrementalCompileOperation to use the IncrementalCompileOperator for compiling objects 2010-12-10 15:27:19 +00:00
Robert Osfield
c040b25699 Build fixes to keep up with changes in head inclusions/API in osgDB 2010-12-10 13:22:21 +00:00
Robert Osfield
3d67b7a7eb From Ulrich Hertlein, "attached are patches to osgTerrain that fix some typos and add a bit of documentation.
"
2010-12-08 10:34:29 +00:00
Robert Osfield
ebeed76643 Added protection against the Registry from being deleted prior to the proxy objects unregistering themselves 2010-12-08 09:54:23 +00:00
Robert Osfield
1b42084217 Fixes for benign threading memory contentions. 2010-12-08 09:52:58 +00:00
Robert Osfield
b2cf978ae3 Renamed YES and NO enums with more description names that don't overlap with iOS #define's 2010-12-06 10:35:02 +00:00
Robert Osfield
bc4f2c1209 From Johannes Bauerle, "When trying to use the osgText functionality in an osg application built without support for the fixed function pipeline I got a lot of warning messages about invalid calls.
I found two indirect calls to the glTexEnv in the file Text.cpp:

state.applyTextureAttribute(0,getActiveFont()->getTexEnv());

In the attached fix I surrounded these calls with #ifdef's checking for OSG_GL_FIXED_FUNCTION_AVAILABLE to ensure that the above function is only called when the fixed function pipeline is available.
"
2010-12-03 17:50:38 +00:00
Robert Osfield
c70679107d Removed redundent call. 2010-12-03 17:20:32 +00:00
Robert Osfield
9df56ad858 Commented out debug message 2010-12-03 14:24:23 +00:00
Robert Osfield
06509b9769 Introduced bool Texture2D::textureObjectValid(State) and bool SubloadCallback::textureObjectValid(Texture2D&,State&) method to make it tell Texture2D::apply() whether the texture object is still valid or whether it's no longed valid for the any changes to the image attached to the Texture 2010-12-03 14:18:16 +00:00
Robert Osfield
0754a78ddb From Ulrich Hertlein, "Attached; here's a summary of the changes:
- CMakeLists.txt
-- don't look for GL when compiling for iOS (device or simulator), look for OGLES instead
-- use architecture i386 for simulator
-- removed iphoneos-version-min for simulator

- examples/osgviewerIPhone/CMakeLists.txt
-- added build dependencies for osgdb_osg, osgdb_freetype, osgdb_imageio
-- added framework QuartzCore link dependency

- src/osgDB/CMakeLists.txt
-- don't link against Carbon on iOS (device or simulator)

- src/osgPlugins/freetype/CMakeLists.txt
-- don't link against OpenGL on iOS device or simulator

- src/osgViewer/CMakeLists.txt
-- link against OpenGLES on iOS (device or simulator)

- src/osgPlugins/imageio/CMakeLists.txt
-- compile ReaderWriterImageIO_IOS.cpp as Objective-C++

"
2010-12-02 14:20:52 +00:00
Robert Osfield
65aee287e7 From Mathias Froehlich, "Attached are most of the fixes that are required to build osg on solaris and
hpux. I have skipped irix this time as irix is too dead to keep osg building
there.

As usual, solaris does not like member templates in stl containers.
Some headers missing and link problems due to missing libraries."
2010-12-02 14:13:54 +00:00
Robert Osfield
88a76e7b69 From Brad Christiansen, commented out debug messages 2010-12-02 13:53:10 +00:00
Robert Osfield
ca0a556579 Removed redudent makeCurrentImplementation() that was causing a crash in osgscreencapture. 2010-12-02 09:39:31 +00:00
Robert Osfield
78b15f8e17 From Fabien Lavignotte, "I use Texture2D::copyTexImage2D to generate some textures at each frame on a PagedLOD databases.
There was some performance problems after a long run, because textures created with copyTexImage2D were not reused.
After investigation, there is a problem with the Texture Pool when a texture object is created with an empty profile, and then move after creation to TextureObjectSet with good profile using setAllocated method.
I have just changed a little bit the code of Texture2D::copyTexImage2D, to generate the texture object with the good profile at the start."
2010-12-01 13:33:31 +00:00
Robert Osfield
9c0e56d7a0 From "Matthew Roberso, I've attached a small fix to the src/osgWrappers/serializers/osg/Texture2DArray.cpp against the svn head r11965 it simply calls setTextureDepth before attempting to load the individual textures into the array. Currently without that the loading fails with the following printout "Warning: Texture2DArray::setImage(..) failed, the given layer number is bigger then the size of the texture array." and the texture array is empty if loaded from an osga/b." 2010-11-30 16:22:37 +00:00
Robert Osfield
e9cd13f120 Fixed the readObject method so it could handle reading from a file contains any valid type of osg::Object 2010-11-30 14:36:37 +00:00
Robert Osfield
55749eda59 Added passing of existingObj parameter 2010-11-30 12:34:06 +00:00
Robert Osfield
a7ff553925 From Stephan Huber, compile fix for iOS 2010-11-30 11:34:33 +00:00
Robert Osfield
5723050580 From Ulrich Hertlein and Stephan Huber, improves to iOS build 2010-11-30 09:26:18 +00:00
Robert Osfield
e5a9eaa711 From Tim Moore, "Here is initial support for uniform buffer objects. The binding between a buffer object and an indexed target is implemented as a new StateAttribute, UniformBufferBinding. I've included an example program based on the code in the ARB_uniform_buffer_object specification.
A few things remain to do:
* The binding between a uniform block in a shader program and a buffer indexed target number is fixed, like a vertex attribute binding. This is too restrictive because that binding can be changed without relinking the program. This mapping should be done by name in the same way that uniform values are handled i.e., like a pseudo state attribute;

* There's no direct way yet to query for the offset of uniforms in uniform block, so only the std140 layout is really usable. A helper class that implemented the std140 rules would be quite helpful for setting up uniform blocks without having to link a program first;

* There's no direct support for querying parameters such as the maximum block length, minimum offset alignment, etc. Having that information available outside of the draw thread would make certain instancing techniques easier to implement."
2010-11-29 17:43:27 +00:00
Robert Osfield
0739c15e0a Removed deperecated variables that are no longer used. 2010-11-29 09:32:43 +00:00
Robert Osfield
b523cb15c1 From Tomas Holgarth and Stephan Huber, "
attached you'll find the second part of the IOS-submission. It contains

* GraphicsWindowIOS, which supports external and "retina" displays,
 multisample-buffers (for IOS > 4.0) and multi-touch-events
* an ios-specific implementation of the imageio-plugin
* an iphone-viewer example
* cMake support for creating a xcode-project
* an updated ReadMe-file describing the necessary steps to get a
 working xcode-project-file from CMake

Please credit Thomas Hogarth and Stephan Huber for these changes.

This brings the ios-support in line with the git-fork on github. It
needs some more testing and some more love, the cmake-process is still a
little complicated.

You'll need a special version of the freetype lib compiled for IOS,
there's one bundled in the OpenFrameworks-distribution, which can be used."

Notes, from Robert Osfield, modified CMakeLists.txt files so that the IOS specific paths are within IF(APPLE) blocks.
2010-11-26 18:19:28 +00:00
Robert Osfield
d8d47199f2 From Katharina Plugge, fix for regression in handling of multitexturing. 2010-11-26 17:37:42 +00:00
Robert Osfield
b9ae28d344 From Eduardo Poyart, OSG patch: made it read ancillary IndexedStrings into MultiSwitch 2010-11-26 17:35:06 +00:00
Robert Osfield
ebfcb17744 From Marin Platings and Robert Osfield, fix of Uniform unique ID by making osg::Object::setName() virtual. 2010-11-26 13:54:11 +00:00
Robert Osfield
4820157fed From Martin Beck, "
recently we noticed a little mistake for 3DS files using instances of the same meshs: Every groupnode gets the same name instead of the (correct) instance name of the object. The fix only consists of two additional lines which check whether an instance_name is given for the object and then uses this one instead of the node name."
2010-11-26 12:44:53 +00:00
Robert Osfield
896b8c58d4 From Fabien Lavignotte, "There was a small bug when using the new serializer with AnimationPath. The serializer assumes NO_LOOPING is the defaut for LoopMode, but in fact it is LOOP.
The new serializer avoids to write default values in text mode, so the loop mode is not always correctly set."
2010-11-26 12:23:56 +00:00
Robert Osfield
d7b161078a From Thomas Hogarth and Stephan Huber, "attached you'll find part one of iphone-support. It includes
* support for NPOT-textures on IOS
* support for FBOs (only renderToTexture for now) on IOS (should work
for other OpenGL ES 1/2 targets, too)
* FileUtils-support for IOS"
2010-11-25 16:06:04 +00:00
Robert Osfield
1bd55d732d From Tim Moore, fix to stats timing 2010-11-25 13:00:24 +00:00
Robert Osfield
cdfbb7a753 From Michael Platings, To address performance bottleneck that occurs when using large number of uniforms introduced a name to uniqued ID scheme for Uniforms so comparisons can be done on a uint rather than a string. 2010-11-25 12:30:38 +00:00
Robert Osfield
c89c2502ed Removed default assignement of GeometryTechnique as the TerrainTechniquePrototype. 2010-11-25 11:40:09 +00:00
Robert Osfield
c1da825a7b From Wang Rui, "I'd like to provide a quick updates of the new tessellation shader
serializers and dotosgwrappers. It includes reading/writing supports
for the two new shader types and the GL_PATCHES enum. The
setParameterfv() method is not wrapped at present because it is still
not finished.

Enum serialziers don't require back-compatibility checks if only
add/remove enum items, so I'm not going to use the new
UPDATE_TO_VERSION macro this time."
2010-11-24 20:26:08 +00:00
Robert Osfield
1a227bf35e From Jean-Sebastien Guay, build fixes for windows. 2010-11-24 20:20:57 +00:00
Robert Osfield
5c97f0a7ed Added workaround for AMD/ATI driver bug 2010-11-24 17:01:09 +00:00
Robert Osfield
043ae090a5 From Tim Moore, Fix for drivers that don't properly support timer extensions.
""
2010-11-24 10:38:28 +00:00
Robert Osfield
e2a315ee49 From Wojciech Lewandowski, "1: fix for a issue with MinimalShadowMap and LightSpacePerspectiveShadowMapVB techniques ignoring minLightMargin parameter.
2: minor tweak for a DebugHUD drawn improperly case when multiple slave views  shared one window. It now uses slave view viewport to correctly position DebugHUD.
3: deactivated ConvexPolyhedron notifications (they were accidentaly activated when you replaced osg::notify calls with OSG_NOTIFY macro). These warnings are useful only for shadow map developer working on shadow volume optimizations. So there is no sense in having them active all the time."
2010-11-24 10:09:04 +00:00
Robert Osfield
0ee0aad0fe Moved TextNode from osgText into example/osgtext3D in prep for 3.0 2010-11-23 17:33:43 +00:00
Robert Osfield
d7747685b3 From Holger Helmich, Tessellation shader support 2010-11-23 14:50:31 +00:00
Robert Osfield
5b3691e602 From David Callu, "Here a fix for pssm.
Problem 1 :
With GLSL, multi pass to apply each shadow map is not required.


Problem 2 :
GLSL code use "shadow2DProj" build-in function to look up in shadow texture.
Projection is orthogonal so "shadow2D" build-in function is sufficient.

Problem 3:
Bad calcul in
osgShadow::ParallelSplitShadowMap::calculateLightViewProjectionFormFrustum(..)
provide some visual error in specific configuration.


to reproduce pssm_bug.jpg, you need to add a light direction in osgshadow.cpp example (done in joint osgshadow.cpp file)
then "osgshadow --noUpdate --pssm --maxFarDist 500 --minNearSplit 500 --mapcount 6 --debug-color  model_test.3ds"


As you can see in pssm_bug.jpg and pssm_fix.jpg, performance is really better when Problem 1 is fixed.
"
2010-11-23 11:11:58 +00:00
Robert Osfield
04b6a0888b Build fixes for building OSG with OSG_USE_REF_PTR_IMPLICIT_OUTPUT_CONVERSION set to OFF 2010-11-22 19:38:18 +00:00
Robert Osfield
ca9771f7ba Fixed typo 2010-11-22 19:18:00 +00:00
Robert Osfield
78cdf41d53 From Michael Platings, "the build is broken if you have the OSG_REF_PTR_IMPLICIT_OUTPUT_CONVERSION turned off - the attached files fix this." 2010-11-22 17:37:35 +00:00
Robert Osfield
e36c4d3a3b From Stephan Huber, "attached you'll find a proposal for handling multi-touch-events with
osgGA. My approach is to bundle all touchpoints into one custom data
structure which is attached to an GUIEventAdapter.

The current approach simulates a moving mouse for the first touch-point,
so basic manipulators do work, sort of.

I created a MultiTouchTrackballManipulator-class, one touch-point does
rotate the view, two touch-points pan and zoom the view as known from
the iphone or other similar multi-touch-devices. A double-tap (similar
to a double-click) resets the manipulator to its home-position.

The multi-touch-trackball-implementation is not the best, see it as a
first starting point. (there's a demo-video at http://vimeo.com/15017377 )"
2010-11-22 17:30:44 +00:00
Robert Osfield
27afe58f77 Fixed indentation 2010-11-22 15:52:20 +00:00
Robert Osfield
0235448cd1 From Johan Nouvel, "I've attached ReaderWriterVRML2.h. It is the same as the previous one, I've just add supportsOption() calls." 2010-11-22 11:31:35 +00:00
Robert Osfield
9b70348ced Fixed typo of commercial 2010-11-22 11:22:03 +00:00
Robert Osfield
1d7222f59f From Hartwig Wiesmann, fix to font search path under OSX. 2010-11-22 10:41:04 +00:00
Robert Osfield
f103d02cf7 From Katherina Plugge, "if using multitexturing and converting osg files to OpenFlight texture coordinates get corrupted. The texture coordinates for slot 1 and following are not computed correctly (see thread http://forum.openscenegraph.org/viewtopic.php?t=6993).
The attached files solve the problem.
"
2010-11-19 18:26:02 +00:00
Robert Osfield
92d6daaf70 Commented out debug output 2010-11-19 17:47:53 +00:00
Robert Osfield
426d2a50d8 Update Text wrappers to handle new Color member 2010-11-19 09:57:56 +00:00
Robert Osfield
5849634082 Moved text color into TextBase, added support for colour into Text3D 2010-11-18 17:59:55 +00:00
Robert Osfield
a5b83edc76 Added resetting of the freetype size when getting Glyph3D glyph's as otherwise use of 2D and 3D Text would cause incorrect text sizing. 2010-11-18 17:18:31 +00:00
Robert Osfield
265673bacc Improved handling of pending orphaned texture objects and max texture pool size. 2010-11-18 12:03:06 +00:00
Robert Osfield
c005e46d16 From Jean-Sebastien Guay, Changed debug info in State::frameCompleted() to OSG_INFO 2010-11-17 14:06:26 +00:00
Robert Osfield
07c4cfd97d From Sherman Wilcox, "added the following to the ADD_LIBRARY
list -- ${OPENSCENEGRAPH_VERSIONINFO_RC}"
2010-11-15 17:21:30 +00:00
Robert Osfield
4dd9de7f13 Fixed warnings 2010-11-12 11:04:53 +00:00
Robert Osfield
e1ee96b3f2 Fixed crash on intialization of static applications by moving the static mutexes inside singleton methods. 2010-11-12 09:48:21 +00:00
Robert Osfield
6cc7e109d3 Moved finding of RSVG, Poppler-glib and GtkGl out into their own Find*.cmake modules to enable easier specialization. 2010-11-11 16:51:46 +00:00
Robert Osfield
bda7ef8179 From Wang Rui, "I've finally completed the static build support for dotosg wrapper and
serialization libraries. My submission mainly includes:
1. Add two new macros USE_DOTOSGWRAPPER_LIBRARY and
USE_SERIALIZER_WRAPPER_LIBRARY. Applications using static OSG must
include corresponding static-link libraries and use these two macros
to predefine native format wrappers. Please see osgstaticviewer and
present3D in the attachment for details.

2. Add a LibraryWrapper.cpp file in each
osgWrappers/deprecated-dotosg/... and osgWrappers/serializers/...
subfolder, which calls all USE_...WRAPPERS macros inside. The
LibraryWrapper file is automatically generated by the
wrapper_includer.cpp (with some slight fixes), which is also attached
for your reference. The deprecated-dotosg/osgAnimation is not included
because it doesn't us REGISTER_DOTOSGWRAPPER to define its wrappers.

3. Modify the ReaderWriterOSG.cpp to prevent calling loadWrappers()
when static build.

4. An uncorrelated fix to Serializer and ObjectWrapper.cpp, which
ensures version variables of serialziers are initialized, and
serializers out-of-version are not written to model files.
"
2010-11-11 11:47:24 +00:00
Robert Osfield
a80c458285 From Mark Sciabica, "It's not Windows API calls that are causing the problem. It's a new
templated constructor of std::pair not being able to automatically
convert 0 to a pointer. Rather than use preprocessor checks and
#defines, I think a cleaner solution is to cast the std::pair arguments
to the appropriate types to help the compiler out. I attached an updated
version of the file implementing this."
2010-11-11 10:42:41 +00:00
Robert Osfield
68f37c4dcb From Tim More and Robert Osfield, implementation of ARB_timer_query based GPU timing stats syncronization.
Initial email from Tim : "I've implemented using a timestamp, available with ARB_timer_query and OpenGL 3.3, to gather GPU stats. This is nice because it can accurately fix the GPU draw time with respect to the other times on the stats graph, rather than having to estimate the wall time of the end of GPU drawing. This also prevents anomalies like the GPU phase starting before the draw phase..."
Changes to Tim's submission by Robert:  Removal of need for swap buffer callback in ViewerBase.cpp, by
integrating a osg::State::frameCompleted() method that does the stats timing collection.  Introduction of a
GraphicsContext::swapBuffersCallbackOrImplementation() method that calls the State::frameCompleted() and
the swap buffers callback or the swapImplementation as required.
2010-11-10 16:58:58 +00:00
Robert Osfield
40c6d99c15 From Mourad Boufarguine, "This is a small fix to osg::createGeodeForImage to adapt Tex coords to image origin.
"
2010-11-10 12:50:06 +00:00
Robert Osfield
5868022ca1 Added traversal of salve camera subgraphs when the slave camera doesn't share it's scene graph wiht the View's master scene graph. 2010-11-09 17:17:13 +00:00
Robert Osfield
ae27b4caaf From Wang Rui with small tweak from Robert Osfield, fix of memory leak in gif plugin when using GifImageStream 2010-11-09 15:48:46 +00:00
Robert Osfield
b7cccf6258 Refactored the versioning of serializers so it now uses a _firstVersion and _lastVersion make it possible
to specify what range of versions support each serializer.
2010-11-09 13:23:43 +00:00
Robert Osfield
b8a94a6d4e From Wang Rui, "I'd like to submit my latest modification of the serialization IO
functionalities. It includes two main parts: a version checking macro
for handling backward-compatiblity since 3.0, and enhencement of
current schema mechanism. I also change the option handling process to
use getPluginStringData(), and add new USE_SERIALIZER_WRAPPER macro in
the Registry header to allow for static-link usage as well.

The enhencement of schema machanism just tells the type of each
serializer while outputting them, such as:
osg::Group = Children:1

The meaning of the number can be found in the osgDB/Serializer header,
BaseSerializer::Type enum. It may help 3rdparty utilities understand
the structure of the wrapper and do some reflection work in the
future.

The new macro UPDATE_TO_VERSION can help indicate the InputStream (no
affect on the writer) that a serializer is added/removed since certain
OSG version. An example wrapper file is also attached. The
Geode_modified.cpp is based on the serializers/osg/Geode.cpp file
(hey, don't merge it :-), but assumes that a new user serializer
'Test' is added since version 65 (that is, the OSG_SOVERSION):

REGISTER_OBJECT_WRAPPER( Geode, ... )
{
   ADD_USER_SERIALIZER( Drawables );  // origin ones

   UPDATE_TO_VERSION( 65 )
   {
       ADD_USER_SERIALIZER( Test );  // a serializer added from version 65
   }
}

All kinds of ADD_... macros following UPDATE_TO_VERSION will
automatically apply the updated version. The braces here are only for
typesetting!
While reading an osgt/osgb/osgx file, OSG will now check if the file
version (recorded as the writer's soversion, instead of previous
meaningless "#Version 2") is equal or greater than Test's version, and
try reading it, or just ignore it if file version is lesser.

And we also have the REMOVE_SERIALIZER macro will mark a named
serializer as removed in some version, with which all files generated
by further versions will just ignore it:

UPDATE_TO_VERSION( 70 )
{
   REMOVE_SERIALIZER( Test );
}

This means that from version 70, the serializer Test is removed (but
not actually erased from the list) and should not be read anymore. If
the read file version is less than 70 (and equal or greater than 65),
Test will still be handled when reading; otherwise it will be ignored
to keep compatiblity on different OSG versions.
"
2010-11-09 12:41:55 +00:00
Robert Osfield
af22bd70db From Johan Nouvel, "Some times ago, I have coded an osg to vrml2 writer. Today, I have updated our writer to osg 2.9.9.
As it works (for our needs at least) I've done and attached a tar.gz file for the VRML2 plugin with a new part to write a VRML2 file from an osg one.

The read part is the same as in osg 2.9.9.

The write part code is in convertToVRML.cpp and .h  files. It works for some osg nodes (group, geode, matrixTransform, positionAttitudeTransform and geometry). Textures are converted to jpeg (if not translucent) or png (if translucent).
There are some options that could be given to the writer (with -O switch) :

convertTextures=0   to copy textures without converting them to jpeg or png
convertTextures=-1  do not copy textures, keep them in their original format and location
convertTextures=-2  do not use textures, parse only geometry
convertTextures=-3 (default) convert textures to jpeg or png ones.

textureUnit=X  in case of multiple textures, X= texture unit to use (default value=0)

directoryTexture=aPath  when texture will be copied, it will be in this directory, not in the current one."
2010-11-08 15:49:30 +00:00
Robert Osfield
be583ef0d6 From Jean-Sebastien Guay, "As promised, here is the fix for the background size. I also added another instance variable _lineHeight to clean up the code a bit more.
Also I've done the osguserstats example. I've kept the "toy example" that was in the modified osgviewer.cpp I had sent you, because they show different uses of custom stats lines (a value displayed directly, a value without bars and a value with bars and graph). I also added a function and a thread that will sleep for a given number of milliseconds and record this time in the stats. I think it clearly shows how to record the time some processing takes and add that to the stats graph, whether the processing takes place on the same thread as the viewer or on another thread.

BTW, feel free to modify the colors I've given to each user stats line... I'm not very artistic. :-)

I've also added more doc comments to the addUserStats() method in ViewerEventHandlers, so hopefully the arguments are clear and the way to get the results you want is also clear. Maybe I went overboard, but the function makes some assumptions that may not be obvious and has many arguments, so I preferred to be explicit."
2010-11-08 12:28:31 +00:00
Robert Osfield
a0607201a2 From David Fries and Robert Osfield, fix for handling remote GLX server that declares GL 3.0 support but doesn't actually implement it correctly. 2010-11-05 17:31:25 +00:00
Robert Osfield
752a5e2a3c From Javier Taibo, "ere is the new code with Billboard "rotate around axis" functionality.
A new AutoRotateMode was added. I named it ROTATE_TO_AXIS to be
consistent with the other AutoRotateModes, even though it changes from
how is called in Billboard (AXIAL_ROT).

  Setters and getters for rotation axis and normal were also added to the
AutoTransform class interface.

  The implementation is mainly a copy-paste from Billboard code.
"
2010-11-05 17:24:50 +00:00