Nodes/comfy-oiio/Colorspace Convert (OIIO)
ComfyUI Node

Colorspace Convert (OIIO)

Your ComfyUI Frames Aren't Wrong — They're in the Wrong Colorspace

By melMass·Created 2 years ago·Updated 12 months ago· 13
Colorspace Convert (OIIO)
  • image
  • IMAGE
input_colorspacesRGB
output_colorspacesRGB

If you've ever dropped a ComfyUI render into Nuke or DaVinci Resolve and it came out washed out, doubled-up, or just "off" next to your plate, this is the node that was missing. It's not a filter - it's the bridge between the colorspace ComfyUI works in and the one your compositing pipeline expects. Think of it as the color-management translator that stock ComfyUI never shipped.

Colorspace Convert (OIIO) takes a normal IMAGE tensor, converts it from one named colorspace to another, and hands you back a normal IMAGE tensor. The heavy lifting happens in OpenImageIO's ImageBufAlgo.colorconvert, which uses OpenColorIO under the hood - the same color-management library the film/VFX industry builds its pipelines on. The dropdown's 36+ options come from your OCIO config at startup: scene_linear, lin_srgb, lin_rec709, Rec709, sRGB, linear, ACEScg, AdobeRGB, KodakLog, and a set of gamma flavors like g22_rec709 and Gamma2.4.

Why you actually care

ComfyUI does all its math on sRGB-encoded values in the 0–1 range. That's fine for generating and for PNG delivery, but it's a lie from a compositing standpoint: sRGB is a display-encoded space, not a linear one. If you feed sRGB values straight into a Nuke comp that expects scene-linear, you get double-gamma artifacts - the technical term for "why does my AI render look radioactive next to the footage." This node fixes that handoff: convert sRGBscene_linear before you save your frames for comp, and scene_linearsRGB when you load linear EXR plates back in. One node in the path, and the mismatch disappears.

The author, Mel Massadian (melMass), is the same person behind the MTB node pack (comfy_mtb) and built this suite as a companion to his ComfyUI-for-Nuke work. It shows - the colorspace list and the OIIO machinery are straight out of a compositing workstation, not a hobbyist's toolbox.

The inputs that matter

Only three, and only two of them are for you:

  • image - the IMAGE tensor to convert.
  • input_colorspace - what the image is, right now. Defaults to sRGB, which is correct for anything straight out of a sampler's VAE decode.
  • output_colorspace - what you want it to be. Defaults to sRGB.

If input and output match, the node short-circuits and passes the image straight through - so it's safe to leave in a graph as a labeling step. The auto option is also a no-op pass-through. Set both explicitly and the conversion happens in float, so you don't lose precision. The output wires into anything that takes an IMAGE: a save node, a VAE encode, an upscaler, wherever.

Installing it

Install the pack once and all three OIIO nodes appear (Colorspace Convert, Load, Save). Either way:

  • ComfyUI Manager: search "comfy-oiio" (or "OpenImageIO") and hit install - Manager pulls in the pip dependencies for you.
  • Manual: cd ComfyUI/custom_nodes && git clone https://github.com/melMass/comfy_oiio, then pip install -r requirements.txt (it needs openimageio>=3.0.3.1 and clique==2.0.0), then restart.

Gotchas

  • Set OCIO before ComfyUI starts. The colorspace list is read from your OCIO config when the node loads. Want a studio ACES config or a custom one? export OCIO=/path/to/config.ocio before launching ComfyUI, then restart. Setting it mid-session does nothing.
  • Mislabeling the input silently shifts your color. There's no error when you tell it an sRGB image is actually Rec709 - you just get subtly wrong output. Double-check the input_colorspace when something looks "close but not right."
  • The output is still a 0–1 tensor, so it previews fine in ComfyUI - the conversion only becomes visible when you save to a color-managed format or comp it against other footage.
Categoryoiio

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
input_colorspaceCOMBOsRGB36 options: auto, scene_linear, lin_srgb, lin_rec709, Rec709, sRGB, +30
output_colorspaceCOMBOsRGB36 options: auto, scene_linear, lin_srgb, lin_rec709, Rec709, sRGB, +30

Outputs (1)

NameTypeDescription
IMAGEIMAGE