Nodes/ComfyUI-OCIO/OCIO LogConvert
ComfyUI Node

OCIO LogConvert

The lin↔log node that speaks the curves HDR video models actually use

By SlavaSexton·Created 2 months ago·Updated 3 days ago· 99
OCIO LogConvert
  • image
  • video
  • image/sequence/video
  • ComfyUI Video
operationLinear to Log
curveCineon
mix1.00

Camera footage doesn't arrive as linear light. It arrives log-encoded - Cineon, ARRI LogC, Sony S-Log, whatever the camera spoke - because log packs a huge luminance range into the code values a sensor actually records. OCIO LogConvert is the node that converts between that world and linear, and it's quietly the most useful thing in this pack for anyone doing HDR video, because it's the one node that doesn't even need OpenColorIO: the curves are implemented directly from the published specs and verified by round-trip.

Two widgets and you're done. operation is Linear to Log or Log to Linear. curve is the curve itself: Cineon (the default, Nuke's flat film log - black 0 lifts to 0.0928, matching Nuke's default), ACEScct and ACEScc (the ACES log flavors), and the camera-native set: ARRI LogC3, ARRI LogC4, Sony S-Log3, Panasonic V-Log, Canon Log 3, RED Log3G10, DaVinci Intermediate. There's a swap button on the face that flips the operation, and mix blends with the original.

The critical detail: curve, not gamut

The tooltip is explicit and it's the thing people get wrong: this node applies the transfer curve only, not the gamut. Log to Linear decodes into linear in the camera's own primaries, so the correct chain is LogConvert to undo the curve, then OCIO ColorSpace from camera gamut to ACEScg. What you should not do is reach for a config colorspace named "ARRI LogC3" as a shortcut - that one assumes ARRI Wide Gamut primaries and will shift your gamut.

This matters because the HDR video models speak these exact curves. LTX-2.3's HDR IC-LoRA encodes its range with the ARRI LogC3 curve on Rec.709 primaries - so you decode with this node's logc3 curve, then ColorSpace Rec.709 → ACEScg, then write an EXR. LTX-2.5's HDR path hands out ACEScct log codes, which you undo with Log to Linear + the ACEScct curve. LumiPic's V10 HDR LoRAs target LogC4. If a workflow doc says "decode the LogC," this is the node it means - and getting the curve right but the gamut wrong is the classic silent mistake.

Installing it

ComfyUI Manager → "ComfyUI-OCIO" → pick Nightly in the version dialog (the numbered registry versions are stale and flagged). Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/SlavaSexton/ComfyUI-OCIO
pip install -r ComfyUI-OCIO/requirements.txt

Restart; it's under OCIO. This node runs without opencolorio (it's the one node in the pack that does), but the requirements file installs it anyway - don't bother fighting it. Like the other color nodes it carries a VIDEO input/output alongside IMAGE, so it works on a native video graph. Round-trip sanity: encode linear→log→linear and you should get your values back within float precision; if you don't, check you picked the same curve both ways.

CategoryOCIO

Inputs (5)

NameTypeDefaultDescription
operationCOMBOLinear to Log2 options: Linear to Log, Log to Linear
curveCOMBOCineonThe TRANSFER CURVE only, not the gamut. Log to Linear decodes to linear in the camera's OWN primaries, so pair it with a camera-gamut to ACEScg ColorSpace step. Per-curve anchors: docs/NODES_COLOR.md.
mixFLOAT1.000–1Blend with the original: 1.0 = full effect, 0.0 = bypass.
imageoptIMAGE
videooptVIDEO

Outputs (2)

NameTypeDescription
image/sequence/videoIMAGEImage with the lin<->log curve applied.
ComfyUI VideoVIDEO