Nodes/Colorist Film Grain/Colorist Halation
ComfyUI Node

Colorist Halation

The warm glow around bright lights — done the way film actually does it

By Atomic-Trash·Created 2 months ago·Updated 2 months ago· 2
Colorist Halation
  • image
  • image
threshold0.50
strength1.40
radius18

You know the look even if you don't know the name: the soft red-orange glow bleeding off a streetlight or a window in night footage - that halo around speculars that instantly says "shot on film." It's halation, and it's why Cinestill 800T stills have a cult following (the photorealism essay in our KB cites Cinestill 800T as the night-halation look). Colorist Halation is the companion node in Atomic-Trash's ComfyUI-ColoristFilmGrain pack, built to add that glow properly instead of slapping a generic bloom on the frame. It's the front half of a two-node finish: run this, then run Colorist Film Grain on top.

How it works

When bright light hits real film, some of it scatters back through the emulsion and base and re-exposes the area around the highlight. Because that light passes through the dye layers, the re-exposure skews red-orange - and that's exactly what this node does, in linear light rather than screen space. It takes the frame to linear, isolates the true highlights with a soft threshold mask, spreads them with two overlapping Gaussian blurs (a wide one at your radius, a wider one at 2.5×) for a natural falloff, tints the glow red-orange, and screens it back over the image so it lifts the surround without clipping. Working in linear light is the key difference between "correct halation" and a cheap global bloom - scattered light actually adds in linear, so the glow behaves like light instead of like a soft-brush painting. It's batch-safe for video, torch-only, and adds nothing to your dependency pile.

The three inputs

That's all there is to set - three floats and your image:

  • threshold (0–1, default 0.5) - how bright a pixel must be to bloom. Lower it to catch more highlights, like neon at night; raise it to leave midtones alone.
  • radius (1–128, default 18) - how far the glow spreads in pixels. This is the "how much halo" control.
  • strength (0–4, default 1.4) - how strong the glow is. The range is generous; 1.4 is already a tasteful amount.

The output is image, wired straight into Colorist Film Grain (halation is image formation - grain sits on top), then to Video Combine or a preview.

Installing and using it

Same story as its sibling: no models, no extra deps, just torch. Install via ComfyUI Manager (search the pack title, Colorist Film Grain), or:

cd ComfyUI/custom_nodes
git clone https://github.com/Atomic-Trash/ComfyUI-ColoristFilmGrain

Restart, and both nodes show up under image/postprocessing. The repo ships a ready workflow (colorist_film_grain_halation.json) with the full Load Video → Halation → Grain → Video Combine chain - just repoint the Load Video node at your own clip.

Honest notes: this is a subtle effect by design, so don't expect drama at default settings - the glow should read as "that was shot on film," not "there's a vignette filter here." Because it works in linear light, feed it reasonably well-exposed footage and let threshold do the selecting. If you're on a long timeline, the node itself is cheap (it's two blurs), so batch away freely - the memory cost lives in the grain node that follows it, not here.

Categoryimage/postprocessing

Inputs (4)

NameTypeDefaultDescription
imageIMAGE
thresholdFLOAT0.500–1
strengthFLOAT1.400–4
radiusFLOAT181–128

Outputs (1)

NameTypeDescription
imageIMAGE