forked from ImageEngine/cortex
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Changes
1256 lines (767 loc) · 62.9 KB
/
Changes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# 8.0.0-b9
#### IECore
- Fixed boost::format() exception in CompoundData::member()
#### IECoreGL
- Fixed "gl:primitive:selectable" attribute (#46)
- Fixed ID selection in wireframe, outline, and points styles (gaffer/#53, gaffer/#160)
#### IECoreMaya
- Setting gl:curvesPrimitive:useGLLines for SceneShape drawing
- Minor bug fixes to SceneShapeUI for tag menu and expandToSelected
- Fixed crash when reading MayaScene attributes that don't exist on the SceneShape
- Fixed stale window bug in SplineParameterUI
#### IECoreHoudini
- SceneCache ROP marks locations which appear and disappear over time
- Added standard ROP script parms (pre/post render and frame)
#### IECoreNuke
- Changed SceneCacheReader to only display MeshPrimitives
# 8.0.0-b8
#### IECore
- Clang compatibility
#### IECoreGL
- Clang compatibility
# 8.0.0-b7
#### IECore
- Added TransferSmoothSkinningWeightsOp
- Added GIL release for DisplayDriver imageData and imageClose binding
#### IECoreMaya
- Added ToMayaCurveConverter
#### IECoreHoudini
- Houdini 13 Compatibility (requires H13.0.267 to pass tests)
- Fixed HoudiniScene custom attribute bug when two callbacks define the same attribute
- Fixed exception when reading HoudiniScene custom attributes that didn't exist in the underlying scene
- Using handles instead of strings when validating the DetailSplitter
# 8.0.0-b6
#### IECore
- LinkedScene( SceneInterfacePtr ) supports writable scenes
- Fixed SceneCache from IndexedIO bug
- Fixed linking issues with IECore::CamelCase
#### IECoreHoudini
- SceneCache SOP transforms all Point, Normal, and Vector primitive variables (previously it only transformed P and N)
- Preventing double cooking in HoudiniScene::scene( path )
# 8.0.0-b5
#### IECore
- Improved error reporting in LinkedScene - the main filename is now available in error messages.
- Made RunTimeTyped baseTypeIds() and derivedTypeIds() methods thread safe.
#### IECoreGL
- Added IECoreGL::Selector::push/popIDShader() methods. These replace the now deprecated loadIDShader() method.
- Fixed crashes when selecting curves.
#### IECoreHoudini
- Added SceneCache Transform SOP. This node applies transformations from a SceneCache file directly on the points and primitives at the SOP level.
- FromHoudiniPolygon converter now automatically removes normal primvars when extracting a subdivision mesh.
#### IECoreNuke
- Added DeepImageReader - this allows any deep image type supported by Cortex to be read in Nuke.
# 8.0.0-b4
#### IECore
- Optimised polygonNormal and polygonWinding in PolygonAlgo.h.
- Added face normals mode to MeshNormalsOp.
#### IECoreGL
- Fixed shading of polygon meshes with no "N" primitive variable (#118).
#### IECoreArnold
- Added support for Arnold parameters of type AI_TYPE_BYTE.
- Added compatibility with Arnold 4.1.
- Fixed hangs in procedurals.
# 8.0.0-b3
#### IECore
- Fixed compile issue on Ubuntu
#### IECoreHoudini
- Improving performance of SceneCache SOP. This brings the animated performance back inline with 8.0.0-b1, while maintaining (if not improving) the on-load performance from 8.0.0-b2.
- Guaranteed SceneCache SOP shape/point order by sorting children by name before loading.
- Preventing crash in SceneCache ROP when cooking inside an invisible OBJ subnet.
# 8.0.0-b2
#### IECore
- WarpOp has a new BoundMode parameter, options are Clamp (previous behaviour) or SetToBlack.
- ImageDiffOp has a new option to offset display windows of the same size to be aligned before comparison.
- Added support to the LensDistortOp for images with offset display window.
- Fixed LensDistortOp bug with non-symmetric distortions.
#### IECoreHoudini
- Added BoundingBox and PointCloud GeometryType options to SceneCache nodes
- Added AttributeCopy parm to SceneCache SOP. This is used to duplicate attributes before loading to Houdini.
- Exposed SceneCache OBJ parameters to override the transform values coming from disk (Transform tab)
- Moved SceneCache OBJ Push button along with all geometry loading parms to the new Options tab
- Improved performance of SceneCache SOP (Up to 5x faster on a 1500 shapes, 3 million polys asset)
# 8.0.0-b1
#### IECore
- SceneInterface tags now support upstream/local/downstream tags (using a bit mask filter to query)
- Various fixes for OSX builds
### IECoreHoudini
- Fixed multiple transform bug in HoudiniScene
# 8.0.0-a23
#### IECore
- Added new logos!
#### IECoreGL
- Added IECoreGL::glslVersion() function and python binding
- Added IECoreGL::FrameBuffer::frameBuffer() method
- OpenGL 2.1 compatibility fixes
#### IECoreHoudini
- Added bindings for SceneCacheNode which give access to the SceneInterface directly (or None if invalid)
- HoudiniScene provides python access to registering custom attribute and tag readers
- HoudiniScene now provides access to the world space transformation matrix of the held OBJ node
- Fixing crashes in HoudiniScene when pointing to broken SOPs
- Fixing crashes in SceneCacheWriter when given null attribute data
- Replaced some (but not all) of the misc cow logos with the new Cortex mini-logo
# 8.0.0-a22
#### IECoreHoudini
- ParameterisedHolder SOPs have a nameFilter parm (w/ disable toggle)
- These are used to pre-filter each input geometry (or not if toggled off)
- ProceduralHolder outputs a single CortexObject holding its procedural
- OpHolder operates several times per cook, once for each named input shape
- Shapes matching the filter are operated on, and returned as CortexObjects, maintaining their name
- Shapes not matching are passed through unchanged, whether they were normal geo or CortexObjects
- It can be forced to operate only once by disabling the nameFilter or by passing a single named shape
- CortexConverter SOP now operates in both directions (converting between CortexObjects and native geo)
- It also has a nameFilter, with similar pass-through behaviour as the OpHolder
- Changed interface for HoudiniScene custom attribute callbacks
- SceneCache OBJs pass attributes through to HoudiniScene (and therefor SceneCache ROP)
- Added IECoreHoudini.makeMainGLContextCurrent() which is needed for sharing the GL Context with other applications (like Gaffer)
- Fixed bug in HoudiniScene which was creating phony children when FlatGeometry names were similar, but not exact
- Fixed bug in SceneCache SOP when loading Groups or CoordinateSystems without a transform
- Preventing segmentation faults when reading a corrupt SceneCache file
#### IECoreGL
- Fixed GLSL shaders to work with GLSL version 120 (OpenGL 2.1)
# 8.0.0-a21
#### IECoreMaya
- Changing base class for DrawableHolder (from MPxLocatorNode to MPxSurfaceShape ) to solve a selection bug.
Warning: This breaks binary compatibility with any DrawableHolder derived class.
# 8.0.0-a20
#### IECore
- Fixed IECore::Lookup for OS X.
- Fixed SceneCache build problem on OS X.
- Fixed unit test in LinkedSceneTest.py ( testLinkBoundTransformMismatch )
#### IECoreGL
- Fixed IECoreGL::PointsPrimitive crash on OS X.
- Removed IECoreGL/Lights.h.
- Removed IECoreGL/GLUT.h
#### IECoreHoudini
- SceneCache OBJ Parameter Reorganization (will cause warnings in existing scenes. these can be ignored)
- Added functions to HoudiniScene: node() and embedded()
- Added click Selection of GR_CortexPrimitives
#### IECoreMaya
- Added FnSceneShape createChild, extracted from expandOnce.
- Changed interface for MayaScene custom attribute callbacks and added bindings for Python.
#### IECoreNuke
- Fixed bug #4837: "Knobs not found" warning messages.
- Fixed artefacts in LensDistort
# 8.0.0-a19
#### IECore
- Removed incorrect assertions from StreamIndexedIO - they were causing crashes in debug builds.
- ComputationCache is more robust in situations where a call to get() yields a different object than was passed to set().
#### IECoreHoudini
- GEO_CortexPrimitives are now correctly copied and transformed during ObjectMerges.
- TagFilter now prevents unnecessary expansion of SceneCache nodes. In SubNetwork/AllDescendants mode, the tagFilter is used to prevent expansion into branches of the hierarchy that were not requested. For a heavy asset, filtering by a "Proxy" tag was expanding in 25 seconds and creating 22000 nodes. It is now expanding in 3 seconds and creating 3000 nodes.
- SceneCache Xform and Geo nodes now have a tagFilter, and pass it through to matching children during expansion and push. Xfrom still uses it to limit expansion and control visibility. Geo just passes it on to the SOP, which uses it to limit objects loaded.
- Promoted shapeFilter to all SceneCache nodes. SceneCache Xform and Geo just pass it through to the SOP, as with the attributeFilter.
- Added support for reading and writing tags in SceneCaches.
- Optimised SceneCache OBJ expansion time. On a heavy asset, this reduces expansion time from 442.3s (7.38m) to 17.12s.
- Fixed time offset issues caused by Houdini time 0 being at frame 1, whereas it is at frame 0 in Maya, and in SceneInterfaces.
#### IECoreMaya
- Added a flag to the FnSceneShape create so we can directly create a new sceneShape and transform under a given parent. Used when expanding.
#### IECoreNuke
- Fixed a bug in LensDistort that was causing the cache to hold incorrect image data.
#### IECoreGL
- Added ShaderLoader::clear() method, which allows the reloading of GLSL shaders on the fly.
- Added "gl:primitive:selectable" attribute to Renderer.
#### IECoreRI
- Fixed automatic instancing bug caused by having multiple procedurals in the same RIB file.
- Added workaround for 3delight 11.0 in IECoreRI::Renderer::worldEnd - this allows rerendering to work again.
####################################################################################################
# 8.0.0-a18 :
#### IECore
- Fixed sample time ordering bug in SceneCache.
- Fixed transform matrix order in Group.globalTransformMatrix().
- Added a new setTopologyUnchecked method to MeshPrimitive, plus lazy computation of min/maxVerticesPerFace.
#### IECoreGL
- Fixed bugs in interpretation of "color" attribute in IECoreGL.
#### IECoreMaya
- Fixed a segfault which occured when selecting multiple components of a sceneShape in Maya.
- Fixed maya procedural selection highlighting.
#### IECoreHoudini
- Optimised SceneCache caching time significantly.
- Simplified FromHoudiniGeometryConverter factory functions.
- Added name parameter to ToHoudiniGeometryConverter.
- FromHoudiniGeometryConverters no longer add the name blindData.
- Added nameFilter to FromHoudiniGeometryConverter python factory function.
- HoudiniGeometryConverters now use Objects rather than VisibleRenderables.
- Added FromHoudiniCortexObjectConverter for converting single GU_CortexPrimitives.
- Added ToHoudiniCortexObjectConverter for creating GU_CortexPrimitives.
- Fixed ToHoudiniGeometryConverter bug where it didn't call incrementMetaCacheCount().
- Added FromHoudiniCompoundObjectConverter. This converts multiple GU_CortexPrimitives, maintaining the naming by storing each one in a CompoundObject.
- Added ToHoudiniCompoundObjectConverter.
- Added non-const access to the object in a Geo_CortexPrimitive.
- Removed unecessary Object copy in SceneCache SOP.
- Removed HoudiniScene::readObject hack for CortexObject prims.
- Updated cob/pdv IO to allow conversion of general Objects and not just VisibleRenderables.
- Fixed ToHoudiniGeometryConverter factory function search order.
- Fixed bug when caching hidden OBJs.
- Added interruptibility to SceneCache ROP.
- Added DetailSplitter class for efficiently extracting select bits of geometry from a GU_Detail.
- Reenabled the loading of multiple ieCoreHoudini plugins.
#### IECoreRI
- Added "ri:textureCoordinates" attribute to IECoreRI::Renderer. This maps to a call to RiTextureCoordinates.
- Fixed specification of multiple displays via IECoreRI::Renderer::display().
- Added automatic instancing capabilities to IECoreRI::Renderer.
#### IECoreNuke
- Added support for expressions in LensDistort.
#### IECoreAlembic
- Fixed IECoreAlembic to use GeometricTypedData appropriately (#28).
8.0.0-a17 :
IECoreRI
- Added support for ri:areaLight parameter to IECoreRI
IECoreHoudini
- Fixed bug when loading CoordinateSystems in Houdini
8.0.0-a16 :
IECoreMaya
- Fixed bug in SceneShape compute which prevented drawing on file open/import
IECoreHoudini
- Added ForceObjects parameter to SceneCache ROP (to force what is expanded and what is a link)
- Added a ParticleSystem when converting PointsPrimitives to Houdini
- Fixed point doulbing bug with SceneCache SOP loading a PointsPrimitive
- Fixed bug when writing multiple frames of re-rooted scenes
- Fixed HoudiniScene bugs for flattened geometry (SOPs with gaps in the geo hierarchy can now be cached)
- SceneCache tagFilter supports SceneInterfaces with no tags
8.0.0-a15 :
IECore
- Added Parameter::setPresets and getPresets.
- Improved precision of CameraController operations
- Default ParticleReader uses floats (#69)
- Fixed MurmurHash bug where empty strings had no effect on a hash
IECoreGL
- Added Shader::csParameter() for constant time access to "Cs"
- Fixed bug with superimposed instances
- Fixed potential bug in Selector::loadIDShader()
- Fixed state leak for immediate renders
- Fixed PointsPrimitive selection and coloring
- Implemented per-vertex Cs for PointsPrimitive.
IECoreMaya
- Fixed erroneous compute on SceneShape outputObjects
- Fixed tests for Maya 2014
IECoreHoudini
- Added a Cache Manager for the Cortex ObjectPool (#40)
- SceneCache ROP allows caching of un-named top level geo (uses the OBJ node name instead)
- Fixed time dependency issues with SceneCache SOP and OBJs
- OBJ SceneCache nodes expose their transform via python expressions (see the Output tab)
- Expanding and SOP cooking are now interrupt-able using the escape key
- Improvements for expanding SceneCaches in Houdini
- Expanded nodes are now connected to the subnet indirect inputs
- Expanded nodes are placed using Houdini's layout automation
- File parms channel reference their parent
- Path parms channel reference their parent (when appropriate)
- New Push Parms button updates the filters and geometry type throughout the expanded hierarchy (no need to collapse). Note that this does not take hierarchy changes into account, just parameter values.
- FromHoudiniGroupConverter ignores internal groups
- Fixed compatibility issues with Houdini 12.1 (introduced in a14)
- Declared TypeId range
IECoreNuke
- Added support for TCL expressions on SceneCacheReader
- Fixed a few bugs with SceneCacheReader
IECoreArnold
- Fixed TypeId range so it doesn't conflict with IECoreHoudini
IECoreMantra
- Houdini 12.5 compatibility
8.0.0-a14 :
- IECore :
- Modified BasicPreset so it works with parameters derived from CompoundParameter
- Added ObjectPool and ComputationCache classes for providing a unified cache mechanism for cortex objects (used in SceneCache and CachedReader).
- Removed ModelCache class (SceneInterface and SceneCache replaces that entirely).
- IECoreMaya :
- Using the newly added GL lambert shader in the maya GL preview.
- Added geometry snapping to the SceneShape
- Optimization on the SceneShape by copying previously rendered GL groups at link locations.
- IECoreHoudini :
- Added support for Cortex loaded geometry in the SceneCache reader.
- IECoreGL :
- IECoreGL::ToGLTextureConverter option to add missing channels.
- Removed IECoreGL dependency on GLUT
- Replaced OpenGL 3 function calls with their 2.1 extensions
- Added a standard lambert shader to IECoreGL::Shader
- Fixes in Selector object and making it revert state when destroyed.
- IECoreRI :
- Deprecated 3delight hack
8.0.0-a13 :
- General :
- Ubuntu compilation issues.
- IECore :
- SceneCache changed to store samples index as a IndexedIO::Directory which is loaded once as opposed to a integer value. Improved performance on large environments.
- Improvements and bug fixes in LinkedScene associated to the usage of tags and the link attribute. The link attributes are now separated and can be queried in readers such as SceneShape to obtain the actual file,location and the time.
- Adding constructor for InternedString that accepts a signed 64bit integer for quick conversion from numbers to strings. Used in SceneCache.
- IECoreMaya :
- Several improvements on the SceneShape node (SceneShapeInterface) and bug fixes.
- IECoreGL :
- Reverting some optimizations done in the convertion of Meshes to IECoreGL which were not really effective.
8.0.0 (up to a12) :
Additions :
* Added IECoreNuke::SceneCacheReader, which allows inspection of scene cache files and the selective display of it's geometry.
* Renderer::Procedural classes must now implement a hash() method, which provides a hash of their input data. This is so renderers that support procedural caching can make use of the hash, allowing entire procedurals to be instanced.
* Added Maya converters for IECore.CoordinateSystem to/from Maya Locators.
* Added the LensModel and StandardRadialLensModel classes to provide a framework for applying or removing lens distortion.
* Added the LensDistortOp which distorts or undistorts an image using a parametric lens model.
* Added the ieLensDistort node to IECoreNuke. The node can apply or remove lens distortion using any of the lens models registered to Cortex.
* Added LinkedScene class, to support scene files that reference (link) to external files with time remapping. The bounding boxes are incorporated in the master scene automatically when writing and when reading the traversal of the whole hierarchy is transparently switching between the files.
* IECoreMaya: ieSceneShape maya node now uses SharedSceneInterfaces, so it's not super slow when you've got a scene with multiple nodes referencing the same file.
* Added SharedSceneInterfaces, which uses an LRU cache so you don't end up opening the same file over and over again
* It's now possible to register FromMayaDagConverters for plugin maya nodes. Added the FromMayaProceduralHolderConverter.
* IECoreHoudini has new OBJ and SOP nodes for reading IECore::SceneCache files, and a ROP for writing them
* Added InternedStringData and InternedStringVectorDataTypes.
* Added IECoreHoudini::HoudiniScene, a SceneInterface for live Houdini scenes.
* Added virtual duplicate() method to IECore::SceneCache, which is used in methods like child() etc, so derived classes can make these methods return instances of themselves
* Added IECoreMaya::MayaScene, a SceneInterface for live Maya scenes.
* Added SceneShape and base class SceneShapeInterface to IECoreMaya for reading IECore::SceneInterface files, SceneShapeUI for drawing. Includes GL preview and output objects, transforms and bounding boxes, template and dag menu.
* Added AlexaLogcToLinearOp and LinearToAlexaLogcOp bindings
* MeshPrimitive::createSphere will create a sphere-like mesh with the same controls as SpherePrimitive, using the divisions argument to control tessellation.
Improvements :
* IECoreMaya: ieSceneShape now supports snapping of Geometry in maya 2013 and above.
* IECoreMaya: ieProceduralHolder now supports zooming in on individual components using the "f" key
* IECoreMaya: ieSceneShape maya node now tells maya its bounding box has changed when you change the file name or scene path
* IECoreMaya::ClassParameterHandler and ClassVectorParameterHandler will only create attributes using 1-plug mode. 4-plug mode is still readable, but will be removed in the future. The ['maya']['compactClassPlugs'] userData is no longer accepted.
* IECoreHoudini SOP_InterpolatedCacheReader now exposes samplesPerFrame and interpolation as parameters, instead of the frameMultiplier hack. fps is stil hidden, though may be exposed in the future.
* IECore::Writer::create() now provides an overload which takes just a filename, allowing a Writer to be created before the object to be written is available.
* The RenderMan display driver is now called "ieDisplay" rather than just "ie", meaning it has the same name as the Arnold display driver, allowing scenes to described in a single manner compatible with both renderers.
* Reworked InternedString to no longer be based on templates - the templating never got used and it just complicated the implementation.
* The ParameterParser now parses -boolParameter flags without additional arguments as True, provided that the parameter default is False.
* MurmurHash now supports the hashing of InternedStrings.
* Using -isystem rather than -I for all dependency includes
* Enabled -Werror for all libraries (and a few -Wno-* only where necessary). Removed PYTHONCXXFLAGS option.
* SLOReader now creates an "ri:orderedParameterNames" blind data entry on the loaded shader, to work around the fact that the Light::parameters() data structure doesn't maintain order.
* CapturingRenderer now implements the light() method, placing IECore::Light objects in the Group state.
* Implemented the IECoreArnold::Renderer::light() method.
* IECoreRI::Renderer now supports setting the hider via setOption().
* IECoreRI::Renderer now groups options by type, outputting each group via a single RiOption call just before worldBegin(). This is necessary because 3delight requires certain options to be specified together in this way ( statistics "endofframe" and "filename" for example ).
* IECoreHoudini uses name attributes by default rather than Houdini groups. Conversion using PrimitiveGroups is still possible using the parameter on the FromHoudiniGroupConverter, but all automated processes will require names.
* IECoreHoudini FromHoudini converters have an attribute filter that can be used to prevent conversion of unnecessary data.
* Primitives provide a hash of their topology in addition to the complete hash (including primitive variables).
* LRUCache class now accepts an optional removalCallback, which is called whenever an item is removed from the cache.
* IECoreHoudini has new ParameterisedHolderInterface and ParameterisedHolder base classes, so we can hold parameterised objects in non-SOP contexts.
* IECoreRI::SLOReader now loads shader annotations, providing them as an "ri:annotations" entry in the shader blind data. It also adds a type hint to distinguish between parameters of type string and parameters or type shader.
* IECore::ParticleReader new parameter to convert primVar names to an appropriate name. Converts original position primVar name returned by derived classes to "P".
* All V[2,3][i,f,d]Data and VectorData is now GeometricTypedData, which extends TypedData by adding an Interpretation value (Numeric, Point, Normal, Vector, Color).
* Primitive constructors that accept position data will force the geometric interpretation to Point. Users are responsible to set correct interpretation when assigning prim vars (including P and N) after construction.
* MatrixMultiplyOp no longer has a mode parameter, and instead uses geometric interpretation to transform the input data appropriately.
* TransformOp now takes a single list of primitive variables to modify, and uses geometric interpretation to transform them appropriately. For backwards compatibility with old files, if P and N are Numeric, they will be converted to the appropriate interpretation and a warning will be issued.
* IECoreMaya FromMayaShapeConverters correctly set the geometric interpretation of points, normals, and velocities.
* IECoreHoudini To/FromHoudini converters correctly set the geometric interpretation of points, normals, and velocities.
* Shader::parametersData() now returns a raw pointer, and provides a const version.
* IECore::FileSequenceParameter, FileSequenceVectorParameter, FrameListParameter can now return the FileSequences/FrameList using a StringData/StringVectorData argument instead of the internal value. To be used in ops doOperate in particular. Checks validity of given data.
* IECoreHoudini ToHoudiniGeometryConverters have an attribFilter parameter to control the which PrimitiveVariables are converted.
* IECoreHoudini ToHoudiniGeometryConverters have a public transferAttribs method so PrimitiveVariables can be converted without effecting topology.
* IECoreHoudini To/FromHoudiniGeometryConverters automatically convert standard attributes between Cortex and Houdini (Pref->rest ; Cs->Cd ; s,t->uv, etc and vice versa). This behaviour can be disabled with a parameter, but is on by default (and hence is used by the file sop and other reader nodes).
* CameraController::dolly() behaviour now produces smoother movement.
* IECoreMaya::ToMayaMeshConverter now using compressed UV arrays matching uv indices to set uv values in addUVSet.
* IECoreMaya::ToMayaMeshConverter and IECoreMaya::FromMayaMeshConverter now supports a custom attribute 'ieMeshInterpolation' on meshes that translate to the interpolation type in the IECore::MeshPrimitive.
* Added DisplayDriver::acceptsRepeatedData(), enabling the ImageDisplayDriver to support progressive rendering and rerendering when used via IECoreRI.
* IECoreRI::ParameterList now accepts V2iData, converting it to RenderMan "integer[2]".
* Added Renderer option "editable", along with editBegin() and editEnd() methods, to allow interactive rerendering functionality to be implemented. These are currently only implemented by IECoreRI::Renderer.
* Switched to Boost Filesystem version 3
* MeshPrimitive::createPlane can create multi-face planes using the divisions argument
* Added MeshPrimitive::max/minVerticesPerFace
* IECoreHoudini supports the ieMeshInterpolation attribute, using it to set the interpolation of converted MeshPrimitives
* IECoreGL caches triangulation conversions for MeshPrimitives
* IECoreHoudini supports reading and writing LinkedScenes (lscc)
* IECoreHoudini and IECoreMaya are able to pass tags from SceneCache readers to the associated live scenes and writers
* LinkedScenes now allow tags to be stored at link locations
* Added Spline->SplineData boost python converter
Bug Fixes :
* Fixed a maya 2013 crash when attempting to use the rotate manipulator that comes up when selecting an ieProceduralHolder component in rotate mode.
* IECoreGL ColorTexture now uses GL_RGB16 as the internal colour format to the glTexImage2D call. This fixes colour banding in subtle gradients and edges with an alpha fade off. GL_RGB16 was chosen as
it is supported from OpenGl1.1 and earlier graphics cards that don't support it will reduce their bit precision to GL_RGB8. Please see the following document for more details:
http://developer.download.nvidia.com/opengl/texture_formats/nv_ogl_texture_formats.pdf
* IECore ImageReader and ImageWriter not doing transformation on alpha anymore, A gets filtered out from the channel names given to ColorSpaceTransformOp.
* IECore ColorSpaceTransformOp applies unpremult before channelOp conversion then premult after, as channelOp doesn't deal with unpremultiplication of the colour channels.
* Removed rounding hack in OversamplesCalculator.
* Maya intField created to display IntParameter now has step size set to 1 ( if min or max are set ). This prevents a warning when creating fields for parameters with max - min less than the default step of 10.
* Preventing segfaults when CompoundData and CompoundObject have items with NULL pointers.
* Preventing segfaults when Parameter's default values are initialized with NULL pointers (or the Python None object).
* ieFilteredAbs corrected to return positive values, ieTurbulence monochrome variant now filtered
* Fixed a problem where it was impossible to kill the renderer in 3delight IPR mode, and therefore impossible to stop an IPR render. See comments above "struct ProceduralData" in include/IECoreRI/private/RendererImplementation.h
* Compatibility for OpenEXR 2.0.0
* Compatibility for Alembic 1.1.2
* Compatibility for PRMan 17
* Compatibility for Boost Filesystem v2 and v3
7.10.2 :
Improvements :
* Added setParameterisedValues() for IECoreHoudini SOPs and FnHolders to sync Houdini node values to IECore::Parameterised objects.
Bug Fixes :
* Fixed crashes caused by calling PrimitiveEvaluator.create( None ) in Python, replacing them with ValueError exceptions.
* Using setParameterisedValues() in the IECoreMantra inject SHOP so parameters with expressions are expanded appropriately.
* IECoreMantra cortexMantraInject SHOP now uses explicit bounds with hscript expressions to read them from the soppath. This fixes a bug where bounds were not being updated properly in ifds made with hbatch.
7.10.1 :
Improvements :
* Using IECoreHoudini SOP_InterpolatedCacheReader in PrimitiveGroup mode will now load Prim and Vertex attribs as well as Point attribs
Bug Fixes :
* In SHWDeepImageReader/Writer, we now composite on write and uncomposite on read. This fixes an issue where deep images converted from mantra were seemingly losing samples.
7.10.0 :
Improvements :
* ParameterParser.serialise accepts an alternate "values" argument, which can be used to avoid parameter validation or to serialise values that aren't held by the parameter.
* Registered ParameterParser serialisation functions should use the new signature func( parameter, value ). The old signature is still supported, but deprecated.
* Added shader support to IECore::CapturingRenderer
* Added setAttribute()/getAttribute() methods to IECore::Group. The latter traverses the group's parents
* IECoreGL::Renderer now ignores shader types with a prefix other than gl: (apart from "surface"), rather than complaining about them.
* IECoreHoudini FnOpHolder and FnProceduralHolder.create() now accept optional parent node and contextArgs parameters. The later should be a kwargs dict from a Houdini UI callback
* IECoreHoudini SOP_InterpolatedCacheReader has a new parameter, GroupingMode, which defaults to the original behaviour. By using PrimitiveGroup mode instead, transform cached objects also transform non-Point attribs (face varying normals for example)
* DeepImageReaders have new worldToCameraMatrix() and worldToNDCMatrix() methods which return the respective matrices.
* DeepImageWriters have new parameters to set the worldToCamera and worldToNDC matrices, and DeepImageConverter reads/writes them appropriately.
* SHW, DTEX, and RAT DeepImageReaders/Writers all support reading/writing worldToCamera and reading worldToNDC. SHW and DTEX support writing worldToNDC. RAT writing worldToNDC is still a todo.
Bug Fixes :
* ToMayaMeshConverter uses the stIndices variable to compress the UVs in the mesh if the variable is available.
* Fixed include guard in ObjectReader.h
* Added workaround for recent NVIDIA driver changes which could cause crashes in IECoreGL::Shader.
* Fixed a bug where writing an IECore::Group to disk then reading it back in again jumbled its state/children up
* Fixed a bug where IECore::CapturingRenderer wrote redundant state into its output when multi threaded procedurals were being used
* Fixed an attribute leaking bug with single threaded procedurals in IECore::CapturingRenderer
7.9.0 :
Additions :
* Added const version of CameraController::getCamera().
* Added ToArnoldConverter::create() factory function.
* Implemented tbb_hasher( const IECore::MurmurHash & ), allowing MurmurHash to be used as a key in tbb::concurrent_hash_map.
* Added IECoreArnold::InstancingConverter class, which can be used to manage a series of conversions from IECore::Primitive to Arnold AtNodes, returning Arnold instances when duplicate geometry is detected.
* IECoreArnold::Renderer now automatically creates instances when identical primitives are rendered repeatedly. This may be controlled using the new "ai:automaticInstancing" attribute.
Bug Fixes :
* Fixed bug in CameraController which could cause crashes for cameras with preexisting transforms, and failure to update transforms correctly after swapping cameras with setCamera().
7.8.0 :
Additions :
* Added an ls() method to IECoreMaya.FnParameterisedHolder, and a _getMayaNodeType() method so it works with derived classes
* Added initial support for mantra.
* Added a new ModelCache class, for reading and writing hierarchical models in a random access fashion, backed by IndexedIO storage. Bounds for every level of the hierarchy are computed automatically during writing. Also added an ABCToMDC op to IECoreAlembic - this allows conversion of Alembic archives to ModelCache format.
Improvements :
* Rewrote CurvesPrimitiveEvaluator::curveLength(), which should now work properly for polylines, return more accurate results for b splines, and not freeze in pathalogical cases
* Added repr() functionality to NullObject and ObjectVector bindings.
* Added CameraController::project() method.
* IECoreArnold::Renderer::shader() now supports the creation of networks of shaders.
7.7.2 :
Bug Fixes :
* Modified behaviour of shouldSave method of ParameterisedHolder, which controls which attributes are saved to file
- previously:
* GenericAttributes which would cause crashes skipped
* everything else forced to always be written
- now
* GenericAttributes which would cause crashes skipped
* attributes in the AttributeNameToParameterMap forced to always be written
* anything else uses default Maya behaviour ( write only if changed from default )
( This was motivated by attributes created by mtoa, which would be ignored if unused on normal Maya objects, but were always saved on Cortex objects, and then caused problems if mtoa was not present on load )
7.7.1 :
Bug Fixes :
* Fixed Bug in MtoA Translator that was initialising shaders on instances when the arnold node was Null
7.7.0 :
Improvements :
* Changed the ClassVectorParameterUI Float and Double parameter's precision to 4 (from 2).
* Bound MurmurHash assignment operator as Python copyFrom() method.
* Added python bindings for IECoreGL ToGLMeshPrimitiveConverter, ToGLCurvesPrimitiveConverter and ToGLPointsPrimitiveConverter.
* Added a ToGLConverter::create() factory method, for automatically creating a converter given an Object.
* The Arnold output driver now supports point and vector pixel types.
* MPlayDisplayDriver now deals with the case where the RGB plane is not the first one.
* Improved IECoreMaya.GenericParameterUI so it now works reasonably with StringParameters with a connectedNodeName value provider and acceptedNodeTypes ui userData.
* Added an IECoreGL::CachedConverter class, which performs conversion from IECore types to IECoreGL types, maintaining an LRUCache of recent conversions.
* Implemented automatic instancing of primitives for the IECoreGL::Renderer - when the same primitive is rendered repeatedly a previously converted GL primitive will be reused rather than performing another conversion. This can yield significant time and memory savings.
* The MtoA procedural translator now supports an attribute called "overrideProceduralShaders" to determine whether or not to use the assigned Maya shader to override any shaders the procedural may apply internally. In the absence of this attribute, only non-default shaders will be applied as overrides.
* The MtoA procedural translator now automatically outputs any shading groups or displacement shaders which are connected as inputs to the procedural in some way (connected to a parameter for instance). This can be useful to allow the procedural to assign maya shaders to the objects it generates, even though those shaders may not be assigned to anything in the Maya scene.
* MtoA Procedural translator now recognises Maya instances of procedurals and generates arnold ginstances as a result
* IECoreArnold::Renderer::shader() now supports shaders of type "displacement" and "ai:displacement", for specifying the disp_map parameter of polymesh and nurbs shapes.
* IECoreArnold::Renderer::setAttribute() now supports attributes of the form ai:nodeType:parameterName for specifying parameter values for shape nodes.
Bug Fixes :
* Fixed bug which prevented the spline editor window for spline parameters in Maya being opened more than once.
7.6.0 :
Improvements :
* changed MtoA Translater to be compatible with versions > 0.18.0
* IECoreArnold::Renderer::shader() now additionally accepts shader names of the form "reference:nodeName", to allow shaders already in an ass file to be referenced by procedurals.
* The IECoreMaya::TransformationMatrixManipulator now draws an optional box if a ["UI"]["manipulatorBox"] user data item is present on the parameter.
* linearObjectInterpolation now supports the interpolation of Primitive classes.
Bug Fixes :
* Fixed crashes caused by null data in PrimitiveVariable::operator==.
7.5.0 :
Additions :
* Added the beginings of Alembic read support in contrib/IECoreAlembic.
Improvements :
* The Arnold output driver now supports the rendering of multiple outputs via a single driver. Channel names are prefixed with the arnold aov name so the may be distinguished.
* The MPlayDisplayDriver now supports multiple output planes, based on grouping channel names with common prefixes.
* Added python binding for the SearchPath copy constructor.
* The ClassLoader class now has a searchPath() method to provide access to the paths used to find classes.
* Refactored IECoreArnold converters to share a ToArnoldShapeConverter base class. Added bindings so that they may be used from python in conjunction with the arnold python bindings. Added a ToArnoldPointsConverter for dealing with points primitives. Added support for converting arbitrary primitive variables into Arnold user parameters.
* IECoreArnold::Renderer::display() now recognises display types such as "tiff", "exr" and "jpeg" directly and maps them to "driver_tiff", "driver_exr" etc. This makes it easier to set up scenes targeting multiple renderers.
Bug Fixes :
* Fixed tumbling in CameraController when pivot is not at the centre of the world.
7.4.0 :
* Added an Options class, for specifying renderer options.
* Added IECoreHoudini.UpdateMode to safely switch hou.updateModes using a python with statement.
* Added MPlayDisplayDriver, for rendering images to MPlay using either RenderMan or Arnold (or anything else which can talk to an IECore.DisplayDriver).
* Added a general purpose IECoreHoudini::MessageHandler.
Improvements :
* ClassVectorParameter now supports IECore.V2fParameters in the header, for the maya UI
* IECoreHoudini GEO_IOTranslator accepts ptc files (if IECoreRI is available), so the file sop can be used to read ptcs.
* Added From/ToHoudiniGeometryConverter bindings to deal with HOM_Geometry directly. This allows hou.Geometry to be read/written when the node is not available (i.e. from within the cook of a Python SOP)
* Added From/ToHoudiniGeometryConverter::supportedTypes() to return a set of IECore:TypeIds with registered converters
* SOP_ParameterisedHolders now expose converter parameters (if applicable) for the parameters that work by node connection
* SOP_ParameterisedHolder and IECoreHoudini.ParmTemplate now support presetsOnly IntParameters
* Added parameters to FromHoudiniGroupConverter which allow the Primitive separation to be done by attribute value rather than by GA_PrimitiveGroup. Default (and therefor the factory function) is by GA_PrimitiveGroup.
* Using the new IECoreHoudini::MessageHandler to redirect IECore messages as SOP errors and warnings when ops and procedurals cook
Bug Fixes :
* Fixed deadlocks in the python LRUCache.
* Fixed bug in ToHoudiniPointsConverter to do with Uniform interpolation parameters
7.3.0:
Improvements :
* Fixed SXRenderer tests to account for new noise algorithm in 3delight.
* ToMayaMeshConverter now converts all UV sets when converting to mesh data (through a plug). Previous behaviour only worked for shapes.
* ToMayaGroupConverter now uses a group's "name" attribute to name the converted transform.
* FnProceduralHolder.convertToGeometry() now removes useless childless transforms.
Bug Fixes :
* ToMayaMeshConverter no longer duplicates the default UV set when converting to a shape.
* Fixed threading bug in LRU cache, possibly leading to a crash if clear() was called while a read was happening
* Fixed bugs with the JPEGImageWriter, DPXImageWriter and CINImageWriter classes where they would segfault when the data window was different to the display window.
* Fixed bugs with the JPEGImageWriter, DPXImageWriter and CINImageWriter classes where the data window they would output was wrong.
Additions :
* Added new 'culling' option to the ieProceduralHolder's display options, so the user can choose back face, front face or no culling
* Added new test cases for JPEGImageWriter, DPXImageWriter and CINImageWriter. The new case tests the writing of images with data windows that are different to the display window.
7.2.0:
Additions :
* Added MeshFaceFilterOp for pruning faces on MeshPrimitives.
* Added a ClampOp, for clamping values in ImagePrimitives.
* Added IECoreArnold::UniverseBlock, for managing AiBegin/AiEnd pairs.
* Added SWAReader, for reading Speed Tree forest files.
* Added IECoreMaya::ToMayaCameraConverter, which supports the same attributes as IECoreMaya::FromMayaCameraConverter
* Added bindings for Imf::TimeCode
* Added IECore::TimeCodeData and TimeCodeParameter
Improvements :
* IECoreMaya::ToMayaSkinClusterConverter has a new parameter to ignore the bindPose node
* IECoreMaya::ClassParameterHandler and ClassVectorParameterHandler have a 1-plug mode and a 4-plug mode to handle the held classes. The 4-plug mode is the default for compatibility, but will be removed completely in Cortex 8. Users can specify ['maya']['compactClassPlugs'] userData to help migrate existing scenes to the 1-plug mode.
* EXRImageReader and EXRImageWriter now handle Imf::TimeCodes if they are present in the exr header or ImagePrimitive blindData, respectively.
Bug Fixes :
* IECoreRI.Renderer now gracefully ignores null values in parameter lists rather than crashing.
* IECoreMaya::ToMayaSkinClusterConverter now catches failures from MDGModifier::doIt(), calls MDGModifier::undoIt(), and throws.
7.1.3:
Bug Fixes :
* Fixed component bound output bug in maya ProceduralHolder node
7.1.2:
Improvements :
* Added support for uniform primitive variables in IECoreRI::SXRenderer
* IECoreMaya PresetsUI LoadUI organizes the applicable presets by the path they came from
Bug fixes :
* Fixed exceptions when passing 64bit integers from python to MurmurHash.append method.
* Added "PHOTOMETRIC_MINISWHITE" to supported photometric interpretations in IECore::TIFFImageReader, so it can read 3delight's depthmap shadows.
7.1.1:
Bug Fixes :
* Fixed some bugs in the Wrapper/WrapperGarbageCollector code
7.1.0:
Additions :
* Added Alexa V3 Log C colorspace registered on for image reader and writers.
* Added support for writing Color3fVectorData primvars in IECoreRI::PTCParticleWriter
* Added DiskPrimitive
* The IECoreRI.Renderer class uses 3delight's new instance scoping mechanism
Changes :
* Removed deprecated "objectBegin", "objectEnd" and objectInstance"
7.0.0:
Additions :
* Added object filter option to IECore.CapturingRenderer, so you can select the objects you want it to output
* "Convert to Geometry" maya DAG menu option should now respect component selections - ie it only converts selected components
* Added alpha test attributes for IECoreGL::Renderer
* FloatParameter and DoubleParameter now respond to a 'precision' field in their UI userData in maya, allowing you to set the number of decimal places they're displayed at
* Added the MurmurHash class, which implements the Murmur Hash version 3
algorithm.
* All Object derived classes now have a hash() method which can be used to
generate a hash of their contents as an instance of the new MurmurHash class.
* Stubs for the IECore procedurals are now installed in addition to the stubs for the IECore ops.
* Added an ieDisplay nuke node, which accepts incoming renders from RenderMan or Nuke using the existing cortex display drivers.
* Added SHWDeepImageReader and SHWDeepImageWriter which read/write 3delight deep shadows. Note that this is an alpha only format.
* Added HoudiniHeaderGenerator which stores Houdini version, scene name, frame rate, current, start, and end frames in the ObjectWriter headers.
* Added an IECore.DiskPrimitive class.
Improvements :
* IECore.RelativePreset accepts now a compare filter that is a callback for ignoring some of the parameters when doing the diff.
* IECore.loadConfig() now ignores files starting with ~. This avoids errors caused by certain popular text editors saving backup files next to the config file during editing.
* The IECore.loadConfig() localsDict argument has been renamed to contextDict, and is now used as both the locals and globals for the execution of the config files. This works around python's annoying scoping whereby any modules would have to be imported within functions defined in the config files rather than
at the file scope.
* Added python bindings for the various Writer canWrite() methods.
* The Renderer::coordinateSystem() call now creates coordinate systems which are
scoped within attributeBegin()/attributeEnd() blocks. CoordinateSystem instances
can now be given a transform to position them relative to their parent.
* CompoundParameter presets behaviour can now be controlled explicitly using the
adoptChildPresets argument to the constructor.
* Reduced cross-inclusion of headers in TypedObjectParameter.h - this should improve recompilation times a little.
* Added IECoreGL::NameStateComponent::glNameFromName() method to match the existing nameFromGLName() method.
* Added glColor() functions to IECoreGL/GL.h.
* Factored out much of the IECoreGL::Scene::select() functionality into a new IECoreGL::Selector class, which allows selection to be performed easily even without a Scene.
* IECoreGL::Scene::select() now fills a vector<HitRecord> rather than a list<HitRecord>, as vector is better suited to this purpose.
* Added missing binding for IECoreGL::State::bindBaseState() method.
* The default constructors for TypedData<Imath::Vec> and TypedData<Imath::Color> now initialise all components to zero. The default constructors for TypedData<LineSegment> now initialise a unit length line in the positive X axis. Before the data was uninitialised, which could cause test failures in TestObject.testCopy() if the data happened to contain NaNs. Please note that the underlying Imath::Vec and IECore::LineSegment constructors remain unchanged and will not initialise the data - this is for performance reasons.
* The IECoreGL::TextureLoader class can now load greyscale as well as colour textures. It now uses the ToGLTextureConverter class internally so supports all types supported by that class.
* Added python bindings for IECoreGL::Font and IECoreGL::FontLoader.
* Added Font::renderSprites() and Font::renderMeshes() methods, which make it possible to render text without constructing an IECoreGL::TextPrimitive.
* IECore.Enum values can be instantiated from the appropriate string as well as the int.
* IECore.Enum has a classmethod values() which returns a tuple of the available values.
* SOP_InterpolatedCacheReader has a new transformAttribute parm which can be used to transform the points based on a TransformationMatrix in the cache.
* ToHoudiniGeometryConverter creates point and prim groups based on the blindData name, FromHoudiniGeometryConverter creates the blindData name based on prim group name, and To/FromHoudiniGroupConverters use their base classes to manipulate prim group names
* Added V2iVectorParameter and V3iVectorParameter.
* The ParameterParser accepts a new boolean parameter user data entry ["parser"]["acceptFlags"] for StringVectorParameters. This allows strings starting with "-" to be passed. This is only useful for the last parameter parsed, as it will place all remaining arguments into the StringVectorParameter.
* The IECoreRI.Renderer class uses 3delight's new instance scoping mechanism to
place all instances created with instanceBegin() at the world scope. This allows procedurals to create instances to be used in other procedurals.
Changes :
Removed deprecated "objectBegin", "objectEnd" and objectInstance" commands from IECoreRI.Renderer. Use the instanceBegin(), instanceEnd() and instance() methods instead.
Bug Fixes :
* ClassParameter.setClass() method was not taking advantage of a matching already loaded class if the searchPathEnvVar was None.
* Fixed a bug whereby EXRImageWriter::EXRImageWriter() didn't create parameters that EXRImageWriter::EXRImageWriter( image, fileName ) did.
* The renderman python procedural is now built with the correct extension (.dylib) on OS X.
* Fixed problem with using the ClientDisplayDriver on ipv6 enabled machines.
* IECoreNuke and IECoreArnold now build successfully on OS X.
* Fixed bugs in the arnold output driver which meant that exceptions in cortex display drivers went uncaught and became aborts when reaching arnold. Fixed further bugs where failure to create a cortex display driver would yield later
segmentation faults rather than a graceful error report.
* Fixed bug which made it impossible to output more than one display from IECoreArnold::Renderers.
* Fixed threading issue with IECore.ClassLoader()
* Fixed initialization issue with FromMayaMeshConverter uvs.
Cortex 6.4.3
============
Improvements :
* Implemented checkboxes in maya menus
* Added a flag, "appendToExistingMenu", to IECoreMaya.Menu,createMenu(), so you can append a menu to an existing menu, rather than adding
it as a sub menu
Cortex 6.4.2
============
Improvements :
* Implemented uniform array parameters in IECoreGL shaders (accepting IntVectorData, FloatVectorData, etc)
Bug Fixes :
* Fixed build issue that prevented saved options files from being used
* Fixed build issue that gave the test renderman display driver the wrong file suffix on mac
* Bound many missing canRead() functions for the Reader subclasses, and added a test case to make sure all future bindings will include them.
Cortex 6.4.1
============
Bug Fixes :
* Fixed a bug which prevented user attributes from being passed correctly to multithreaded procedurals in the IECoreGL::Renderer.
Cortex 6.4.0
============
Improvements :
* Added IECoreMaya.DateTimeParameterHandler
Bug Fixes :
* Fixed a bug in python/IECoreMaya/PresetsOnlyParameterUI.py, which was preventing the ui updating for V2f, V3f and other vector type parameters
Cortex 6.3.1
============
Additions :
Improvements :
* Fixed some compiler warnings emitted by GCC 4.4.4.
* IECoreMaya.StringParameterUI now supports glob style expressions in the Objects->Select context menu item.
* Tweaked ieArray* RSL functions to work around issues with 3delight 10.0.7.
Changes :
* Deprecated ieArrayLength() function in RSL ArrayAlgo.h - use arraylength() instead.