Extensions/Nuke Nodes for ComfyUI
ComfyUI Extension

Nuke Nodes for ComfyUI

A comprehensive collection of ComfyUI custom nodes that replicate the functionality of popular Nuke compositing nodes. Includes merge, grade, transform, blur nodes and more for professional compositing workflows.

By sumitchatterjee13·Created about a year ago·Updated 23 days ago· 60
sumitchatterjee13/nuke-nodes-comfyui
Nodes29
On cloudLocal install
CategoryNuke/Filter, Nuke/Viewer
Stars60
Updated23 days ago

Nodes (29)

Nuke Blur

Nuke-style Gaussian blur with separate X/Y control

Nuke/Filter
Nuke Channel Shuffle

Rearrange RGBA channels without a trip to Photoshop

Nuke/Viewer
Nuke Color Bars

Generate SMPTE test patterns and calibration bars on demand

Nuke/Viewer
Nuke Color Correct

Shift hue, punch saturation, control contrast

Nuke/Color
Nuke Constant

Generate a solid color image with real alpha control

Nuke/Generate
Nuke Corner Pin

Pin a screen into a shot without leaving ComfyUI

Nuke/Transform
Nuke Crop

Crop precisely with soft edges, Nuke-style

Nuke/Transform
Nuke Defocus

Simulate depth of field with bokeh, not just blur

Nuke/Filter
Nuke Dissolve

Nuke Dissolve is the blend node ComfyUI keeps making you rebuild

Nuke/Merge
Nuke Exposure

Brighten a flat render without blowing out the whites

Nuke/Color
Nuke FrameHold

ComfyUI's Nuke FrameHold node

Nuke/Time
Nuke Grade

Lift, gamma, gain in ComfyUI — the Nuke grade node that doesn't need Nuke

Nuke/Color
Nuke Keymix

The mask-driven blend node that behaves like Nuke's Keymix

Nuke/Merge
Nuke Levels

Fix washed-out contrast with proper black and white point controls

Nuke/Color
Nuke Merge

28 blend modes, Nuke-style

Nuke/Merge
Nuke Motion Blur

Add real directional motion blur to static frames

Nuke/Filter
Nuke OCIO ColorSpace

Move images between color spaces the ACES way

Nuke/Color
Nuke OCIO Display

Turn scene-referred renders into images that look right on your screen

Nuke/Color
Nuke OCIO FileTransform

Apply any LUT to an image, the OpenColorIO way

Nuke/Color
Nuke OCIO Info

See exactly what color spaces this pack can use

Nuke/Color
Nuke Ramp

Test patterns for people who actually check their pipeline

Nuke/Viewer
Nuke Read

Finally load EXRs and image sequences in ComfyUI

Nuke/IO
Nuke Read Info

Read the receipt on that EXR before you build around it

Nuke/IO
Nuke Read MultiPass

Pull every AOV out of a multi-channel EXR

Nuke/IO
Nuke Reformat

Put any generation on a standard canvas with Nuke Reformat

Nuke/Transform
Nuke Shuffle Pass

Grab one AOV out of that multi-pass bundle

Nuke/IO
Nuke Transform

Move, rotate, and scale images the Nuke way — no Nuke needed

Nuke/Transform
Nuke Viewer

Look at single channels and check alpha without squinting

Nuke/Viewer
Nuke Write

Save EXR sequences without leaving the graph

Nuke/IO
Readme

Nuke Nodes for ComfyUI

A collection of ComfyUI custom nodes that replicate Nuke compositing nodes: Read/Write with EXR image sequences, multi-pass EXR, Merge, Grade, OCIO colour management, Transform, Reformat, Blur, FrameHold and more. Version 2.x follows your $OCIO config like Nuke does.

Upgrading from 1.x? 2.0.0 is a major release with breaking changes (OCIO-driven colourspaces, MASK inputs, renamed/merged nodes). See CHANGELOG.md for the full list. 1.3.0 remains available on the Comfy Registry and as git tag v1.3.0.

Features

  • Read/Write: image sequences via OpenImageIO (EXR, DPX, TIFF, PNG, JPEG, HDR, TGA, BMP, WebP). Bare-path sequence detection, Nuke-style frame numbering, atomic overwrite or whole-sequence versioning, multi-channel EXR in/out.
  • Colour management: OpenColorIO with your show config ($OCIO) or the built-in ACES 2.0 Studio config; colourspace, display/view and LUT (FileTransform) nodes; Read/Write convert to and from the config's working space.
  • Merge: Porter-Duff and blend modes matching Nuke's Merge, plus Dissolve, Keymix and Constant.
  • Grade / ColorCorrect / Levels / Exposure, all mask-aware.
  • Transform / CornerPin / Crop / Reformat with a shared, bit-exact resampler (impulse, cubic, lanczos, area).
  • Blur / MotionBlur / Defocus, Viewer / ChannelShuffle / Ramp / ColorBars, FrameHold.

Installation

Via ComfyUI Manager (search "Nuke Nodes"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/sumitchatterjee13/nuke-nodes-comfyui.git nuke-nodes
cd nuke-nodes
pip install -r requirements.txt

Restart ComfyUI. All nodes appear under the Nuke menu.

Requirements

  • ComfyUI (provides PyTorch / NumPy)
  • OpenImageIO (>=2.5) - required for all image I/O
  • OpenColorIO (>=2.2, 2.5+ recommended) - colour management; nodes load without it but pass images through
  • OpenCV (opencv-python-headless) - resampling for Transform / CornerPin / Reformat

All three install from requirements.txt as prebuilt wheels.

Colour management

At startup the pack resolves its OCIO config in this order:

  1. $OCIO - if the environment variable points at a .ocio file (a show or studio config), it is used and every colour dropdown (colourspaces, roles, displays, views) is built from it.
  2. Built-in ACES 2.0 Studio config (studio-config-v4.0.0_aces-v2.0_ocio-v2.5) otherwise - works out of the box with 55 colourspaces including camera IDTs (ARRI, Sony, RED, Canon, Panasonic, Blackmagic, Apple, DJI).

The working space is the config's scene_linear role (ACEScg in the built-in config). Because dropdowns are built when ComfyUI starts, changing $OCIO requires a ComfyUI restart - the same model as launching Nuke from a show environment. NukeOCIOInfo reports which config is active.

Nodes

Read/Write (Nuke/IO)

  • NukeRead - load an image or sequence
    • file_path: %04d / #### patterns, a single frame (shot.0001.exr), or just the bare name (shot.exr) - with load_as_sequence on, siblings like shot.0001.exr / shot_0001.exr / shot0001.exr are detected automatically
    • frame, frame_mode (single / range / all), first_frame / last_frame, missing_frames (error / black / hold / nearest)
    • colorspace: raw (no conversion) or any colourspace of the active OCIO config - the file is converted from that space into the working space
    • Thumbnail preview in the node; re-executes only when the files on disk change
  • NukeWrite - save an image or sequence (output node)
    • Relative paths go under ComfyUI's output/; absolute paths are used as-is; directories are created
    • Frames are numbered Nuke-style from frame_start: name.0001.exr (frame_padding digits); %04d / #### in the path are honoured
    • overwrite off (default): if any target frame exists the whole batch is written under a versioned base name (name_1.0001.exr, ...) - nothing is ever clobbered; on: frames replace existing files atomically (temp file + rename)
    • file_type, bit_depth (8 / 16 / 16f / 32f), EXR compression, colorspace (working space -> chosen space), channels (rgb / rgba / all_channels for multi-pass EXR from a NUKE_PASSES input)
  • NukeReadInfo - resolution, channels, bit depth, sequence range, missing frames, I/O and colour library status
  • NukeReadMultiPass - load a multi-channel EXR into a NUKE_PASSES bundle + beauty image + pass list
  • NukeShufflePass - pick one pass from a NUKE_PASSES bundle as an image

Merge (Nuke/Merge)

  • NukeMerge - A (foreground) over B (background), 28 operations (see table below), mix, optional mask
  • NukeDissolve - A / B / which (0 = A, 1 = B)
  • NukeKeymix - A where mask is 1, B where 0, with invert and mix
  • NukeConstant (Nuke/Generate) - solid RGBA colour at any size

Colour (Nuke/Color)

  • NukeOCIOColorSpace - in_colorspace -> out_colorspace from the active config (roles offered as role:<name>)
  • NukeOCIODisplay - display / view transform (Nuke's viewer process), forward or inverse
  • NukeOCIOFileTransform - apply a LUT file (.cube, .3dl, .spi1d, .spi3d, .csp, .clf, .ctf, .cdl) from the luts/ folder or a custom path, with direction, interpolation and mix
  • NukeOCIOInfo - active config source, working space, colourspaces, roles, displays/views and LUT folder contents
  • NukeGrade - lift / gamma / gain with per-channel offsets, multiply, offset, optional mask
  • NukeColorCorrect - HSV hue / saturation / value + contrast, mix
  • NukeLevels - input / output black & white points, gamma, mix
  • NukeExposure - stops (with per-channel offsets), exposure type (stops / printer lights / film density), multiply, offset, preserve highlights, clamp, mix, optional mask

Transform (Nuke/Transform)

  • NukeTransform - translate, rotate (degrees, counter-clockwise), scale (uniform and per-axis), skew with XY/YX order, pivot (-1 = centre), invert; filter impulse / cubic / lanczos / area. Identity parameters return the input bit-exactly. Output is RGBA with a coverage alpha.
  • NukeCornerPin - perspective warp mapping the four image corners to to1..to4 (Nuke's bottom-left origin)
  • NukeCrop - crop with optional soft edge / reformat
  • NukeReformat - Nuke's Reformat: to format / to box / scale, resize type none / width / height / fit / fill / distort (pixel-aspect aware), 16 format presets plus your own saved formats (custom + save_format_as), center / flip / flop / turn, black outside, filter

Filter (Nuke/Filter)

  • NukeBlur - gaussian / box / triangle / quadratic, separate X/Y size, quality, crop, optional mask, mix
  • NukeMotionBlur - directional blur with shutter and centre bias
  • NukeDefocus - disk / hexagon / gaussian bokeh, optional depth_map (MASK) + focus distance

Viewer (Nuke/Viewer)

  • NukeViewer - channel isolation (rgba / rgb / r / g / b / a / luminance), gamma, gain, optional red mask overlay
  • NukeChannelShuffle - route any of red / green / blue / alpha / zero / one into each output channel
  • NukeRamp, NukeColorBars - test pattern generators

Time (Nuke/Time)

  • NukeFrameHold - the batch is the timeline (frame_start = frame number of item 0). increment = 0 holds first_frame everywhere; increment = N steps through first, first+N, ... exactly like Nuke.

Merge operations

| Operation | Description | |-----------|-------------| | over | A composited over B | | under | A under B (B over A) | | plus | A + B | | minus | B - A | | multiply | A × B | | screen | 1 - (1-A)(1-B) | | overlay | contrast blend of multiply and screen | | soft_light / hard_light | gentle / strong contrast | | color_dodge / color_burn | brighten / darken B by A | | darken / lighten | min(A, B) / max(A, B) | | difference | |A - B| | | exclusion | A + B - 2AB | | average | (A + B) / 2 | | divide | B / A | | min / max | minimum / maximum | | hypot | sqrt(A² + B²) | | in / out | A masked by B's alpha / A where B is transparent | | atop | A where B exists, B elsewhere | | xor | A and B where they don't overlap | | mask / stencil | A with alpha Aα×Bα / A where B is transparent | | matte | B with A's alpha as matte | | copy | A |

Conventions

  • Images are ComfyUI IMAGE tensors ([B,H,W,C], 0..1). Nodes accept RGB or RGBA and preserve alpha; Transform/CornerPin output RGBA (coverage alpha).
  • Mask-type inputs take ComfyUI MASK tensors.
  • File-reading nodes cache on the files' modification time and size, so they re-run only when the files change.

Development

python -m pytest tests          # functional + interface tests (no running ComfyUI needed)
python tools/smoke_test.py      # quick standalone gate
python tools/verify_interfaces.py   # node interfaces vs tools/interface_manifest.json
python tools/dump_manifest.py   # regenerate the manifest after an INTENDED interface change

The interface manifest guards saved-workflow compatibility: any change to node ids, input names/order/types/defaults or outputs fails verify_interfaces.py until the manifest is regenerated deliberately.

License

MIT - see LICENSE.

Acknowledgments

Inspired by The Foundry's Nuke. Built for the ComfyUI community.