forked from GafferHQ/gaffer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Changes
8304 lines (6209 loc) · 347 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
0.48.1.0
========
Features
--------
- CollectTransforms : Added a node for collecting transforms from different
contexts and storing them as attributes (#2708).
- CollectPrimitiveVariables Added a node for collecting primitive variables
from different contexts (#2708).
- PrimitiveVariableExists : Added utility node for querying the existence
of a primitive variable (#2708).
Improvements
------------
- ArnoldLight : Improved performance (#2718).
- SceneInspector : Added tooltips with the unabbreviated name of the item
being inspected (#2722).
Fixes
-----
- Expression : Fixed threading bug in UI error handling (#2652, #2723).
- ColorProcessor/Shuffle : Fixed bugs caused by attempted computation of non-existent
upstream channels (#2701, #2731).
- Light : Fixed bounds computation (#2725).
- AnimationGadget : Fixes crash caused by dragging keys on adjacent frames (#2720).
0.48.0.0
========
Features
--------
- Viewer : The 3D viewer now updates asynchronously, keeping the UI responsive while the scene
is computed in the background (#2649).
- AnimationEditor : Added a new editor to allow the graphical editing of animation
curves. This can be found on the tab next to the GraphEditor in the standard layouts (#2632).
- DeleteObject node (#2694).
- CopyAttributes node (#2710).
Improvements
------------
- TranslateTool : Added handles for movement in the XY,XZ,YZ and camera planes (#2709).
- Layouts menu (#51, #2698) :
- Added "Default/..." menu items to allow the default startup layout to be chosen.
- Added new "Save As/..." menu items to allow previously saved layouts to be replaced.
- SceneInspector (#2607) :
- Added filter to sets sections.
- Moved set computations to background process, so they don't block the UI.
- Shader : Improved performance (#2644).
- ArnoldLightUI : Added support for "userDefault" parameter metadata. This matches
the format already in use for ArnoldShaderUI (#2646).
- Viewer :
- Added selection mask, to choose which types of objects can be selected (#2696).
- Added more Arnold diagnostic shading modes (#2645)
- Matte
- Opaque
- Receive shadows
- Self shadows
- ArnoldAttributes :
- Added `volumeStepScale`, `shapeStepSize` and `shapeStepScale` attributes (#2634).
- Clarified intended usage of subdividePolygons attribute (#2680).
- FormatPlug : Made "Custom" mode persistent, so it is remembered across save and reload (#2660).
- InteractiveRender : Removed unnecessary deletion and recreation of objects when `childNames`
changes (#2690, #2649).
Fixes
-----
- GraphEditor :
- Fixed arrowheads on axis-aligned auxiliary connections (#2647, #2648).
- Fixed potential auto-scroll bug when dragging a node (#2705).
- LocalDispatcher/TractorDispatcher : Fixed problems using `imath` context variables (#2653, #2654).
- OSLObject : Fixed crashes caused by indexed primitive variables (#2655).
- Viewer : Fixed visibility of children of look-through camera (#2694).
- ObjectSource : Fixed transform.* -> out.bound dirty propagation (#2649).
API
---
- SceneGadget :
- Added `setPaused()/getPaused()` and `state()` methods (#2649).
- Replaced `baseState()` with `set/getOpenGLOptions() methods (#2649).
- Added `waitForCompletion()` method (#2649).
- Added `set/getBlockingPaths()` methods (#2649).
- Added `set/getSelectionMask()` methods (#2696).
- RenderController : Added new utility class for controlling interactive renders (#2649).
- AnimationGadget : Added new Gadget for editing animation curves (#2632).
- Animation (#2632) :
- Keys are now reference counted, so ownership can be shared between CurvePlugs and the
AnimationEditor.
- Keys may be edited in place with `key->setTime()` etc, and the CurvePlug automatically updates.
- `CurvePlug::keys()` has been replaced with `CurvePlug::begin()` and `CurvePlug::end()`.
This hides the internal choice of container while still providing iteration.
- Added optional `threshold` argument to `closestKey()`.
- IECoreScenePreview::Renderer (#2649) :
- Added `command()` virtual method.
- Added `name()` virtual method.
- IECoreGLPreview::OpenGLRenderer (#2649) :
- Made it possible to call `render()` concurrently with edits.
- Added support for highlighting selected objects.
- Added "gl:queryBound" command.
- Added "gl:querySelection" command.
- Added support for custom object and attribute visualisers.
- Added options for controlling base attributes.
- PresetsPlugValueWidget : Added support for an optional "Custom" menu item, which allows the
user to enter an arbitary value. This is controlled by "presetsPlugValueWidget:allowCustom"
plug metadata (#2660).
- BusyWidget : Added `busy` constructor argument (#2607).
- LightTweaks (#2660) :
- Moved TweakPlug to the GafferScene namespace, so it can be reused by other
nodes.
- Added "Remove" mode.
- Layouts (#2698) :
- Added `persistent` argument to `add()` method, mirroring the `Bookmarks.add()` API.
This automatically takes care of saving persistent layouts into the startup location.
- Added `setDefault()/getDefault()` and `createDefault()` methods to allow the management
of a default layout.
- Handle (#2709) :
- Added `set/getVisibleOnHover()` methods.
- Added `PlanarDrag` axis accessors.
- TranslateHandle (#2709) :
- Added `axisMask()` method.
- FilteredSceneProcessor : Added constructor to allow array `inPlug()`.
- Style :
- Added methods for rendering animation curves (#2632).
- Added `width` and `userColor` arguments to `renderLine()` (#2632).
- Added `userColor` argument to `renderText()` (#2632).
- Added XY/XZ/YZ Axes enum values (#2709).
- ViewportGadget : Added `set/getVariableAspectZoom()` method (#2632).
Build
-----
- ViewportGadget : Fixed compilation on Windows (#2705).
- OpenImageIOReader : Fixed compilation with XCode 9.4 (#2712).
- Updated Cortex to version 10.0.0-a28
- Updated FreeType version 2.9.1
- Updated Python to version 2.7.15
- Updated Alembic to version 1.7.8
Breaking Changes
----------------
- GafferSceneUI : Moved visualiser base classes to IECoreGLPreview (#2649).
- ArnoldAttributes : Changed volume step attributes (#2634).
- GafferImage : Removed FormatPlug compatibility for files saved in Gaffer 0.16 or older.
To migrate, resave the file in Gaffer 0.47 (#2682).
- GafferOSL::ShadingEngine : Removed `scope` parameter from `needsAttribute()` (#2655).
- Layouts (#2698) :
- Removed `save()` method. Use the `persistent` argument to `add()` and `setDefault()` instead.
- Added `applicationRoot` argument to constructor. You should use `acquire()` instead anyway.
- LayoutMenu : Removed `delete()` method (#2698).
- GUI config : Renamed standard layout from "Default" to "Standard" (#2698).
- TranslateHandle : translation()` method now returns a V3f rather than a float (#2709).
- TransformTool : Made `orientedTransform()` method const (#2709).
- Style : Changed method signatures, enum values, and added virtual functions (#2632).
- Animation : Refactored API. See API section for more details (#2632).
- IECoreScenePreview::Renderer : Added virtual methods (#2649).
- InteractiveRender : Added and removed private member data (ABI break) (#2649).
- SceneGadget (#2649) :
- Added/removed private members (ABI break).
- Remove `baseState()`.
- SceneView : Reorganised/simplified drawingMode plugs (#2649).
0.47.0.0
========
Features
---------
- ImageView : Introduced asynchronous processing, so that the UI remains responsive while
the viewer updates progressively (#2578).
- Apps : Added a new `dispatch` application. This dispatches task nodes such as ImageWriters,
SystemCommands and Render nodes, either from within an existing .gfr file or by
creating nodes on the fly. This differs from the execute app in that it performs a
full dispatch via a dispatcher, rather than executing a single task node (#2588).
- Revamped OSL shaders (#2539).
- Added MultiplyVector, DotProduct, CrossProduct, RemapFloat, RemapColor, RemapVector,
FloatToColor, ColorToFloat, FloatToVector, VectorToFloat, ColorToVector,
Luminance, MixColor, MixVector, MixFloat, AddColor, AddFloat, AddVector,
DivideColor, DivideFloat, DivideVector, MultiplyColor, MultiplyFloat, MultiplyVector,
SubtractColor, SubtractFloat, SubtractVector, InvertMatrix, Length, Normalize,
PowFloat, RoundFloat, SinFloat, MatrixTransform, CompareColor, CompareFloat,
CompareVector, SwitchColor, SwitchFloat, SwitchVector, CoordinateSystemTransform,
CoordinateSystemMatrix.
- Removed some old shaders, keeping compatibility by converting them to new shaders
during loading.
- Appleseed : Updated to [version 1.9](https://github.com/appleseedhq/appleseed/releases/tag/1.9.0-beta)
(#2570).
Improvements
------------
- Instancer : Replaced original proof-of-concept Instancer with a new version intended
to be suitable for production use (#2642) :
- Added support for orientation and scale primitive variables.
- Added support for index and id primitive variables.
- Added support for creating per-instance attributes.
- Added support for sets.
- Improved performance by removing `${instancer:id}` context variable.
- Documentation : Improved structure and presentation (#2612, #2613, #2616, #2619, #2625, #2628, #2631).
- Appleseed (#2570) :
- Added support for pixel_time AOV.
- Added denoiser options to AppleseedOptions node.
- OSLImage/OSLObject (#2586) :
- Added support for `time` global variable.
- Added support for reading context variables.
- OSLImage : Improved performance by only reading the upstream channels needed by the
shader (#2586).
- Arnold renderer : Improved shader conversion performance (#2594).
- ArnoldOptions : Changed default value for `parallel_node_init` to on. This matches the default
in Arnold 5.1 (#2594).
- OSLImage/OSLObject/RankFilter/Resample : Added cancellation support. This improves
responsiveness in the new asynchronous ImageView (#2586, #2590).
- Isolate/Prune : Improved set processing performance (#2587).
- BranchCreator : Improved set processing performance (#2594).
- Application : Moved startup file execution before argument evaluation. This makes it
possible for a startup file to manipulate application arguments if necessary (#2588).
- Stats app : Added `-canceller` argument (#2586).
- UI : Renamed Scene Hierarchy to Hierarchy View and Node Graph to Graph Editor.
- AttributeVisualiser : Added support for visualising Color3f attributes #2641).
Fixes
-----
- Viewer :
- Fixed display of nested lights in look-through menu (#2615).
- Fixed selection after expanding the selected locations (#2617).
- Metadata :
- Fixed GIL management bug (#2582).
- Fixed crash if `None` is passed to `registerValue()` (#2582).
- Fixed bindings for change signals (#2610).
- UI : Fixed initial size and position of Preferences, Settings and Node Editor
windows (#2643).
- ContextAlgo : Fixed GIL management (#2618).
- SubGraph : Fixed crash in `correspondingInput()`. This manifested itself as crashes in
the NodeGraph when dragging a Box with an unconnected BoxOut node over a connection (#2583).
- TractorDispatcher : Fixed bug handling nodes like TaskList and FrameMask nodes, that don't
have any work of their own to do (#2584).
- ImageAlgo : Fixed GIL management bug (#2585).
- Arnold/OSL : Fixed problems caused by Arnold trying to recompile Gaffer's OSL shaders
unnecessarily. We no longer install the shader source files (#2539).
- ScriptNode : Fixed GIL management bug (#2578).
- BackgroundTask : Fixed interactions with ScriptNode lifetime (#2578).
- Threading : Fixed bugs caused by TBB cancellation propagation (#2589).
- LocalDispatcher : Fixed exception handling during foreground dispatch. Exceptions from
Tasks are now propagated back to the caller instead of being suppressed (#2588).
- Appleseed : Disabled SPPM for interactive renders (#2570).
- Catalogue : Fixed bug where orphaned Catalogue tried to save an image (#2621).
- ViewportGadget : Fixed `setCameraTransform()` to trigger a rerender (#2639).
- Arnold : Worked around clashes between Mesa drivers and libai.so (#2638).
API
---
- DispatchUI : Added `DispatchDialogue` class (#2588).
- Dispatcher :
- Added `dispatchSignal()` (#2574).
- Improved signal exception handling (#2574).
- Added `deregisterDispatcher()` static method (#2588).
- Removed "frame" variable from TaskBatch contexts. This means it is no longer
available to PythonCommand code in sequence mode (#2608).
- Outputs : Added `deregisterOutput()` method (#2581).
- GafferUI : Added new BackgroundMethod decorator to assist in performing processing in
background threads (#2578).
- ShadingEngine : Added `hash()` method (#2586).
- PlugLayout :
- Added `embedded` constructor argument (#2599).
- Added "<layoutName>:width" metadata support (#2604).
- Editor : Added `instanceCreatedSignal()` method. This can be used to customise the
standard editors immediately after they've been created (#2605).
- BusyWidget : Added `setBusy()` and `getBusy()` methods (#2604).
- ImageGadget : Added `setPaused()/getPaused()` and `state()` methods (#2604).
- ScriptEditor : Added `outputWidget()` accessor (#2622).
Build
-----
- Updated Appleseed version to 1.9.
- Updated OpenImageIO version to 1.8.12.
- Updated OpenShadingLanguage version to 1.9.9.
- Updated GLEW version to 2.1.0.
- Updated Cortex version to 10.0.0-a25.
- Improved documentation build process (#2622).
Breaking Changes
----------------
- Instancer : Added and removed plugs, changed behaviour and structure of output scene (#2642).
- Metadata : Changed function signatures for `GafferBindings::metadataModuleDependencies`
and `GafferBindings::metadataModuleDependencies`. Source compatibility is retained (#2579).
- Action (#2578) :
- Added new arguments to constructor and `enact()`.
- Added new data member.
- Source compatibility is retained.
- EditorWidget : Renamed to Editor (#2605).
- BackgroundTask : Replaced `done()` method with `status()`.
- SceneHierarchy : Renamed to HierarchyView (#2640).
- NodeGraph : Renamed to GraphEditor (#2640).
0.46.1.0
========
Features
--------
- ReverseWinding : Added new node that reverses the winding order of meshes (#2568).
- MeshDistortion : Added new node that calculates the distortion of a mesh from a
reference shape (#2568).
Improvements
------------
- Stats app : Added `-sets` command line argument, to allow scene sets to be computed (#2572).
- OSLObject : Added support for reading and writing UVs via new InUV and OutUV shaders (#2569).
- SceneViewUI : Defer camera and light set computation until required (#2567).
Fixes
-----
- Arnold : Fixed NodeEditor layout of new standard_surface shader parameters (#2573).
- Catalogue : Fixed crash caused by non-writable directory (#2571).
- Stats app : Fixed bugs in `-preCache` argument. It was using the wrong context and
not respecting the `-frames` flag (#2572).
- WidgetAlgo : Fixed bug when `grab()` with the event loop running (#2575).
- MapOffset : Fixed bug when offsetting an indexed uv set (#2576).
0.46.0.0
========
Features
--------
- FrameMask : Added new node to mask out upstream tasks on particular frames (#2558).
Improvements
------------
- Layouts (#2522) :
- Simplified space-bar panel expansion, and removed the annoying auto-expand
behaviour for collapsed panels.
- Removed tabs from the Scene layout's Timeline panel.
- DeleteFaces/DeletePoints/DeleteCurves : Added invert plug (#2546).
- Spline widgets (#2551) :
- Added axis lines at y=0 and y=1.
- Improved framing behaviour.
- Made float splines display as curves by default.
- Dispatcher : Reduced overhead of job directory creation (#2557).
- OSLObject : Added support for double primitive variables (#2547).
Fixes
-----
- Layouts : Fixed circular references created by layout menus. These could cause crashes
during shutdown (#2522).
- BoolPlugValueWidget : Fixed displayMode metadata handling. This restores the little
switches on the Attributes nodes (#2553).
API
---
- Metadata : Improved wildcard matching (#2536) :
- Stopped '*' matching '.' in a plug path. This mimics how '*' doesn't match '/' in a
glob match or in the PathMatcher.
- Added '...' wildcard that matches any number of plug path elements, in the same way a
PathMatcher does.
- ImageAlgo (#2561) :
- Added support for lambdas in `parallelGatherTiles()`.
- Added a `tileOrder` parameter to `parallelProcessTiles()`.
- Added python bindings for `parallelGatherTiles()`.
- Context : Added optional `IECore::Canceller` that can be used to cancel long
running background processes (#2559).
- BackgroundTask : Added new class to assist in the running of processes on background
threads (#2559).
- ParallelAlgo (#2559) :
- Added `callOnUIThread()` method.
- Added `callOnBackgroundThread()` method.
Breaking Changes
----------------
- SplitContainer (#2522) :
- Removed `animationDuration` argument from `setSizes()` method.
- Removed `targetSizes()` method.
- Metadata : `*` no longer matches `.` in a plug path (#2536).
- PlugValueWidget : Removed `registerCreator()` method. Use metadata instead (#2536).
- ImageAlgo : Changed signatures for `parallelProcessTiles()` and `parallelGatherTiles()`
(#2561).
- StringAlgo : Removed. Use `IECore::StringAlgo` instead (#2534).
- Display : Removed `executeOnUIThread()` method. Use ParallelAlgo instead (#2559).
- Gadget : Removed `executeOnUIThread()` method. Use ParallelAlgo instead (#2559).
Build
-----
- Requires Cortex 10.0.0-a20.
- Improved experimental CMake build setup (#2560).
0.45.3.0
========
Features
--------
- GafferSceneUI : Added CameraTool to the Viewer (#2531).
- This enables the movement of the camera in the viewport to be pushed back upstream
into the node for the camera or light that is currently being looked through. Note
that once activated, the CameraTool will remain active even after another tool has
been chosen.
Improvements
------------
- ShaderUI : Added support for userDefault metadata for shader parameters (#2544).
Fixes
-----
- SceneGadget : Fixed dirty propogation (#2541).
- Metadata (#2544) :
- Added `deregisterValue()` overload for string targets.
- Fixed overwriting of values for string targets.
- FormatPlug::acquireDefaultFormatPlug() : Fixed crashes if None is passed via
python bindings (#2549).
Build
-----
- Added experimental CMake build in contrib (#2543).
API
---
- ViewportGadget (#2531) :
- Added accessors for center of interest.
- Added `orthographic3D` camera mode.
- BoolPlugValueWidget (#2531) :
- Added support for `BoolWidget.DisplayMode.Tool`
- Added `boolWidget()` accessor, matching `StringPlugValueWidget.textWidget()`.
- GafferUI : Add ToolUI (#2531) :
- This sets up the "active" plug to use a BoolPlugValueWidget in tool mode,
with an appropriate icon.
- Viewer : Added support for "tool:exclusive" metadata (#2531) :
- This allows certain tools to be marked as non-exclusive, allowing them to
remain active even when another tool has been chosen.
- TransformTool : Exposed constructor for Selection class (#2531).
0.45.2.0
========
Improvements
------------
- ArnoldAttributes : Added support for "subdiv_uv_smoothing" Arnold parameter (#2538).
- OSLObject : Improved performance by removing unnecessary primitive variable resampling (#2523).
- BoxUI : Removed "Promote as Box.enabled" menu item. The regular "Promote to Box" menu
item should be used instead (#2528).
Fixes
-----
- SceneHierarchy : Fixed bug which caused the scene selection to be cleared
unnecessarily (#2525).
- SceneInspector (#2532) :
- Fixed selection bug in Globals->Sets section.
- Fixed graphical glitch in Globals->Sets section.
- Transform Tools : Fixed context management bug (#2524).
- FileMenu : Fixed premature exit when opening backup containing error (#2526, #2527).
- OpenGLShader : Fixed serialisation (#2529).
- Box : Fixed creation of Boxes around existing SceneNode graphs (#2530).
- SceneGadget : Fixed Python binding for `getScene()` (#2532).
API
---
- ShaderUI : Added `hideShaders()` function (#2533).
0.45.1.0
========
Improvements
------------
- NodeGraph (#2495) :
- Added automatic layout for auxiliary nodes.
- Improved aesthetics of auxiliary nodes and connections.
- Viewer :
- PointsPrimitives now default to drawing as GL points. The Drawing dropdown menu can
be used to display them as disks instead (#2512).
- Enabled anti-aliasing in the 3d view (#2521).
- Application : Gaffer processes are now named `gaffer ...` rather than
`python gaffer.py ...` (#2511).
- Expression : Added support for `"x" in context` Python syntax (#2513).
- NodeEditor : Added Lock/Unlock menu items to the tool menu (#2517).
- Shader : Added support for showing/hiding output parameters in the NodeGraph (#2515).
- Arnold : Enabled procedural instancing during interactive renders. This requires a
minimum Arnold version of 5.0.1.4 (#2519).
Fixes
-----
- Viewer : Fixed inaccurate picking of points and curves (#2512).
- Transform tools (#2137, #2516) :
- Fixed bug where pivot was ignored.
- Fixed bug affecting Transform node when space was set to World.
- Fixed drawing order so handles are always on top.
- NodeGraph :
- Fixed kink in connection drawing (#2500).
- Fixed inaccurate picking in the corners of rounded nodes (#2500).
- NodeEditor (#2517) :
- Fixed update bug which allowed plugs to be edited after an
ancestor node was made read only.
- Fixed bugs which allowed plugs to be added to read only nodes.
- Encapsulate : Fixed double transformation bug (#2518).
API
---
- Set : Added iterators (#2495).
- MetadataAlgo (#2517) :
- Added `ancestorAffectedByChange()` function.
- Added `readOnlyAffectedByChange()` functions.
0.45.0.0
========
Features
--------
- Added Ramp image node (#2470).
- Added SplinefColor4fPlug type (#2470).
- Added system to backup all open scripts at frequent intervals.
This is controlled via the Preferences dialogue (#2469, #2499, #2503).
Improvements
------------
- Viewer :
- Improved performance significantly when selecting large numbers of
objects (#2450, #2486).
- Improved reporting of errors involving look-through cameras (#2490).
- Improved camera selection UI (#2490).
- Added default camera settings dialogue (#2490).
- Added Ctrl+K shortcut to fit clipping planes to selection (#2490).
- Added Ctrl+F shortcut to frame selection and fit clipping planes to
match (#2490).
- Added context menu (#2490).
- SceneHierarchy (#2450, #2486) :
- Improved performance significantly when selecting or expanding large numbers
of objects.
- Multiple selections made in the Viewer are now highlighted properly in the
SceneHierarchy (#76).
- Significantly reduced file sizes and load times for scripts
containing many shader and/or light nodes (#2455).
- NodeGraph
- Added ability to Shift+Drag a connection to duplicate it (#2480).
- Improved representation of Expression, Animation and Random nodes (#2458, #2497).
- Improved highlighting behaviour for connections to selected nodes (#2473).
- ScriptNode :
- The current frame is now saved with the script and restored on
loading (#2468).
- Read-only files are now read-only in the UI (#2503).
- ArnoldAttributes : Added attributes to control volume motion blur (#2433).
- Arnold : Added support for OSL shaders with multiple outputs (#2494).
- Stats/Execute apps : By default the current frame stored in the script is
executed, rather than frame 1 as before. Use the `-frames` commandline argument
to specify a specific range of frames to execute (#2468).
- CompoundDataPlugValueWidget : Added array types to plug creation menu (#2433).
- Startup : Startup files are now executed in isolated scopes, so they cannot
accidentally rely on other startup files (#2462).
- Expression : Python expressions can now read from CompoundDataPlugs (#2484).
Fixes
-----
- Appleseed : Fixed crashes when editing cameras during interactive renders (#2489).
- Browser : Fixed bug caused by missing import (#2449).
- OpenColorIO : Added workaround for OpenColorIO bug whereby config parsing would
fail for non-English locales (#1654, #2460).
- Python wrappers : Fixed exception translation (#2459).
- BoxIn : Plug values are now preserved when promoting an input plug (#2461).
- Tractor Dispatcher : Fixed accumulation of tractor plugs on TaskNodes (#2463).
- GraphComponent : Fixed bug which could prevent multiple scripts from being
loaded in parallel (#2464).
- GraphComponentPath : Fixed bug whereby children did not inherit the filter
from their parent (#2465).
- OSLLight : Fixed metadata for child plugs of parameters (#2474).
- Shader : Fixed serialisation bugs introduced in version 0.43 (#2454, #2455).
- Spline UI : Prevented creation of multiple editing dialogues for the same
plug (#2472).
- Added backwards compatibility for scripts referencing the old
`GafferScene.PathMatcher`, `GafferScene.PathMatcherData` and
`GafferScene.PathMatcherDataPlug` types (#2457).
- Layouts :
- Fixed incorrect vertical sizing of Timelines in custom
layouts (#2502).
- Fixed bug serialising custom layouts containing special characters (#2492).
- ScriptNode :
- Hid "frame" plug from the UI, and clarified in the documentation
that is not intended for widespread use (#2504).
- Fixed a bug loading old scripts which referenced `IECore::Data` types
wrapping `imath` types (#2487).
- Viewer (#2490) : Fixed bug where centre of interest was lost when switching between
the default and look-through cameras.
- PlugValueWidget : Fixed bug that allowed drags to be received for read-only
plugs (#2503).
- GUI App : Errors are now reported correctly when loading files from the command
line (#2499).
- Serialiser : Fixed handling of exceptions in Python serialisers (#2475).
- Expression : Fixed initial UI state so that the expression is not editable until
a language has been chosen. This avoids problems where an expression was entered
and then lost when the language was set (#2482).
- PlugAlgo : Fixed problems with metadata promotion when using non-Box parents (#2488).
- NodeAlgo : Fixed attempts to apply user defaults to plugs that are not settable (#2507).
API
---
- PathListingWidget : Added faster expansion and selection methods using
`IECore.PathMatcher()` to store sets of paths (#2450).
- AuxiliaryNodeGadget : Added new class to represent nodes like Expression and
Animation in the NodeGraph (#2458).
- Style : Added `state` argument to `renderAuxiliaryConnection()` (#2473).
- Added GafferUI.Backups class (#2469).
- ImageGadget : Added `loadTexture()` method (#2490).
- ViewportGadget : Added `fitClippingPlanes()` method (#2490).
- Viewer : Added `viewContextMenuSignal()`. This allows context menus for views to be
customised using the same basic mechanism we use in the NodeGraph and elsewhere.
(#2490).
- FileMenu : Added `addScript()` function (#2499).
- Serialisation : Improved support for Python serialisers (#2475).
- ConnectionCreator : Added new class to improve drag & drop functionality in
the NodeGraph (#2480).
- ContextAlgo : Added `affects*Paths()` methods (#2486).
Breaking Changes
----------------
- Stats app : Replaced `-frame` parameter with `-frames` (#2468).
- Style : Changed signature for `renderAuxiliaryConnection()` method (#2473).
- View : Removed `framingBound()` method (#2490).
- RendererAlgo : Renamed `createDisplayDirectories()` to `createOutputDirectories()`
(#2452).
- PlugAdder (#2480) :
- Removed `edge` constructor argument.
- Changed base class.
- Nodule : Changed base class (#2480).
- ConnectionGadget : Changed base class (#2480).
- NodeGadget : Renamed `noduleTangent()` to `connectionTangent()` (#2480).
- ContextAlgo : The scene selection is now stored as a PathMatcher and not
StringVectorData (#2486).
- SceneGadget : Changed signatures for methods for accessing selection and
expansion (#2486).
- Style : Added new `renderAuxiliaryConnection()` virtual method (#2497).
0.44.0.0
========
Features
--------
- Added Checkerboard image node (#2403).
- Added ArnoldAtmosphere and ArnoldBackground nodes (#2444).
Improvements
------------
- NodeGraph : Added rendering of auxiliary connections, for instance between Expressions
and the nodes they are connected to (#2436).
- Build : Hid symbols that do not need to be exported (#2431).
- OSLObject : Added support for creating string primitive variables (#2425).
- ArnoldShader : Added support for shader outputs of type string and boolean (#2439).
Fixes
-----
- MessageWidget : Fixed crash when clicking on message buttons (#2438).
- BoxIO : Fix promotion of ArrayPlugs (#2446).
API
---
- Style : Added `renderAuxiliaryConnection()` method (#2436).
- Scene : Added GlobalShader base class (#2444).
- GafferVDB : Using IECoreVDB (#2440).
Breaking Changes
----------------
- Plug : Removed deprecated PerformsSubstitutions flag. Use the `substitutions`
argument to the StringPlug constructor instead (#2432).
- Style : Added a virtual method (#2436).
- ArnoldAOVShader : Changed base class (#2444).
Build
-----
- Added WARNINGS_AS_ERRORS build argument. This defaults to being on,
which is the same behaviour as before (#2431).
- Added ASAN build argument for use with Clang (#2434).
0.43.0.0
========
Features
--------
- GafferVDB : Added PointsGridToPoints node and visualisation
of VDB point grids (#2386).
Improvements
------------
- Appleseed : Added support for Capsules generated by the Encapsulate
node (#2402).
- ImageReader (#2380) :
- Reimplemented to use Gaffer's native cache instead of
OpenImageIO's cache, giving speedups of 20-30% in some cases. This
also paves the way for introducing deep images to Gaffer.
- Added initial support for multi-part OpenEXR files.
Fixes
-----
- ValuePlug : Fixed problems when serialising compound plugs (#1500, #2395).
- BoxPlugs were being serialised with `setValue()` calls for the leaf plugs
_and_ the top level plug itself.
- FormatPlugs were incorrectly attempting to serialise a `getValue()` call
at the top level even when input connections existed at the leaf level.
This prevented a common pattern for the dispatch of image networks from
working.
- Camera node : Fixed "Copy From Viewer" tool menu item (#2396).
- SceneInspector : Fixed transform component display (#2396).
- Expression : Fixed bug caused by non-serialisable input plugs (#2395).
- CollectImages/Merge/Offset : Fix out of bounds input tile accesses
(#2380).
- TabbedContainer : Fixed an incompatibility with Qt5 (#2426).
- PythonCommand : Exposed imath module to the execution command (#2428).
- CompoundPlug : Added compatibility config for legacy gfr files (#2429).
API
---
- Serialisation : Added support for nested classes in `classPath()` method (#2400).
- Plug : Remove deprecated ReadOnly flag (#2401).
- Moved PathMatcher/PathMatcherData/PathMatcherDataPlug from GafferScene to Gaffer (#2404).
- Filter : Removed Result enum. Use IECore::PathMatcher::Result instead (#2404).
Breaking Changes
----------------
- GafferScene :
- Removed AlembicSource node. Use a SceneReader instead (#2397).
- Removed AlembicPath and AlembicPathPreview.
- GafferCortex : Removed TimeCodeParameter support. This parameter type
has been removed from Cortex (#2427).
- GafferTest : Removed SphereNode (#2399).
- ValuePlugSerialiser : Removed `valueNeedsSerialisation()` virtual
method (#2395).
- OpenImageIOReader : Removed cache related methods (#2380).
- Removed Plug::ReadOnly flag. Use MetadataAlgo instead (#2401).
- ValuePlugSerialiser : Removed flagsMask argument from `repr()` method (#2401).
- Filter : Removed Result enum. Use IECore::PathMatcher::Result instead (#2404).
0.42.0.0
========
This major release brings significant version upgrades to all supported
renderers : Arnold 5, 3Delight 13 (NSI), and Appleseed 1.8. It also
introduces native support for OpenVDB, and initial support for reading
and writing USD files. This is of course in addition to the usual
assortment of improvements and bug fixes.
> Note :
>
> As of this release we no longer support Arnold 4 or 3Delight 12.
> Additionally, some Cortex functionality has been moved to the
> IECoreScene python module, and we now use the imath python module
> to access types like V3f, Color3f etc. Custom scripts and/or
> expressions may need to be updated accordingly. See the Breaking
> Changes section for more details.
Features
--------
- Arnold 5 support (#2308) :
- Added support for rendering arbitrary meshes as volumes. Previously
they were converted to box volumes.
- Added support for light path expressions.
- Added support for transform_type.
- Added ArnoldAOVShader node to support AOV shaders.
- Added support for volume_padding (#2356).
- 3Delight 13 support via the NSI API (#2311).
- All shading/lighting is now performed via OSL shaders.
- Includes full support for adding/removing/moving objects during
interactive rendering.
- Appleseed 1.8 support (#2371) :
- Updated version to 1.8.1.
- Added AOV presets to the Outputs node.
- USD (#2393)
- The SceneReader node can now read USD files.
- The SceneWriter node can now write USD files.
- VDB (#2373) :
- Added native support for representing VDB volume data in Gaffer
scenes.
- The standard SceneReader node can now load .vdb files.
- VDB objects can be rendered directly to Arnold.
- The Viewer now provides basic visualisation of VDB grids.
- The SceneInspector provides inspection of grid metadata etc
in the Object section.
- Several new nodes demonstrate the feasibility of manipulating
VDB grids directly in Gaffer's node graph :
- LevelSetToMesh
- MeshToLevelSet
- LevelSetOffset
- Catalogue : Added a new CatalogueSelect node. This can be placed
downstream of a Catalogue to override the image to view (#2370).
- UI Editor : Added the ability to add custom buttons to a plug (#2348).
- Gadget : Introduced layer-based rendering for Gadget-based UI
elements (#2304).
Improvements
------------
- OpenColorIO nodes : Added role presets to all colorspace plugs (#2379)
- NodeGraph : Added icons to signify that a node has been bookmarked (#2369)
- PlugLayout : Improved layout of successive accessory widgets. They
are now all placed in the same row (#2348).
- Simplified 3delight configuration based on $DELIGHT environment
variable (#2311).
- TaskPlug/FilterPlug/ShaderPlug : Tightened `acceptsInput()` constraints (#2321).
- OSLObject : Added support for reading and writing matrix primitive variables (#2327).
- GafferImage : Moved default format plug creation to gui config (#2333).
Fixes
-----
- Catalogue :
- Fixed bug that prevented images with a '.' in the filename from
being loaded (#2370).
- Fixed crashes caused by removing several images in quick
succession (#2337).
- File Menu : Fixed "Import..." bugs (#1077, #2339).
- Edit Menu : Fixed automatic layout of pasted nodes (#2383)
- ShaderPlug : Fixed bug when deserialising inputs from BoxIO nodes (#2374)
- Crop : Fixed bug whereby changing the format plug value did not trigger
recomputation (#2368).
- ImageWriter (#2364) :
- Fixed a crash when writing a data window with a single pixel .
- Fixed writing of empty data windows to write a single pixel data
window instead of a full image. OpenEXR does not support empty data
windows, so we must write at least one pixel.
- NodeGraph :
- Fixed confusing Box navigation behaviour (#2343, #2347).
- Fixed overlay text to always be on top (#674, #2304).
- Fixed layering so dragged connections are always drawn behind
nodes, and highlighted plugs are drawn above all others (#2304).
- SubGraph : Accounted for BoxIO nodes in `correspondingInput() (#2360).
This fixed a node reconnection bug when deleting a Box or Reference, and
allows Box and Reference nodes to be drag-inserted onto existing connections.
- ScriptNode :
- Fixed node deletion problems caused by errors in `correspondingInput()`
implementations. This was preventing nodes representing missing Arnold
shaders from being deleted (#2355).
- Fixed crashes caused by syntax errors in code passed to `execute()` method.
This could cause a crash when pasting invalid text into the NodeGraph.
(#2319, #2320)
- Shader/ShaderPlug : Fixed GIL management bug which could cause a deadlock
in the `attributes()` and `attributesHash()` methods (#2354).
- GraphComponent : Fixed crashes caused by passing `None` to the Python
bindings (#2338).
- VectorWarp : Fixed handling of nan/inf (#2341).
- Expression : Fixed copy/paste bug (#2336).
- BoxIO : Fixed undo/redo of `insert()` method (#2314).
- RendererAlgo : Fixed crash when renderer returns a null ObjectInterface (#2302).
- SetUI : Fixed set name context menus to account for intermediate nodes between
destination and filter (#2312).
- StandardLightVisualiser : Fixed for Cortex 10 UV conventions (#2311).
- PlugAlgo : Fixed promotion of non-serialisable output plugs (#2314).
- Serialiser : Fixed syntax error created by `moduleDependencies()` (#2320).
- Plug : Fixed `setInput( nullptr )` so it removes inputs from all descendant
plugs (#2323).
API
---
- OpenColorIOTransform : Added method to query available role names (#2379)
- Added default template arguments to simplify usage of several methods (#2361)
- `PlugGadget::getPlug()`
- `IndividualContainer::getChild()`
- `Dot::inPlug()` and `Dot::outPlug()`
- `View::inPlug()`, `View::getPreprocessor()` and `View::preprocessedInPlug()`
- `Metadata::value()`
- `BoxIO::plug()` and `BoxIO::promotedPlug()`
- Added GafferUI.ButtonPlugValueWidget (#2348).
- ScriptNode : Added `importFile()` method (#2339).
- Added new OpenGL renderer backend (#2302).
- Gadget : Introduced layer-based rendering (#2304).
- GafferOSL :
- Added ClosurePlug type (#2308).
- Added OSLLight node (#2311).
Breaking Changes
----------------
- Removed GafferRenderMan, and with it support for 3Delight versions
prior to 13 (#2311).
- Removed support for Arnold 4 (#2308).
- Gaffer and Cortex now use the official `imath` python module rather
than custom bindings in IECore (#2378).
- Cortex scene classes have moved to a new IECoreScene module, as we
continue to simplify and modularize Cortex (#2362).
- Removed SplineEditor/SplinePlugGadget since they have never been
used (#2375).
- Removed ProceduralHolder node. This was not exposed via the UI,
had never been used, and is no longer supported by any of the
renderer backends (#2366).
- Shader : Removed deprecated state methods (#2354).
- Removed RenderableGadget. If similar functionality is required,
use an ObjectToSceneNode and a SceneGadget (#2334).
- SceneAlgo : Removed camera/transform utilities. These relied on conventions
and functionality that will be removed in Cortex 10 (#2332).
- RendererAlgo : Removed obsolete functions used only with the legacy
renderer backends (#2318).
- Removed code for handling `IECore::Light`. Lights are now
always represented as shaders assigned to a location (#2331).
- Removed SceneProcedural and ScriptProcedural. These were only useful
in legacy renderer backends, which have now all been removed (#2318).
- Removed ExecutableRender node. This used the legacy renderer backends
which have all been removed (#2318).
- Gadget : Modified rendering API (#2304).
- Removed IncrementingPlugValueWidget. Use RefreshPlugValueWidget
instead (#2322).
- Removed EnumPlugValueWidget. Use PresetsPlugValueWidget and
metadata presets instead (#2322).
- ViewportGadget : Refactored camera transform handling. The camera
transform is now accessed via new `setCameraTransform()`/`getCameraTransform()`
methods, rather than via the camera itself (#2351).
- ScriptNode : Modified signature of `ScriptExecutedSignal` to use raw pointers
(#2336).
0.41.0.0
========
Breaking Changes
----------------
- Adopted Cortex 10 UV representation (#2281) :
- UVs are now represented as V2f primitive variables,
not separate s/t float primitive variables.
- Primary UV set is called "uv".
- UV origin is in the bottom left, with increasing values of
V going _up_ (flipped vertically compared to previous orientation).
- Indices are now stored on the same primitive variable as the
UVs themselves.
- This has affected the plugs and default values for a number of
nodes.
- SplinePlug : Changed value representation from IECore::Spline to new
SplineDefinition class (#2148).
- Algo headers : Removed compatibility namespacing (#2299).
- Removed CompoundPlug. Use Plug or ValuePlug instead (#2298, #1323).
- Removed CompoundPlugValueWidget. Use PlugLayout instead (#2298).
- FilteredSceneProcessor : Removed deprecated `filterContext` method.
Use FilterPlug::FilterScope instead (#2260).
- Stopped installing Cortex image ops. Use GafferImage nodes instead (#2258).
- Removed OpenImageIOAlgo. Use IECoreImage::OpenImageIOAlgo instead (#2258).
- Removed GafferCortexUI::ImageReaderPathPreview. Use
GafferImageUI::ImageReaderPathPreview instead (#2258).
- GafferBindings : Hid internal details in GafferModule (#2289).
- GafferUIBindings : Hid internal details in GafferUIModule (#2256).
- GafferCortexBindings : Hid internal details in GafferCortexModule (#2248).
Features
--------
- Added Viewer visualisation of Arnold light filters (#2275).
- Added Encapsulate node. This encapsulates portions of a scene by
collapsing the hierarchy and replacing it with a procedural which
will be evaluated at render time (#2283).
- Added FloatSpline OSL shader ((#2292).
- Added VTuneMonitor to annotate VTune profiles with node processes (#2247).
Improvements
------------
- LightTweaks : Added "Delete" menu item to context menu (#2285).
- OSLShader : Improved node graph labels (#2296).
- Parent : Defaulted "root" plug to value of "/" (#2242).
- ArnoldOptions : Added abortOnError and maxSubdivison settings (#2290).
- SplinePlug :
- Added MonotoneCubic interpolation option (#2148).
- Added option to preview splines as curves rather than a colour ramp (#2292).
- CollectScenes : Added "root" plug, to allow subtrees to be collected
from the input scene (#2238).
- OSLObject/ShadingEngine : Added multithreaded evaluation for improved
performance (#2251).