Oink

Node reference

All 169 node types: inputs, knobs, defaults, .nk classes.

raw .md

Every node in Oink, grouped like the node menu (Tab or the left toolbar). Each page lists the node's inputs, every knob with its default and range, and the class it reads and writes in .nk files.

169 node types. Nodes from installed OFX plugins are not listed here, see OFX plugins.

Input/Output

Node.nk classSummary
Read nodeReadReadReads images from disk.
Write nodeWriteWriteRenders its input to files on disk (Render > Render All, F5).
Viewer nodeViewerViewerShows its input in the Viewer.

Color

Node.nk classSummary
Grade nodeGradeGradeAdjusts the colour range: blackpoint/whitepoint set the input range, lift/gain the output range, then multiply, offset and gamma.
CDL nodeCDLOCIOCDLTransformASC CDL (OCIOCDLTransform): slope, offset, power, saturation, direction.
Constant nodeConstantConstantGenerate a solid colour image.
ColorCorrect nodeColorCorrectColorCorrectSaturation, contrast, gamma, gain and offset, separately for shadows, midtones and highlights.
Saturation nodeSaturationSaturationScale colour away from / towards its luminance.
Clamp nodeClampClampClamp channel values to a range.
Invert nodeInvertInvert1 - value on the selected channels.
Expression nodeExpressionExpressionPer-channel pixel expressions.
OCIOColorSpace nodeOCIOColorSpaceOCIOColorSpaceConvert between two OCIO colour spaces.
Colorspace nodeColorspaceColorspaceClassic transfer-curve / HSV / YCbCr conversion.
Multiply nodeMultiplyMultiplyIn * value.
Add nodeAddAddIn + value.
Gamma nodeGammaGammaIn ^ (1 / value).
ClipTest nodeClipTestClipTestZebra stripes where values leave lower..upper.
ColorLookup nodeColorLookupColorLookupPer-channel colour curves.
OCIODisplay nodeOCIODisplayOCIODisplayApply an OCIO display / view transform.
OCIOFileTransform nodeOCIOFileTransformOCIOFileTransformApply a LUT / colour transform file (.cube, .3dl, .spi1d, ...).
Sampler nodeSamplerSamplerOne scanline of the input as lookup curves (image passes through).
HueCorrect nodeHueCorrectHueCorrectCurves over hue (red, yellow, green, cyan, blue, magenta) that change saturation, luminance and red / green / blue gain, and suppress a channel (r_sup / g_sup / b_sup) for the hues you choose, e.g.

Keyer

Node.nk classSummary
Keyer nodeKeyerKeyerA basic keyer.
IBKColour nodeIBKColourIBKColourV3Makes a clean plate for IBKGizmo.
IBKGizmo nodeIBKGizmoIBKGizmoV3Image based keyer.
ScreenKey nodeScreenKeyScreenKeyGreen / blue screen keyer with the controls of a Keylight-style keyer: screen colour, gain and balance, clip black / white, shrink / grow, softness, despill with bias, and inside / outside masks.
Despill nodeDespillDespillRemoves green or blue spill by limiting the screen channel to what the other two allow: their average (balance) or their maximum (limit).
Cryptomatte nodeCryptomatteCryptomatteMattes from Cryptomatte ID layers.

Filter

Node.nk classSummary
Blur nodeBlurBlurBlurs the image with a box, triangle, quadratic or gaussian filter; size is the filter's width in pixels (gaussian: its width at half height), separately for width and height.
Sharpen nodeSharpenSharpenUnsharp mask — the image plus amount times its difference from a blur of it (size, filter, quality as Blur).
DegrainSimple nodeDegrainSimpleDegrainSimplePer-channel blur against grain.
DegrainBlue nodeDegrainBlueDegrainBlueBlur only the blue channel (where most grain is).
EdgeBlur nodeEdgeBlurEdgeBlurBlurs the image only along the edges of a matte (control channel, alpha by default); size, filter, quality and crop set the blur as in Blur, edge mult (2 by default) sets how wide and strong the blurred edge is, tint / brightness colour the blur, output writes the amount to a channel.
Erode nodeErodeErodeErode (blur): moves the edges of a black and white matte by size pixels (positive shrinks it; the default is -1, which grows it) through a blur, with a soft one-pixel edge; blur softens the result and quality sets the blur quality.
Dilate nodeDilateDilateErode (fast): grows light areas (size > 0) or dark areas (size < 0) by that many pixels with a box minimum / maximum.
FilterErode nodeFilterErodeFilterErodeErode (filter): grows dark areas (size > 0) or light areas (size < 0) by a filter-weighted maximum; box is the fastest, gaussian the softest.
Glow2 nodeGlow2Glow2Makes bright areas glow — the parts above tolerance are blurred (size, filter, quality as Blur), tinted, saturated, scaled by brightness and added to the image.
Defocus nodeDefocusDefocusBlurs the image with a lens disc (bokeh): defocus is the disc's radius in pixels, aspect ratio squeezes it.
VectorBlur2 nodeVectorBlur2VectorBlur2VectorBlur: motion blur along motion vectors — every pixel is smeared along its u / v vector (uv channels) times motion amount (0.5), over the shutter set by motion offset (-0.5 centres it).
ZDefocus nodeZDefocusZDefocus2Depth of field from a depth channel — the image is cut into depth layers, each blurred by its distance from the focus plane and laid back over the others from the back to the front.
MotionBlur nodeMotionBlurMotionBlurRealistic motion blur worked out from the motion in the clip itself (Kronos' motion estimation): Shutter Samples in-between images over Shutter Time frames, averaged.
MotionBlur2D nodeMotionBlur2DMotionBlur2DMotion vectors from a 2D transform.
MotionBlur3D nodeMotionBlur3DMotionBlur3DBlur from camera motion and depth.
VectorBlur nodeVectorBlurMotion blur along a vector layer (motion from AIVectorGenerator, ScanlineRender, Cycles or EEVEE).

Time

Node.nk classSummary
FrameBlend nodeFrameBlendFrameBlendAverage several frames.
FrameHold nodeFrameHoldFrameHoldShows one frame of the input at every frame (increment 0), or every Nth frame from the first frame.
FrameRange nodeFrameRangeFrameRangeSets the clip's frame range with first_frame and last_frame (what the timeline shows with the range source on Input, and what Retime / Kronos take as their input range).
Kronos nodeKronosKronosRetimes a clip with motion vectors.
NoTimeBlur nodeNoTimeBlurNoTimeBlurPassthrough: Oink evaluates whole frames only, so upstream never sees a fractional time to round (the rounding knob is kept for .nk).
Retime nodeRetimeRetimeMaps the input range onto an output range at a speed (both output ends locked: the speed that fits), with reverse, before / after (continue, loop, bounce, hold, black), a box filter whose width is speed x shutter, and a warp curve on the TimeWarp tab.
TimeBlur nodeTimeBlurTimeBlurAverage the input over the shutter.
TimeOffset nodeTimeOffsetTimeOffsetMoves a clip in time by time offset frames (positive = later; Mode sets whole or fractional frames); reverse input plays the input's frame range backwards.
TimeWarp nodeTimeWarpTimeWarpShows input frame input frame (usually an animated curve) at the current frame.

Deep

Node.nk classSummary
DeepRead nodeDeepReadDeepReadReads a deep EXR (per-pixel sample lists); a flat file is read as one sample per pixel.
DeepToImage nodeDeepToImageDeepToImage2Flatten deep samples into a 2D image.
DeepMerge nodeDeepMergeDeepMerge2Combine two deep streams (or hold one out by the other).
DeepHoldout nodeDeepHoldoutDeepHoldout2Main held out by the holdout's deep samples, flattened.
DeepTransform nodeDeepTransformDeepTransformMove deep samples in x / y (whole pixels) and z (offset, scale).
DeepCrop nodeDeepCropDeepCropKeep samples inside a bbox and a depth range.
DeepRecolor nodeDeepRecolorDeepRecolorGive deep samples the colour of a flat image: each sample's rgb = colour.rgb * sample alpha / the deep image's flattened alpha, so the recoloured deep flattens back to the colour image (times the deep coverage).
DeepFromImage nodeDeepFromImageDeepFromImageA flat image as one deep sample per pixel (OIIO deepen).
DeepReformat nodeDeepReformatDeepReformatDeepReformat (first cut) — change the format by cropping / padding, no resampling.

Merge

Node.nk classSummary
AddMix nodeAddMixAddMixA * lutA(a) + B * lutB(a).
Dissolve nodeDissolveDissolveMix between inputs by which.
KeyMix nodeKeyMixKeyMixCopy A onto B through a mask.
Merge nodeMergeMerge2Layers the A input with the B input using the chosen operation (30 operations, over by default).
MergeExpression nodeMergeExpressionMergeExpressionPer-channel expressions of A and B.
Premult nodePremultPremultMultiply colour by alpha.
Switch nodeSwitchSwitchPass one of its inputs through (which).
Unpremult nodeUnpremultUnpremultDivide colour by alpha.
Difference nodeDifferenceDifferenceMatte of where A and B differ.

Channel

Node.nk classSummary
Shuffle nodeShuffleShuffle2Rearranges channels: drag wires from the input layers (in1 / in2, each read from the B or the A input) to the output layers (out1 / out2).
Copy nodeCopyCopyCopy channels from A into the B stream.
ChannelMerge nodeChannelMergeChannelMergeCombine one channel of A and B.
Remove nodeRemoveRemoveRemove or keep channels / layers.

Transform

Node.nk classSummary
Transform nodeTransformTransformTranslates, rotates, scales and skews the image around the center point.
Crop nodeCropCropCuts the image to a box; outside is black, or the format is reset to the box.
Reformat nodeReformatReformatResizes the image to another format, box or scale, with a choice of filter.
Position nodePositionPositionWhole-pixel move of the bbox, no filtering.
Tracker nodeTrackerTracker4Ctrl+Alt+click in the Viewer adds a track; drag its box to place it (sets a keyframe).
CornerPin2D nodeCornerPin2DCornerPin2DWarps the image so the from1-4 corners land on to1-4.
CameraTracker nodeCameraTrackerCameraTrackerTrack Features, then Solve Camera.
PlanarTracker nodePlanarTrackerSet corner1-4 around a flat surface at the reference frame, Track, then Export a CornerPin2D (relative = from the reference frame, absolute = from the full format).
CameraMatch nodeCameraMatchCameraMatch (fSpy-style): drag two lines per vanishing point over edges that are parallel in the scene (red X, green Y, blue Z), put the origin on the ground, optionally a reference distance.
LensDistortion nodeLensDistortionLensDistortion2Undistort / redistort with radial k1, k2 (same model as the CameraTracker solve).
STMap nodeSTMapSTMapEach pixel reads src at (red, green) x the src format.
IDistort nodeIDistortIDistortDisplace pixels by a UV layer.
Card3D nodeCard3DCard3DImage on a 3D card through a camera.
Upscale nodeUpscaleUpscale2x (Lanczos; ML when ml is on).
LD_3DE_Classic_LD_Model nodeLD_3DE_Classic_LD_ModelLD_3DE_Classic_LD_Model3DEqualizer lens distortion (classic).
LD_3DE4_Radial_Standard_Degree_4 nodeLD_3DE4_Radial_Standard_Degree_4LD_3DE4_Radial_Standard_Degree_43DEqualizer lens distortion (radial4).
LD_3DE4_Anamorphic_Standard_Degree_4 nodeLD_3DE4_Anamorphic_Standard_Degree_4LD_3DE4_Anamorphic_Standard_Degree_43DEqualizer lens distortion (anamorphic4).
LD_3DE4_Anamorphic_Degree_6 nodeLD_3DE4_Anamorphic_Degree_6LD_3DE4_Anamorphic_Degree_63DEqualizer lens distortion (anamorphic6).
LD_3DE4_Radial_Fisheye_Degree_8 nodeLD_3DE4_Radial_Fisheye_Degree_8LD_3DE4_Radial_Fisheye_Degree_83DEqualizer lens distortion (fisheye8).
VectorDistort nodeVectorDistortPaint or patch the reference frame (Source), connect AIVectorGenerator to SmartVector, and the paint follows the motion through the shot.

Draw

Node.nk classSummary
Roto nodeRotoRotoIn the Viewer pick Bezier or B-spline (V), click points (drag = smooth tangent), click the first point or Enter to close.
RotoPaint nodeRotoPaintRotoPaintNuke RotoPaint (P): the Roto shapes, output rgba by default.
Text2 nodeText2Text2Draw text over the input.
Slate nodeSlateA VFX review slate on the slate frame, burn-ins on the other frames.
ColorBars nodeColorBarsColorBarsColour test bars.
CheckerBoard2 nodeCheckerBoard2CheckerBoard2Checker test pattern.
Noise nodeNoiseNoiseFractal Perlin noise.
Grain nodeGrainGrain2Synthetic film grain.

AI

Node.nk classSummary
AIRoto nodeAIRotoClick on the plate in the Viewer to add an object (Shift/Alt+click removes, drag draws a box); the mask shows at once.
AIDepth nodeAIDepthAnalyze runs Video Depth Anything Small (Apache-2.0, temporally stable) over the frames and aligns it to MoGe-2 (MIT) metric depth on a few keyframes.
AINormals nodeAINormalsAnalyze runs MoGe-2 (MIT) per frame: N layer = normals in camera space (X right, Y up, +Z to camera), or world space when a camera is connected to cam.
AIMaterials nodeAIMaterialsAnalyze runs Cosmos DiffusionRenderer 7B (NVIDIA Open Model License, optional: accept the licence first, ~29 GB download) over the frames in overlapping 57-frame windows and outputs layers albedo (linear base colour), N (camera-space normals like AINormals), roughness, metallic and depth (relative).
AIUpscale nodeAIUpscaleAI super-resolution with float-correct encoding.
AIDenoise nodeAIDenoiseDenoise CG renders with OIDN (albedo + normal aware).
AIMatteRefine nodeAIMatteRefineTurns a rough matte (matte input, e.g.
AIKeyer nodeAIKeyerGreen/blue screen colour-difference keyer (screen colour auto or picked, balance, clip black/white) with float-correct despill (none, limit, or IBK-style subtract).
AIVectorGenerator nodeAIVectorGeneratorGenerate runs optical flow (SEA-RAFT, BSD-3) in the AI worker and caches vectors per frame.
GenFill nodeGenFillGenerative fill: replace the masked region from a text prompt.
GenVideo nodeGenVideoGenerative video: text / image / first+last / extension / video-to-video.
AICleanPlate nodeAICleanPlateRemoves the masked object (Mask = AIRoto / Roto / any alpha).
FrameFixer nodeFrameFixerRebuilds dropped or damaged frames from their neighbours.
PlateDenoise nodePlateDenoiseDenoises camera plates (AIDenoise is for CG renders).
Train nodeTrainConnect before (Source) and after (Target) frames, list the frames, press Train.
Inference nodeInferenceApplies a .ocat model from a Train node to every frame (tiled, cached).
ComfyUI nodeComfyUIRun a ComfyUI workflow on this node's input (float EXR round trip).
SplatTrain nodeSplatTrainGaussian splats trained from your plate (gsplat, Apache-2.0, in the AI worker).

3D

Node.nk classSummary
Camera nodeCameraCameraPinhole, mm apertures, screen window.
Axis nodeAxisAxisNull transform.
GeoCard nodeGeoCardGeoCard
GeoCube nodeGeoCubeGeoCube
GeoSphere nodeGeoSphereGeoSphere
GeoCylinder nodeGeoCylinderGeoCylinder
GeoScene nodeGeoSceneGeoSceneGathers objects, cameras and lights for rendering.
GeoMerge nodeGeoMergeGeoMerge
GeoTransform nodeGeoTransformGeoTransform
GeoBindMaterial nodeGeoBindMaterialGeoBindMaterialThe mat input's material (Project3DShader, an image as a texture) on the prims whose paths match mask (space-separated globs; a path also takes everything under it; empty = all meshes).
UVProject nodeUVProjectUVProject
GeoImport nodeGeoImportGeoImportImports a 3D scene file (USD, Alembic, OBJ, FBX, glTF, PLY, STL, or a Blender .blend) into the 3D system; the file's animation follows the frame through time offset and time scale.
GeoExport nodeGeoExportGeoExport
ReadVFX nodeReadVFX
ReadSplat nodeReadSplat
DirectLight nodeDirectLightDirectLightParallel light along the light's -Z.
PointLight nodePointLightPointLight
Relight nodeRelightAdds light to the plate from its N (normals) and depth layers, all on the GPU.
DepthToPoints nodeDepthToPointsTurns the depth layer into 3D through the camera (cam input or focal knobs): a displaced, textured card mesh (ScanlineRender can re-render it from new views) or a coloured point cloud.
SpotLight nodeSpotLightSpotLight
EnvironmentLight nodeEnvironmentLightEnvironmentLightAmbient light; with a map (lat-long image) the surface normal looks it up.
Project3DShader nodeProject3DShaderProject3DShader
ScanlineRender nodeScanlineRenderScanlineRender
CyclesRender nodeCyclesRenderPath-traced render of the same scene with Blender Cycles (headless).
EEVEERender nodeEEVEERenderThe same scene rendered with Blender EEVEE (5.2 engine id 'BLENDER_EEVEE'; the 'BLENDER_EEVEE_NEXT' id of 4.2-4.4 is gone).
HydraRender nodeHydraRenderRenders the 3D scene through a USD Hydra render delegate.

Other

Node.nk classSummary
Dot nodeDotDotPasses the input through unchanged.
NoOp nodeNoOpNoOpDoes nothing; holds user knobs / expressions.
CurveTool nodeCurveToolCurveToolAnalyse frames into keyed knobs.
Assert nodeAssertAssertFail with a message when the expression is false.
BlackOutside nodeBlackOutsideBlackOutsideBlack outside the bbox instead of repeating its edge.
ModifyMetaData nodeModifyMetaDataModifyMetaDataPass-through (metadata edits kept for .nk).
CopyMetaData nodeCopyMetaDataCopyMetaDataPass-through of Image (Meta input kept for .nk).
ViewMetaData nodeViewMetaDataViewMetaDataPass-through.
AddTimeCode nodeAddTimeCodeAddTimeCodePass-through that keeps the timecode knobs.
BackdropBackdropNodeA coloured box behind nodes.
StickyNote nodeStickyNoteStickyNoteStickyNote: a yellow note showing its label (HTML allowed) in the Node Graph.
BlinkScript nodeBlinkScriptBlinkScriptRuns a Blink kernel on the GPU.
GroupA node holding a sub-graph (Input/Output nodes, nested groups).
Precomp nodePrecompPrecompA Group whose contents are an external .nk script.
LiveGroup nodeLiveGroupLiveGroupA Group that can be published to (and read from) its own .nk script.
InputInside a Group: the image arriving at group input number.
OutputInside a Group: what the group outputs.

Not in the node menu

Node.nk classSummary
CameraTrackerPointCloud nodeCameraTrackerPointCloudCameraTrackerPointCloudSolved 3D points as geometry.
Dot nodeDotA bend point to tidy pipes.
Merge nodeMergeMerge2Composites A over B using the A alpha.
Text nodeTextTextText (legacy) — draw text over the input; size knob, baseline justify.
Unsupported nodeUnsupportedUnsupported Nuke node — raw knobs kept for export; input 0 passes through.

On this page