Natron Documentation
Natron Documentation
Release 3.0.0
1 User Guide 3
1.1 What is compositing? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 Practice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Getting started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.1 About . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.3 Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.4 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3 Compositing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3.1 Managing Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3.2 Reformatting elements (empty) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.3 Channels (empty) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.4 Merging images (empty) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.5 Noise removal (empty) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.6 Keying (empty) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.7 Using Rotopaint (empty) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.8 Tracking and stabilizing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.9 Transforming elements (empty) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.10 Working with color (empty) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.11 Stereoscopic compositing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.12 Preview and rendering (empty) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.3.13 Expressions (empty) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.4 Tutorials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.4.1 Writing documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.4.2 HSVTool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.4.3 FFmpeg (empty) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.4.4 Using PanoTools projects within Natron . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1.4.5 Vector graphics workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
1.4.6 Alternative Matte Extraction Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2 Reference Guide 57
2.1 Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.1.1 General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.1.2 Threading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.1.3 Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.1.4 GPU Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.1.5 Project Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.1.6 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.1.7 User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.1.8 Color Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
i
2.1.9 Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.1.10 Viewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.1.11 Nodegraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
2.1.12 Plug-ins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
2.1.13 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
2.1.14 Appearance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
2.2 Image nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.2.1 CheckerBoard node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.2.2 ColorBars node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.2.3 ColorWheel node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.2.4 Constant node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
2.2.5 OpenRaster node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
2.2.6 Read node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
2.2.7 ReadCDR node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
2.2.8 ReadFFmpeg node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
2.2.9 ReadKrita node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
2.2.10 ReadMisc node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
2.2.11 ReadOIIO node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
2.2.12 ReadPDF node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
2.2.13 ReadPFM node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
2.2.14 ReadPNG node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
2.2.15 ReadPSD node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
2.2.16 ReadSVG node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
2.2.17 RunScript node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
2.2.18 Solid node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
2.2.19 Write node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
2.2.20 WriteFFmpeg node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
2.2.21 WriteOIIO node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
2.2.22 WritePFM node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
2.2.23 WritePNG node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
2.3 Draw nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
2.3.1 LightWrap node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
2.3.2 Noise node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
2.3.3 Plasma node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
2.3.4 Radial node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
2.3.5 Ramp node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
2.3.6 Rand node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
2.3.7 Rectangle node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
2.3.8 Roto node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
2.3.9 RotoPaint node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
2.3.10 SeGrain node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
2.3.11 SeNoise node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
2.3.12 Text node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
2.4 Time nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
2.4.1 AppendClip node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
2.4.2 Deinterlace node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
2.4.3 FrameBlend node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
2.4.4 FrameHold node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
2.4.5 FrameRange node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
2.4.6 NoTimeBlur node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
2.4.7 Retime node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
2.4.8 SlitScan node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
2.4.9 TimeBlur node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
2.4.10 TimeOffset node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
2.5 Channel nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
2.5.1 Shuffle node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
2.6 Color nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
2.6.1 Add node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
ii
2.6.2 Clamp node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
2.6.3 ClipTest node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
2.6.4 ColorCorrect node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
2.6.5 ColorLookup node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
2.6.6 ColorMatrix node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
2.6.7 ColorSuppress node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
2.6.8 Equalize node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
2.6.9 Gamma node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
2.6.10 Grade node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
2.6.11 HSIToRGB node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
2.6.12 HSLToRGB node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
2.6.13 HSVToRGB node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
2.6.14 HSVTool node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
2.6.15 HistEQ node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
2.6.16 HueCorrect node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
2.6.17 Invert node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
2.6.18 LabToRGB709 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
2.6.19 LabToXYZ node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
2.6.20 Log2Lin node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
2.6.21 Multiply node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
2.6.22 OCIOCDLTransform node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
2.6.23 OCIOColorSpace node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
2.6.24 OCIODisplay node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
2.6.25 OCIOFileTransform node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
2.6.26 OCIOLogConvert node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
2.6.27 OCIOLookTransform node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
2.6.28 PLogLin node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
2.6.29 Quantize node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
2.6.30 RGB709ToLab node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
2.6.31 RGB709ToXYZ node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
2.6.32 RGBToHSI node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
2.6.33 RGBToHSL node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
2.6.34 RGBToHSV node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
2.6.35 RGBToYCbCr601 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
2.6.36 RGBToYCbCr709 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
2.6.37 RGBToYPbPr601 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
2.6.38 RGBToYPbPr709 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
2.6.39 RGBToYUV601 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
2.6.40 RGBToYUV709 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
2.6.41 Saturation node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
2.6.42 VectorToColor node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
2.6.43 XYZToLab node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
2.6.44 XYZToRGB709 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
2.6.45 XYZToxyY node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
2.6.46 YCbCrToRGB601 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
2.6.47 YCbCrToRGB709 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
2.6.48 YPbPrToRGB601 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
2.6.49 YPbPrToRGB709 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
2.6.50 YUVToRGB601 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
2.6.51 YUVToRGB709 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
2.6.52 xyYToXYZ node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
2.7 Filter nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
2.7.1 AngleBlur node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
2.7.2 Bloom node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
2.7.3 Blur node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
2.7.4 ChromaBlur node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
2.7.5 DenoiseSharpen node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
2.7.6 Dilate node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
iii
2.7.7 DirBlur node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
2.7.8 Distance node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
2.7.9 DropShadow node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
2.7.10 EdgeBlur node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
2.7.11 EdgeDetect node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
2.7.12 EdgeExtend node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
2.7.13 Erode node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
2.7.14 ErodeBlur node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
2.7.15 ErodeSmooth node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
2.7.16 Fill node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
2.7.17 GMICExpr node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
2.7.18 Glow node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
2.7.19 GodRays node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
2.7.20 Inpaint node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
2.7.21 Laplacian node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
2.7.22 Matrix3x3 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
2.7.23 Matrix5x5 node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
2.7.24 Median node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
2.7.25 Shadertoy node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
2.7.26 Sharpen node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
2.7.27 SharpenInvDiff node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
2.7.28 SharpenShock node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
2.7.29 SmoothAnisotropic node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
2.7.30 SmoothBilateral node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
2.7.31 SmoothBilateralGuided node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
2.7.32 SmoothGuided node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
2.7.33 SmoothPatchBased node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
2.7.34 SmoothRollingGuidance node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
2.7.35 Soften node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
2.7.36 ZMask node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
2.7.37 ZRemap node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
2.8 Keyer nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
2.8.1 ChromaKeyer node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
2.8.2 Despill node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
2.8.3 Difference node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
2.8.4 HueKeyer node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
2.8.5 Keyer node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
2.8.6 MatteMonitor node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
2.8.7 PIK node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
2.8.8 PIKColor node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
2.9 Merge nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
2.9.1 Absminus node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
2.9.2 ContactSheet node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
2.9.3 CopyRectangle node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
2.9.4 Dissolve node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
2.9.5 In node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
2.9.6 KeyMix node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
2.9.7 LayerContactSheet node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
2.9.8 Matte node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
2.9.9 Max node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
2.9.10 Merge node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
2.9.11 Min node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
2.9.12 Multiply node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
2.9.13 Out node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
2.9.14 Plus node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
2.9.15 Premult node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
2.9.16 RotoMerge node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
2.9.17 Screen node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
iv
2.9.18 SeExpr node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
2.9.19 SeExprSimple node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
2.9.20 Switch node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
2.9.21 TimeDissolve node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
2.9.22 Unpremult node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
2.10 Transform nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
2.10.1 AdjustRoD node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
2.10.2 Card3D node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
2.10.3 CornerPin node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
2.10.4 CornerPinMasked node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
2.10.5 Crop node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
2.10.6 IDistort node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
2.10.7 LensDistortion node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
2.10.8 Mirror node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
2.10.9 Position node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
2.10.10 Reformat node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
2.10.11 Resize node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
2.10.12 STMap node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
2.10.13 SpriteSheet node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
2.10.14 Tracker node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
2.10.15 Transform node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
2.10.16 TransformMasked node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
2.11 Views nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
2.11.1 Anaglyph node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
2.11.2 JoinViews node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
2.11.3 MixViews node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
2.11.4 OneView node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
2.11.5 SideBySide node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
2.12 Other nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
2.12.1 Backdrop node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
2.12.2 DiskCache node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
2.12.3 Dot node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
2.12.4 Group node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
2.12.5 ImageStatistics node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
2.12.6 Input node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
2.12.7 NoOp node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
2.12.8 Output node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
2.12.9 Precomp node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
2.13 GMIC nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
2.13.1 About G’MIC node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
2.13.2 G’MIC 3D Blocks node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
2.13.3 G’MIC 3D Colored Object node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
2.13.4 G’MIC 3D Elevation node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
2.13.5 G’MIC 3D Extrusion node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
2.13.6 G’MIC 3D Image Object node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
2.13.7 G’MIC 3D Lathing node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
2.13.8 G’MIC 3D Random Objects node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
2.13.9 G’MIC Abstraction node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
2.13.10 G’MIC Add Grain node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
2.13.11 G’MIC Align Layers node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
2.13.12 G’MIC Apply External CLUT node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
2.13.13 G’MIC Array Faded node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
2.13.14 G’MIC Array Mirrored node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
2.13.15 G’MIC Array Random node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
2.13.16 G’MIC Array Random Colors node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
2.13.17 G’MIC Array Regular node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
2.13.18 G’MIC Ascii Art node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
2.13.19 G’MIC B&W Stencil node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
v
2.13.20 G’MIC Ball node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
2.13.21 G’MIC Bandpass node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
2.13.22 G’MIC Barnsley Fern node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
2.13.23 G’MIC Basic Adjustments node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
2.13.24 G’MIC Bayer Filter node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
2.13.25 G’MIC Bayer Reconstruction node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
2.13.26 G’MIC Black & White node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
2.13.27 G’MIC Blend Average All node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
2.13.28 G’MIC Blend Edges node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
2.13.29 G’MIC Blend Fade node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
2.13.30 G’MIC Blend Median node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
2.13.31 G’MIC Blend Seamless node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
2.13.32 G’MIC Blend Standard node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
2.13.33 G’MIC Blur Angular node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
2.13.34 G’MIC Blur Bloom node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
2.13.35 G’MIC Blur Depth-of-Field node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
2.13.36 G’MIC Blur Gaussian node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
2.13.37 G’MIC Blur Glow node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
2.13.38 G’MIC Blur Linear node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
2.13.39 G’MIC Blur Radial node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
2.13.40 G’MIC Bokeh node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
2.13.41 G’MIC Boost Chromaticity node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
2.13.42 G’MIC Boost-Fade node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
2.13.43 G’MIC Box Fitting node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
2.13.44 G’MIC Brushify node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
2.13.45 G’MIC Burn node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
2.13.46 G’MIC CLUT from After / Before Layers node . . . . . . . . . . . . . . . . . . . . . . 552
2.13.47 G’MIC Camouflage node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
2.13.48 G’MIC Canvas node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
2.13.49 G’MIC Canvas Texture node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
2.13.50 G’MIC Cartesian Transform node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
2.13.51 G’MIC Cartoon node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
2.13.52 G’MIC Channel Processing node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
2.13.53 G’MIC Channels to Layers node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
2.13.54 G’MIC Charcoal node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
2.13.55 G’MIC Chessboard node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
2.13.56 G’MIC Chromatic Aberrations node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
2.13.57 G’MIC Circle Abstraction node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574
2.13.58 G’MIC Circle Art node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
2.13.59 G’MIC Circle Transform node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
2.13.60 G’MIC Color Balance node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
2.13.61 G’MIC Color Blindness node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
2.13.62 G’MIC Color Presets node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
2.13.63 G’MIC Colorful Blobs node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
2.13.64 G’MIC Colorize Lineart Auto-Fill node . . . . . . . . . . . . . . . . . . . . . . . . . . 602
2.13.65 G’MIC Colorize Lineart Propagation node . . . . . . . . . . . . . . . . . . . . . . . . . 603
2.13.66 G’MIC Colorize Lineart Smart Coloring node . . . . . . . . . . . . . . . . . . . . . . . 606
2.13.67 G’MIC Colorize Photographs node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
2.13.68 G’MIC Colorize with Colormap node . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
2.13.69 G’MIC Colormap node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
2.13.70 G’MIC Colors to Layers node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616
2.13.71 G’MIC Conformal Maps node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
2.13.72 G’MIC Contrast Swiss Mask node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
2.13.73 G’MIC Convolve node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
2.13.74 G’MIC Cracks node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
2.13.75 G’MIC Crease node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
2.13.76 G’MIC Crystal node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
2.13.77 G’MIC Crystal Background node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
vi
2.13.78 G’MIC Cubism node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
2.13.79 G’MIC Cupid node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
2.13.80 G’MIC Curvature node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
2.13.81 G’MIC Custom Code Global node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638
2.13.82 G’MIC Custom Code Local node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642
2.13.83 G’MIC Customize CLUT node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
2.13.84 G’MIC Cutout node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654
2.13.85 G’MIC Decompose Channels node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656
2.13.86 G’MIC Deinterlace node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
2.13.87 G’MIC Details Equalizer node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
2.13.88 G’MIC Detect Skin node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
2.13.89 G’MIC Dices node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
2.13.90 G’MIC Difference of Gaussians node . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
2.13.91 G’MIC Diffusion Tensors node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
2.13.92 G’MIC Dirty node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
2.13.93 G’MIC Distance Transform node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
2.13.94 G’MIC Distort Lens node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677
2.13.95 G’MIC Dithering node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
2.13.96 G’MIC Drawn Montage node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
2.13.97 G’MIC Drop Shadow node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
2.13.98 G’MIC Drop Shadow 3D node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
2.13.99 G’MIC Drop Water node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
2.13.100G’MIC Droste node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
2.13.101G’MIC Edges node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
2.13.102G’MIC Edges Offsets node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
2.13.103G’MIC Ellipsionism node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
2.13.104G’MIC Engrave node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
2.13.105G’MIC Equalize HSI-HSL-HSV node . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
2.13.106G’MIC Equalize HSV node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
2.13.107G’MIC Equalize Local Histograms node . . . . . . . . . . . . . . . . . . . . . . . . . . 702
2.13.108G’MIC Equalize Shadow node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706
2.13.109G’MIC Equation Plot Parametric node . . . . . . . . . . . . . . . . . . . . . . . . . . . 708
2.13.110G’MIC Equation Plot Y=f(X) node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709
2.13.111G’MIC Equirectangular to Nadir-Zenith node . . . . . . . . . . . . . . . . . . . . . . . 711
2.13.112G’MIC Euclidean Polar node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
2.13.113G’MIC Extract Objects node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714
2.13.114G’MIC Fade Layers node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716
2.13.115G’MIC Felt Pen node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717
2.13.116G’MIC Fish-Eye node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719
2.13.117G’MIC Flip & Rotate Blocs node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720
2.13.118G’MIC Flower node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724
2.13.119G’MIC Fourier Analysis node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
2.13.120G’MIC Fourier Transform node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726
2.13.121G’MIC Fourier Watermark node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728
2.13.122G’MIC Fractalize node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
2.13.123G’MIC Frame Blur node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
2.13.124G’MIC Frame Cube node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732
2.13.125G’MIC Frame Fuzzy node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734
2.13.126G’MIC Frame Mirror node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736
2.13.127G’MIC Frame Painting node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
2.13.128G’MIC Frame Pattern node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
2.13.129G’MIC Frame Regular node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741
2.13.130G’MIC Frame Round node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
2.13.131G’MIC Frame Smooth node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744
2.13.132G’MIC Freaky B&W node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
2.13.133G’MIC Freaky Details node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
2.13.134G’MIC Games & Demos node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750
2.13.135G’MIC Gear node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752
vii
2.13.136G’MIC Gradient Corners node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
2.13.137G’MIC Gradient Custom Shape node . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
2.13.138G’MIC Gradient Linear node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
2.13.139G’MIC Gradient Norm node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760
2.13.140G’MIC Gradient RGB node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
2.13.141G’MIC Gradient Radial node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
2.13.142G’MIC Gradient Random node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
2.13.143G’MIC Gradient from Line node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
2.13.144G’MIC Grid Cartesian node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
2.13.145G’MIC Grid Hexagonal node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770
2.13.146G’MIC Grid Triangular node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771
2.13.147G’MIC Halftone node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773
2.13.148G’MIC Hard Sketch node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775
2.13.149G’MIC Heart node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
2.13.150G’MIC Hearts node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778
2.13.151G’MIC Highlight Bloom node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782
2.13.152G’MIC Histogram Analysis node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784
2.13.153G’MIC Hope Poster node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786
2.13.154G’MIC Hough Sketch node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788
2.13.155G’MIC Illuminate 2D Shape node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790
2.13.156G’MIC Import Data node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794
2.13.157G’MIC Ink Wash node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795
2.13.158G’MIC Inpaint Holes node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797
2.13.159G’MIC Inpaint Morphological node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
2.13.160G’MIC Inpaint Multi-Scale node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800
2.13.161G’MIC Inpaint Patch-Based node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801
2.13.162G’MIC Inpaint Transport-Diffusion node . . . . . . . . . . . . . . . . . . . . . . . . . 803
2.13.163G’MIC Intarsia node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805
2.13.164G’MIC Isophotes node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807
2.13.165G’MIC JPEG Artefacts node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
2.13.166G’MIC Kaleidoscope Blended node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811
2.13.167G’MIC Kaleidoscope Polar node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812
2.13.168G’MIC Kaleidoscope Symmetry node . . . . . . . . . . . . . . . . . . . . . . . . . . . 814
2.13.169G’MIC Kuwahara node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815
2.13.170G’MIC Laplacian node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819
2.13.171G’MIC Lava node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821
2.13.172G’MIC Layers to Tiles node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823
2.13.173G’MIC Light Glow node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824
2.13.174G’MIC Light Leaks node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828
2.13.175G’MIC Light Patch node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830
2.13.176G’MIC Light Rays node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
2.13.177G’MIC Lightning node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835
2.13.178G’MIC Linify node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
2.13.179G’MIC Lissajous node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839
2.13.180G’MIC Local Normalization node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841
2.13.181G’MIC Local Orientation node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844
2.13.182G’MIC Local Processing node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847
2.13.183G’MIC Lomo node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850
2.13.184G’MIC Lylejk’s Painting node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 852
2.13.185G’MIC Magic Details node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854
2.13.186G’MIC Make Seamless Diffusion node . . . . . . . . . . . . . . . . . . . . . . . . . . 857
2.13.187G’MIC Make Seamless Patch-Based node . . . . . . . . . . . . . . . . . . . . . . . . . 859
2.13.188G’MIC Mandelbrot Julia Sets node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 861
2.13.189G’MIC Marble node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863
2.13.190G’MIC Maze node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864
2.13.191G’MIC Mess With Bits node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 866
2.13.192G’MIC Mighty Details node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870
2.13.193G’MIC Mineral Mosaic node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873
viii
2.13.194G’MIC Ministeck node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874
2.13.195G’MIC Mixer CMYK node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876
2.13.196G’MIC Mixer HSV node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878
2.13.197G’MIC Mixer Lab node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 880
2.13.198G’MIC Mixer PCA node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 883
2.13.199G’MIC Mixer RGB node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885
2.13.200G’MIC Mixer YCbCr node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887
2.13.201G’MIC Montage node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889
2.13.202G’MIC Morph Layers node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 892
2.13.203G’MIC Morphological Filter node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893
2.13.204G’MIC Mosaic node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
2.13.205G’MIC Multiscale Operator node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900
2.13.206G’MIC Neon Lightning node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902
2.13.207G’MIC Noise Additive node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904
2.13.208G’MIC Noise Perlin node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907
2.13.209G’MIC Noise Spread node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 910
2.13.210G’MIC Old Photograph node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913
2.13.211G’MIC Old-Movie Stripes node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914
2.13.212G’MIC Oldschool 8bits node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918
2.13.213G’MIC Op Art node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920
2.13.214G’MIC Pack node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923
2.13.215G’MIC Pack Sprites node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925
2.13.216G’MIC Painting node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927
2.13.217G’MIC Paper Texture node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928
2.13.218G’MIC Pen Drawing node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932
2.13.219G’MIC Pencil node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934
2.13.220G’MIC Pencil Portrait node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936
2.13.221G’MIC Perspective node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938
2.13.222G’MIC Pixel Sort node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939
2.13.223G’MIC Plaid node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 941
2.13.224G’MIC Plasma node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943
2.13.225G’MIC Polar Transform node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944
2.13.226G’MIC Polaroid node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946
2.13.227G’MIC Polka Dots node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947
2.13.228G’MIC Polygonize Delaunay node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949
2.13.229G’MIC Polygonize Energy node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 951
2.13.230G’MIC Pop Shadows node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953
2.13.231G’MIC Poster Edges node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955
2.13.232G’MIC Posterize node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957
2.13.233G’MIC Puzzle node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959
2.13.234G’MIC Quadrangle node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 961
2.13.235G’MIC Quadtree Variations node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 962
2.13.236G’MIC Quick Copyright node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965
2.13.237G’MIC Rain & Snow node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966
2.13.238G’MIC Rainbow node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968
2.13.239G’MIC Raindrops node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970
2.13.240G’MIC Random node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 971
2.13.241G’MIC Random Color Ellipses node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 972
2.13.242G’MIC Random Shade Stripes node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974
2.13.243G’MIC Red-Eye Attenuation node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977
2.13.244G’MIC Reflection node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978
2.13.245G’MIC Relief Light node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 980
2.13.246G’MIC Remove Hot Pixels node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981
2.13.247G’MIC Resynthetize Texture FFT node . . . . . . . . . . . . . . . . . . . . . . . . . . 983
2.13.248G’MIC Resynthetize Texture Patch-Based node . . . . . . . . . . . . . . . . . . . . . . 985
2.13.249G’MIC Retinex node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 987
2.13.250G’MIC Retro Fade node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 989
2.13.251G’MIC Ripple node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991
ix
2.13.252G’MIC Rodilius node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992
2.13.253G’MIC Rorschach node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996
2.13.254G’MIC Sample Image node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997
2.13.255G’MIC Satin node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1001
2.13.256G’MIC Scanlines node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003
2.13.257G’MIC Seamcarve node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1007
2.13.258G’MIC Seamless Turbulence node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008
2.13.259G’MIC Segmentation node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1010
2.13.260G’MIC Select-Replace Color node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013
2.13.261G’MIC Selective Desaturation node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015
2.13.262G’MIC Self Glitching node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017
2.13.263G’MIC Sepia node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1021
2.13.264G’MIC Shade Bobs node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023
2.13.265G’MIC Shadow Patch node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1025
2.13.266G’MIC Shapeism node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027
2.13.267G’MIC Sharp Abstract node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1029
2.13.268G’MIC Sharpen Deblur node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1033
2.13.269G’MIC Sharpen Gold-Meinel node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1036
2.13.270G’MIC Sharpen Inverse Diffusion node . . . . . . . . . . . . . . . . . . . . . . . . . . 1040
2.13.271G’MIC Sharpen Octave Sharpening node . . . . . . . . . . . . . . . . . . . . . . . . . 1043
2.13.272G’MIC Sharpen Richardson-Lucy node . . . . . . . . . . . . . . . . . . . . . . . . . . 1046
2.13.273G’MIC Sharpen Shock Filters node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1048
2.13.274G’MIC Sharpen Texture node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1051
2.13.275G’MIC Sharpen Unsharp Mask node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1054
2.13.276G’MIC Shock Waves node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1057
2.13.277G’MIC Sierpinski Triangle node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1060
2.13.278G’MIC Simulate Film node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061
2.13.279G’MIC Skeleton node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1071
2.13.280G’MIC Sketch node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1073
2.13.281G’MIC Slice Luminosity node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075
2.13.282G’MIC Smooth Abstract node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1078
2.13.283G’MIC Smooth Anisotropic node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1080
2.13.284G’MIC Smooth Antialias node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084
2.13.285G’MIC Smooth Bilateral node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1086
2.13.286G’MIC Smooth Diffusion node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089
2.13.287G’MIC Smooth Guided node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1092
2.13.288G’MIC Smooth Mean-Curvature node . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095
2.13.289G’MIC Smooth Median node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098
2.13.290G’MIC Smooth NL-Means node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1101
2.13.291G’MIC Smooth Patch-Based node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104
2.13.292G’MIC Smooth Patch-PCA node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1108
2.13.293G’MIC Smooth Perona-Malik node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1111
2.13.294G’MIC Smooth Selective Gaussian node . . . . . . . . . . . . . . . . . . . . . . . . . . 1114
2.13.295G’MIC Smooth Skin node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1117
2.13.296G’MIC Smooth Thin Brush node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1120
2.13.297G’MIC Smooth Total Variation node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1122
2.13.298G’MIC Smooth Wavelets node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1125
2.13.299G’MIC Snowflake node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1128
2.13.300G’MIC Solidify node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1129
2.13.301G’MIC Solve Maze node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1131
2.13.302G’MIC Sphere node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1133
2.13.303G’MIC Spherize node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1135
2.13.304G’MIC Split Details Alpha node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1136
2.13.305G’MIC Split Details Gaussian node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1138
2.13.306G’MIC Split Details Wavelets node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139
2.13.307G’MIC Sponge node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1141
2.13.308G’MIC Square to Circle node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144
2.13.309G’MIC Stained Glass node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1146
x
2.13.310G’MIC Stamp node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1148
2.13.311G’MIC Stars node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1150
2.13.312G’MIC Stencil node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1151
2.13.313G’MIC Stereographic Projection node . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153
2.13.314G’MIC Streak node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1155
2.13.315G’MIC Stroke node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157
2.13.316G’MIC Super-Pixels node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1159
2.13.317G’MIC Superformula node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1161
2.13.318G’MIC Symmetric 2D Shape node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1162
2.13.319G’MIC Symmetrize node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1164
2.13.320G’MIC Taquin node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1166
2.13.321G’MIC Tetris node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1167
2.13.322G’MIC Textured Glass node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1169
2.13.323G’MIC Thin Edges node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1171
2.13.324G’MIC Tileable Rotation node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1173
2.13.325G’MIC Tiled Isolation node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1174
2.13.326G’MIC Tiled Normalization node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1176
2.13.327G’MIC Tiled Parameterization node . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178
2.13.328G’MIC Tiled Random Shifts node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1180
2.13.329G’MIC Tiled Rotation node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1181
2.13.330G’MIC Tiles to Layers node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182
2.13.331G’MIC Tone Mapping node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1184
2.13.332G’MIC Tone Mapping Fast node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1187
2.13.333G’MIC Tones to Layers node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1190
2.13.334G’MIC Transfer Colors Histogram node . . . . . . . . . . . . . . . . . . . . . . . . . . 1191
2.13.335G’MIC Transfer Colors Variational node . . . . . . . . . . . . . . . . . . . . . . . . . . 1195
2.13.336G’MIC Truchet node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1197
2.13.337G’MIC Tunnel node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1199
2.13.338G’MIC Turbulence node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1200
2.13.339G’MIC Twirl node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1202
2.13.340G’MIC Upscale DCCI2x node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1203
2.13.341G’MIC Upscale Diffusion node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205
2.13.342G’MIC Upscale Scale2x node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1206
2.13.343G’MIC User-Defined node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1208
2.13.344G’MIC Vector Painting node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1210
2.13.345G’MIC Vignette node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1211
2.13.346G’MIC Visible Watermark node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213
2.13.347G’MIC Warhol node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1214
2.13.348G’MIC Warp by Intensity node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1216
2.13.349G’MIC Water node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1219
2.13.350G’MIC Wave node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220
2.13.351G’MIC Weave node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1222
2.13.352G’MIC Whirl Drawing node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223
2.13.353G’MIC Whirls node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1225
2.13.354G’MIC Wind node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1228
2.13.355G’MIC Zoom node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1231
2.14 Extra nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1232
2.14.1 Arc node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1232
2.14.2 Charcoal node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1233
2.14.3 Edges node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234
2.14.4 Implode node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1235
2.14.5 Modulate node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1236
2.14.6 Oilpaint node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1237
2.14.7 Polar node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1237
2.14.8 Polaroid node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1238
2.14.9 Reflection node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239
2.14.10 Roll node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1240
2.14.11 Sketch node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1241
xi
2.14.12 Swirl node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1242
2.14.13 Texture node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1243
2.14.14 Tile node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244
2.14.15 Wave node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1245
Bibliography 1441
Index 1445
xii
Natron Documentation, Release 3.0.0
Contents 1
Natron Documentation, Release 3.0.0
2 Contents
CHAPTER 1
User Guide
Natron is an open source video compositing and special effects software for Windows, macOS and Linux.
This guide will help you getting started using Natron for compositing and visual effects.
Compositing is the combining of visual elements from separate sources into single images, often to create the
illusion that all those elements are parts of the same scene [Wikipedia].
Typical examples of compositing are, for example:
• The superimposition of a character filmed on a green background over a scene shot in another place, at
another time, or a computer-generated scene;
• The manual detouring (also called rotoscopy) of an element in a video to embed it in another video, possibly
with a different motion;
• Artistic modifications of a video, after shooting a live-action scene or rendering a CGI scene, in order to
modify its lighting, colors, depth of field, camera motion, or to remove noise or add film grain.
A video compositing software is not a 3D computer graphics software, like Blender or Maya, but it is perfectly
suited for combining computer-generated elements produced by other software with live-action video or 2D ani-
mation. Rather than rendering a full 3D scene with the 3D software, which may cost many hours of computation,
the video compositing software can assemble the elements produced separately with a much more reactive inter-
face and an almost instantaneous visual feedback.
1.1.1 Theory
The math behind compositing was formalized by Porter & Duff [PorterDuff1984] after the preliminary work by
Wallace [Wallace1981]. More informating about the theory behind compositing can be found in the works of Jim
Blinn [Blinn1994a] [Blinn1994b] and Alvy Ray Smith [Smith1995].
The compositing theory also introduces the notion of “premultipled” RGB values, or “associated alpha”, and there
is still a lot of debate about premultiplying or not.
Natron made the choice of using premultiplied alpha by default in the compositing workflow, like all modern
compositing software, because images are stored internally with floating-point values.
3
Natron Documentation, Release 3.0.0
1.1.2 Practice
There are excellent books that introduce how to do compositing in practice, and using compositing software:
[Wright2010], [Brinkmann2008], [Lanier2009], [VES2014].
Most of what is described in these books also apply to Natron. It is thus strongly recommended to become familiar
with the techniques and workflows described in these books before starting to use Natron.
There are also video tutorials available on video streaming platforms (youtube, vimeo) for Natron or other refer-
ence compositing software, such as Nuke of Fusion. These tutorials can be used to get acquainted with composit-
ing.
1.2.1 About
Features
• Multi-view workflow: Natron saves time by keeping all the views in the same stream. You can separate
the views at any time with the OneView node.
• Rotoscoping/Rotopainting: Edit your masks and animate them to work with complex shots
• Tracker node: A point tracker is embedded in Natron to track multiple points. Version 2.1 of Natron will
incorporate the Tracker from Blender.
FAQ
Yes. Anything you create with Natron is yours and you’re free to do anything you want with it.
Our original motives were to create a tool for people who needed it and that may felt left-aside by the software
editor’s pricing plans. These users include but are not limited to:
• Students who want to learn compositing at home
• Schools that may not be able to buy expensive software licenses
Another reason why we develop Natron here at INRIA is because a compositing software is a playground that
enables scientists in computer vision/graphics to develop, test exchange and publish results easily.
One great mission of an free open-source software is to create common practices so everyone can benefit from it.
On the other hand, being free of charge, Natron can be installed on large-scale render farms without wondering
about licensing issues.
What is OpenFX?
OpenFX is a standard for creating visual effects plug-ins for compositing and editor applications.
As of today several applications are compatible with this plug-in format: (meaning you can use the same plug-ins
in all of them)
• Nuke 5.1+, by The Foundry
• Vegas 10+, by Sony
• SCRATCH 6.1+, by Assimilate
• Fusion 5.1+, by Blackmagic Design (formerly by eyeon)
• DaVinci Resolve 10+, by Blackmagic Design
• DustBuster+ 4.5+, by HS-ART
• Baselight 2.2+ by FilmLight
• Nucoda Film Master 2011.2.058+
An OpenGL 2.0 compatible graphics card is needed to run Natron (2.1+) with hardware-accelerated rendering.
Other graphics cards work with software-only rendering (see below).
The following graphics cards are supported for hardware-accelerated rendering:
• Intel GMA 3150 (Linux-only)
• Intel GMA X3xxx (Linux-only)
• Intel GMA X4xxx (Windows 7 & Linux)
• Intel HD (Ironlake) (Windows 7 & Linux)
• Intel HD 2000/3000 (Sandy Bridge) (Windows 7/Linux/Mac)
• Intel HD 4000 and greater (All platforms)
• Nvidia GeForce 6 series and greater
• Nvidia Quadro FX and greater
• Nvidia Quadro NVS 285 and greater
• ATI/AMD Radeon R300 and greater
• ATI/AMD FireGL T2-64 and greater (FirePro)
Cards not listed here will probably not support hardware-accelerated rendering.
It is possible to enable software rendering using the following techniques.
*On Linux, enable the environment variable LIBGL_ALWAYS_SOFTWARE=1 before running Natron.
*On Windows, enable the legacy hardware package in the Natron installer.
1.2.2 Installation
This chapter will guide you through the installation of Natron on Windows, Mac and Linux.
Windows
This chapter will guide your through the installation and maintenance of Natron on Windows.
Requirements
Download
Navigate to https://natrongithub.github.io/#download and download the latest version. This documentation will
assume that you downloaded the installer (our default and recommended choice).
Install
You are now ready to start the installation, double-click on the setup file to start the installation.
Click ‘Next’ to start the installation, you first option is where to install Natron. The default location is recom-
mended.
Your next option is the package selection, most users should accept the default. Each package has an more in-depth
description if you want to know what they provide.
Then comes the standard license agreement, Natron and it’s plug-ins are licensed under the GPL version 2. You
can read more about the licenses for each component included in Natron after installation (in menu Help→About).
The installation wizard is now ready to install Natron on your computer. The process should not take more than a
minute or two (depending on your computer).
Natron can now be started from the desktop icon or from the start menu.
Maintenance
Natron includes a maintenance tool called ‘NatronSetup’, with this application you can easily upgrade Natron and
it’s components when a new version is available. You can also add or remove individual packages, or remove
Natron completely. The application should be in the same start menu folder as Natron, or you can start it from the
folder where you installed Natron.
The application also include a basic settings category, where you can configure proxy and other advanced options.
macOS
This chapter will guide your through the installation of Natron on macOS (formerly known as Mac OS X or OS
X).
Requirements
Download
Install
Double-click the DMG file and copy Natron where you want it.
Run
On OS X 10.7 and later, you may get the message “Natron has not been signed by a recognized distributor and
may damage your computer. You should move it to the trash”.
The macOS binaries are not signed with an Apple Developer ID, because of incompatibilities between the Apple
code signing tools and the compiler (GCC 4.9) and target OS (Mac OS X 10.6) we use.
There are at least four options to launch Natron on macOS:
• rather than double-clicking on the Natron application, right-click or control-click on it and select Open
• after an unsuccessful launch of Natron, go to the Security & Privacy preferences panel, and enable it.
• from the terminal command-line, execute spctl --add /Applications/Natron.app, as ex-
plained in this OSXDaily article.
• (not recommended) click “Allow apps downloaded from: Anywhere” in the Security & Privacy preferences
panel. Since macOS 10.12 Sierra, this option is not available anymore, but it is possible to re-enable it, as
explained in that OSXDaily article.
Linux
This chapter will guide your through the installation and maintenance of Natron on Linux.
Requirements
Natron will work on any Linux distribution which still receives seccurity updates. This includes (but not limited
to):
• CentOS / RHEL 6.10 and later
• Debian 8 “Jessie” and later
• Ubuntu 16.04 LTS (Xenial Xerus) and later
Download
Navigate to https://natrongithub.github.io/1#download and download the latest version. This documentation will
assume that you downloaded the installer (our default and recommended choice).
Extract
When the file has been downloaded, extract the file. This can be done in your file browser, usually just right-click
and select ‘Extract Here’.
Install
You are now ready to start the installation, double-click on the extracted file to start the installation.
On some installations you are not allowed to execute downloaded files, right-click and select properties, then tick
the ‘Execute file as program’ option. This option may have a different name depending on your distribution and
desktop environment. You can also make the file executable through the terminal, type chmod +x filename.
You should now be greated with the installation wizard.
Click ‘Next’ to start the installation, you first option is where to install Natron. Usually the default location
is good enough. If you select a installation path outside your home directory you will need to supply the root
(administrator) password before you can continue.
Your next option is the package selection, most users should accept the default. Each package has an more in-depth
description if you want to know what they provide.
Then comes the standard license agreement, Natron and it’s plug-ins are licensed under the GPL version 2. You
can read more about the licenses for each component included in Natron after installation (in Help=>About).
The installation wizard is now ready to install Natron on your computer. The process should not take more than a
minute or two (depending on your computer).
Natron can be started from the desktop menu (under Graphics) or by executing the ‘Natron’ file in the folder you
installed Natron.
Maintenance
Natron includes a maintenance tool called ‘NatronSetup’, with this application you can easily upgrade Natron and
it’s components when a new version is available. You can also add or remove individual packages, or remove
Natron completely. The application is in the ‘Graphics’ section in the desktop menu, or you can start it from the
folder where you installed Natron.
The application also include a basic settings category, where you can configure proxy and other advanced options.
Advanced installation
Natron also has RPM and DEB packages, these are recommended for multi-user installations or for deployment
on more than one machine. You can find more information on our website at https://natrongithub.github.io/ .
1.2.3 Environment
Properties panels
Animating parameters
Compositing viewers
Progress bars
1.2.4 Troubleshooting
Bugs may come from OpenFX plugins that were not bundled with Natron, so before reporting anything, if you have
any extra OpenFX plugins installed, uncheck “Enable default OpenFX plugins location” in “Preferences/Plug-
ins”, save preferences, relaunch Natron, and check that the bug is still here.
The best way to have your bug considered for fixing is to first search on the Natron forum and in the Natron issues
if this is a known bug. If yes, then read about it, and try some workarounds given in these bug reports (see below
for more workarounds).
If this bug does not seem to be a known issue, then post a new issue on the Natron github, and follow strictly the
guidelines to report the bug. The issue title should be as precise as possible (“Natron crash” is not a correct title,
see existing issues for title examples). If possible, also post a project that exhibits the issue. Make the project as
small as possible: remove extra assets or replace them by small JPEG sequences, checkerboards or colorwheels,
etc. You can then either attach your project as a zip file to the github issue, or post a link to a file sharing service.
Common Workarounds
Luckily, there are workarounds for most Natron crashes or hangs. Here are a few one worth trying, but of course
your mileage may vary or you may find another workaround (which you should describe in the proper Natron
issue).
1. Avoid using videos with inter-frame compression as inputs and outputs. This includes H.264 (eg AVCHD)
and H.265 (HEVC) video. ProRes is OK but slow, especially for writing. DNxHR is OK. Individual frames
are best (DPX, EXR, TIFF, PNG, JPEG, whatever suits your input video quality and bit depth). The video
reader is here for convenience, but it may have difficulties decoding some videos. The video writer may
also be a source of bugs, and should be avoided for long sequences: if Natron crashes in the middle, then
the whole sequence has to be rendered. Extract individual frames, do your compositing, then compress the
frames (and optionally mux the audio) with an external tool. To extract frames, you may use a simple Natron
project or any other tool (e.g. FFmpeg). To compress frames to a video, there are also many tools available,
e.g. FFmpeg, MEncoder, or VirtualDub (windows-only). This is the standard compositing workflow and
the preferred method of running Natron.
2. If Natron hangs or crashes when rendering an image sequence (this does not work when rendering to a
video), check that the rendered frames are OK, relaunch Natron and in the parameters of the Write node
uncheck “Overwrite”. That way, only the missing frames will be rendered.
3. If you have a large project, or a project with heavy processing, use the DiskCache Plugin at places that make
sense: downstream heavy processing in the graph, or before you use the result of processing as inputs to
Roto or RotoPaint.
You will quickly notice that using individual frames instead of videos for inputs and output give a big performance
boost and will most probably solve your issues, so once you’ve learned how to decompress/compress any video,
this will become your standard workflow. Just add extra disk space, and you’re good to do serious and fluid
compositing with Natron.
If the viewer displays some error message about OpenGL, then GPU rendering is probably going bad. Note that
this kind of problem seems to only happen on Windows, so you might want to consider switching to Linux or
macOS to use Natron if your GPU is not well supported by Natron under Windows.
1. Create a Shadertoy, click “Renderer Info. . . ” and check that the OpenGL version is at least 2.1 and that
the extension GL_ARB_texture_non_power_of_two is available. If the displayed info does not
correspond to your graphics card, check that the OpenGL drivers for your card are installed. If not, install
the software called “OpenGL Extension Viewer” and check that your card appears in the list of renderers.
If not, then it is a drivers issue.
2. In Natron Preferences / GPU Rendering, check that the displayed is consistent with what “Renderer Info. . . ”
above gave.
3. Now uncheck “Enable GPU Render” in the Shadertoy node and click the refresh/recycle button on the top
of the viewer. Click again “Renderer Info. . . ” and it should say it now uses Mesa in the GL_VERSION.
Does it fix the issue? If yes, you may try the next step to globally disable OpenGL rendering in Natron.
4. To temporarily fix this issue, in Natron Preferences / GPU Rendering, set “OpenGL Rendering” to “Dis-
abled”, click the “Save” button in the Preferences window, quit Natron, launch Natron, check that GPU
rendering is still disabled in the Preferences, and test your project.
1.3 Compositing
1.3. Compositing 17
Natron Documentation, Release 3.0.0
Frame ranges
The project frame range (in the Project Settings, key ‘s’ in the Node Graph’) is the range that will be used by
default when rendering Writers.
Each clip (input or output of a node in the Node graph) also has its own frame range. This “clip frame range”
may be used or even modified by plugins, such as Retime (which may change the frame range), Merge or Switch
(which set the frame range to the union of their input frame ranges). The plugin may be able to render images
outside of this frame range, and it is just an indication of a valid frame range. This information is available from
the “Info” tab of the properties panel of each node.
Most generator plugins (e.g. CheckerBoard, ColorBars, ColorWheel, Constant, Solid) have a “Frame Range”
parameter, which is (1,1) by default. The FrameRange plugin may be used to modify this frame range inside the
graph.
The default framerange of an image sequence or video is the range of the sequence
Workflow Summary
In order to track a planar shape and move a Roto mask or a texture corresponding to that shape:
• Track some points inside your mask (shape)
• In the Transform tab, set the transform to CornerPin and to match-move
• Disable the CornerPin and set the from points of the corner pin at the reference frame where you want your
object to move in (basically the bounding box of the shape to track)
• Export to CornerPin
• Append your CornerPin to the Roto node
In a future version we will have a planar tracker that will do that automatically for you in a single click.
Detailed Usage
To link parameters in Natron, it is the same as in Nuke except that you drag and drop the widget of a parameter
onto another one by holding the control key (or cmd on macOS).
The tracker works differently than the Nuke tracker regarding the “Transform” part. For the tracking itself, almost
everything is the same. Basically, in Nuke they can only output a CornerPin with exactly 4 points, and they map
1 track to each corner of the CornerPin. For the Transform node they may use 1 (translation only), 2, or N points
to find the final transformation, however that will never be something other than a similarity, which means that it
cannot handle perspective deformation.
In Natron, we offer the possibility to compute a CornerPin with N points, that is an homography, which encom-
passes all distortion-free perspective transforms.
This is much better, because the more tracks you use to compute that CornerPin, the more robust it will be.
An homography is typically used to contain information about a perspective deformation, whereas a similarity is
more constrained: a similarity is translation, rotation and uniform scale.
In The Transform tab, this is what we call “the model”. Basically, the problem we are trying to solve is to fit a
model (i.e. similarity or homography) so it is the closest to the N point correspondences. Each correspondence is
the position of a track at the reference frame and its position at the tracked time.
Hence the more correspondences you have (i.e. the more tracks), the more robust the homography is in the region
where you tracked features.
The Fitting error parameter (in the Transform tab) is an indication of how much difference there is in pixels
between the reference point on which we applied the computed transformation and the original tracked point.
This is the RMS (root mean square) error across all tracks, and gives an estimate of the quality of the model found
in pixel units.
For each tracked frame, the correspondences we use to compute the CornerPin are the tracks that are enabled at
this frame (i.e. the Enabled parameter is checked at this time) and that have a keyframe on the center (i.e. they
successfully tracked).
When you press Compute, it computes the model (CornerPin/Transform) with all the tracks that meet the afore-
mentioned requirements over all keyframes.
When Compute Transform Automatically is checked, whenever a parameter that has an effect on the output model
is changed, this will recompute the Corner/Pin transform over all keyframes again.
The parameters that have an effect on the output model are:
• The motion type
• The Transform Type (i.e. Similarity or Homography)
• The Reference Frame
• Jitter Period
• Smooth: this can be used to smooth the resulting curve to remove some of the noise in the high frequencies
of the CornerPin/Transform. Note that in “Add Jitter” mode, you can increase High frequencies to simulate
a camera shake that follows the original camera movements.
• Robust model: this is quite complicated, but in short: When trying to find a model that best fits all cor-
respondences, you may have correspondences that are just wrong (bad tracking for example). These bad
correspondences are called outliers, and this parameter when checked tells we should not take into account
those outliers to compute the final model. In most cases this should be checked. However sometimes, the
user may have for example required to compute an homography (i.e. CornerPin), but the given tracked
points (correspondences) just cannot make-up an homography. In this case, if the parameter were to be
checked, it would fail to compute a model. If you uncheck this, it will take into account all the points and
compute a model that averages the motion of all correspondences.
Also when Compute Transform Automatically is checked, the model will be computed automatically when the
tracking ends.
We cannot compute the model after each track step (i.e. during tracking) because the model at each frame depends
on the model at other frames since we may smooth the curve or add jitter.
So all in all it works differently than Nuke, the whole transformation computation can be more robust and happens
as a second pass after the tracking is actually done.
1.3. Compositing 19
Natron Documentation, Release 3.0.0
One last thing: to compute the CornerPin in the “Transform” tab of the tracker, the to points are computed using
the from points as reference.
Basically what happens is that the tracking outputs a transformation matrix at each frame. Then when computing
the model, this matrix is applied to the from points at each frame in order to obtain the to points.
So if you were to change the reference points (i.e. the from points) with the Set to input RoD for example, then
you would need to recompute the model at all frames, because the to points would just not be the same.
The work is usually done in two steps:
• First, disable the CornerPin so that even if the viewer is connected to the Tracker there is no deformation
going on, and set the from points to be the RoD (bounding box) of the Roto shape at the reference frame.
• Then, export the CornerPin. It just links the parameters of the CornerPin to the ones in the tracker, so if you
change something in the tracker transform tab the changes will reflect onto the CornerPin.
Basically what the Planar tracker will do in the future is automatically do all the steps for you: it will place markers
inside the mask for you, track them and output a CornerPin from the bounding box of the roto shape.
When creating a new project in Natron, by default there is a single view present. It is called the “Main” view.
You can add, remove and rename views as desired. Clicking the “Setup views for stereo” button will make exactly
2 views named “Left” and “Right”.
Upon importing an EXR file containing multiple views within the file, Natron will prompt you to create the
appropriate views in the project:
If clicking yes, Natron will create the missing views in the project:
You can remove the “Main” view if needed (in our case it does not make sense to leave it in the project). You can
do so by clicking either Remove and selecting the “Main” view or clicking “Setup views for stereo”:
The Read node will have a special “V” mark on its top-left corner, indicating that it has multiple views available.
When hovering the “V” indicator with the mouse, more information is available regarding which views are present
in this Read node
Hovering your mouse over the Output Layer parameter will detail which layer is available in which view:
When the project has multiple views available, each viewer will have a drop-down with available views. You can
select with view to display:
1.3. Compositing 21
Natron Documentation, Release 3.0.0
If we take a look at our Read node’s properties, you can see that we have 2 layers in this file: RGBA and depth.
Layers may sometimes not be present in all views in the file, but the Read node will show the union of all layers
available across all views:
In Natron you can join different simple-view files to a multiple-view stream by using the JoinViews node, like
this:
Exporting multi-view files in Natron can be done multiple ways: Either you want to have a separate file for each
view, or you want all views to be in the same file. The later is only supported by the EXR file format. When
exporting to EXR, the Write node properties panel will have an extra “Views” parameter:
This is quite straight-forward: you can select which views you decide to export.
You can also select which layer you would like to export:
The “All” choice is only available for the EXR and TIFF file formats which allow embedding more than 1 layer
per-file.
Another interesting parameter controls how the EXR/TIFF file is written, this is the “Parts” parameter:
When set to “Single Part”, the Write node will aggregate all views requested to render in a single “part” of the
file. Single part files are what is written by OpenEXR 1.x applications, thus selecting “Single Part” ensures
compatibility with other applications that do not support OpenEXR 2.
When set to “Split Views”, all views will be scattered in different parts of the file. The resulting file will only be
readable in applications that support OpenEXR 2 but with the advantage of being faster to read than the single-part
files. Note that if you select “All” layers to render all layers will be aggregated for each view.
When set to “Split Views,Layers” each layer of each view will be written to a separate part, ensuring EXR opti-
mized for decoding speed, though the file will be larger.
You can choose to export views to a separate files by adding a %v (which will expand to the letter ‘l’ or ‘r’) or %V
(which will expand to the word “left” or “right”) to the output filename:
In that case the “Views” parameter will no longer be available. This is how you should proceed if you want to
output multiple views but do not want to write EXR’s.
By default for files that do not support multi-view (I.e: anything besides EXR), if requesting to write multiple
views to the same file, Natron will only write the first view in the project’s views. If you do not want to render
1.3. Compositing 23
Natron Documentation, Release 3.0.0
all views but a specific one, you can use a “OneView” node prior to your Write node to specify which view you
would like to write-out:
The value of any Node parameter can be set by Python expression. An expression is a line of code that can either
reference the value of other parameters or apply mathematical functions to the current value.
Natron supports 2 types of expression languages:
• Python
• Basic Expressions_
Basic Expression are very fast and simple and should cover 99% of the needs for expressions. By default this is
the language proposed to you when editing an expression.
Python based expressions are using the same A.P.I as everything else using Python in Natron. It allows to write
really any kind of expression referencing external functions and data, however it is much slower to evaluate and
will impair performance compared to a basic expression.
Where possible, you should use basic expressions, unless you specifically need a feature available in the Python
API that is not available through the basic expressions language.
For more informations on developping Python expression, please refer to this section.
The rest of this section will cover writing basic expressions.
Basic expressions
OPER- DEFINITION
ATOR
+ Addition between x and y. (eg: x + y)
- Subtraction between x and y. (eg: x - y)
* Multiplication between x and y. (eg: x * y)
/ Division between x and y. (eg: x / y)
% Modulus of x with respect to y. (eg: x % y)
^ x to the power of y. (eg: x ^ y)
:= Assign the value of x to y. Where y is either a variable or vector type. (eg: y := x)
+= Increment x by the value of the expression on the right hand side. Where x is either a variable or
vector type. (eg: x += abs(y - z))
-= Decrement x by the value of the expression on the right hand side. Where x is either a variable or
vector type. (eg: x[i] -= abs(y + z))
Assign the multiplication of x by the value of the expression on the righthand side to x. Where x is
*=
either a variable or vector type. (eg: x *= abs(y / z))
/= Assign the division of x by the value of the expression on the right-hand side to x. Where x is either
a variable or vector type. (eg: x[i + j] /= abs(y * z))
%= Assign x modulo the value of the expression on the right hand side to x. Where x is either a variable
or vector type. (eg: x[2] %= y ^ 2)
OPERATOR DEFINITION
== or = True only if x is strictly equal to y. (eg: x == y)
<> or != True only if x does not equal y. (eg: x <> y or x != y)
< True only if x is less than y. (eg: x < y)
<= True only if x is less than or equal to y. (eg: x <= y)
> True only if x is greater than y. (eg: x > y)
>= True only if x greater than or equal to y. (eg: x >= y)
Boolean Operations
1.3. Compositing 25
Natron Documentation, Release 3.0.0
OPERATOR DEFINITION
true True state or any value other than zero (typically 1).
false False state, value of zero.
and Logical AND, True only if x and y are both true. (eg:
x and y)
mand Multi-input logical AND, True only if all inputs are
true. Left to right short-circuiting of expressions. (eg:
mand(x > y, z < w, u or v, w and x))
mor Multi-input logical OR, True if at least one of the in-
puts are true. Left to right short-circuiting of expres-
sions. (eg: mor(x > y, z < w, u or v, w and x))
nand Logical NAND, True only if either x or y is false. (eg:
x nand y)
nor Logical NOR, True only if the result of x or y is false
(eg: x nor y)
not Logical NOT, Negate the logical sense of the input.
(eg: not(x and y) == x nand y)
or Logical OR, True if either x or y is true. (eg: x or y)
xor Logical XOR, True only if the logical states of x and
y differ. (eg: x xor y)
xnor Logical XNOR, True iff the biconditional of x and y
is satisfied. (eg: x xnor y)
& Similar to AND but with left to right expression short
circuiting optimisation. (eg: (x & y) == (y and x))
Similar to OR but with left to right expression short
circuiting optimisation. (eg: (x | y) == (y or x))
FUNCTION DEFINITION
abs Absolute value of x. (eg: abs(x))
avg Average of all the inputs. (eg: avg(x,y,z,w,u,v) == (x + y + z + w + u + v) / 6)
ceil Smallest integer that is greater than or equal to x.
clamp Clamp x in range between r0 and r1, where r0 < r1. (eg: clamp(r0,x,r1))
equal Equality test between x and y using normalized epsilon
erf Error function of x. (eg: erf(x))
erfc Complimentary error function of x. (eg: erfc(x))
exp e to the power of x. (eg: exp(x))
expm1 e to the power of x minus 1, where x is very small. (eg: expm1(x))
floor Largest integer that is less than or equal to x. (eg: floor(x))
frac Fractional portion of x. (eg: frac(x))
hypot Hypotenuse of x and y (eg: hypot(x,y) = sqrt(x*x + y*y))
iclamp Inverse-clamp x outside of the range r0 and r1. Where r0 < r1. If x is within the range it will snap to the closest bo
inrange In-range returns ‘true’ when x is within the range r0 and r1. Where r0 < r1. (eg: inrange(r0,x,r1)
log Natural logarithm of x. (eg: log(x))
log10 Base 10 logarithm of x. (eg: log10(x))
log1p Natural logarithm of 1 + x, where x is very small. (eg: log1p(x))
log2 Base 2 logarithm of x. (eg: log2(x))
logn Base N logarithm of x. where n is a positive integer. (eg: logn(x,8))
max Largest value of all the inputs. (eg: max(x,y,z,w,u,v))
min Smallest value of all the inputs. (eg: min(x,y,z,w,u))
mul Product of all the inputs. (eg: mul(x,y,z,w,u,v,t) == (x * y * z * w * u * v * t))
ncdf Normal cumulative distribution function. (eg: ncdf(x))
nequal Not-equal test between x and y using normalized epsilon
C
Trigonometry Functions
FUNCTION DEFINITION
acos Arc cosine of x expressed in radians. Interval [-1,+1] (eg: acos(x))
acosh Inverse hyperbolic cosine of x expressed in radians. (eg: acosh(x))
asin Arc sine of x expressed in radians. Interval [-1,+1] (eg: asin(x))
asinh Inverse hyperbolic sine of x expressed in radians. (eg: asinh(x))
atan Arc tangent of x expressed in radians. Interval [-1,+1] (eg: atan(x))
atan2 Arc tangent of (x / y) expressed in radians. [-pi,+pi] eg: atan2(x,y)
atanh Inverse hyperbolic tangent of x expressed in radians. (eg: atanh(x))
cos Cosine of x. (eg: cos(x))
cosh Hyperbolic cosine of x. (eg: cosh(x))
cot Cotangent of x. (eg: cot(x))
csc Cosecant of x. (eg: csc(x))
sec Secant of x. (eg: sec(x))
sin Sine of x. (eg: sin(x))
sinc Sine cardinal of x. (eg: sinc(x))
sinh Hyperbolic sine of x. (eg: sinh(x))
tan Tangent of x. (eg: tan(x))
tanh Hyperbolic tangent of x. (eg: tanh(x))
deg2rad Convert x from degrees to radians. (eg: deg2rad(x))
deg2grad Convert x from degrees to gradians. (eg: deg2grad(x))
rad2deg Convert x from radians to degrees. (eg: rad2deg(x))
grad2deg Convert x from gradians to degrees. (eg: grad2deg(x))
String Processing
1.3. Compositing 27
Natron Documentation, Release 3.0.0
FUNC- DEFINITION
TION
= , All common equality/inequality operators are applicable to strings and are applied in a case sensitive
== manner. In the following example x, y and z are of type string. (eg: not((x <= ‘AbC’) and (‘1x2y3z’
!=, <> y)) or (z == x)
<>
<=,
>= <
,>
in True only if x is a substring of y. (eg: x in y or ‘abc’ in ‘abcdefgh’)
like True only if the string x matches the pattern y. Available wildcard characters are ‘*’ and ‘?’ denoting
zero or more and zero or one matches respectively. (eg: x like y or ‘abcdefgh’ like ‘a?d*h’)
ilike True only if the string x matches the pattern y in a case insensitive manner. Available wildcard
characters are ‘*’ and ‘?’ denoting zero or more and zero or one matches respectively. (eg: x ilike y
or ‘a1B2c3D4e5F6g7H’ ilike ‘a?d*h’)
[r0:r1] The closed interval [r0,r1] of the specified string. eg: Given a string x with a value of ‘abcdefgh’ then:
1. x[1:4] == ‘bcde’ 2. x[ :5] == x[:5] == ‘abcdef’ 3. x[3: ] == x[3:] ==’cdefgh’ 4. x[ : ] == x[:] ==
‘abcdefgh’ 5. x[4/2:3+2] == x[2:5] == ‘cdef’
Note: Both r0 and r1 are assumed to be integers, where r0 <= r1. They may also be the result of an
expression, in the event they have fractional components truncation will be performed. (eg: 1.67 –>
1)
:= Assign the value of x to y. Where y is a mutable string or string range and x is either a string or a string
range. eg: 1. y := x 2. y := ‘abc’ 3. y := x[:i + j] 4. y := ‘0123456789’[2:7] 5. y := ‘0123456789’[2i +
1:7] 6. y := (x := ‘0123456789’[2:7]) 7. y[i:j] := x 8. y[i:j] := (x + ‘abcdefg’[8 / 4:5])[m:n]
Note: For options 7 and 8 the shorter of the two ranges will denote the number characters that are to
be copied.
+ Concatenation of x and y. Where x and y are strings or string ranges. eg 1. x + y 2. x + ‘abc’ 3.
x + y[:i + j] 4. x[i:j] + y[2:3] + ‘0123456789’[2:7] 5. ‘abc’ + x + y 6. ‘abc’ + ‘1234567’ 7. (x +
‘a1B2c3D4’ + y)[i:2j]
+= Append to x the value of y. Where x is a mutable string and y is either a string or a string range. eg:
1. x += y 2. x += ‘abc’ 3. x += y[:i + j] + ‘abc’ 4. x += ‘0123456789’[2:7]
<=> Swap the values of x and y. Where x and y are mutable strings. (eg: x <=> y)
[] The string size operator returns the size of the string being actioned. eg: 1. ‘abc’[] == 3 2. var
max_str_length := max(s0[],s1[],s2[],s3[]) 3. (‘abc’ + ‘xyz’)[] == 6 4. ((‘abc’ + ‘xyz’)[1:4])[] == 4
Control Structures
STRUCTURE DEFINITION
if If x is true then return y else return z. eg: 1. if (x, y,
z) 2. if ((x + 1) > 2y, z + 1, w / v) 3. if (x > y) z; 4. if
(x <= 2*y) { z + w };
if-else The if-else/else-if statement. Subject to the condition
branch the statement will return either the value of the
consequent or the alternative branch. eg: 1. if (x > y)
z; else w; 2. if (x > y) z; else if (w != u) v; 3. if (x <
y) {z; w + 1;} else u; 4. if ((x != y) and (z > w))
{ y := sin(x) / u; z := w + 1;
} else if (x > (z + 1)) {
w := abs (x - y) + z; u := (x +
1) > 2y ? 2u : 3u;
}
To get more details on the language syntax and available mathematical functions, this is fully covered by the
README.
Additional variables and functions are made available by Natron to access values of other parameters and effects.
Parameters
Parameters value can be referenced by their script-name. See this section to learn how to determine the script-
name of a node. See this section to learn how to determine the script-name of a parameter.
For instance:
# This is the value in the x dimension of the size parameter of the Blur1 node
Blur1.size.x
Note that parameters on the node on which the expression is actually set can be referenced without prefixing the
script-name of the node:
In the same way, values of dimensions can be accessed directly using the special variable thisParam:
Warning: Returning the value of the parameter dimension for which the expression is being evaluated will not
cause an infinite recursion but instead will return the value of the parameter without evaluating the expression.
Dimension names (x,y,r,g,b, w,h , etc. . . ) are merely corresponding to a 0-based index, and can be interchanged,
e.g:
This allows to write easier expressions when referencing other parameters that do not have the same dimensions.
Possible variants to reference a dimension is as follow:
• r,g,b,a
• x,y,z,w
• 0,1,2,3
The dimension of the parameter on which the expression is currently executed can be referenced with dimension:
ColorCorrect1.masterSaturation.dimension
An expression on a parameter can reference any other parameter on the same node and may also reference param-
eters on some other nodes, including:
• Any other node in the same Group
• If this node belongs to a sub-group, it may reference the Group node itself using the special
variable thisGroup
• If this node is a Group itself, it may reference any node within its sub-group by prefixing
thisNode, e.g:
thisNode.Blur1
# Assuming we are editing an expression on the disabled parameter of the # Group1.Blur1 node and
that the Group1 node has a boolean parameter, # that was created with a script-name enableBlur, #
we could write an expression referencing enableBlur # to enable or disable the internal Blur1 node as
such:
thisGroup.enableBlur
To easily get the input of a node, you may use the variable input followed by the index, e.g:
Animated parameters
A parameter may be animated with keyframes. Similarly, each curve may be different for each project view if the
user split views for the parameter.
To retrieve the value at a different frame and view than the frame and view for which the expression, is being
evaluated you may specify it in arguments:
# Returns the value at the current frame for the current view
Blur1.size.x
Pre-defined variables
1.3. Compositing 31
Natron Documentation, Release 3.0.0
The name of a parameter or Node can be returned in an expression using the attribute name:
thisNode.name
thisNode.input0.name
thisKnob.name
...
You can convert numbers to string with the str(value, format, precision) function.
The format controls how the number will be formatted in the string. It must match one of the following letters:
• e format as [-]9.9e[+|-]999
• E format as [-]9.9E[+|-]999
• f format as [-]9.9
• g use e or f format, whichever is the most concise
• G use E or f format, whichever is the most concise
A precision is also specified with the argument format. For the ‘e’, ‘E’, and ‘f’ formats, the precision represents
the number of digits after the decimal point. For the ‘g’ and ‘G’ formats, the precision represents the maximum
number of significant digits (trailing zeroes are omitted).
Example:
str(2.8940,'f',2) = "2.89"
It is possible for an expression to need the region of definition (size of the image) produced by an effect. This can
be retrieved with the variable rod*
The rod itself is a vector variable containing 4 scalar being in order the left, bottom, right and top coordinates of
the rectangle produced by the effect.:
To achieve complex motion design, (see examples below such as loop) an expression may need to access the ani-
mation of the parameter for which the expression is evaluated. To access the underlying animation of a parameter
the curve(frame, dimension, view)() function can be used:
Random
Some expression may need to use a pseudo random function. It is pseudo random because the results of the
random function are reproducible for each frame and seed.
• def random (seed)
• def randomInt (seed)
ExprTk.random([seed=0, min=0., max=1. ])
Parameters
• seed – float
• min – float
• max – float
Return type float
Returns a pseudo-random value in the interval [min, max[. The value is produced such that for a given parameter
it will always be the same for a given time on the timeline, so that the value can be reproduced exactly. However,
successive calls to this function within the same expression will yield different results after each call. By default
the random is seed with the current frame, meaning that 2 expressions using random and evaluated at the same
frame will always return the same number. If you want to force a different number for an expression, you can set
the seed parameter to a non zero value.
ExprTk.randomInt([seed=0, min=INT_MIN, max=INT_MAX ])
Parameters
• seed – int
• min – int
• max – int
Return type int
Same as random(seed, min,max) but returns an integer in the range [min,max[
1.3. Compositing 33
Natron Documentation, Release 3.0.0
More advanced noise functions are available such as fractional brownian motion. All the functions available in
Python in the NatronEngine.ExprUtils class are also available to basic expressions. See the their documentation
in the Python API as they have the same signature.
1.4 Tutorials
This quick tutorial will guide you through the creation/modification of documentation for Natron and the plugins.
Natron Manual
Writing contributions
Contributing to the Natron documentation is rather easy. The source for the documentation is located in the
Documentation/source folder.
The documentation is generated using Sphinx, and the source files are in reStructuredText format.
Most likely you will want to contribute to the User Guide. The source files for the guide are located in the directory
named Documentation/source/guide. If you want to contribute to an already existing document just open
the file in your favorite (plain) text-editor and do your modifications.
Note: The following files are generated automatically and can thus not be edited:
• The _group.rst file, and any file with a name starting with _group.
• The _prefs.rst.
• The documentation for each individual plugin, which can be found in the Documentation/source/plugins
directory (see Plugins Manual).
If you prefer editing with LibreOffice (or even MSWord), just keep the document simple (use styles for section
headers, don’t try to format too much, etc.), and use pandoc to get a first working version in reStructuredText
format: pandoc your_document.docx -t rst -o output_doc.rst
This reStructuredText file will probably require a few touch-ups afterwards, but it is usually a good starting point.
Submitting contributions
To send your contributions, the best way is to follow the procedure below. However, if you wrote a nice piece of
documentation, in any standard format, and have difficulties following that procedure, do not hesitate to ask for
assistance on the Natron forum, or to file a GitHub issue, with your document attached to your message.
The standard procedure is the following:
• Fork https://github.com/NatronGitHub/Natron using your github account.
• On your fork, create a branch from the RB-2.3 branch (do not use the master branch), and give it a name
like “documentation-keying” if you are going to write the keying doc (which we really need).
• To add your doc, you can either:
– Clone the repository to your computer, edit and add files, commit your changes locally (the github
desktop application is easy to use), and then push your changes,
– Or edit the files directly on github. See tutorials-hsvtool.rst for en example (you will probably need to
fork the repository first, see below, and browse to that file on your fork). Click on the pencil icon on
the top right. You get an editable the text view and can get a preview by clicking on the preview tab
on top.
• Then, submit a pull request to the RB-2.3 branch on the main repository from your branch (there is a button
to submit a pull request when you view your fork on github). Give an accurate description of the pull
request, and remember to follow the Contributor Covenant Code of Conduct, as with all contributions to
Natron or the plugins. The Natron maintainers can either accept it as it is, or ask for a few modifications.
You can view the formatted documentation on your github repository, as explained above, but you can also
preview your modifications by using pandoc to convert it to another format, or install Sphinx and recom-
pile the whole documentation. On Linux and Mac you can install Sphinx through your package manager
(using MacPorts type sudo port install py27-sphinx py27-sphinx_rtd_theme, on Home-
Brew type brew install sphinx-doc; /usr/local/opt/sphinx-doc/libexec/bin/pip3
install sphinx_rtd_theme`, on Linux type pip install sphinx sphinx_rtd_theme), on
Windows refer to the Sphinx documentation.
When you have Sphinx installed go to the Documentation folder and launch the following command:
sphinx-build -b html source html
The Natron documentation has now been generated in the Documentation/html folder. Open Documenta-
tion/html/index.html in your web browser to review your changes.
When your are satisfied with your modifications do a pull request against the master repository on GitHub.
Plugins Manual
Editing or adding the main documentation for the Natron plugins requires you to edit the C++ source file for each
plugin. Usually the plugin(s) has a kPluginDescription define where you can edit the description found when
hovering or clicking the ? button of the plugin properties panel in Natron.
Let us say you want to edit the description in the Checkerboard plugin.
1. Fork the https://github.com/NatronGitHub/openfx-misc repository on GitHub.
2. Open the file Checkerboard/Checkerboard.cpp in your favorite (plain) text-editor
Navigate to the line #define kPluginDescription, where you can edit the description. Line breaks are added with
\n.
You will also notice that each parameter has a hint define, for example the Checkerboard has #define kParam-
BoxSizeHint, #define kParamColor0Hint etc. These describe each parameter in the plugin and shows up when
you hover the parameter in Natron, or access the HTML documentation online or through Natron.
To test your modifications, you must build the plugin(s) and load them in Natron, refer to each plugin bundle on
GitHub on how to build the plugin(s). Click the ? button of the plugin properties panel in Natron to check your
modifications.
1.4. Tutorials 35
Natron Documentation, Release 3.0.0
Markdown
The plugin description and parameters optionally supports Markdown format. This enables you to have more
control over how the information is displayed.
Enabling Markdown on a plugin requires some modifications, as the plugin must tell the host (Natron) that it
supports Markdown on the description and/or parameters. See the Shadertoy plugin for an example of how this
works.
Basically you need to add desc.setPluginDescription(kPluginDescriptionMarkdown, true); in the describe
function for each plugin. If you are not comfortable with this, contact the repository maintainer(s) and ask them
to enable Markdown for you.
Submitting contributions
As with the Natron Manual, the standard way of submitting your contributions is by forking the relevant plugins
repo on GitHub (openfx-misc, openfx-io, openfx-arena or openfx-gmic) and submitting a pull request to the master
branch of that repo.
However, if you wrote a nice piece of documentation, in any standard format, and have difficulties following that
procedure, do not hesitate to ask for assistance on the Natron forum, or to file a GitHub issue, with your document
attached to your message.
1.4.2 HSVTool
The HSVTool node converts the input color space to a HSV color space and converts the adjusted values back to
the image input color space for further processing for the output. The HSVTool node is used to adjust the HSV
channel components of an image the the Read node stream. It’s basic operation are to adjust the Hue: which is
the color of the input image, Saturation: which is the color range of the input image, and Brightness: which is the
color value level and the grayscale of the input image.
Each section has a rang controls that can be adjusted to limit the effects of a node by narrowing the input color
ranges.
What are some standard work-flow using HSVTool?
1. You can do secondary color corrections or color replacements with the source/destination eyedropper tool.
2. You can use the HSVTool for linear/color keying.
3. You can do an overall color shift by using the rotation range adjuster in the Hue parameters etc.
The following screen captures are based on a single pixel selection without manual component modifications. You
will see different alpha mattes display based on the alpha output components.
The image above is the result of a single color pixel selection using the blue destination replacement color.
This is when you make adjustments to Hue, Saturation, and Brightness to limit the input color ranges for the
desired effect. You can look at the third viewer on the right that has matte/alpha generated by the color selection
key using the source color eyedropper. This is the alpha interpretation of the alpha output component which is the
to Hue.
1.4. Tutorials 37
Natron Documentation, Release 3.0.0
There are several alpha output component that the HSVTool uses to limit effects. The next images are the results
of the output alpha mode from the HSVTool.
Note: Each of the matte generated displays are based from the colors that are spread across the image on a single
pixel selection and it HSV values.
By using a low resolution and/or compressed image you will see the artifacts in the alpha channel. This makes
it harder to do a replacement or secondary color correction. Is is evident that the blue channel has the most
artifacts/noise, you can use the CImgDenoise or CImgBlur node and blur one or two pixels in the blue channel to
soften the pixel edges. This technique will not always work, remember to apply dynamic range applications when
using the HSVTool. You can only push the Saturation and Brightness so far. Also remember that HSVTool need
color input in order to apply any color filtering even though it can output greyscale and matte data.
HSVTool Keyer
The HSVTool can be used as a color keyer. It uses the same principles as the ChromaKeyer and the Keyer nodes.
What separates the HSVTool as a keyer is that the matte is inverted with it’s selection.
When you need to pull a key with the ChromaKeyer the key color is outputted as black or represents a transparency.
See node grap below for an example.
The image below is the ChromaKeyer parameters panel. You can see that the eyedropper has a chroma green
selection from the input image. You may also notice the acceptance angle is very high, this is because the source
material is compressed.
As you can see from the panel the chromakey subtracted the chroma green, replacing it with black/transparent.
The “Key Lift” and “Key Gain” clamps the black/white to make a clean matte from the keyed selection.
Even if the chromakey generates transparency from the node, it still outputs a black and white matte that can be
used as an inverted mask or holdout matte to apply needed filter effects.
Note: A holdout matte is a section of your image that tells the keyer not to key the selected area. A holdout matte
is commonly used to define a area within your image that might have similar colors to the color being keyed.
The node graph below is using the same green screen image when pulling a key with the HSVTool. The alpha
output shows up as the white color. This HSVTool does not subtract the color to generate a matte, as oppose to
the ChromaKeyer and Keyer nodes that subtracts the color to generate a matte. If you are concerned about color
spaces, ChromaKeyer and Keyer process data in RGB color space and the HSVTool process in HSV color space.
The image below is the HSVTool parameters panel. You can see that the source color eyedropper operator has a
chroma green selected. As you look further down the panel you will notice the Hue, Saturation, and Brightness
parameters which has all the values the make up the chroma green selection.
The important part to remember is that Hue, Saturation, and Brightness are used to generate and adjust the matte(s)
based on the output alpha mode. The image output alpha is set to min(All), when selected, Hue, Saturation, and
Brightness can be used to adjust the matte/mask output.
1.4. Tutorials 39
Natron Documentation, Release 3.0.0
1.4. Tutorials 41
Natron Documentation, Release 3.0.0
There are eight output alpha modes. The only mode that can’t generate a matte is the “Source” mode. Even if
there’s no matte generated you can still do color replacements and color corrections.
The image above displays two HSVTool nodes that is keying the same input, but generating two different mattes
based on the output alpha. The middle viewer is the Hue mode output. The viewer on the right is the min(Hue,
Saturation) mode output. When you are working with compressed source images the output alpha modes will
yield different results.
Note: If you need more control on the alpha/matte output, the ColorLookup node can help adjusting edges.
1.4. Tutorials 43
Natron Documentation, Release 3.0.0
Those are preliminary notes on using PanoTools or Hugin projects from within Natron.
• download Hugin - on macOS this can be done using homebrew, by typing the command brew cask
install hugin in a terminal.
• read the Hugin documentation or start with a Hugin tutorial
• make your panorama
Full details on using command-line tools are given in the Panorama scripting in a nutshell documentation.
On macOS, if Hugin was installed using homebrew, the tools are available in various directories, and they can be
added to the PATH using:
PATH="$PATH:/Applications/Hugin/tools_mac:/Applications/Hugin/Hugin.app/Contents/
˓→MacOS:/Applications/Hugin/HuginStitchProject.app/Contents/MacOS"
Here is an example of running the panorama tools from a set of JPEG images (with suffix .jpg) placed in the
current directory to generate e perspective panorama (other options are described in the documentation):
pto_gen -o project.pto *.JPG
cpfind --multirow -o project.pto project.pto
The pto file syntax is described is the PTOptimizer and PTStitcher docs.
This file can be viewed and edited in any text editor.
Project size
The project size, or format, should be set to the panorama size, which is given in pixels on the p line (at the start
of the file).
Distortion correction
The distortion correction parameters for the input images are given in the i lines (one for each image).
The values for the a, b, c, d, e, g, t parameters should be entered in a LensDistortion node, with
Model/model=PanoTools and Direction/direction=Undistort, placed after the Read node for each input im-
age or video. The script name for these values are pt_a, pt_b, pt_c, pt_d, pt_e, pt_g, pt_t.
Note that if all images share the same distortion parameters (this is written as a=0 b=0 c=0 d=0 e=0 g=0
t=0 on the i line), the LensDistortion node can be cloned in Natron (right-click on node, Edit, Clone Nodes).
Projection
The projection (which can be performed by the Nona tool) can be done using Card3D nodes placed after each
LensDistortion node.
Each Card3D node must have its Transform Order/cardXFormOrder set to STR, and the Rotation Or-
der/cardRotOrder should be left to the default value (ZXY). Be careful, these are neither the Axis nor the
Cam Transform Order, which are in the two first groups of the Card3Dnode.
Set the Output Format to Project.
The r p and y values from the i line are roll, yaw, pitch angles. Their values should be put in the Rotate
parameter of the Card3D (script name is cardRotate), using the following convention: cardRotate.x =
p, cardRotate.y = -y, cardRotate.z = -r.
The v value from the i line corresponds to the horizontal field of view, and has to be converted to an aperture value.
The Lens-In H.Aperture/lensInHAperture param should be set to 2*tan(v*pi/360). This expression
can be directly typed in the value field, with v replaced by the actual value from the corresponding i line of the
pto file.
Setup all the Card3D nodes for each input image that way.
Camera
In Natron 2, the camera used by the Card3D node is set in the Cam group at the top of the parameters list.
In the Card3D node for the first image, unfold this group, and unfold the Cam Projection group.
The v value on the p line (usually at the top of the pto file) gives the horizontal field of view of the output
panorama.
Set the Focal Length/camfocal to 1., and set the Horiz. Aperture/camhaperture to 2*tan(v*pi/360),
replacing v with its actual value.
You can then copy these two parameters to all the Card3D nodes, or - even better - link these parameters, so that
the output camera for the panorama can then be modified: Right-click on the parameter from the first Card3D,
Copy Link, then right-click on the same parameter of every other Card3D node, Paste Link.
If you intend to modify the camera orientation later, you can also link the same way the Rotate/camRotate
parameter (those for the camera, not the card).
Note that when the Natron Card3D node is used in Nuke (where it appears as Card3DOFX), the node has an
external Cam input, to which a Camera node may be connected. There may be a similar concept in future versions
of Natron.
1.4. Tutorials 45
Natron Documentation, Release 3.0.0
Make sure that the Output Components parameter in all readers is set to RGBA, so that images have a transparent
value outside of their domain.
Now, connect the outpput of the first Card3D to the B input of a Merge node, connect the secont to the A input,
the third to the A2 input, etc. . .
The output of the Merge node should show a first panorama, obtained by overlapping all images.
Future work
Camera response
Vignetting
Blending
Software development is constantly growing. The film and multimedia industry are coming together as partners
to provide a one stop shop by allowing applications to communicate via different file formats. One of the formats
that have proven to be useful in both industries is the SVG (Scalable Vector Graphics) format. Its architecture
algorithm is based on mathematical expressions. In simpler terms, in doesn’t suffer image noise & artifacts like
bitmap formats such as PNG, TIFF, JPG and etc.
Inkscape’s SVG format uses multiple layers and paths, but most graphics applications can only parse this as a flat
bitmap. There will times when an artist may want to animate and/or modify those layers in a compositing program
but can’t due to limitation in the SVG importer. Natron however supports all layers and paths in the SVG file, this
enables enhanced control over the vector graphics.
This tutorial will show you how to use vector graphics from Inkscape in Natron.
Inkscape
Inkscape has multiple ways to create vector graphics to be saved and imported into Natron. The default is to
first create your document layout. This entails formatting the resolution for the project upon which your vector
graphics will be displayed. Inkscape starts with one layer and you can draw and type your graphics on that layer
or additional layers. You can then save the project to SVG file.
1.4. Tutorials 47
Natron Documentation, Release 3.0.0
This image is SVG letters being converted to a group and layers for each word so that they may have their own
layer/alpha channel in Natron.
The image below is the same vector letters being converted to paths and eventually ungrouping each of the vector
letters so that they may have their own layer and alpha channel in Natron.
Note: Remember to make sure that you convert your objects to paths, it is highly advisable to name each path
with its separate id name. It will make it much easier to find Color.RGB and alpha channel names in Natron after
loading the SVG file in the node graph.
It is also possible and good practice to select objects/paths and create groups of them. This will allow easy
animation work-flows without having to duplicate animated key-frames if needed. Those groups will also show
up as Color.RGB and Alpha channels in Natron.
Natron
The image below is Natron with the SVG file loaded. We have two viewers displaying the Color.RGB and alpha
channels generated from the SVG file.
After you have loaded the file, you can check the Color.RGB/Alpha Channels headers to see how the layers, paths
and groups are read. The ReadSVG node is multi-plane aware. The next few images are Natron screen captures
of the headers, merge and shuffle nodes.
Note: To clarify the Merge: Paths Channels image. In the SVG image, I broke apart the vector characters and
converted them to paths. Then each letter of the SVG was giving the name assigned to that letter. That information
got saved as individual Color.RGB/Alpha channels.
Be sure to look carefully at the Color.RGB and alpha headers in the images below. When your finished designing
your vector document with layers/paths/groups, this is where the channels are displayed.
The Shuffle and Merge nodes are used to access multi-
plane layers. Though they both can process the different
SVG files objects, paths, layers, they work differently.
As you can see in the image on the left the shuffle node
1.4. Tutorials 49
Natron Documentation, Release 3.0.0
1.4. Tutorials 51
Natron Documentation, Release 3.0.0
The first screenshot demonstration if for the node Ip_ChillSpill. This despilling node has the most of features
and functions that I can tell that exist amongst all the despilling nodes. in the image below you will see the spill
suppression on the left and the alpha channel from selecting “Shuffle Spillmatte to Alpha” on the right.
Now just selecting the Shuffle Spillmatte to Alpha feature is not some magic trick and you get a perfect matte, not
by a long shot. For a matter a fact its not for any of them. Attached are example of the nodes in their default state
before the scaling process begins. The first image is the Ip_ChillSpill default matte output and the second in the
ColorSuppression default matte output. It looks like if I was trying to use the HSVTool Node to pull a Saturation
or Brightness Key. You can read more about that in my HSVTool node tutorial. I used a very underated and
under used node amongst beginners called the ColorLookup Node. You can be very familiar with the node if you
have used Photoshop or Gimp’s curve tool.
Here are the nodes and their settings to show what I had to do to get it to scale my suppression mattes. The key
tool is to use the ColorLookup Node connected after the despilling nodes. The ColorLookup Node four color
channels and the channel that you use the scale your mattes is the “alpha curve channel”. The bottom left of the
alpha curve is used the to crush your blacks/shadows and the top right is used to extend your white/highlights.
In the ColorLookup Node you will also see a feature called “Luminance Math”. This feature will yield its full
1.4. Tutorials 53
Natron Documentation, Release 3.0.0
benefits based off the resolution and color spaces of your footage. The ColorLookup node is very powerful in a
sense because the channel curves can have multiple points to limit its effects.
As you can see these nodes all perform the same functions but some has different parameters to accomplishes the
same thing and well as providing other color processing effects. Here are some screen captures of the effects using
the ColorLookup Node.
Now this by node means a primary replacement for powerful keying node in Natron. The extended func-
tionality should only be considered as compliment to Chromakeyer, PIK/PIK Color and Keyer nodes. Just
remember that the Here are some screen captures of the effects using the ColorLookup node is needed to scaled
that matte. Also this process doesn’t treat your edges with a choking or eroding effect. You would have to exper-
iment with some of the filters to process them. Now you can try and cheat by using the Shuffle Node to convert to
this matte output to an real alpha channel and maybe you can process your edges directly as if you were coming
out of a keyer. You will need to do some serious testing. After you have done that, please feel free to talk about it
and join NatronNation and read my blog.
1.4. Tutorials 55
Natron Documentation, Release 3.0.0
Reference Guide
The first section in this manual describes the various options available from the Natron preference settings. It is
followed by one section for each node group in Natron. Node groups are available by clicking on buttons in the
left toolbar, or by right-clicking the mouse in the Node Graph area.
2.1 Preferences
2.1.1 General
2.1.2 Threading
57
Natron Documentation, Release 3.0.0
2.1.3 Rendering
2.1.6 Documentation
Documentation Source
Documentation source.
Documentation local port (0=auto)
The port onto which the documentation server will listen to. A value of 0 indicate that the documentation should
automatically find a port by itself.
2.1. Preferences 59
Natron Documentation, Release 3.0.0
OpenColorIO configuration
Select the OpenColorIO configuration you would like to use globally for all operators and plugins that use Open-
ColorIO, by setting the “OCIO” environment variable. Only nodes created after changing this parameter will take
it into account, and it is better to restart the application after changing it. When “Custom config” is selected, the
“Custom OpenColorIO config file” parameter is used.
Custom OpenColorIO configuration file
OpenColorIO configuration file (config.ocio) to use when “Custom config” is selected as the OpenColorIO config.
Warn on OpenColorIO config change
Show a warning dialog when changing the OpenColorIO config to remember that a restart is required.
2.1.9 Caching
Aggressive caching
When checked, Natron will cache the output of all images rendered by all nodes, regardless of their “Force
caching” parameter. When enabling this option you need to have at least 8GiB of RAM, and 16GiB is recom-
mended.
If not checked, Natron will only cache the nodes which have multiple outputs, or their parameter “Force caching”
checked or if one of its output has its settings panel opened.
Maximum amount of RAM memory used for caching (% of total RAM)
This setting indicates the percentage of the total RAM which can be used by the memory caches.
System RAM to keep free (% of total RAM)
This determines how much RAM should be kept free for other applications running on the same system. When
this limit is reached, the caches start recycling memory instead of growing. This value should reflect the amount
of memory you want to keep available on your computer for other usage. A low value may result in a massive
slowdown and high disk usage.
Maximum playback disk cache size (GiB)
The maximum size that may be used by the playback cache on disk (in GiB)
Maximum DiskCache node disk usage (GiB)
The maximum size that may be used by the DiskCache node on disk (in GiB)
Disk cache path (empty = default)
WARNING: Changing this parameter requires a restart of the application.
This points to the location where Natron on-disk caches will be. This variable should point to your fastest disk. If
the parameter is left empty or the location set is invalid, the default location will be used.
Wipe Disk Cache
Cleans-up all caches, deleting all folders that may contain cached data. This is provided in case Natron lost track
of cached images for some reason.
2.1.10 Viewer
2.1. Preferences 61
Natron Documentation, Release 3.0.0
2.1.11 Nodegraph
Auto Scroll
When checked the node graph will auto scroll if you move a node outside the current graph view.
Auto-turbo
When checked the Turbo-mode will be enabled automatically when playback is started and disabled when finished.
Snap to node
When moving nodes on the node graph, snap to positions where they are lined up with the inputs and output nodes.
Maximum undo/redo for the node graph
Set the maximum of events related to the node graph Natron remembers. Past this limit, older events will be
deleted forever, allowing to re-use the RAM for other purposes.
Changing this value will clear the undo/redo stack.
Disconnected arrow length
The size of a disconnected node input arrow in pixels.
Auto hide masks inputs
When checked, any diconnected mask input of a node in the nodegraph will be visible only when the mouse is
hovering the node or when it is selected.
Merge node connect to A input
If checked, upon creation of a new Merge node, or any other node with inputs named A and B, input A is be
preferred for auto-connection. When the node is disabled, B is always output, whether this is checked or not.
2.1.12 Plug-ins
2.1.13 Python
2.1.14 Appearance
Font
List of all fonts available on your system
Stylesheet file (.qss)
When pointing to a valid .qss file, the stylesheet of the application will be set according to this file instead of the
default stylesheet. You can adapt the default stylesheet that can be found in your distribution of Natron.
Main Window
2.1. Preferences 63
Natron Documentation, Release 3.0.0
Curve Editor
Dope Sheet
Node Graph
Script Editor
Font
List of all fonts available on your system
Font Size
The font size
The following sections contain documentation about every node in the Image group. Node groups are available
by clicking on buttons in the left toolbar, or by right-clicking the mouse in the Node Graph area.
Description
Inputs
Controls
Bottom Left / Double x: 0 y: Coordinates of the bottom left corner of the size rectangle.
bottomLeft 0
Size / size Double w: 1 h: Width and height of the size rectangle.
1
Interactive Update / Boolean Off If checked, update the parameter values during interaction with the im-
interactive age viewer, else update the values when pen is released.
Frame Range / Integer min: 1 Time domain.
frameRange max: 1
Output Components / Choice RGBA
outputComponents Components in the output
RGBA
RGB
Alpha
Description
Inputs
Controls
Center / recenter Button Centers the region of definition to the input region of definition. If there
is no input, then the region of definition is centered to the project win-
dow.
Reformat / Boolean Off Set the output format to the given extent, except if the Bottom Left or
reformat Size parameters is animated.
Format / Choice HD
NatronParamFormatChoice 1920x1080The output format
PC_Video 640x480 (PC_Video)
NTSC 720x486 0.91 (NTSC)
PAL 720x576 1.09 (PAL)
NTSC_16:9 720x486 1.21 (NTSC_16:9)
PAL_16:9 720x576 1.46 (PAL_16:9)
HD_720 1280x720 (HD_720)
HD 1920x1080 (HD)
UHD_4K 3840x2160 (UHD_4K)
1K_Super_35(full-ap) 1024x778 (1K_Super_35(full-ap))
1K_Cinemascope 914x778 2.00 (1K_Cinemascope)
2K_Super_35(full-ap) 2048x1556 (2K_Super_35(full-ap))
2K_Cinemascope 1828x1556 2.00 (2K_Cinemascope)
2K_DCP 2048x1080 (2K_DCP)
4K_Super_35(full-ap) 4096x3112 (4K_Super_35(full-ap))
4K_Cinemascope 3656x3112 2.00 (4K_Cinemascope)
4K_DCP 4096x2160 (4K_DCP)
square_256 256x256 (square_256)
square_512 512x512 (square_512)
square_1K 1024x1024 (square_1K)
square_2K 2048x2048 (square_2K)
Bottom Left / Double x: 0 y: Coordinates of the bottom left corner of the size rectangle.
bottomLeft 0
Size / size Double w: 1 h: Width and height of the size rectangle.
1
Interactive Update / Boolean Off If checked, update the parameter values during interaction with the im-
interactive age viewer, else update the values when pen is released.
Frame Range / Integer min: 1 Time domain.
frameRange max: 1
Output Components / Choice RGBA
outputComponents Components in the output
RGBA
RGB
Description
Inputs
Controls
Center / recenter Button Centers the region of definition to the input region of definition. If there
is no input, then the region of definition is centered to the project win-
dow.
Reformat / Boolean Off Set the output format to the given extent, except if the Bottom Left or
reformat Size parameters is animated.
Continued on next page
Bottom Left / Double x: 0 y: Coordinates of the bottom left corner of the size rectangle.
bottomLeft 0
Size / size Double w: 1 h: Width and height of the size rectangle.
1
Interactive Update / Boolean Off If checked, update the parameter values during interaction with the im-
interactive age viewer, else update the values when pen is released.
Frame Range / Integer min: 1 Time domain.
frameRange max: 1
Output Components / Choice RGBA
outputComponents Components in the output
RGBA
RGB
XY
Alpha
Center Saturation / Double 0 Sets the HSV saturation level in the center of the color wheel.
centerSaturation
Edge Saturation / Double 1 Sets the HSV saturation level at the edges of the color wheel.
edgeSaturation
Center Value / Double 1 Sets the HSV value level in the center of the color wheel.
centerValue
Edge Value / Double 1 Sets the HSV value level at the edges of the color wheel.
edgeValue
Gamma / gamma Double 0.45 Sets the overall gamma level of the color wheel.
Rotate / rotate Double 0 Sets the amount of rotation to apply to color position in the color wheel.
Negative values produce clockwise rotation and vice-versa.
Description
Inputs
Controls
Center / recenter Button Centers the region of definition to the input region of definition. If there
is no input, then the region of definition is centered to the project win-
dow.
Reformat / Boolean Off Set the output format to the given extent, except if the Bottom Left or
reformat Size parameters is animated.
Continued on next page
Bottom Left / Double x: 0 y: Coordinates of the bottom left corner of the size rectangle.
bottomLeft 0
Size / size Double w: 1 h: Width and height of the size rectangle.
1
Interactive Update / Boolean Off If checked, update the parameter values during interaction with the im-
interactive age viewer, else update the values when pen is released.
Frame Range / Integer min: 1 Time domain.
frameRange max: 1
Output Components / Choice RGBA
outputComponents Components in the output
RGBA
RGB
XY
Alpha
Description
Inputs
Controls
Last Frame / Integer 0 The last frame number to read from this image sequence or video file.
lastFrame This cannot be less than the first frame of the image sequence or video
file, and cannot be greater than the last frame of the image sequence or
video file. The first frame of a video file is numbered 1. If startingTime
is 1 or timeOffset is 0, this is also the last output frame.
After / after Choice Hold
What to do after the last frame of the sequence.
Hold (hold): While before the sequence, load the first frame.
Loop (loop): Repeat the sequence before the first frame
Bounce (bounce): Repeat the sequence in reverse before the first frame
Black (black): Render a black image
Error (error): Report an error
Starting Time / Integer 0 At what time (on the timeline) should this sequence/video start.
startingTime
Time Offset / Integer 0 Offset applied to the sequence in time units (i.e. frames).
timeOffset
Proxy File / proxy N/A Filename of the proxy images. They will be used instead of the images
read from the File parameter when the proxy mode (downscaling of the
images) is activated.
Proxy threshold / Double x: 1 y: The scale of the proxy images. By default it will be automatically com-
proxyThreshold 1 puted out of the images headers when you set the proxy file(s) path.
When the render scale (proxy) is set to a scale lower or equal to this
value then the proxy image files will be used instead of the original im-
ages. You can change this parameter by checking the “Custom scale”
checkbox so that you can change the scale at which the proxy images
should be used instead of the original images.
Custom Proxy Scale / Boolean Off Check to enable the Proxy scale edition.
customProxyScale
Continued on next page
Frame rate / Double 24 By default this value is guessed from the file. You can override it by
frameRate checking the Custom fps parameter. The value of this parameter is what
will be visible by the effects down-stream.
Custom FPS / Boolean Off If checked, you can freely force the value of the frame rate parameter.
customFps The frame-rate is just the meta-data that will be passed downstream to
the graph, no retime will actually take place.
OCIO Config File / N/A OpenColorIO configuration file
ocioConfigFile
Continued on next page
Description
Node used to read images or videos from disk. The image/video is identified by its filename and its extension.
Given the extension, the Reader selected from the Preferences to decode that specific format will be used.
Inputs
Controls
Last Frame / Integer 0 The last frame number to read from this image sequence or video file.
lastFrame This cannot be less than the first frame of the image sequence or video
file, and cannot be greater than the last frame of the image sequence or
video file. The first frame of a video file is numbered 1. If startingTime
is 1 or timeOffset is 0, this is also the last output frame.
After / after Choice Hold
What to do after the last frame of the sequence.
Hold (hold): While before the sequence, load the first frame.
Loop (loop): Repeat the sequence before the first frame
Bounce (bounce): Repeat the sequence in reverse before the first frame
Black (black): Render a black image
Error (error): Report an error
Starting Time / Integer 0 At what time (on the timeline) should this sequence/video start.
startingTime
Time Offset / Integer 0 Offset applied to the sequence in time units (i.e. frames).
timeOffset
Proxy File / proxy N/A Filename of the proxy images. They will be used instead of the images
read from the File parameter when the proxy mode (downscaling of the
images) is activated.
Proxy threshold / Double x: 1 y: The scale of the proxy images. By default it will be automatically com-
proxyThreshold 1 puted out of the images headers when you set the proxy file(s) path.
When the render scale (proxy) is set to a scale lower or equal to this
value then the proxy image files will be used instead of the original im-
ages. You can change this parameter by checking the “Custom scale”
checkbox so that you can change the scale at which the proxy images
should be used instead of the original images.
Custom Proxy Scale / Boolean Off Check to enable the Proxy scale edition.
customProxyScale
Continued on next page
Frame rate / Double 24 By default this value is guessed from the file. You can override it by
frameRate checking the Custom fps parameter. The value of this parameter is what
will be visible by the effects down-stream.
Continued on next page
Description
Inputs
Controls
Starting Time / Integer 0 At what time (on the timeline) should this sequence/video start.
startingTime
Time Offset / Integer 0 Offset applied to the sequence in time units (i.e. frames).
timeOffset
Proxy File / proxy N/A Filename of the proxy images. They will be used instead of the images
read from the File parameter when the proxy mode (downscaling of the
images) is activated.
Proxy threshold / Double x: 1 y: The scale of the proxy images. By default it will be automatically com-
proxyThreshold 1 puted out of the images headers when you set the proxy file(s) path.
When the render scale (proxy) is set to a scale lower or equal to this
value then the proxy image files will be used instead of the original im-
ages. You can change this parameter by checking the “Custom scale”
checkbox so that you can change the scale at which the proxy images
should be used instead of the original images.
Custom Proxy Scale / Boolean Off Check to enable the Proxy scale edition.
customProxyScale
Continued on next page
Frame rate / Double 24 By default this value is guessed from the file. You can override it by
frameRate checking the Custom fps parameter. The value of this parameter is what
will be visible by the effects down-stream.
Custom FPS / Boolean Off If checked, you can freely force the value of the frame rate parameter.
customFps The frame-rate is just the meta-data that will be passed downstream to
the graph, no retime will actually take place.
DPI / dpi Integer 90 Dots-per-inch (90 is default)
Continued on next page
Description
Inputs
Controls
Last Frame / Integer 0 The last frame number to read from this image sequence or video file.
lastFrame This cannot be less than the first frame of the image sequence or video
file, and cannot be greater than the last frame of the image sequence or
video file. The first frame of a video file is numbered 1. If startingTime
is 1 or timeOffset is 0, this is also the last output frame.
After / after Choice Hold
What to do after the last frame of the sequence.
Hold (hold): While before the sequence, load the first frame.
Loop (loop): Repeat the sequence before the first frame
Bounce (bounce): Repeat the sequence in reverse before the first frame
Black (black): Render a black image
Error (error): Report an error
Starting Time / Integer 0 At what time (on the timeline) should this sequence/video start.
startingTime
Time Offset / Integer 0 Offset applied to the sequence in time units (i.e. frames).
timeOffset
Proxy File / proxy N/A Filename of the proxy images. They will be used instead of the images
read from the File parameter when the proxy mode (downscaling of the
images) is activated.
Proxy threshold / Double x: 1 y: The scale of the proxy images. By default it will be automatically com-
proxyThreshold 1 puted out of the images headers when you set the proxy file(s) path.
When the render scale (proxy) is set to a scale lower or equal to this
value then the proxy image files will be used instead of the original im-
ages. You can change this parameter by checking the “Custom scale”
checkbox so that you can change the scale at which the proxy images
should be used instead of the original images.
Custom Proxy Scale / Boolean Off Check to enable the Proxy scale edition.
customProxyScale
Continued on next page
Frame rate / Double 24 By default this value is guessed from the file. You can override it by
frameRate checking the Custom fps parameter. The value of this parameter is what
will be visible by the effects down-stream.
Custom FPS / Boolean Off If checked, you can freely force the value of the frame rate parameter.
customFps The frame-rate is just the meta-data that will be passed downstream to
the graph, no retime will actually take place.
Continued on next page
Description
Inputs
Controls
Last Frame / Integer 0 The last frame number to read from this image sequence or video file.
lastFrame This cannot be less than the first frame of the image sequence or video
file, and cannot be greater than the last frame of the image sequence or
video file. The first frame of a video file is numbered 1. If startingTime
is 1 or timeOffset is 0, this is also the last output frame.
After / after Choice Hold
What to do after the last frame of the sequence.
Hold (hold): While before the sequence, load the first frame.
Loop (loop): Repeat the sequence before the first frame
Bounce (bounce): Repeat the sequence in reverse before the first frame
Black (black): Render a black image
Error (error): Report an error
Starting Time / Integer 0 At what time (on the timeline) should this sequence/video start.
startingTime
Time Offset / Integer 0 Offset applied to the sequence in time units (i.e. frames).
timeOffset
Proxy File / proxy N/A Filename of the proxy images. They will be used instead of the images
read from the File parameter when the proxy mode (downscaling of the
images) is activated.
Proxy threshold / Double x: 1 y: The scale of the proxy images. By default it will be automatically com-
proxyThreshold 1 puted out of the images headers when you set the proxy file(s) path.
When the render scale (proxy) is set to a scale lower or equal to this
value then the proxy image files will be used instead of the original im-
ages. You can change this parameter by checking the “Custom scale”
checkbox so that you can change the scale at which the proxy images
should be used instead of the original images.
Custom Proxy Scale / Boolean Off Check to enable the Proxy scale edition.
customProxyScale
Continued on next page
Frame rate / Double 24 By default this value is guessed from the file. You can override it by
frameRate checking the Custom fps parameter. The value of this parameter is what
will be visible by the effects down-stream.
Custom FPS / Boolean Off If checked, you can freely force the value of the frame rate parameter.
customFps The frame-rate is just the meta-data that will be passed downstream to
the graph, no retime will actually take place.
OCIO Config File / N/A OpenColorIO configuration file
ocioConfigFile
Continued on next page
Description
Inputs
Controls
Last Frame / Integer 0 The last frame number to read from this image sequence or video file.
lastFrame This cannot be less than the first frame of the image sequence or video
file, and cannot be greater than the last frame of the image sequence or
video file. The first frame of a video file is numbered 1. If startingTime
is 1 or timeOffset is 0, this is also the last output frame.
After / after Choice Hold
What to do after the last frame of the sequence.
Hold (hold): While before the sequence, load the first frame.
Loop (loop): Repeat the sequence before the first frame
Bounce (bounce): Repeat the sequence in reverse before the first frame
Black (black): Render a black image
Error (error): Report an error
Starting Time / Integer 0 At what time (on the timeline) should this sequence/video start.
startingTime
Time Offset / Integer 0 Offset applied to the sequence in time units (i.e. frames).
timeOffset
Continued on next page
Frame rate / Double 24 By default this value is guessed from the file. You can override it by
frameRate checking the Custom fps parameter. The value of this parameter is what
will be visible by the effects down-stream.
Custom FPS / Boolean Off If checked, you can freely force the value of the frame rate parameter.
customFps The frame-rate is just the meta-data that will be passed downstream to
the graph, no retime will actually take place.
OCIO Config File / N/A OpenColorIO configuration file
ocioConfigFile
File Colorspace / Choice Input data is taken to be in this colorspace.
ocioInputSpaceIndex
Output Colorspace / Choice Output data is taken to be in this colorspace.
ocioOutputSpaceIndex
key1 / key1 String
OCIO Contexts allow you to apply specific LUTs or grades to different
shots.
Here you can specify the context name (key) and its corresponding
value.
Full details of how to set up contexts and add them to your config can
be found in the OpenColorIO documentation:
http://opencolorio.org/userguide/contexts.html
Description
Inputs
Controls
Last Frame / Integer 0 The last frame number to read from this image sequence or video file.
lastFrame This cannot be less than the first frame of the image sequence or video
file, and cannot be greater than the last frame of the image sequence or
video file. The first frame of a video file is numbered 1. If startingTime
is 1 or timeOffset is 0, this is also the last output frame.
After / after Choice Hold
What to do after the last frame of the sequence.
Hold (hold): While before the sequence, load the first frame.
Loop (loop): Repeat the sequence before the first frame
Bounce (bounce): Repeat the sequence in reverse before the first frame
Black (black): Render a black image
Error (error): Report an error
Starting Time / Integer 0 At what time (on the timeline) should this sequence/video start.
startingTime
Time Offset / Integer 0 Offset applied to the sequence in time units (i.e. frames).
timeOffset
Proxy File / proxy N/A Filename of the proxy images. They will be used instead of the images
read from the File parameter when the proxy mode (downscaling of the
images) is activated.
Proxy threshold / Double x: 1 y: The scale of the proxy images. By default it will be automatically com-
proxyThreshold 1 puted out of the images headers when you set the proxy file(s) path.
When the render scale (proxy) is set to a scale lower or equal to this
value then the proxy image files will be used instead of the original im-
ages. You can change this parameter by checking the “Custom scale”
checkbox so that you can change the scale at which the proxy images
should be used instead of the original images.
Custom Proxy Scale / Boolean Off Check to enable the Proxy scale edition.
customProxyScale
Continued on next page
Frame rate / Double 24 By default this value is guessed from the file. You can override it by
frameRate checking the Custom fps parameter. The value of this parameter is what
will be visible by the effects down-stream.
Continued on next page
Max. value / Integer 0 The camera sensor saturation (maximum) value. Raw values greater
rawUserSat or equal to this are considered saturated and are processed using the
algorithm specified by the rawHighlightMode parameter. 0 means to
use the default value.
Output Colorspace / Choice sRGB
rawOutputColor Output colorspace.
Raw (raw): Raw data
sRGB (srgb): sRGB
Adobe (adobergb): Adobe RGB (1998)
Wide (wide): Wide-gamut RGB color space (or Adobe Wide Gamut
RGB)
ProPhoto (prophoto): Kodak ProPhoto RGB (or ROMM RGB)
XYZ (xyz): CIE XYZ
ACES (aces): AMPAS ACES
Aber. / rawAber Double x: 1 y: Correction of chromatic aberrations, given as a red multiplier and a blue
1 multiplier. The default values of (1.,1.) correspond to no correction.
Output Layer / Choice This is the layer that will be set to the the color plane. This is relevant
outputLayer only for image formats that can have multiple layers: exr, tiff, psd, etc. . .
Note that in Natron you can access other layers with a Shuffle node
downstream of this node.
Edge Pixels / Choice Auto
edgePixels Specifies how pixels in the border of the region of definition are
handled
Auto (auto): If the region of definition and format match exactly then
repeat the border pixel otherwise use black
Edge Detect (edge): For each edge, if the region of definition and
format match exactly then repeat border pixel, otherwise use black
Repeat (repeat): Repeat pixels outside the region of definition
Black (black): Add black pixels outside the region of definition
Description
Inputs
Controls
Last Frame / Integer 0 The last frame number to read from this image sequence or video file.
lastFrame This cannot be less than the first frame of the image sequence or video
file, and cannot be greater than the last frame of the image sequence or
video file. The first frame of a video file is numbered 1. If startingTime
is 1 or timeOffset is 0, this is also the last output frame.
After / after Choice Hold
What to do after the last frame of the sequence.
Hold (hold): While before the sequence, load the first frame.
Loop (loop): Repeat the sequence before the first frame
Bounce (bounce): Repeat the sequence in reverse before the first frame
Black (black): Render a black image
Error (error): Report an error
Starting Time / Integer 0 At what time (on the timeline) should this sequence/video start.
startingTime
Time Offset / Integer 0 Offset applied to the sequence in time units (i.e. frames).
timeOffset
Proxy File / proxy N/A Filename of the proxy images. They will be used instead of the images
read from the File parameter when the proxy mode (downscaling of the
images) is activated.
Proxy threshold / Double x: 1 y: The scale of the proxy images. By default it will be automatically com-
proxyThreshold 1 puted out of the images headers when you set the proxy file(s) path.
When the render scale (proxy) is set to a scale lower or equal to this
value then the proxy image files will be used instead of the original im-
ages. You can change this parameter by checking the “Custom scale”
checkbox so that you can change the scale at which the proxy images
should be used instead of the original images.
Custom Proxy Scale / Boolean Off Check to enable the Proxy scale edition.
customProxyScale
Continued on next page
Frame rate / Double 24 By default this value is guessed from the file. You can override it by
frameRate checking the Custom fps parameter. The value of this parameter is what
will be visible by the effects down-stream.
Custom FPS / Boolean Off If checked, you can freely force the value of the frame rate parameter.
customFps The frame-rate is just the meta-data that will be passed downstream to
the graph, no retime will actually take place.
DPI / dpi Double 150 Dots-per-inch (150 is default)
Continued on next page
Description
Inputs
Controls
Last Frame / Integer 0 The last frame number to read from this image sequence or video file.
lastFrame This cannot be less than the first frame of the image sequence or video
file, and cannot be greater than the last frame of the image sequence or
video file. The first frame of a video file is numbered 1. If startingTime
is 1 or timeOffset is 0, this is also the last output frame.
After / after Choice Hold
What to do after the last frame of the sequence.
Hold (hold): While before the sequence, load the first frame.
Loop (loop): Repeat the sequence before the first frame
Bounce (bounce): Repeat the sequence in reverse before the first frame
Black (black): Render a black image
Error (error): Report an error
Starting Time / Integer 0 At what time (on the timeline) should this sequence/video start.
startingTime
Time Offset / Integer 0 Offset applied to the sequence in time units (i.e. frames).
timeOffset
Continued on next page
Frame rate / Double 24 By default this value is guessed from the file. You can override it by
frameRate checking the Custom fps parameter. The value of this parameter is what
will be visible by the effects down-stream.
Custom FPS / Boolean Off If checked, you can freely force the value of the frame rate parameter.
customFps The frame-rate is just the meta-data that will be passed downstream to
the graph, no retime will actually take place.
OCIO Config File / N/A OpenColorIO configuration file
ocioConfigFile
File Colorspace / Choice Input data is taken to be in this colorspace.
ocioInputSpaceIndex
Output Colorspace / Choice Output data is taken to be in this colorspace.
ocioOutputSpaceIndex
key1 / key1 String
OCIO Contexts allow you to apply specific LUTs or grades to different
shots.
Here you can specify the context name (key) and its corresponding
value.
Full details of how to set up contexts and add them to your config can
be found in the OpenColorIO documentation:
http://opencolorio.org/userguide/contexts.html
Description
Inputs
Controls
Last Frame / Integer 0 The last frame number to read from this image sequence or video file.
lastFrame This cannot be less than the first frame of the image sequence or video
file, and cannot be greater than the last frame of the image sequence or
video file. The first frame of a video file is numbered 1. If startingTime
is 1 or timeOffset is 0, this is also the last output frame.
After / after Choice Hold
What to do after the last frame of the sequence.
Hold (hold): While before the sequence, load the first frame.
Loop (loop): Repeat the sequence before the first frame
Bounce (bounce): Repeat the sequence in reverse before the first frame
Black (black): Render a black image
Error (error): Report an error
Starting Time / Integer 0 At what time (on the timeline) should this sequence/video start.
startingTime
Time Offset / Integer 0 Offset applied to the sequence in time units (i.e. frames).
timeOffset
Proxy File / proxy N/A Filename of the proxy images. They will be used instead of the images
read from the File parameter when the proxy mode (downscaling of the
images) is activated.
Proxy threshold / Double x: 1 y: The scale of the proxy images. By default it will be automatically com-
proxyThreshold 1 puted out of the images headers when you set the proxy file(s) path.
When the render scale (proxy) is set to a scale lower or equal to this
value then the proxy image files will be used instead of the original im-
ages. You can change this parameter by checking the “Custom scale”
checkbox so that you can change the scale at which the proxy images
should be used instead of the original images.
Custom Proxy Scale / Boolean Off Check to enable the Proxy scale edition.
customProxyScale
Continued on next page
Frame rate / Double 24 By default this value is guessed from the file. You can override it by
frameRate checking the Custom fps parameter. The value of this parameter is what
will be visible by the effects down-stream.
Custom FPS / Boolean Off If checked, you can freely force the value of the frame rate parameter.
customFps The frame-rate is just the meta-data that will be passed downstream to
the graph, no retime will actually take place.
Continued on next page
Description
Inputs
Controls
Last Frame / Integer 0 The last frame number to read from this image sequence or video file.
lastFrame This cannot be less than the first frame of the image sequence or video
file, and cannot be greater than the last frame of the image sequence or
video file. The first frame of a video file is numbered 1. If startingTime
is 1 or timeOffset is 0, this is also the last output frame.
After / after Choice Hold
What to do after the last frame of the sequence.
Hold (hold): While before the sequence, load the first frame.
Loop (loop): Repeat the sequence before the first frame
Bounce (bounce): Repeat the sequence in reverse before the first frame
Black (black): Render a black image
Error (error): Report an error
Starting Time / Integer 0 At what time (on the timeline) should this sequence/video start.
startingTime
Time Offset / Integer 0 Offset applied to the sequence in time units (i.e. frames).
timeOffset
Proxy File / proxy N/A Filename of the proxy images. They will be used instead of the images
read from the File parameter when the proxy mode (downscaling of the
images) is activated.
Proxy threshold / Double x: 1 y: The scale of the proxy images. By default it will be automatically com-
proxyThreshold 1 puted out of the images headers when you set the proxy file(s) path.
When the render scale (proxy) is set to a scale lower or equal to this
value then the proxy image files will be used instead of the original im-
ages. You can change this parameter by checking the “Custom scale”
checkbox so that you can change the scale at which the proxy images
should be used instead of the original images.
Custom Proxy Scale / Boolean Off Check to enable the Proxy scale edition.
customProxyScale
Continued on next page
Frame rate / Double 24 By default this value is guessed from the file. You can override it by
frameRate checking the Custom fps parameter. The value of this parameter is what
will be visible by the effects down-stream.
Custom FPS / Boolean Off If checked, you can freely force the value of the frame rate parameter.
customFps The frame-rate is just the meta-data that will be passed downstream to
the graph, no retime will actually take place.
Continued on next page
Description
Fast SVG (Scalable Vector Graphics) reader using librsvg and Cairo.
Inputs
Controls
Last Frame / Integer 0 The last frame number to read from this image sequence or video file.
lastFrame This cannot be less than the first frame of the image sequence or video
file, and cannot be greater than the last frame of the image sequence or
video file. The first frame of a video file is numbered 1. If startingTime
is 1 or timeOffset is 0, this is also the last output frame.
After / after Choice Hold
What to do after the last frame of the sequence.
Hold (hold): While before the sequence, load the first frame.
Loop (loop): Repeat the sequence before the first frame
Bounce (bounce): Repeat the sequence in reverse before the first frame
Black (black): Render a black image
Error (error): Report an error
Starting Time / Integer 0 At what time (on the timeline) should this sequence/video start.
startingTime
Time Offset / Integer 0 Offset applied to the sequence in time units (i.e. frames).
timeOffset
Continued on next page
Frame rate / Double 24 By default this value is guessed from the file. You can override it by
frameRate checking the Custom fps parameter. The value of this parameter is what
will be visible by the effects down-stream.
Custom FPS / Boolean Off If checked, you can freely force the value of the frame rate parameter.
customFps The frame-rate is just the meta-data that will be passed downstream to
the graph, no retime will actually take place.
DPI / dpi Integer 90 Dots-per-inch (90 is default)
OCIO Config File / N/A OpenColorIO configuration file
ocioConfigFile
File Colorspace / Choice Input data is taken to be in this colorspace.
ocioInputSpaceIndex
Output Colorspace / Choice Output data is taken to be in this colorspace.
ocioOutputSpaceIndex
key1 / key1 String
OCIO Contexts allow you to apply specific LUTs or grades to different
shots.
Here you can specify the context name (key) and its corresponding
value.
Full details of how to set up contexts and add them to your config can
be found in the OpenColorIO documentation:
http://opencolorio.org/userguide/contexts.html
Description
Run a script with the given arguments. This is mostly useful to execute an external program on a set of input
images files, which outputs image files. Writers should be connected to each input, so that the image files are
written before running the script, and the output of this node should be fed into one or more Readers, which read
the images written by the script.
Sample section of a node graph which uses RunScript:
...
^
|
Write([Project]/scriptinput#####.png)
^
|
RunScript1(processes [Project]/scriptinput#####.png, output is [Project]/
˓→scriptoutput#####.png)
^
|
Read([Project]/scriptoutput#####.png, set the frame range manually)
^
|
RunScript2(deletes temporary files [Project]/scriptinput#####.png and [Project]/
˓→scriptoutput#####.png, optional)
^
|
...
Keep in mind that the input and output files are never removed in the above graph. The output of RunScript is a
copy of its first input.
Each argument may be:
• A filename (RunScript1 and RunScript2 in the example above should have [Project]/
scriptinput#####.png and [Project]/scriptoutput#####.png as filename parameters 1
and 2)
• A floating-point value (which can be linked to any plugin)
• An integer
• A string
Under Unix, the script should begin with a traditional shebang line, e.g. ‘#!/bin/sh’ or ‘#!/usr/bin/env python’ The
arguments can be accessed as usual from the script (in a Unix shell-script, argument 1 would be accessed as “$1”
- use double quotes to avoid problems with spaces). For example, the script in RunScript2 in the above example
would be:
#!/bin/sh
rm "$1" "$2"
This plugin uses pstream (http://pstreams.sourceforge.net), which is distributed under the Boost Software License,
Version 1.0.
Inputs
Controls
Validate / validate Boolean Off Validate the script contents and execute it on next render. This locks the
script and all its parameters.
Description
Inputs
Controls
Center / recenter Button Centers the region of definition to the input region of definition. If there
is no input, then the region of definition is centered to the project win-
dow.
Reformat / Boolean Off Set the output format to the given extent, except if the Bottom Left or
reformat Size parameters is animated.
Format / Choice HD
NatronParamFormatChoice 1920x1080The output format
PC_Video 640x480 (PC_Video)
NTSC 720x486 0.91 (NTSC)
PAL 720x576 1.09 (PAL)
NTSC_16:9 720x486 1.21 (NTSC_16:9)
PAL_16:9 720x576 1.46 (PAL_16:9)
HD_720 1280x720 (HD_720)
HD 1920x1080 (HD)
UHD_4K 3840x2160 (UHD_4K)
1K_Super_35(full-ap) 1024x778 (1K_Super_35(full-ap))
1K_Cinemascope 914x778 2.00 (1K_Cinemascope)
2K_Super_35(full-ap) 2048x1556 (2K_Super_35(full-ap))
2K_Cinemascope 1828x1556 2.00 (2K_Cinemascope)
2K_DCP 2048x1080 (2K_DCP)
4K_Super_35(full-ap) 4096x3112 (4K_Super_35(full-ap))
4K_Cinemascope 3656x3112 2.00 (4K_Cinemascope)
4K_DCP 4096x2160 (4K_DCP)
square_256 256x256 (square_256)
square_512 512x512 (square_512)
square_1K 1024x1024 (square_1K)
square_2K 2048x2048 (square_2K)
Description
Node used to write images or videos on disk. The image/video is identified by its filename and its extension.
Given the extension, the Writer selected from the Preferences to encode that specific format will be used.
Inputs
Controls
Format / Choice HD
NatronParamFormatChoice 1920x1080The output format to render
PC_Video 640x480 (PC_Video)
NTSC 720x486 0.91 (NTSC)
PAL 720x576 1.09 (PAL)
NTSC_16:9 720x486 1.21 (NTSC_16:9)
PAL_16:9 720x576 1.46 (PAL_16:9)
HD_720 1280x720 (HD_720)
HD 1920x1080 (HD)
UHD_4K 3840x2160 (UHD_4K)
1K_Super_35(full-ap) 1024x778 (1K_Super_35(full-ap))
1K_Cinemascope 914x778 2.00 (1K_Cinemascope)
2K_Super_35(full-ap) 2048x1556 (2K_Super_35(full-ap))
2K_Cinemascope 1828x1556 2.00 (2K_Cinemascope)
2K_DCP 2048x1080 (2K_DCP)
4K_Super_35(full-ap) 4096x3112 (4K_Super_35(full-ap))
4K_Cinemascope 3656x3112 2.00 (4K_Cinemascope)
4K_DCP 4096x2160 (4K_DCP)
square_256 256x256 (square_256)
square_512 512x512 (square_512)
square_1K 1024x1024 (square_1K)
square_2K 2048x2048 (square_2K)
Description
• First, try to find the format with the smallest BPP (bits per pixel) that fits into the preferences.
• Second, If no format fits, get the format that has a BPP equal or a bit higher that the one computed from the
preferences.
• Last, if no such format is found, get the format that has the highest BPP.
The selected pixel coding, bit depth, and BPP are displayed in the Selected Pixel Coding, Bit Depth, and BPP
parameters.
The recommended Codec/Container configurations for encoding digital intermediates are (see also https://trac.
ffmpeg.org/wiki/Encode/VFX):
• ProRes inside QuickTime: all ProRes profiles are 10-bit and are intra-frame (each frame is encoded sepa-
rately). Prores 4444 can also encode the alpha channel.
• Avid DNxHR inside QuickTime: the codec is intra-frame. DNxHR profiles are resolution-independent and
are available with 8-bit or 10-bit depth. The alpha channel cannot be encoded.
• HEVC (hev1/libx265) inside Matroska, MP4, QuickTime or MPEG-TS and Output Quality set to Lossless
or Perceptually Lossless. libx265 supports 8-bit, 10-bit and 12-bit depth (if libx265 was compiled with high
bit depth support). Lossless may not be playable in real-time for high resolutions. Set the Encoding Speed
to Ultra Fast for faster encoding but worse compression, or Very Slow for best compression.
To write videos intended for distribution (as media files or for streaming), the most popular codecs are mp4v
(mpeg4 or libxvid), avc1 (libx264), H264 (libopenh264), hev1 (libx265), VP80 (libvpx) and VP90 (libvpx-vp9).
The quality of mp4v may be set using the Global Quality parameter (between 1 and 31, 1 being the highest
quality), and the quality of avc1, hev1, VP80 and VP90 may be set using the Output Quality parameter. More
information can be found at https://trac.ffmpeg.org/wiki#Encoding
If the output video should be encoded with specific FFmpeg options, such as a given pixel format or encoding
option, it is better to write the output as individual frames in an image format that has a sufficient bit depth, and to
encode the set of individual frames to a video using the command-line ffmpeg tool.
The settings for the “Global Quality” and “Quality” parameters may have different meanings for different codecs.
See http://slhck.info/video/2017/02/24/vbr-settings.html for a summary of recommended values. Using these set-
tings should be preferred over constant bitrate-based encoding, as it usually gives a much better result.
Adding audio
If synchronized audio is available as a separate file, encoded with the right codec, it can be easily added to the
video using a command like: ffmpeg -i input.mp4 -i input.mp3 -c copy -map 0:0 -map 1:0 output.mp4 (in this
example, input.mp4 contains the video, input.mp3 contains the audio, and output.mp4 co,ntains both tracks).
This command does not re-encode the video or audio, but simply copies the data from each source file and places
it in separate streams in the output.
Inputs
Controls
File / filename N/A The output image sequence/video stream file(s). The string must
match the following format: path/sequenceName###.ext where the
number of # (hashes) will define the number of digits to append to
each file. For example path/mySequence###.jpg will be translated to
path/mySequence000.jpg, path/mySequence001.jpg, etc. %d printf-
like notation can also be used instead of the hashes, for example
path/sequenceName%03d.ext will achieve the same than the example
aforementioned. there will be at least 2 digits). The file name may
not contain any # (hash) in which case it will be overriden everytimes.
Views can be specified using the “long” view notation %V or the “short”
notation using %v.
Overwrite / Boolean On Overwrite existing files when rendering.
overwrite
Format Type / Choice Project
formatType Format Determines which rectangle of pixels will be written in output.
Input Format (input): Renders the pixels included in the input format
Project Format (project): Renders the pixels included in the project
format
Fixed Format (fixed): Renders the pixels included in the format
indicated by the Format parameter.
Format / Choice HD
NatronParamFormatChoice 1920x1080The output format to render
PC_Video 640x480 (PC_Video)
NTSC 720x486 0.91 (NTSC)
PAL 720x576 1.09 (PAL)
NTSC_16:9 720x486 1.21 (NTSC_16:9)
PAL_16:9 720x576 1.46 (PAL_16:9)
HD_720 1280x720 (HD_720)
HD 1920x1080 (HD)
UHD_4K 3840x2160 (UHD_4K)
1K_Super_35(full-ap) 1024x778 (1K_Super_35(full-ap))
1K_Cinemascope 914x778 2.00 (1K_Cinemascope)
2K_Super_35(full-ap) 2048x1556 (2K_Super_35(full-ap))
2K_Cinemascope 1828x1556 2.00 (2K_Cinemascope)
2K_DCP 2048x1080 (2K_DCP)
4K_Super_35(full-ap) 4096x3112 (4K_Super_35(full-ap))
4K_Cinemascope 3656x3112 2.00 (4K_Cinemascope)
4K_DCP 4096x2160 (4K_DCP)
square_256 256x256 (square_256)
square_512 512x512 (square_512)
square_1K 1024x1024 (square_1K)
square_2K 2048x2048 (square_2K)
Alpha / Boolean Off If checked, and the input contains alpha, formats with an alpha channel
enableAlpha are preferred.
Show Avail. / Button Show available pixel codings for this codec.
prefShow
Continued on next page
Selected Pixel Coding String Pixel coding of images passed to the encoder. If several pixel cod-
/ ings are available, the coding which causes less data loss is selected.
infoPixelFormat Other pixel formats may be available by transcoding with ffmpeg on
the command-line, as can be seen by executing ‘ffmpeg –help en-
coder=codec_name’ on the command-line.
Bit Depth / Integer 0 Bit depth (number of bits per component) of the pixel format.
infoBitDepth
BPP / infoBpp Integer 0 Bits per pixel of the pixel format.
Continued on next page
Description
Inputs
Controls
File / filename N/A The output image sequence/video stream file(s). The string must
match the following format: path/sequenceName###.ext where the
number of # (hashes) will define the number of digits to append to
each file. For example path/mySequence###.jpg will be translated to
path/mySequence000.jpg, path/mySequence001.jpg, etc. %d printf-
like notation can also be used instead of the hashes, for example
path/sequenceName%03d.ext will achieve the same than the example
aforementioned. there will be at least 2 digits). The file name may
not contain any # (hash) in which case it will be overriden everytimes.
Views can be specified using the “long” view notation %V or the “short”
notation using %v.
Overwrite / Boolean On Overwrite existing files when rendering.
overwrite
Format Type / Choice Project
formatType Format Determines which rectangle of pixels will be written in output.
Input Format (input): Renders the pixels included in the input format
Project Format (project): Renders the pixels included in the project
format
Fixed Format (fixed): Renders the pixels included in the format
indicated by the Format parameter.
Quality / quality Integer 100 Indicates the quality of compression to use (0-100), for those plugins
and compression methods that allow a variable amount of compression,
with higher numbers indicating higher image fidelity. [JPEG, TIFF w/
JPEG comp., WEBP]
DWA Compression Double 45 Amount of compression when using Dreamworks DWAA or DWAB
Level / compression options. These lossy formats are variable in quality and
dwaCompressionLevel can minimize the compression artifacts. Higher values will result in
greater compression and likewise smaller file size, but increases the
chance for artifacts. Values from 45 to 150 are usually correct for
production shots, whereas HDR vacation photos could use up to 500.
Values below 45 should give no visible imprrovement on photographs.
[EXR w/ DWAa or DWAb comp.]
Continued on next page
All Planes / Boolean Off When checked all planes in input will be processed and output to the
processAllPlanes same plane as in input. It is useful for example to apply a Transform
effect on all planes.
Parts / Choice Split
partSplitting Views,Layers
Defines whether to separate views/layers in different EXR parts or not.
Note that multi-part files are only supported by OpenEXR >= 2
Single Part (single): All views and layers will be in the same part,
ensuring compatibility with OpenEXR 1.x
Split Views (views): All views will have its own part, and each part
will contain all layers. This will produce an EXR optimized in size that
can be opened only with applications supporting OpenEXR 2
Split Views,Layers (views_layers): Each layer of each view will have
its own part. This will produce an EXR optimized for decoding speed
that can be opened only with applications supporting OpenEXR 2
Description
Inputs
Controls
File / filename N/A The output image sequence/video stream file(s). The string must
match the following format: path/sequenceName###.ext where the
number of # (hashes) will define the number of digits to append to
each file. For example path/mySequence###.jpg will be translated to
path/mySequence000.jpg, path/mySequence001.jpg, etc. %d printf-
like notation can also be used instead of the hashes, for example
path/sequenceName%03d.ext will achieve the same than the example
aforementioned. there will be at least 2 digits). The file name may
not contain any # (hash) in which case it will be overriden everytimes.
Views can be specified using the “long” view notation %V or the “short”
notation using %v.
Overwrite / Boolean On Overwrite existing files when rendering.
overwrite
Format Type / Choice Project
formatType Format Determines which rectangle of pixels will be written in output.
Input Format (input): Renders the pixels included in the input format
Project Format (project): Renders the pixels included in the project
format
Fixed Format (fixed): Renders the pixels included in the format
indicated by the Format parameter.
Description
Inputs
Controls
File / filename N/A The output image sequence/video stream file(s). The string must
match the following format: path/sequenceName###.ext where the
number of # (hashes) will define the number of digits to append to
each file. For example path/mySequence###.jpg will be translated to
path/mySequence000.jpg, path/mySequence001.jpg, etc. %d printf-
like notation can also be used instead of the hashes, for example
path/sequenceName%03d.ext will achieve the same than the example
aforementioned. there will be at least 2 digits). The file name may
not contain any # (hash) in which case it will be overriden everytimes.
Views can be specified using the “long” view notation %V or the “short”
notation using %v.
Overwrite / Boolean On Overwrite existing files when rendering.
overwrite
Format Type / Choice Project
formatType Format Determines which rectangle of pixels will be written in output.
Input Format (input): Renders the pixels included in the input format
Project Format (project): Renders the pixels included in the project
format
Fixed Format (fixed): Renders the pixels included in the format
indicated by the Format parameter.
Dithering / Boolean On When checked, conversion from float input buffers to 8-bit PNG will
enableDithering use a dithering algorithm to reduce quantization artifacts. This has no
effect when writing to 16bit PNG
libpng Info. . . / Button Display information about the underlying library.
libraryInfo
The following sections contain documentation about every node in the Draw group. Node groups are available by
clicking on buttons in the left toolbar, or by right-clicking the mouse in the Node Graph area.
Description
LightWrap helps composite objects onto a bright background by simulating reflections from the background light
on the foreground, around its edges. Input A is the foreground image and its matte, and input B the the background
to use for the wrapping effect.
The output of LightWrap should then be composited over the background to give the final composite.
Inputs
Controls
BGBlur / bgblur Double x: 0 y: Size of the blur applied to the background before merging it with the
0 foreground element and applying the Diffuse blur.
Saturation / Double 1 Color saturation of the LightWrap effect. Advanced color correction
saturation parameters are available in the ColorCorrect tab.
Luma Tolerance / Double 0 Luminance threshold of the LightWrap effect. Luminance values below
lumaTolerance this do not generate a LightWrap.
Continued on next page
Use Constant Boolean Off When checked, use a constant color (specified by the Constant parame-
Highlight / ter) instead of the background for the LightWrap effect.
useConstant
Continued on next page
Description
Inputs
Controls
Seed / seed Integer 2000 Random seed: change this if you want different instances to have differ-
ent noise.
Static Seed / Boolean Off When enabled, the dither pattern remains the same for every frame pro-
staticSeed ducing a constant noise effect.
(Un)premult / Boolean Off Divide the image by the alpha channel before processing, and re-
premult multiply it afterwards. Use if the input images are premultiplied.
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
Inputs
Controls
Description
Radial ramp.
The ramp is composited with the source image using the ‘over’ operator.
If no source is connected, this effect behaves like a generator. Its region of definition is:
• The selected format if the Extent parameter is a format.
• The project output format if Color0 is not black and transparent.
• The selected extent plus a one-pixel border if Color0 is black and transparent.
See also: http://opticalenquiry.com/nuke/index.php?title=Radial
Inputs
Controls
Center / recenter Button Centers the region of definition to the input region of definition. If there
is no input, then the region of definition is centered to the project win-
dow.
Reformat / Boolean Off Set the output format to the given extent, except if the Bottom Left or
reformat Size parameters is animated.
Format / Choice HD
NatronParamFormatChoice 1920x1080The output format
PC_Video 640x480 (PC_Video)
NTSC 720x486 0.91 (NTSC)
PAL 720x576 1.09 (PAL)
NTSC_16:9 720x486 1.21 (NTSC_16:9)
PAL_16:9 720x576 1.46 (PAL_16:9)
HD_720 1280x720 (HD_720)
HD 1920x1080 (HD)
UHD_4K 3840x2160 (UHD_4K)
1K_Super_35(full-ap) 1024x778 (1K_Super_35(full-ap))
1K_Cinemascope 914x778 2.00 (1K_Cinemascope)
2K_Super_35(full-ap) 2048x1556 (2K_Super_35(full-ap))
2K_Cinemascope 1828x1556 2.00 (2K_Cinemascope)
2K_DCP 2048x1080 (2K_DCP)
4K_Super_35(full-ap) 4096x3112 (4K_Super_35(full-ap))
4K_Cinemascope 3656x3112 2.00 (4K_Cinemascope)
4K_DCP 4096x2160 (4K_DCP)
square_256 256x256 (square_256)
square_512 512x512 (square_512)
square_1K 1024x1024 (square_1K)
square_2K 2048x2048 (square_2K)
Bottom Left / Double x: 0 y: Coordinates of the bottom left corner of the size rectangle.
bottomLeft 0
Size / size Double w: 1 h: Width and height of the size rectangle.
1
Interactive Update / Boolean Off If checked, update the parameter values during interaction with the im-
interactive age viewer, else update the values when pen is released.
Frame Range / Integer min: 1 Time domain.
frameRange max: 1
Softness / softness Double 1 Softness of the radial ramp. Draws an anti-aliased disc or ellipse if zero.
Perceptually Linear / Boolean Off Make the radial ramp look more linear to the eye.
plinear
Color 0 / color0 Color r: 0 g:
0 b: 0
a: 0
Continued on next page
Description
Inputs
Controls
Description
Generate a random field of noise. The field does not resample if you change the resolution or density (you can
animate the density without pixels randomly changing).
Inputs
Controls
Center / recenter Button Centers the region of definition to the input region of definition. If there
is no input, then the region of definition is centered to the project win-
dow.
Continued on next page
Bottom Left / Double x: 0 y: Coordinates of the bottom left corner of the size rectangle.
bottomLeft 0
Size / size Double w: 1 h: Width and height of the size rectangle.
1
Interactive Update / Boolean Off If checked, update the parameter values during interaction with the im-
interactive age viewer, else update the values when pen is released.
Frame Range / Integer min: 1 Time domain.
frameRange max: 1
Output Components / Choice RGB
outputComponents Components in the output
RGBA
RGB
XY
Alpha
Description
Draw a rectangle.
The rectangle is composited with the source image using the ‘over’ operator.
If no source is connected, this effect behaves like a generator. Its region of definition is:
• The selected format if the Extent parameter is a format.
• The project output format if Color0 is not black and transparent.
• The selected extent plus a one-pixel border if Color0 is black and transparent.
See also: http://opticalenquiry.com/nuke/index.php?title=Rectangle
Inputs
Controls
Center / recenter Button Centers the region of definition to the input region of definition. If there
is no input, then the region of definition is centered to the project win-
dow.
Reformat / Boolean Off Set the output format to the given extent, except if the Bottom Left or
reformat Size parameters is animated.
Continued on next page
Bottom Left / Double x: 0 y: Coordinates of the bottom left corner of the size rectangle.
bottomLeft 0
Size / size Double w: 1 h: Width and height of the size rectangle.
1
Interactive Update / Boolean Off If checked, update the parameter values during interaction with the im-
interactive age viewer, else update the values when pen is released.
Frame Range / Integer min: 1 Time domain.
frameRange max: 1
Corner Radius / Double x: 0 y: If non-zero, this is the radius of the round corners.
cornerRadius 0
Softness / softness Double 0 Softness of the rectangle edges. Draws an anti-aliased rectangle if zero
Color 0 / color0 Color r: 0 g:
0 b: 0
a: 0
Color 1 / color1 Color r: 1 g:
1 b: 1
a: 1
Expand RoD / Boolean On Expand the source region of definition by the shape RoD (if Source is
expandRoD connected and color0=(0,0,0,0)).
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
Inputs
Controls
Activated / Boolean On Controls whether the selected shape(s) should be rendered or not.Note
activated that you can animate this parameter so you can activate/deactivate the
shape throughout the time.
Feather / feather Double 1.5 Controls the distance of feather (in pixels) to add around the selected
shape(s)
Feather fall-off / Double 1 Controls the rate at which the feather is applied on the selected shape(s).
featherFallOff
Source / Choice background
sourceType Source color used for painting the stroke when the Reveal/Clone tools
are used.
foreground: The painted result at this point in the hierarchy.
background: The original image unpainted connected to bg.
background 2: The original image unpainted connected to bg1.
background 3: The original image unpainted connected to bg2.
background 4: The original image unpainted connected to bg3.
background 5: The original image unpainted connected to bg4.
background 6: The original image unpainted connected to bg5.
background 7: The original image unpainted connected to bg6.
background 8: The original image unpainted connected to bg7.
background 9: The original image unpainted connected to bg8.
background 10: The original image unpainted connected to bg9.
Black Outside / Boolean On Fill the area outside the source image with black
blackOutside
Clone time offset / Integer 0 When the Clone tool is used, this determines depending on the time
timeOffset offset mode the source frame to clone. When in absolute mode, this is
the frame number of the source, when in relative mode, this is an offset
relative to the current frame.
Mode / Choice Relative
timeOffsetMode Time offset mode: when in absolute mode, this is the frame number of
the source, when in relative mode, this is an offset relative to the
current frame.
Relative
Absolute
Description
RotoPaint is a vector based free-hand drawing node that helps for tasks such as rotoscoping, matting, etc. . .
Inputs
Controls
Frame / Integer 0 Use this to specify the frame when in mode Single/From start/To end
lifeTimeFrame
Feather / feather Double 1.5 Controls the distance of feather (in pixels) to add around the selected
shape(s)
Feather fall-off / Double 1 Controls the rate at which the feather is applied on the selected shape(s).
featherFallOff
Source / Choice background
sourceType Source color used for painting the stroke when the Reveal/Clone tools
are used.
foreground: The painted result at this point in the hierarchy.
background: The original image unpainted connected to bg.
background 2: The original image unpainted connected to bg1.
background 3: The original image unpainted connected to bg2.
background 4: The original image unpainted connected to bg3.
background 5: The original image unpainted connected to bg4.
background 6: The original image unpainted connected to bg5.
background 7: The original image unpainted connected to bg6.
background 8: The original image unpainted connected to bg7.
background 9: The original image unpainted connected to bg8.
background 10: The original image unpainted connected to bg9.
Translate / Double x: 0 y:
cloneTranslate 0
Rotate / Double 0
cloneRotate
Scale / cloneScale Double x: 1 y:
1
Continued on next page
Black Outside / Boolean On Fill the area outside the source image with black
blackOutside
Clone time offset / Integer 0 When the Clone tool is used, this determines depending on the time
timeOffset offset mode the source frame to clone. When in absolute mode, this is
the frame number of the source, when in relative mode, this is an offset
relative to the current frame.
Mode / Choice Relative
timeOffsetMode Time offset mode: when in absolute mode, this is the frame number of
the source, when in relative mode, this is an offset relative to the
current frame.
Relative
Absolute
Brush Size / Double 25 This is the diameter of the brush in pixels. Shift + drag on the viewer to
brushSize modify this value
Brush Spacing / Double 0.1 Spacing between stamps of the paint brush
brushSpacing
Brush Hardness / Double 0.2 Fall off of the brush effect from the center to the edge
brushHardness
Continued on next page
Description
Inputs
Controls
All / Double 1 Global factor on grain size. Useful if working with scans which are not
grainSizeAll 2K (the preset sizes are computed for 2K scans).
Red / Double 3.3 Red grain size (in pixels).
grainSizeRed
Green / Double 2.9 Green grain size (in pixels).
grainSizeGreen
Blue / Double 2.5 Blue grain size (in pixels).
grainSizeBlue
Red / Double 0.6 Red grain irregularity.
grainIrregularityRed
Green / Double 0.6 Green grain irregularity.
grainIrregularityGreen
Blue / Double 0.6 Blue grain irregularity.
grainIrregularityBlue
Red / Double 0.42 Amount of red grain to add to a white pixel.
grainIntensityRed
Green / Double 0.46 Amount of green grain to add to a white pixel.
grainIntensityGreen
Blue / Double 0.85 Amount of blue grain to add to a white pixel.
grainIntensityBlue
Correlation / Double 0 This parameter specifies the apparent colorfulness of the grain. The
colorCorr value represents how closely the grain in each channel overlaps. This
means that negative color correlation values decrease the amount of
overlap, which increases the apparent color of the grain, while positive
values decrease its colorfulness.
Black / Color r: 0 g: Amount of grain to add everywhere.
grainBlack 0 b: 0
Minimum / Color r: 0 g: Minimum black level.
grainMinimum 0 b: 0
Continued on next page
Description
Generate noise.
Inputs
Controls
Jitter / jitter Double 0.5 The jitter param controls how irregular the pattern is (jitter = 0 is like
ordinary cellnoise).
FBM Scale / Double 0 The fbm* params can be used to distort the noise field. When fbmScale
fbmScale is zero (the default), there is no distortion.
Octaves / Integer 6 The total number of frequencies is controlled by octaves.
fbmOctaves
Lacunarity / Double 2 The lacunarity is the spacing between the frequencies - a value of 2
fbmLacunarity means each octave is twice the previous frequency.
Gain / fbmGain Double 0.5 The gain controls how much each frequency is scaled relative to the
previous frequency.
Translate / Double x: 0 y: Translation along the x and y axes in pixels. Can also be adjusted by
transformTranslate 0 clicking and dragging the center handle in the Viewer.
Rotate / Double 0 Rotation angle in degrees around the Center. Can also be adjusted by
transformRotate clicking and dragging the rotation bar in the Viewer.
Scale / Double x: 1 y: Scale factor along the x and y axes. Can also be adjusted by clicking
transformScale 1 and dragging the outer circle or the diameter handles in the Viewer.
Continued on next page
Description
Inputs
Controls
The following sections contain documentation about every node in the Time group. Node groups are available by
clicking on buttons in the left toolbar, or by right-clicking the mouse in the Node Graph area.
Description
Inputs
Controls
Description
• Yadif: Interpolator (Yet Another DeInterlacing Filter) from MPlayer by Michael Niedermayer (http://www.
mplayerhq.hu). It checks pixels of previous, current and next frames to re-create the missed field by some
local adaptive method (edge-directed interpolation) and uses spatial check to prevent most artifacts.
Inputs
Controls
Description
Inputs
Controls
Decay / decay Double 0 Before applying the blending operation, frame t is multiplied by (1-
decay)^(last-t).
Output Count to Boolean Off Output image count at each pixel to alpha (input must have an alpha
Alpha / channel).
outputCount
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
Hold a given frame for the input clip indefinitely, or use a subsample of the input frames and hold them for several
frames.
Inputs
Controls
Description
Set the frame range for a clip. Useful in conjunction with AppendClipOFX.
Inputs
Controls
Description
Rounds fractional frame numbers to integers. This can be used to avoid computing non-integer frame numbers,
and to discretize motion (useful for animated objects). This plug-in is usually inserted upstream from TimeBlur.
Inputs
Controls
Description
Inputs
Controls
Description
Apply per-pixel retiming: the time is computed for each pixel from the retime function, which can be either a
horizontal ramp, a vertical ramp, or a retime map.
The default retime function corresponds to a horizontal slit: it is a vertical ramp, which is a linear function of y,
which is 0 at the center of the bottom image line, and 1 at the center of the top image line. Optionally, a vertical
slit may be used (0 at the center of the leftmost image column, 1 at the center of the rightmost image column), or
the optional single-channel “Retime Map” input may also be used.
This plugin requires to render many frames on input, which may require a lot of memory.
Note that the results may be on higher quality if the video is slowed fown (e.g. using slowmoVideo)
The parameters are:
Inputs
Controls
Description
Inputs
Controls
Custom Offset / Double 0 When custom is selected, the shutter is open at current time plus this
shutterCustomOffset offset (in frames). Ignored if there is no motion blur (i.e. shutter=0 or
motionBlur=0).
Description
Move the input clip forward or backward in time. This can also reverse the order of the input frames so that last
one is first.
See also http://opticalenquiry.com/nuke/index.php?title=TimeOffset
Inputs
Controls
The following sections contain documentation about every node in the Channel group. Node groups are available
by clicking on buttons in the left toolbar, or by right-clicking the mouse in the Node Graph area.
Description
Rearrange channels from one or two inputs and/or convert to different bit depth or components. No colorspace
conversion is done (mapping is linear, even for 8-bit and 16-bit types).
Inputs
Controls
Set GBA From R / Boolean On If checked, setting the R output channel from the GUI to the R channel
setGBAFromR of an input also sets the G, B and A output channels from the same
plane.
Clip Info. . . / Button Display information about the inputs.
clipInfo
The following sections contain documentation about every node in the Color group. Node groups are available by
clicking on buttons in the left toolbar, or by right-clicking the mouse in the Node Graph area.
Description
Inputs
Controls
Description
A special use case for the Clamp plugin is to generate a binary mask image (i.e. each pixel is either 0 or 1) by
thresholding an image. Let us say one wants all input pixels whose value is above or equal to some threshold
value to become 1, and all values below this threshold to become 0. Set the “Minimum” value to the threshold,
set the “Maximum” to any value strictly below the threshold (e.g. 0 if the threshold is positive), and check
“Enable MinClampTo” and “Enable MaxClampTo” while keeping the default values for “MinClampTo” (0.0) and
“MaxClampTop” (1.0). The result is a binary mask image. To create a non-binary mask, with softer edges, either
blur the output of Clamp, or use the Grade plugin instead, setting the “Black Point” and “White Point” to values
close to the threshold, and checking the “Clamp Black” and “Clamp White” options.
See also: http://opticalenquiry.com/nuke/index.php?title=Clamp
Inputs
Controls
MaxClampTo / Color r: 1 g: The value to which values above maximum are clamped when max-
maxClampTo 1 b: 1 ClampTo is enabled. Setting this to a custom color helps visualizing the
a: 1 clamped areas or create graphic effects.
Enable MaxClampTo / Boolean Off
maxClampToEnable When enabled, all values above maximum are set to the maxClampTo
value.
When disabled, all values above maximum are clamped to the
maximum value.
(Un)premult / Boolean Off Divide the image by the alpha channel before processing, and re-
premult multiply it afterwards. Use if the input images are premultiplied.
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
Inputs
Controls
Description
• http://opticalenquiry.com/nuke/index.php?title=ColorCorrect
• https://compositormathematic.wordpress.com/2013/07/06/gamma-contrast/
Inputs
Controls
Description
Inputs
Controls
Update Histogram / Button Update the histogram from the input at current time.
updateHistogram
Source / source Color r: 0 g: Source color for newly added points (x coordinate on the curve).
0 b: 0
a: 0
Target / target Color r: 0 g: Target color for newly added points (y coordinate on the curve).
0 b: 0
a: 0
Set Master / Button Add a new control point mapping source to target to the master curve
setMaster (the relative luminance is computed using the ‘Luminance Math’ pa-
rameter).
Set RGB / setRGB Button Add a new control point mapping source to target to the red, green, and
blue curves.
Set RGBA / Button Add a new control point mapping source to target to the red, green, blue
setRGBA and alpha curves.
Set A / setA Button Add a new control point mapping source to target to the alpha curve
Continued on next page
Clamp Black / Boolean Off All colors below 0 on output are set to 0.
clampBlack
Clamp White / Boolean Off All colors above 1 on output are set to 1.
clampWhite
(Un)premult / Boolean Off Divide the image by the alpha channel before processing, and re-
premult multiply it afterwards. Use if the input images are premultiplied.
Continued on next page
Description
Inputs
Controls
Description
Inputs
Controls
(Un)premult / Boolean Off Divide the image by the alpha channel before processing, and re-
premult multiply it afterwards. Use if the input images are premultiplied.
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
Inputs
Controls
Description
Apply gamma function to the selected channels. The actual function is pow(x,1/max(1e-8,value)).
Inputs
Controls
Description
Modify the tonal spread of an image from the white and black points.
This node can also be used to match colors of 2 images: The darkest and lightest points of the target image are
converted to black and white using the blackpoint and whitepoint values. These 2 values are then moved to new
values using the black(for dark point) and white(for white point). You can also apply multiply/offset/gamma for
other color fixing you may need.
Here is the formula used:
A = multiply * (white - black) / (whitepoint - blackpoint)
B = offset + black - A * blackpoint
output = pow(A * input + B, 1 / gamma).
A special use for Grade is to generate a mask image with soft edges by thresholding an input image. Set the
“Black Point” and “White Point” to values just below and just above the threshold, and check the “Clamp Black”
and “Clamp White” options. If a binary mask containing only 0 and 1 is preferred, the Clamp plugin can be used
instead.
See also: http://opticalenquiry.com/nuke/index.php?title=Grade and http://opticalenquiry.com/nuke/index.php?
title=Integration#Matching_color
Inputs
Controls
Description
Convert from HSI color model (hue, saturation, intensity, as defined by Gonzalez and Woods in 1992) to linear
RGB. H is in degrees, S and I are in the same units as RGB. No gamma correction is applied to RGB after
conversion.
The HSI colour space (hue, saturation and intensity) attempts to produce a more intuitive representation of colour.
The I axis represents the luminance information. The H and S axes are polar coordinates on the plane orthogonal
to I. H is the angle, specified such that red is at zero, green at 120 degrees, and blue at 240 degrees. Hue thus
represents what humans implicitly understand as colour. S is the magnitude of the colour vector projected in the
plane orthogonal to I, and so represents the difference between pastel colours (low saturation) and vibrant colours
(high saturation). The main drawback of this colour space is that hue is undefined if saturation is zero, making
error propagation in transformations from the RGB colour space more complicated.
It should also be noted that, although the HSI colour space may be more intuitive, is not “perceptual”, in the
sense that small displacements of equal size in different parts of the colour space will be perceived by human
observers as changes of different magnitude. Attempts have been made to define such colour spaces: CIE-LAB
and CIE-LUV are two examples.
Inputs
Controls
Description
Convert from HSL color model (hue, saturation, lightness, as defined by Joblove and Greenberg in 1978) to linear
RGB. H is in degrees, S and L are in the same units as RGB. No gamma correction is applied to RGB after
conversion.
Inputs
Controls
Description
Convert from HSV color model (hue, saturation, value, as defined by A. R. Smith in 1978) to linear RGB. H is in
degrees, S and V are in the same units as RGB. No gamma correction is applied to RGB after conversion.
Inputs
Controls
Description
Inputs
Controls
(Un)premult / Boolean Off Divide the image by the alpha channel before processing, and re-
premult multiply it afterwards. Use if the input images are premultiplied.
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
Inputs
Controls
Description
Inputs
Controls
Clamp Black / Boolean Off All colors below 0 on output are set to 0.
clampBlack
Clamp White / Boolean Off All colors above 1 on output are set to 1.
clampWhite
(Un)premult / Boolean Off Divide the image by the alpha channel before processing, and re-
premult multiply it afterwards. Use if the input images are premultiplied.
Mix Luminance / Boolean On Mix luminance
mixLuminanceEnable
/ mixLuminance Double 0 Mix luminance
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
Inputs
Controls
Description
Convert from L*a*b color model to RGB (Rec.709 with D65 illuminant). L*a*b coordinates are divided by 100
for better visualization.
Inputs
Controls
Description
Convert from CIE L*a*b color space to CIE XYZ color space. L*a*b coordinates are divided by 100 for better
visualization.
Inputs
Controls
Description
Convert between the logarithmic encoding used in Cineon files and linear encoding.
This plugin may be used to customize the conversion between the linear and the logarithmic space, using different
parameters than the Kodak-recommended settings.
Inputs
Controls
Black / black Color r: 95 g: Value in the Cineon file that corresponds to black.
95 b:
95
White / white Color r: 685 Value in the Cineon file that corresponds to white.
g: 685
b: 685
Gamma / gamma Color r: 0.6 The film response gamma value.
g: 0.6
b: 0.6
(Un)premult / Boolean Off Divide the image by the alpha channel before processing, and re-
premult multiply it afterwards. Use if the input images are premultiplied.
Continued on next page
Description
Inputs
Controls
Description
Inputs
Controls
Read from file / Boolean Off Load color correction information from the .cc or .ccc file.
readFromFile
File / file N/A Specify the src ASC CDL file, on disk, to use for this transform. This
can be either a .cc or .ccc file. If .ccc is specified, the cccid is required.
Reload / reload Button Reloads specified files
CCC Id / cccId String If the source file is an ASC CDL CCC (color correction collection), this
specifies the id to lookup. OpenColorIO::Contexts (envvars) are obeyed.
Export / export N/A Export this grade as a ColorCorrection XML file (.cc), which can be
loaded with the OCIOFileTransform, or using a FileTransform in an
OCIO config. The file must not already exist.
Continued on next page
(Un)premult / Boolean Off Divide the image by the alpha channel before processing, and re-
premult multiply it afterwards. Use if the input images are premultiplied.
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
Inputs
Controls
(Un)premult / Boolean Off Divide the image by the alpha channel before processing, and re-
premult multiply it afterwards. Use if the input images are premultiplied.
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
Uses the OpenColorIO library to apply a colorspace conversion to an image sequence, so that it can be accurately
represented on a specific display device.
Inputs
Controls
Description
.cube (iridas_cube)
.look (iridas_look)
.mga (pandora_mga)
.m3d (pandora_m3d)
.spi1d (spi1d)
.spi3d (spi3d)
.spimtx (spimtx)
.cub (truelight)
.vf (nukevf)
Inputs
Controls
Supported formats:
.3dl (flame)
.3dl (lustre)
.ccc (ColorCorrectionCollection)
.cdl (ColorDecisionList)
.cc (ColorCorrection)
.csp (cinespace)
.lut (houdini)
.itx (iridas_itx)
.cube (iridas_cube)
.look (iridas_look)
.mga (pandora_mga)
.m3d (pandora_m3d)
.spi1d (spi1d)
.spi3d (spi3d)
.spimtx (spimtx)
.cub (truelight)
.vf (nukevf)
(Un)premult / Boolean Off Divide the image by the alpha channel before processing, and re-
premult multiply it afterwards. Use if the input images are premultiplied.
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
Inputs
Controls
(Un)premult / Boolean Off Divide the image by the alpha channel before processing, and re-
premult multiply it afterwards. Use if the input images are premultiplied.
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
OpenColorIO LookTransform
A ‘look’ is a named color transform, intended to modify the look of an image in a ‘creative’ manner (as opposed
to a colorspace definion which tends to be technically/mathematically defined).
Examples of looks may be a neutral grade, to be applied to film scans prior to VFX work, or a per-shot DI grade
decided on by the director, to be applied just before the viewing transform.
OCIOLooks must be predefined in the OpenColorIO configuration before usage, and often reference per-
shot/sequence LUTs/CCs.
See the ‘Look Combination’ parameter for further syntax details.
See opencolorio.org for look configuration customization examples.
Inputs
Controls
(Un)premult / Boolean Off Divide the image by the alpha channel before processing, and re-
premult multiply it afterwards. Use if the input images are premultiplied.
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
Inputs
Controls
Description
Inputs
Controls
Seed / seed Integer 2000 Random seed: change this if you want different instances to have differ-
ent dithering (only for random dithering).
Static Seed / Boolean Off When enabled, the dither pattern remains the same for every frame pro-
staticSeed ducing a constant dither effect.
(Un)premult / Boolean Off Divide the image by the alpha channel before processing, and re-
premult multiply it afterwards. Use if the input images are premultiplied.
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
Convert from RGB (Rec.709 with D65 illuminant) to L*a*b color model. L*a*b coordinates are divided by 100
for better visualization.
Inputs
Controls
Description
Convert from RGB (Rec.709 with D65 illuminant) to XYZ color model. X, Y and Z are in the same units as RGB.
Inputs
Controls
Description
Convert from linear RGB to HSI color model (hue, saturation, intensity, as defined by Gonzalez and Woods in
1992). H is in degrees, S and I are in the same units as RGB. No gamma correction is applied to RGB before
conversion.
The HSI colour space (hue, saturation and intensity) attempts to produce a more intuitive representation of colour.
The I axis represents the luminance information. The H and S axes are polar coordinates on the plane orthogonal
to I. H is the angle, specified such that red is at zero, green at 120 degrees, and blue at 240 degrees. Hue thus
represents what humans implicitly understand as colour. S is the magnitude of the colour vector projected in the
plane orthogonal to I, and so represents the difference between pastel colours (low saturation) and vibrant colours
(high saturation). The main drawback of this colour space is that hue is undefined if saturation is zero, making
error propagation in transformations from the RGB colour space more complicated.
It should also be noted that, although the HSI colour space may be more intuitive, is not “perceptual”, in the
sense that small displacements of equal size in different parts of the colour space will be perceived by human
observers as changes of different magnitude. Attempts have been made to define such colour spaces: CIE-LAB
and CIE-LUV are two examples.
Inputs
Controls
Description
Convert from RGB to HSL color model (hue, saturation, lightness, as defined by Joblove and Greenberg in 1978).
H is in degrees, S and L are in the same units as RGB. No gamma correction is applied to RGB before conversion.
Inputs
Controls
Description
Convert from linear RGB to HSV color model (hue, saturation, value, as defined by A. R. Smith in 1978). H is in
degrees, S and V are in the same units as RGB. No gamma correction is applied to RGB before conversion.
Inputs
Controls
Description
Convert from linear RGB to YCbCr color model (ITU.BT-601). RGB is gamma-compressed using the sRGB
Opto-Electronic Transfer Function (OETF) before conversion.
Inputs
Controls
Description
Convert from linear RGB to YCbCr color model (ITU.BT-709). RGB is gamma-compressed using the Rec.709
Opto-Electronic Transfer Function (OETF) before conversion.
Inputs
Controls
Description
Convert from RGB to YPbPr color model (ITU.BT-601). RGB is gamma-compressed using the sRGB Opto-
Electronic Transfer Function (OETF) before conversion.
Inputs
Controls
Description
Convert from RGB to YPbPr color model (ITU.BT-709). RGB is gamma-compressed using the Rec.709 Opto-
Electronic Transfer Function (OETF) before conversion.
Inputs
Controls
Description
Convert from RGB to YUV color model (ITU.BT-601). RGB is gamma-compressed using the sRGB Opto-
Electronic Transfer Function (OETF) before conversion.
Inputs
Controls
Description
Convert from RGB to YUV color model (ITU.BT-709). RGB is gamma-compressed using the Rec.709 Opto-
Electronic Transfer Function (OETF) before conversion.
Inputs
Controls
Description
Inputs
Controls
Description
Inputs
Controls
Y channel / Choice g
yChannel Selects the Y component of vectors
r: R channel from input.
g: G channel from input.
b: B channel from input.
a: A channel from input.
Description
Convert from CIE XYZ color space to CIE L*a*b color space. L*a*b coordinates are divided by 100 for better
visualization.
Inputs
Controls
Description
Convert from XYZ color model to RGB (Rec.709 with D65 illuminant). X, Y and Z are in the same units as RGB.
Inputs
Controls
Description
Convert from CIE XYZ color space to CIE xyY color space.
Inputs
Controls
Description
Convert from YCbCr color model (ITU.BT-601) to linear RGB. RGB is gamma-decompressed using the sRGB
Electro-Optical Transfer Function (EOTF) after conversion.
Inputs
Controls
Description
Convert from YCbCr color model (ITU.BT-709) to linear RGB. RGB is gamma-decompressed using the Rec.709
Electro-Optical Transfer Function (EOTF) after conversion.
Inputs
Controls
Description
Convert from YPbPr color model (ITU.BT-601) to RGB. RGB is gamma-decompressed using the sRGB Electro-
Optical Transfer Function (EOTF) after conversion.
Inputs
Controls
Description
Convert from YPbPr color model (ITU.BT-709) to RGB. RGB is gamma-decompressed using the Rec.709 Electro-
Optical Transfer Function (EOTF) after conversion.
Inputs
Controls
Description
Convert from YUV color model (ITU.BT-601) to RGB. RGB is gamma-decompressed using the sRGB Electro-
Optical Transfer Function (EOTF) after conversion.
Inputs
Controls
Description
Convert from YUV color model (ITU.BT-709) to RGB. RGB is gamma-decompressed using the Rec.709 Electro-
Optical Transfer Function (EOTF) after conversion.
Inputs
Controls
Description
Convert from CIE xyY color space to CIE XYZ color space.
Inputs
Controls
The following sections contain documentation about every node in the Filter group. Node groups are available by
clicking on buttons in the left toolbar, or by right-clicking the mouse in the Node Graph area.
Description
The Angle Blur effect gives the illusion of motion in a given direction.
Inputs
Controls
Description
Apply a Bloom filter (Kawase 2004) that sums multiple blur filters of different radii,
resulting in a larger but sharper glare than a simple blur.
It is similar to applying ‘Count’ separate Blur filters to the same input image with sizes ‘Size’, ‘Size’*‘Ratio’,
‘Size’*‘Ratio’^2, etc., and averaging the results.
The blur radii follow a geometric progression (of common ratio 2 in the original implementation, bloomRatio
in this implementation), and a total of bloomCount blur kernels are summed up (bloomCount=5 in the original
implementation, and the kernels are Gaussian).
The blur filter can be a quasi-Gaussian, a Gaussian, a box, a triangle or a quadratic filter.
Ref.: Masaki Kawase, “Practical Implementation of High Dynamic Range Rendering”, GDC 2004.
Uses the ‘vanvliet’ and ‘deriche’ functions from the CImg library.
CImg is a free, open-source library distributed under the CeCILL-C (close to the GNU LGPL) or CeCILL (com-
patible with the GNU GPL) licenses. It can be used in commercial applications (see http://cimg.eu).
Inputs
Controls
Expand RoD / Boolean Off Expand the source region of definition by 1.5*size (3.6*sigma).
expandRoD
Crop To Format / Boolean On If the source is inside the format and the effect extends it outside of the
cropToFormat format, crop it to avoid unnecessary calculations. To avoid unwanted
crops, only the borders that were inside of the format in the source clip
will be cropped.
Alpha Threshold / Double 0 If this value is non-zero, any alpha value below this is set to zero. This
alphaThreshold is only useful for IIR filters (Gaussian and Quasi-Gaussian), which may
produce alpha values very close to zero due to arithmetic precision. Re-
mind that, in theory, a black image with a single white pixel should pro-
duce non-zero values everywhere, but a few VFX tricks rely on the fact
that alpha should be zero far from the alpha edges (e.g. the premult-blur-
unpremult trick to fill holes)). A threshold value of 0.003 is reasonable,
and values between 0.001 and 0.01 are usually enough to remove these
artifacts.
(Un)premult / Boolean Off Divide the image by the alpha channel before processing, and re-
premult multiply it afterwards. Use if the input images are premultiplied.
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
Inputs
Controls
Expand RoD / Boolean On Expand the source region of definition by 1.5*size (3.6*sigma).
expandRoD
Crop To Format / Boolean On If the source is inside the format and the effect extends it outside of the
cropToFormat format, crop it to avoid unnecessary calculations. To avoid unwanted
crops, only the borders that were inside of the format in the source clip
will be cropped.
Alpha Threshold / Double 0 If this value is non-zero, any alpha value below this is set to zero. This
alphaThreshold is only useful for IIR filters (Gaussian and Quasi-Gaussian), which may
produce alpha values very close to zero due to arithmetic precision. Re-
mind that, in theory, a black image with a single white pixel should pro-
duce non-zero values everywhere, but a few VFX tricks rely on the fact
that alpha should be zero far from the alpha edges (e.g. the premult-blur-
unpremult trick to fill holes)). A threshold value of 0.003 is reasonable,
and values between 0.001 and 0.01 are usually enough to remove these
artifacts.
Continued on next page
Description
Blur the chrominance of an input stream. Smoothing is done on the x and y components in the CIE xyY color
space. Used to prep strongly compressed and chroma subsampled footage for keying.
The blur filter can be a quasi-Gaussian, a Gaussian, a box, a triangle or a quadratic filter.
Uses the ‘vanvliet’ and ‘deriche’ functions from the CImg library.
CImg is a free, open-source library distributed under the CeCILL-C (close to the GNU LGPL) or CeCILL (com-
patible with the GNU GPL) licenses. It can be used in commercial applications (see http://cimg.eu).
Inputs
Controls
(Un)premult / Boolean Off Divide the image by the alpha channel before processing, and re-
premult multiply it afterwards. Use if the input images are premultiplied.
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
Description
This plugin allows the separate denoising of image channels in multiple color spaces using wavelets, using the
BayesShrink algorithm, and can also sharpen the image details.
Noise levels for each channel may be either set manually, or analyzed from the image data in each wavelet subband
using the MAD (median absolute deviation) estimator. Noise analysis is based on the assumption that the noise
is Gaussian and additive (it is not intensity-dependent). If there is speckle or salt-and-pepper noise in the images,
the Median or SmoothPatchBased filters may be more appropriate. The color model specifies the channels and the
transforms used. Noise levels have to be re-adjusted or re-analyzed when changing the color model.
Basic Usage
• The R’G’B’ color model uses the Rec.709 opto-electronic transfer function to convert from RGB to R’G’B’.
• The RGB color model (linear) makes no assumption about the RGB color space, and works directly on the
RGB components, assuming additive noise. This is the only option if the noisy source contains negative
values. If, say, the noise is known to be multiplicative, one can convert the images to Log before denoising,
use this option, and convert back to linear after denoising.
• The Alpha channel, if processed, is always considered to be linear.
The simplest way to use this plugin is to leave the noise analysis area to the whole image, and click “Analyze
Noise Levels”. Once the analysis is done, “Lock Noise Analysis” is checked in order to avoid modifying the
essential parameters by mistake.
If the image has many textured areas, it may be preferable to select an analysis area with flat colors, free from any
details, shadows or highlights, to avoid considering texture as noise. The AnalysisMask input can be used to mask
the analysis, if the rectangular area is not appropriate. Any non-zero pixels in the mask are taken into account.
A good option for the AnalysisMask would be to take the inverse of the output of an edge detector and clamp it
correctly so that all pixels near the edges have a value of zero..
If the sequence to be denoised does not have enough flat areas, you can also connect a reference footage with the
same kind of noise to the AnalysisSource input: that source will be used for the analysis only. If no source with
flat areas is available, and noise analysis can only be performed on areas which also contain details, it is often
preferable to disable very low, low, and sometimes medium frequencies in the “Frequency Tuning” parameters
group, or at least to lower their gain, since they may be misestimated by the noise analysis process. If the noise
is IID (independent and identically distributed), such as digital sensor noise, only “Denoise High Frequencies”
should be checked. If the noise has some grain (i.e. it commes from lossy compression of noisy images by a
camera, or it is scanned film), then you may want to enable medium frequencies as well. If low and very low
frequencies are enabled, but the analysis area is not a flat zone, the signal itself (i.e. the noise-free image) could
be considered as noise, and the result may exhibit low contrast and blur.
To check what details have been kept after denoising, you can raise the Sharpen Amount to something like 10,
and then adjust the Noise Level Gain to get the desired denoising amount, until no noise is left and only image
details remain in the sharpened image. You can then reset the Sharpen Amount to zero, unless you actually want
to enhance the contrast of your denoised footage.
You can also check what was actually removed from the original image by selecting the “Noise” Output mode
(instead of “Result”). If too many image details are visible in the noise, noise parameters may need to be tuned.
This plugin was compiled with OpenMP support.
Inputs
Controls
Lock Analysis and Boolean Off Lock all noise analysis parameters and apply denoising. When the anal-
Apply / ysis is not locked, the source image is output.
analysisLock
Bottom Left / Double x: 0.1 Coordinates of the bottom left corner of the analysis rectangle. This
bottomLeft y: 0.1 rectangle is intersected with the AnalysisMask input, if connected.
Size / size Double w: 0.8 Width and height of the analysis rectangle. This rectangle is intersected
h: 0.8 with the AnalysisMask input, if connected.
Continued on next page
Description
Dilate (or erode) input stream by a rectangular structuring element of specified size and Neumann boundary
conditions (pixels out of the image get the value of the nearest pixel).
A negative size will perform an erosion instead of a dilation.
Different sizes can be given for the x and y axis.
Uses the ‘dilate’ and ‘erode’ functions from the CImg library.
CImg is a free, open-source library distributed under the CeCILL-C (close to the GNU LGPL) or CeCILL (com-
patible with the GNU GPL) licenses. It can be used in commercial applications (see http://cimg.eu).
Inputs
Controls
Description
Inputs
Controls
Clamp / clamp Boolean Off Clamp filter output within the original range - useful to avoid negative
values in mattes
Black outside / Boolean Off Fill the area outside the source image with black
black_outside
Motion Blur / Double 1 Quality of motion blur rendering. 0 disables motion blur, 1 is a good
motionBlur value. Increasing this slows down rendering.
Amount / amount Double 1 Amount of blur transform to apply. A value of 1 means to apply the full
transform range. A value of 0 means to apply no blur at all. Default is
1.
Centered / Boolean Off When checked, apply directional blur symmetrically around the neutral
centered position.
Fading / fading Double 0 Controls the fading function. A value of 1 corresponds to linear fading.
A value of 0 disables fading. Default is 0.
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
Compute at each pixel the distance to pixels that have a value of zero.
The distance is normalized with respect to the largest image dimension, so that it is between 0 and 1.
Optionally, a signed distance to the frontier between zero and nonzero values can be computed.
The distance transform can then be thresholded using the Threshold effect, or transformed using the ColorLookup
effect, in order to generate a mask for another effect.
See alse https://en.wikipedia.org/wiki/Distance_transform
Uses the ‘distance’ function from the CImg library.
CImg is a free, open-source library distributed under the CeCILL-C (close to the GNU LGPL) or CeCILL (com-
patible with the GNU GPL) licenses. It can be used in commercial applications (see http://cimg.eu).
Inputs
Controls
Signed Distance / Boolean Off Instead of computing the distance to pixels with a value of zero, com-
signed pute the signed distance to the contour between zero and non-zero pix-
els. On output, non-zero-valued pixels have a positive signed distance,
zero-valued pixels have a negative signed distance.
(Un)premult / Boolean Off Divide the image by the alpha channel before processing, and re-
premult multiply it afterwards. Use if the input images are premultiplied.
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
Creates a drop shadow on the source image using its alpha channel.
Inputs
Controls
Description
Blur the image where there are edges in the alpha/matte channel.
Inputs
Controls
Description
Perform edge detection by computing the image gradient magnitude. Optionally, edge detection can be preceded
by blurring, and followed by erosion and thresholding. In most cases, EdgeDetect is followed a Grade node to
extract the proper edges and generate a mask from these.
For color or multi-channel images, several edge detection algorithms are proposed to combine the gradients com-
puted in each channel:
• Separate: the gradient magnitude is computed in each channel separately, and the output is a color edge
image.
• RMS: the RMS of per-channel gradients magnitudes is computed.
• Max: the maximum per-channel gradient magnitude is computed.
• Tensor: the tensor gradient norm [1].
References:
• [1] Silvano Di Zenzo, A note on the gradient of a multi-image, CVGIP 33, 116-125 (1986). http://people.
csail.mit.edu/tieu/notebook/imageproc/dizenzo86.pdf
CImg is a free, open-source library distributed under the CeCILL-C (close to the GNU LGPL) or CeCILL (com-
patible with the GNU GPL) licenses. It can be used in commercial applications (see http://cimg.eu).
Inputs
Controls
Description
Fill a matte (i.e. a non-opaque color image with an alpha channel) by extending the edges of the matte. This effect
does nothing an an opaque image.
If the input matte comes from a keyer, the alpha channel of the matte should be first eroded by a small amount
to remove pixels containing mixed foreground/background colors. If not, these mixed colors may be extended
instead of the pure foreground colors.
The filling process works by iteratively blurring the image, and merging the non-blurred image over the image
to get to the next iteration. There are exactly ‘Slices’ such operations. The blur size at each iteration is linearly
increasing.
‘Size’ is thus the total size of the edge extension, and ‘Slices’ is an indicator of the precision: the more slices there
are, the sharper is the final image near the original edges.
Optionally, the image can be multiplied by the alpha channel on input (premultiplied), and divided by the alpha
channel on output (unpremultiplied), so that if RGB contain an image and Alpha contains a mask, the output is an
image where the RGB is smeared from the non-zero areas of the mask to the zero areas of the same mask.
The ‘Size’ parameter gives the size of the largest blur kernel, ‘Count’ gives the number of blur kernels, and
‘Ratio’ gives the ratio between consecutive blur kernel sizes. The size of the smallest blur kernel is thus
‘Size’/‘Ratio’^(‘Count’-1)
To get the classical single unpremult-blur-premult, use ‘Count’=1 and set the size to the size of the blur kernel.
However, near the mask borders, a frontier can be seen between the non-blurred area (this inside of the mask) and
the blurred area. Using more blur sizes will give a much smoother transition.
The idea for the builtup blurs to expand RGB comes from the EdgeExtend effect for Nuke by Frank Rueter (except
the blurs were merged from the smallest to the largest, and here it is done the other way round), with suggestions
by Lucas Pfaff.
CImg is a free, open-source library distributed under the CeCILL-C (close to the GNU LGPL) or CeCILL (com-
patible with the GNU GPL) licenses. It can be used in commercial applications (see http://cimg.eu).
Inputs
Controls
Expand RoD / Boolean On Expand the source region of definition by 1.5*size (3.6*sigma).
expandRoD
Crop To Format / Boolean On If the source is inside the format and the effect extends it outside of the
cropToFormat format, crop it to avoid unnecessary calculations. To avoid unwanted
crops, only the borders that were inside of the format in the source clip
will be cropped.
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
Erode (or dilate) input stream by a rectangular structuring element of specified size and Neumann boundary
conditions (pixels out of the image get the value of the nearest pixel).
A negative size will perform a dilation instead of an erosion.
Different sizes can be given for the x and y axis.
Uses the ‘erode’ and ‘dilate’ functions from the CImg library.
CImg is a free, open-source library distributed under the CeCILL-C (close to the GNU LGPL) or CeCILL (com-
patible with the GNU GPL) licenses. It can be used in commercial applications (see http://cimg.eu).
Inputs
Controls
Description
Performs an operation that looks like an erosion or a dilation by smoothing the image and then remapping the
values of the result.
The image is first smoothed by a triangle filter of width 2*abs(size).
Now suppose the image is a 0-1 step edge (I=0 for x less than 0, I=1 for x greater than 0). The intensities are
linearly remapped so that the value at x=size-0.5 is mapped to 0 and the value at x=size+0.5 is mapped to 1.
This process usually works well for mask images (i.e. images which are either 0 or 1), but may give strange results
on images with real intensities, where another Erode filter has to be used.
CImg is a free, open-source library distributed under the CeCILL-C (close to the GNU LGPL) or CeCILL (com-
patible with the GNU GPL) licenses. It can be used in commercial applications (see http://cimg.eu).
Inputs
Controls
Description
Inputs
Controls
Expand RoD / Boolean On Expand the source region of definition by 1.5*size (3.6*sigma).
expandRoD
(Un)premult / Boolean Off Divide the image by the alpha channel before processing, and re-
premult multiply it afterwards. Use if the input images are premultiplied.
Invert Mask / Boolean Off When checked, the effect is fully applied where the mask is 0.
maskInvert
Mix / mix Double 1 Mix factor between the original and the transformed image.
Description
Add a constant color on the source image where the alpha channel not 0. You can control the blending between
the original image and the constant color with the operator and the mix factor.
Inputs
Controls
Description
Quickly generate or process image from mathematical formula evaluated for each pixel. Full documentation for
G’MIC/CImg expressions is reproduced below and available online from the G’MIC help. The only additions of
this plugin are the predefined variables T (current time) and K (render scale).
Uses the ‘fill’ function from the CImg library. CImg is a free, open-source library distributed under the CeCILL-C
(close to the GNU LGPL) or CeCILL (compatible with the GNU GPL) licenses. It can be used in commercial
applications (see http://cimg.eu).
Sample expressions
Expression language
* ‘xm’,‘ym’,‘zm’,‘cm’: The pixel coordinates of the minimum value in the associated image, if any
(0 otherwise).
* ‘xM’,‘yM’,‘zM’,‘cM’: The pixel coordinates of the maximum value in the associated image, if any
(0 otherwise).
* All these variables are considered as constant values by the math parser (for optimization pur-
poses) which is indeed the case most of the time. Anyway, this might not be the case, if function
‘resize(#ind,..)’ is used in the math expression. If so, it is safer to invoke functions ‘l()’,
‘w(_#ind)’, ‘h(_#ind)’, . . . ‘s(_#ind)’ and ‘ic(_#ind)’ instead of the corresponding
named variables.
* ‘i’: current processed pixel value (i.e. value located at (x,y,z,c)) in the associated image, if any
(0 otherwise).
* ‘iN’: Nth channel value of current processed pixel (i.e. value located at (x,y,z,N)) in the associated
image, if any (0 otherwise). ‘N’ must be an integer in range [0,9].
* ‘R’,‘G’,‘B’ and ‘A’ are equivalent to ‘i0’, ‘i1’, ‘i2’ and ‘i3’ respectively.
* ‘I’: current vector-valued processed pixel in the associated image, if any (0 otherwise). The
number of vector components is equal to the number of image channels (e.g. I = [ R,G,B ] for a
RGB image).
* You may add ‘#ind’ to any of the variable name above to retrieve the information for any num-
bered image [ind] of the list (when this makes sense). For instance ‘ia#0’ denotes the average
value of the first image of the list).
* ‘boundary’: value of the default boundary conditions used when reading pixel values with the
pixel access operators (i.e. when the boundary condition argument is not explicitly specified, see
below for more details on pixel access operators). Its initial default value is 0.
– Vector calculus: Most operators are also able to work with vector-valued elements.
* In both previous expressions, the ak can be vectors themselves, to be concatenated into a single
vector.
* A 2-dimensional vector may be seen as a complex number and used in those particular
functions/operators: ‘**’ (complex multiplication), ‘//’ (complex division), ‘^^’ (complex
exponentiation), ‘**=’ (complex self-multiplication), ‘//=’ (complex self-division), ‘^^=’
(complex self-exponentiation), ‘cabs()’ (complex modulus), ‘carg()’ (complex argument),
‘cconj()’ (complex conjugate), ‘cexp()’ (complex exponential) and ‘clog()’ (complex
logarithm).
* A MN-dimensional vector may be seen as a M x N matrix and used in those particular func-
tions/operators: ‘*’ (matrix-vector multiplication), ‘det(A)’ (determinant), ‘diag(V)’ (di-
agonal matrix from a vector), ‘eig(A)’ (eigenvalues/eigenvectors), ‘eye(n)’ (n x n iden-
tity matrix), ‘inv(A)’ (matrix inverse), ‘mul(A,B,_nb_colsB)’ (matrix-matrix multi-
plication), ‘pseudoinv(A,_nb_colsA)’, ‘rot(u,v,w,angle)’ (3d rotation matrix),
‘rot(angle)’ (2d rotation matrix), ‘solve(A,B,_nb_colsB)’ (least-square solver of lin-
ear system A.X = B), ‘svd(A,_nb_colsA)’ (singular value decomposition), ‘trace(A)’
(matrix trace) and ‘transp(A,nb_colsA)’ (matrix transpose). Argument ‘nb_colsB’ may
be omitted if it is equal to 1.
* [ 'string' ] and 'string' define a vector whose values are the ascii codes of the specified
character string (e.g. 'foo' is equal to [ 102,111,111 ]).
* _'character' returns the (scalar) ascii code of the specified character (e.g. _'A' is equal to
65).
* A special case happens for empty strings: Values of both expressions [ '' ] and '' are 0.
* Functions ‘lowercase()’ and ‘uppercase()’ return string with all string characters lower-
cased or uppercased.
* ‘;’: expression separator. The returned value is always the last encountered expression. For
instance expression ‘1;2;pi’ is evaluated as ‘pi’.
* ‘=’: variable assignment. Variables in mathematical parser can only refer to numerical values
(vectors or scalars). Variable names are case-sensitive. Use this operator in conjunction with ‘;’
to define more complex evaluable expressions, such as ‘t=cos(x);3*t^2+2*t+1’. These
variables remain local to the mathematical parser and cannot be accessed outside the evaluated
expression.
* Variables defined in math parser may have a constant property, by specifying keyword const
before the variable name (e.g. const foo = pi/4;). The value set to such a variable must
be indeed a constant scalar. Constant variables allows certain types of optimizations in
the math JIT compiler.
– The following specific functions are also defined: