How Nodes Concatenate
Concatenation is behavior that some Nuke nodes perform when you have several nodes transforming your image one after another. When nodes concatenate, they pass on these adjacent transformation operations to the last transforming node in the row, and the last node then performs all the transformations at once.
For example, if you have three Transform nodes in a row, instead of performing each transformation separately and filtering the input image three times, Nuke combines the transformations into one operation and only filters the image once. As filtering unavoidably destroys some image detail, it’s important to concatenate as many nodes as possible in order to preserve image quality.
In the example are three Transform nodes that concatenate. The image is only filtered once. Inserting a Crop node between the Transform nodes breaks concatenation. The image is filtered twice, resulting in poor image quality.
|
|
In order to concatenate, the concatenating nodes have to be adjacent. So, if you have a node that doesn’t concatenate (a Crop node for example) between two concatenating nodes (Transform nodes for example), no concatenation occurs.
If you’re using more than one filtering method in the nodes that concatenate, the last filtering method in the series of concatenating nodes is applied on the result.
|
When nodes concatenate, Nuke only uses the filtering method set on the last concatenating node (in this case, the filtering method used is Mitchell). |
As a rule of thumb, the only nodes that concatenate are usually transform nodes. Disabled nodes and a few others, such as Dot and Switch, do not break concatenation.
Color nodes do not concatenate because Nuke works in a 32-bit float, which is enough to avoid banding and visible round-off errors in color.
Please be aware that some transform nodes do not concatenate and should not be interspersed with those that do. There are also transform nodes that receive concatenation, but don’t pass anything on.
Nodes that concatenate |
Only concatenate upstream |
Do not concatenate |
AddChannels |
BasicMaterial |
AdjustBbox |
Assert |
Diffuse |
BlackOutside |
Card3D |
DisplaceGeo |
Crop |
CornerPin |
Displacement |
Mirror |
Disabled nodes |
Emission |
PlanarTracker |
Dot |
Environment |
PointsTo3D |
NoOp |
Flare |
Position |
PointsTo3D |
GridWarp |
TVIScale |
PostageStamp |
IDistort |
|
PrintHash |
LensDistortion |
|
Reconcile3D |
MotionBlur2D |
|
Reformat |
Phong |
|
Remove |
Sparks |
|
Sampler |
Specular |
|
Stabilize |
SphericalTransform |
|
Switch |
SplineWarp |
|
Tracker |
STMap |
|
Transform |
Tile |
|
TransformMasked |
GPU Caching
GPU caching cuts down processing overheads when data is passed from the CPU to the GPU and back again by keeping the data on the GPU between cache-enabled nodes. When nodes support GPU caching, they pass on the GPU data to the last node that supports GPU caching and then transfer all the data back to the CPU at once.
GPU caching is supported by all CaraVR nodes, the updated Bilateral2 and SphericalTransform2 nodes, and the BlinkScript node.
For example, if you have three GPU caching nodes in a row, instead of transferring from the CPU to the GPU and back to the CPU three times, Nuke performs all the computation on the GPU and then transfers the data back to the CPU once, at the end of the node tree.
In the example, the three cached nodes only transfer data back from the GPU once after the C_ColourMatcher. Inserting a Grade node between the cached nodes breaks the cached sequence. Nuke now transfers data twice for the same operation, once after the C_GlobalWarp and again after the C_ColourMatcher.
|
|
You can control the size of the GPU memory and the percentage of that memory available for caching in Nuke's Preferences under Performance > Hardware. You can also disable GPU caching in the Preferences.
Note: Increasing the percentage of memory used for caching does not necessarily decrease processing time, and can in some cases have a negative effect. The default 40% is preferred in most instances.
You can clear the Blink Cache by clicking Nuke's Cache menu and selecting Clear Blink Cache or Clear All.