Nodes/ComfyUI-NL_Nodes/🎨 NL Linear To Log
ComfyUI Node

🎨 NL Linear To Log

Ship your linear frame back to a log-encoded world

By NOLABEL-VFXΒ·Created 9 months agoΒ·Updated 2 months agoΒ· 0
🎨 NL Linear To Log
  • images
  • image
  • image_info_json
β—„image_info_jsonβ€”β–Ί

NL Linear To Log is the outgoing half of a round trip. Its sibling NL Log To Linear takes log-encoded footage and converts it to linear so you can work on it; this node takes a linear image and converts it back to the OCIO compositing_log role. If your pipeline works in linear (and this pack's working space is ACEScg, which is linear-ish scene-referred light), then anything you hand to a log-encoded delivery format - a camera-style log plate, a colorist's preview, a downstream tool that expects log - has to cross back over. This node is that crossing.

It's deliberately minimal, like its sibling: images in, converted image out, plus optional image_info_json passthrough. No curves to pick, no modes. The conversion is defined by the OCIO config the pack runs under, which keeps the whole system honest - you don't eyeball a transform, the config defines it.

When you'd use it

The honest answer: less often than its sibling, because most diffusion pipelines end at an sRGB or video deliverable, not a log file. But the cases that exist are real. If you're writing frames that a VFX or color pipeline will pick up for grading, delivering them in log lets the downstream colorist do their own look work without inheriting yours. If you generated an image with a model and you want to composite it back onto a log plate in matching log, this node gets the match. And if you're testing your color pipeline end to end, NL Linear To Log β†’ NL Log To Linear should be a near no-op round trip - a good sanity check that your OCIO setup is coherent.

Install

Standard pack install:

cd ComfyUI/custom_nodes
git clone https://github.com/NOLABEL-VFX/ComfyUI-NL_Nodes

or ComfyUI Manager β†’ "ComfyUI-NL_Nodes", restart. This one needs the color pipeline dependencies - PyOpenColorIO and OpenEXR from requirements-color.txt - because it's a real OCIO role conversion, not a formula slapped on top. If it errors at load, that's the missing piece. And if the output looks "flat and gray," that's not a bug - that's what log looks like. It's supposed to look like that until the next stage decodes it.

CategoryNOLABEL/Color

Inputs (2)

NameTypeDefaultDescription
imagesIMAGEInput image tensor in the OCIO scene_linear role.
image_info_jsonoptSTRINGOptional serialized image metadata from upstream NL node.

Outputs (2)

NameTypeDescription
imageIMAGEβ€”
image_info_jsonSTRINGβ€”