Nodes/radiance/◎ Radiance CDL Transform
ComfyUI Node

◎ Radiance CDL Transform

Radiance CDL Transform — the on-set grade format your shots actually arrive in

By fxtdstudios·Created 9 months ago·Updated 17 days ago· 246
◎ Radiance CDL Transform
  • image
  • IMAGE
◄cdl_file►
◄slope_r1.00►
◄slope_g1.00►
◄slope_b1.00►
◄offset_r0.000►
◄offset_g0.000►
◄offset_b0.000►
◄power_r1.00►
◄power_g1.00►
◄power_b1.00►
◄saturation1.00►

Real footage arrives with a sidecar file nobody outside VFX knows about: a CDL, or Color Decision List - the ASC's standard way of storing a basic color grade as slope, offset, power, and saturation. Dailies colorists generate them on-set, and they're the lingua franca of shot matching between facilities. Radiance CDL Transform applies that format to your images - either by loading a .cc or .ccc file or by typing the SOP values by hand. It's how you make an AI element match the on-set grade instead of guessing at it.

It's also the honest-simple end of the grading spectrum. Where ◎ Radiance Grade gives you LGG plus presets and matching, CDL is deliberately bare: four operations per channel, the same four every colorist knows, no extra buttons.

How it works

The ASC CDL is defined as, per channel: output = (input * slope + offset) ^ power, then a global saturation. Each is a precise operation with a precise job:

  • Slope - multiply. Scales the channel; in practice the highlight/gain control. Default 1.
  • Offset - add. Shifts everything; the lift/shadows control. Default 0.
  • Power - exponent. The gamma/midtones control, applied after slope+offset. Default 1.
  • Saturation - a single global value, 0 = grayscale, 1 = unchanged. Default 1.

The node maps these straight to slope_r/g/b, offset_r/g/b, power_r/g/b, and saturation. If you have a CDL from a colorist, it's a drop-in: set cdl_file to the .cc (single shot) or .ccc (a list) path and it overrides the manual values. If you don't have a file, the manual fields are right there.

The inputs that matter

  • image - input.
  • cdl_file - path to a .cc or .ccc file. The tooltip is explicit: "Overrides manual values if specified." This is the killer feature for real pipelines - paste in the path, get the on-set grade.
  • slope_r/g/b, offset_r/g/b, power_r/g/b - the nine SOP values. Slope 0–5, offset -1 to 1, power 0.1–3.
  • saturation - 0–3.

Output: the graded IMAGE.

Where it fits

CDLs are the transferable grade. A colorist gives you a .cc file, you drop it in, and your AI element matches the plate's on-set color - no eyeballing a teal slider until it's "close." It's also the natural companion to the pack's ◎ Radiance Grade Match: match gets you in the ballpark statistically, a CDL gets you the exact on-set values. And because it's pure OCIO under the hood, it runs in float and won't band like an 8-bit adjustment.

Installing

cd ComfyUI/custom_nodes
git clone https://github.com/fxtdstudios/radiance.git
cd radiance
pip install -r requirements.txt   # or requirements_windows.txt / requirements_linux.txt / requirements_mac_silicon.txt

Or search Radiance in ComfyUI Manager. Linux needs libopenexr-dev first; restart after.

Gotchas

The .ccc format holds multiple CDLs per clip, and the node needs to know which entry to use - the tooltip mentions .cc/.ccc support, so if your .ccc has several grades and it applies the wrong one, check the entry selection. Second, order matters: CDL is slope → offset → power, and that order is baked into the standard. If you're typing values by hand and your result looks like the opposite intent, you're probably thinking in LGG terms - in CDL, "lift" is offset and it happens after slope, not before. Third, a CDL is a basic grade by design; it won't reproduce a complex look. For that, export the grade from Radiance Grade as grade_info instead.

CategoryFXTD Studios/Radiance/Color

Inputs (12)

NameTypeDefaultDescription
imageIMAGE—
cdl_fileoptSTRINGPath to .cc or .ccc CDL file. Overrides manual values if specified.
slope_roptFLOAT1.000–5—
slope_goptFLOAT1.000–5—
slope_boptFLOAT1.000–5—
offset_roptFLOAT0.000-1–1—
offset_goptFLOAT0.000-1–1—
offset_boptFLOAT0.000-1–1—
power_roptFLOAT1.000.1–3—
power_goptFLOAT1.000.1–3—
power_boptFLOAT1.000.1–3—
saturationoptFLOAT1.000–3—

Outputs (1)

NameTypeDescription
IMAGEIMAGE—