RELEASE NOTES
=============

This file describes notable changes in the Coin library in a more
elaborate way than can be fit into to the compact NEWS summary file.

The changes described here are issues that might have an effect on the
compatibility of your source code when upgrading the library.


Coin 3.1.3
==========

This is a bugfix release.

Due to an underlying buildsystem upgrade, the default location of the
generated HTML docs changed from $datarootdir/share/Coin/html to
$datarootdir/share/doc/coin/html.

Coin 3.1.2
==========

This is a bugfix release.

Coin 3.1.1
==========

This is a bugfix release.

Bugs are fixed in all the NURBS related classes, and SoIndexedPointSet.

Coin 3.1.0
==========

Default transparency type for SoGLRenderAction changed from
SCREEN_DOOR to BLEND.

SoBase will not keep a list of unnamed / empty named nodes any
more. This is both an optimization and improves conformance to SGI /
TGS Inventor.

SbTesselator does better when handed certain polygons, due to improved
precision in internal calculations.

Resource usage pressure significantly lower for common case scene
graphs with regard to mutex allocations. A not entirely uncommon
problem on MS Windows systems for huge scene graphs was that the
run-time system ran out of available mutexes -- this is now very
unlikely to happen.

Builds with G++ and MSVC will have C++ exception support enabled by
default.

SoSceneManager render callback can be set to NULL to disable it.

Non-power-of-two textures are automatically supported if the OpenGL
driver has that feature.

No other intentional differences in semantics, other than for any bugs
fixed.

Coin 3.0.0
==========

New scene graph traversal profiling subsystem.

New node SoVertexAttribute which provides vertex attribute support for
shaders.

New SoDepthBuffer node to control depth buffer settings.

New SoShadowSpotLight node in the shadow generation subsystem.

New SoHeightMapToNormalMap engine to convert depthmap images to three-
component normal maps.

SoPickStyle has three new style settings, SHAPE_ON_TOP,
BOUNDING_BOX_ON_TOP, and SHAPE_FRONTFACES.

Integrated XML parser used for various purposes.

GL feature control through a new GLDriverDatabase subsystem which is
configurable through XML files.

Statechart XML engine, which has been used to implement examiner-mode
viewer navigation at the Coin level (earlier this functionality was
implemented over and over again in the various GUI libraries).

Foreign file format support through SoForeignFileKit, with an example
SoSTLFileKit implementation for STL import.

There is a testsuite framework based on Boost.Test

Translation draggers (1D/2D) are now fitted with new fields minTranslation
and maxTranslation to add the ability of restricting the range the draggers
can operate in.  When this feature is used, and draggers are stored to
file, it has consequences for the file format, and you lose the ability
to load those files with older versions of Coin.

Slight change in antialiased rendering with SoGLRenderAction::setNumPasses().
Antialiased rendering is no longer shifted 1/2 pixel to the left compared to
single-pass non-antialiased rendering.

Dynamic loading of support libraries for Mac OS X has been changed, which
has consequences for which possibilities are available for bundling such
libraries when creating your application bundles.

Coin 2.5.0
==========

SoFaceDetail's FaceIndex property behaves slightly different, now the
same way SGI Inventor does it.

Coin 2.4.6
==========

No intentional differences in semantics, other than for any bugs fixed.

Coin 2.4.5
==========

Minor axis MIDDLE (i.e. center) justification for VRML97's FontStyle
and Text nodes did previously not work as expected, but should now, so
text layout depending on the old, wrong behavior might not look good
any more.

Coin 2.4.4
==========

Ray-picking precision has been vastly improved, which may result in slight
application behaviour changes, hopefully in a positive way.

Coin 2.4.3
==========

No intentional change in semantics for anything in this version.

Coin 2.4.2
==========

No intentional change in semantics for anything in this version.

Coin 2.4.1
==========

Rectangle and lasso selection (SoExtSelection) can now be aborted through
keyboard events.

Coin 2.4.0
==========

Fixed sensor processing in SoSensorManager to be conformant to SGI
Inventor. Sensors with equal priority or trigger time are now processed
FIFO (this used to be LIFO).

File compression support (reading) was removed for anything but regular
files and memory buffers (to fix a bug).

Coin 2.3.0
==========

No intentional change in semantics for anything in this version.

Coin 2.2.1
==========

VRML97 PROTOs are now handled more properly.  Fields are connected both
ways between the scene graph and the PROTO instance.  You can now change
fields in the scene graph, and the PROTO instance (the container for the
PROTO based fields) will be updated.  When exporting scene graph to file
again, PROTO field values should contain updated values.

See also description for Coin 2.2.0; "the release that never was"[1].

Coin 2.2.0
==========

New nodes SoBumpMap, SoBumpMapCoordinate, and SoBumpMapTransform for
bumpmapping support.

New node SoTextureUnit for multitexturing support.

New node SoSceneTexture2 for rendering scene graphs to textures, with
offscreen pbuffer support on selected platforms.

Slight change of semantics for the SoFile node: the scene graph from
the file will now always be reproduced as-is from the SoFile
node. Previously, there would always be an SoSeparator root node added
(if one was not present). Note that this change can in theory cause
visible changes for application code using SoFile nodes, as
e.g. appearance type nodes (like for instance SoMaterial) can now
influence subsequent parts of the scene graph. The new behavior is
consistent with the behavior of SoFile from the original Open Inventor
implementation of SGI.  Also note that there was a bug in getting
bounding box information for SoFile nodes (and SoVRMLInline nodes)
that has now been fixed.

Slight change of semantics for the SoMarkerSet node: a marker in the
marker set will now be culled if its 3D position is positioned on the
"clipping side" of an SoClipPlane node. (SoMarkerSet markers was
previously only culled against the near and far view frustum clipping
planes.)


Coin 2.1.0
==========

New class SoIntersectionDetectionAction in Inventor/collision/ for
detecting intersecting primitives in a scene graph.

New class SoVectorizePSAction in Inventor/annex/HardCopy/ for
generating PostScript images of scene graphs.

Inventor and VRML files compressed on disk with gzip or bzip2 will
be decompressed automatically upon loading.  API functions for
controlling compression during export has been added to the class
SoOutput.

SoBoxHighlightRenderAction and SoLineHighlightRenderAction will
now do highlight rendering for all SoSelection nodes in the scene
graph, not just the first one.


Coin 2.0.2
==========

We found and fixed a bug for SoQuadMesh usage with PER_FACE materials.
Models depending on this bug will likely change appearance. This was
a bug that was introduced in Coin-2. Coin-1 does not have this bug.

Nodekits will now write out all relevant parts when the scene graph
is exported (not only the public parts as we did earlier). This is 
done to be compatible with SGI/TGS Inventor.

Because of this new feature, it will now also be possible to import 
data into private nodekit parts. In Coin 2.0.1 this would trigger a
read error.

Coin 2.0.1
==========

No intentional change in semantics for anything in this version.


Coin 2.0.0
==========

Removed obsoleted methods in SoField:

  SbBool connectFrom(SoVRMLInterpOutput * master,
                     SbBool notnotify = FALSE, SbBool append = FALSE);
  SbBool appendConnection(SoVRMLInterpOutput * master,
                          SbBool notnotify = FALSE);
  void disconnect(SoVRMLInterpOutput * interpoutput);
  SbBool isConnectedFromVRMLInterp(void) const;
  SbBool getConnectedVRMLInterp(SoVRMLInterpOutput *& master) const;

These methods were obsoleted in Coin-1, and we chose to remove them
in Coin-2.

Changed behaviour of CLAMP texture wrap mode

  When CLAMP is specified as the texture wrap mode (for SoTexture2 or 
  SoTexture3), the OpenGL feature GL_CLAMP_TO_EDGE will be used instead 
  of GL_CLAMP. This is done since GL_CLAMP_TO_EDGE is usually what you 
  want. Especially for Coin/Open Inventor where it's impossible to specify
  the texture border color used by GL_CLAMP. The environment variable 
  COIN_ENABLE_CONFORMANT_GL_CLAMP can be set to "1" to force Coin to use 
  GL_CLAMP instead of GL_CLAMP_TO_EDGE.



[1] Coin 2.2.0 was pulled before it was announced because of a critical
    bug that was introduced just before the release.  We want to blame a
serious disk crash we experienced two days earlier, but we should maybe
blame our backup and final testing routines instead.
