Removed unused iterator declaration from ColorSpaceTransformOp.cpp.

It was causing -Werror builds to fail on Ubuntu 12.04. Courtesy of Breton M. Saunders.
Preventing crash during obscure use of SceneCache ROP.

This crash happens when the root parm of hte ROP is pointing at a visible OBJ which is inside an invisible OBJ subnet.
Improving performance of SceneCache SOP.

8.0.0-b2 introduced some code which improved performance when loading large hierarchies for the first time. This unfortunately caused a regression in performance when animating these hierarchies. This commit brings the animated perforamnce back inline with 8.0.0-b1, while maintaining (if not improving) the on-load performance from 8.0.0-b2.

Here are a few stats from a particularly heavy asset:

Load first frame
b1 10m 13.2s
b2 3m 41.9s
b3 7.26s

+1 Frame
b1 3.89s
b2 5m 17.9s
b3 5.1s

And here are a few stats from a standard character:

Load first frame
b1 1.35s
b2 0.28s
b3 0.48s

+1 Frame
b1 0.2s
b2 0.44s
b3 0.2s
SceneCache SOP sorts the childNames before recursing.

This guarantees shape order (and therefor point order) across multiple Houdini sessions. Without this sorting, the children would be created in InternedString-sorted order, which is constant within a single process, but is essentially random across processes.
Adding todo about sorting by string value in the first place
adding some comments
Merge pull request #176 from andrewkaufman/sccHoudiniPerformance

SceneCache SOP Performance and Consistancy
clarifying reRoot logic
Merge pull request #175 from andrewkaufman/ropCrashOnHidden

Preventing crash during obscure use of SceneCache ROP
Bumped beta version and updated changes
Build fixes for Arnold 4.1.

Arnold 4.1 removed some typedefs we were using, and introduced two new required functions in output drivers.
Fixed hangs when using procedurals with more recent arnold versions.
Merge pull request #177 from johnhaddon/arnold41

Arnold 4.1 Compatibility
Fixed default PYTHON_LINK_FLAGS for OS X builds.

This is the same fix we've been using in Gaffer for a long while.
Added face normals mode to MeshNormalsOp.

This is specified with a new "interpolation" parameter which specifies the interpolation type of the normal primitive variable created. Currently supported values are "Uniform" for face normals and "Vertex" for per-vertex normals as before.

While doing this I experimented with using PolygonIterator.h and PolygonAlgo.h in place of the existing setup. PolygonIterator did make the code much clearer, but added approximately 7% overhead so I rejected it. Using polygonNormal() from PolygonAlgo.h dealt with concave normals and colinear faces correctly, but added ~40% overhead, so I rejected that too because for our current uses we value speed more than correctness.
Optimised polygonNormal and polygonWinding in PolygonAlgo.h.

This is achieved fairly simply by halving the number of iterators and using prefix increment in place of postfix increment.
added AI_TYPE_BYTE case to ToArnoldConverter.cpp
Merge pull request #179 from compso/aiByte_fix

added AI_TYPE_BYTE case to ToArnoldConverter.cpp
Fixed GL shading of polygon meshes with "N" primvar.

This is achieved by computing a Uniform "N" in the ToGLMeshConverter. Because up till now the GL MeshPrimitive didn't support Uniform data, the "N" is immediately converted to FaceVarying also in the ToGLMeshConverter. This new conversion makes the conversions taking place inside the IECoreGL::MeshPrimitive totally redundant unless someone is using the MeshPrimitive class directly without a converter. Note that the MeshPrimitive actually doesn't have enough information to support Uniform data directly because it doesn't have the faces prior to triangulation. For this reason, I think there's a very good case for ditching the internal conversions in MeshPrimitive, and making the MeshPrimitive constructor need only the number of triangles, and not the vertex ids (which are used purely for conversion).

Fixes #118 and ImageEngine/gaffer#110.
Deprecated IECoreGL::MeshPrimitive::MeshPrimitive( vertIds ).

For forwards compatibility, ToGLMeshConverter should be used in preference.