option for using or not using geom's indices for tangent space vectors
generation. now, Ruben's code is also used (it was disabled before). in
order to keep backward compatibility, the compute method behaves as before
in default case."
Spelling fixes in include/osg/LOD
Negated priority in PagedLOD when using _rangeMode==PIXEL_SIZE_ON_SCREEN
Added clampedPixelSize() methods to CullStack and CullingSet to return fabs()ed values.
Changed LOD and PagedLOD ::traverse to use clampedPixelSize() methods.
From Robert Osfield, tweaks of the above to use osg::buffer_object and a local struct to store
initialized to help with multi-thread and out of order context usage.
the intersection between an indivual geometry and the sphere segment.
Converted the terrain in osgspheresegment to be an osg::Geometry based
drawable rather than a osg::ShapeDrawable/osg::HeightField one to make it
more practicle to use as a test for the new SphereSegment intersection code.
that intersect with the frustum of the SphereSegment. PolytopeVisitor may
eventually be pulled out to be more generally used along the lines of osgUtil::IntersectVisitor.
the names of the operations to be logged for stats purposes, or used when
do searches of the operation list. The keep member variable tells the graphics
thread run loop wether to remove the entry from the list once its been called.
the position of the emitter in the previous frame and the new position in the new
frame, the number of particles added also scales up to compensate for this movement.
"
This fixes some crashing issues I was having with certain FLT files that only had partial colour palettes
Which are typically found in older 14.x files and file converted through Polytrans or Deep exploration etc.
The code that grabs the color entries in ConvertFromFLT::visitColorPalette was assuming that there were full
palettes always coming in and stepping was out of bounds in certain cases (not all) and thus crashing with
access violations etc,
Although the normal from Creator is to have 1024 or 512 entries , this is not a really requirement of the format, just the way Creator creates its default palettes etc.
Code changed to look at the number of entries and use just those and fills in any missing entries with a default white colour"
"I add a new option in the HDR Reader.
The RAW option store the RGBE values into a Image, to use
this option you need to decode the RGBE value in the frag-
ment shader. Follow the cube map glsl decoder:
vec4 textureCubeRGBE( uniform samplerCube sampler, vec3 coords )
{
ivec4 rgbe = textureCube( sampler, coords ) * 255. + 0.5;
float e = rgbe.a - ( 128 + 8 );
return vec4( rgbe.rgb * exp2( e ), 1.0 );
}
This option is usefull for who have a outdate hardware like
FX cards and want to do cool things.
Finally this patch is need by a new HDR Rendering example
that I will put on the Wiki."
Added osgcamera example that uses osg::GraphicsContext to create the required
window for rendering too, will eventually use osg::CameraNode to replace usage
of osgUtil::SceneView.
"My patch is a slight refactoring of the mac specific code in
Registry.cpp and FileUtils.cpp, specifically around the library and
resource file path initilialization methods. This patch cleans up a
lot of the mac specific code by moving repeated code into separate
local functions in FileUtils.cpp that are only compiled on mac builds.
It also adds one function to the API,
appendPlatformSpecificResourceFilePaths in FileUtils. This function
will mirror the already existing
appendPlatformSpecificLibraryFilePaths except for resource file paths.
Currently this function is empty except when built on the mac, in
which case it will add the application bundle's internal Resources
folder and the bundle's parent folder. Previously this code was
implemented as a separate mac specific #ifdef block in Registry.cpp
around the initDataFilePathList method. However, it now is implemented
in appendPlatformSpecificResourceFilePaths in FileUtils.cpp and the
initDataFilePathList method is now the same on all platforms. This
patch should behave the same as before on non-mac platforms.
This patch already includes the fix that Eric mentioned earlier. This
patch is based off of the 0.99 release code. I have tested this patch
using the following testing scheme:
Make a proper bundled application.
While Run from the Finder:
Test that it finds plugins in its internal plugins path.
Test that it finds resources in its internal resources path.
Test that it finds resources in the bundle's parent directory
Test that it finds plugins in the user's Application Support Directory
Test that it finds plugins in the system's Application Support Directory
Test that it finds plugins in the Network Application Support Directory
Check the plugin and resource path lists after they have been
initialized to see if they are in the correct order
While Run from the command line (both from it's parent directory and
from inside the /Contents/MacOS directory) and repeat the above tests.
Check that it also finds plugins and resources within the paths
defined by various environment variables.
Now, Make an application that is NOT bundled/command line only
Test that it does NOT try to look in an internal bundle
plugin/resource directory for plugins or resources.
Test that it finds plugins/resources in the paths defined by the
environment variables.
"
to be correctly importated from HDR files.
From Robert Osfield, tweaked the above to allow the original casting to RGB8 as an
options switched on by a osgDB::ReaderWriter::Options string with a value of "RGB8".
Added options into osgprerender for controlling how to do the pre rendering i.e.
--fbo, --pbuffer, --fb --window, and also added the option for controlling the
window size with --width and --height.
"On fixing the pointer access I discovered that reading osga archives
containing ive files went into a cpu loop. This turned out to be a
problem with proxy_streambuf on Solaris. Public methods in the Solaris
streambuf standard library implementation rely on the gptr() being set,
which proxy_streambuf was not doing. So I have modified
proxy_streambuf to set the input sequence pointers, and have also
aligned it more with the standard library streambuf implementation
where all input is through underflow(), not uflow() which merely calls
underflow() and advances the pointer."
From Robert Osfield, change from using pointer cast and assignment to using
a templated _write and _read method to avoid pointer aliasing to 2/4/8
byte boundaries that some computer system may produce. These changes
where inspried by Colin McDonalds change to using memcpy, these
changes weren't merged as memcpy is not as clear in naming as _read,
_write and memcpy will incurr a function call just for copy a
uint.
(http://openscenegraph.org/archiver/osg-users/2005-June/0575.html);
after switching children of a Switch node off and on again, they become
unpickable. This issue occurs first in 0.9.9, with 0.9.8 everything is fine.
My fix involves calling dirtyBound() every time the on/off-values of the
Switch are changed"
NSLookupSymbolInModule. The former call would lookup the named
symbol NOT in the current dynamic library, but in the entire running
program while the call NSLookupSymbolInModule, takes the handle to
the library the symbol should be found in. This means the current
code will fail if one loads multiple bundles at runtime and attempts
to load the same named symbol from each one."
in removes any options beginning with "-psn" from argv on OSX by
calling the "remove" method. When a .app run is created in OSX,
which is required to get a fully functioning UI application, the OSX
finder passes a -psn_XXXX option to the application where the XXXX
refers to a unique process number. An example option would be "-
psn_0_37617665". The argument parser was choking on this option in
all the osg example applications."
"I took a closer look at the conditional code in
SeamFinder::seamReplacement().
Because _info.minRange is a double and lod->getMinRange(0) is a float,
the difference will be calculated with double precision. If
_info.minRange is cast as a float it is exactly the same value as
lod->getMinRange(0) and the difference is exactly zero.
So if you change
if((fabs(_info.minRange-lod->getMinRange(0))<0.001)&&(fabs(_info.lod0Range-lod->getMaxRange(0))<0.001))
to
if((fabs((float)_info.minRange-lod->getMinRange(0))<0.001)&&(fabs((float)_info.lod0Range-lod->getMaxRange(0))<0.001))
it works a lot better."
matrixd. It was returning the values of the diagonal
of the matrix, which only returns the scale if there
is not a rotation. I fixed this by returning the
length of the vectors that form the basis.
I also added a function to orthonormalize the
rotation component of the matrix. I seem to always run
into situations where non uniform (or even uniform)
scale complicate my calculations, and I thought other
members of the community could use this function as
well."
OSG_MINIMUM_COMPILE_TIME_PER_FRAME <float>
and
OSG_MAXIMUM_OBJECTS_TO_COMPILE_PER_FRAME <int>
environmental variable during the initialization of the DatabasePager
to allow apps to be tweaked for best database pager behavior.
"DOFAnimation's default state could now be controlled by the RW option.
The option string is "dofAnimation"
If the option string is omitted the default animation state is off."