Nodes/ComfyTV/Chromatic Aberration
ComfyUI Node

Chromatic Aberration

Cheap-lens color fringing with one slider

By jtydhr88·Created 3 months ago·Updated about 17 hours ago· 725
Chromatic Aberration
  • video
  • video
force_run_token0
project_id
parent_output_id0
amount0.010
falloff1.00
center_x0.00
center_y0.00

AI-generated footage is often too clean. Real lenses fail to focus every wavelength at exactly the same point, so highlights get a color fringe toward the edges of the frame - magenta on one side, cyan on the other. Chromatic Aberration reproduces exactly that: it offsets the red, green, and blue channels radially around a center point, so the middle of the frame stays clean and the corners fringe. It's the "this looks filmed, not rendered" effect that the community keeps listing alongside motion blur and grain as the difference between AI video and video that reads as real.

It's a subtle knob, and the pack's docs lean into that: the default amount of 0.01 already reads as noticeable, and the full range is ±0.05. If you want dramatic color splitting, that's Chroma Shift's job. This one is for authenticity.

How it works

A rendered stage with a ▶ Run, running on a Torch backend as a chroma_ab fx-spec pass with a live preview on the node. Set amount to 0 and it's a clean pass-through - no wasted render. COMFYTV_VIDEO in and out; Bridge to native nodes if you need them downstream.

The inputs that matter

  • amount - strength and direction, −0.05 to 0.05, default 0.01. Positive pushes the channels apart (classic fringing); negative pulls them together.
  • falloff - how fast the effect ramps from center to edge, 0.5 to 3, default 1. Higher keeps the center cleaner and concentrates fringing in the corners; lower spreads it.
  • center_x / center_y - where the split radiates from, −0.5 to 0.5 as a fraction of the frame, default 0 (center). Move it to match where the sharpest point of your lens actually sits.

Output is video (COMFYTV_VIDEO).

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Restart the ComfyUI backend (a real restart, not a tab refresh); nodes appear under the ComfyTV category. ComfyUI Manager finds the pack by searching "ComfyTV". The README's two recurring gotchas: on Desktop/macOS/multi-install setups the relative cd can clone into the wrong instance - read the startup log for the base path it loaded and clone into that absolute path, quoted - and the first level of custom_nodes/ComfyTV/ must contain __init__.py, not a nested ComfyTV/ComfyTV/ folder. No Python dependencies to install.

Troubleshooting and tips

  • Looks like a mess at default? It shouldn't, but if you've cranked it, remember the full ±0.05 is extreme. The believable zone is within a few hundredths of zero.
  • The old-lens combo. Pair with a subtle vignette and grain (both elsewhere in the pack) for the full convincing-cheap-lens look. The docs' Lens Distort and Lens Flare sit in the same toolkit.
  • Nothing changes on Run? amount is 0 - deliberate pass-through.
  • Corner vs whole-frame fringing is your falloff decision. Keep it at 1 for the honest look; raise it if your frame is mostly clean subject.
CategoryComfyTV/VideoFX

Inputs (8)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
amountFLOAT0.010-0.05–0.05
falloffFLOAT1.000.5–3
center_xFLOAT0.00-0.5–0.5
center_yFLOAT0.00-0.5–0.5
videooptCOMFYTV_VIDEO

Outputs (1)

NameTypeDescription
videoCOMFYTV_VIDEO