Nodes/AfterDark Film AR Selector/AfterDark Film Halation & Bloom
ComfyUI Node

AfterDark Film Halation & Bloom

That red glow around neon at night, without shooting on CineStill

By hackafterdark·Created 9 months ago·Updated 4 days ago· 4
AfterDark Film Halation & Bloom
  • image
  • image
halation_intensity0.35
threshold0.70
bloom_radius12.0
halation_tintRed / Orange (CineStill 800T)

Know the look: a neon sign at night, and around every bright source there's a soft red-orange halo bleeding into the dark. That's halation - light reflecting off the film's pressure plate back into the emulsion layers - and it's the signature of CineStill 800T, the stock that launched a thousand "night city" prompts. AfterDark Film Halation & Bloom fakes that halo in post, which beats hoping the sampler gives it to you: the physics is one thing, the look is a specular-highlight pass and a blur.

It's in the HackAfterDark category with the rest of the AfterDark Film pack. If your night shots read as "clean CGI" instead of "shot on film," this is usually the missing layer - the same gap that makes people leave ComfyUI for After Effects when they want a photoreal finish.

How it works

The mechanism is compact and entirely tensor math. It computes a highlight map from the max RGB channel blended 75/25 with luminance - the clever bit, because it means a saturated red neon triggers halation even when it isn't the brightest thing in the frame. Values above your threshold get a soft knee (a 0.12-wide ramp, not a hard cut) and a 1.5-power falloff so the glow is organic rather than a contact-sheet dot.

Then the bloom: the specular mask is downsampled to two pyramid scales (half your bloom_radius and full bloom_radius), upsampled back to full res and blended 65/35. That dual-radius blur is what makes it look like light diffusing through emulsion instead of a gaussian blob. The tint is multiplied in additively and the whole thing clamps to 0–1, so it only brightens - it never eats your blacks.

Inputs that matter

  • threshold (0.30–0.99, default 0.7) - how bright a pixel must be to count as a specular highlight. This is the knob you'll actually tune.
  • halation_intensity (0–1, default 0.35) - how much glow.
  • bloom_radius (1–40, default 12) - how far the halo spreads.
  • halation_tint - Red / Orange (CineStill 800T) is the default and the reason to install this; Golden Amber, Warm Yellow, and Soft White cover daylight and bloom-only uses.

Output is a single image (IMAGE). Wire it after VAE decode, before save.

Installing it

Same pack, same one-time setup:

cd ComfyUI/custom_nodes
git clone https://github.com/hackafterdark/ComfyUI-HackAfterDark-Nodes

Restart ComfyUI. You can also install via ComfyUI Manager by searching "HackAfterDark" (pack title: AfterDark Film AR Selector). No model downloads, no API keys - this node is pure torch, no extra dependencies beyond what ComfyUI ships.

Where people get tripped up

If nothing glows, your threshold is too high - drop it to 0.5–0.6 for neon or street lamps. If everything glows, you went too far the other way; the 0.7 default is a sane middle. bloom_radius at the default 12 gives a rich atmospheric halo; pushing toward 30+ turns your image into a dream sequence, which is a mood but probably not the one you wanted. And remember it's additive-only, so if a shot looks flat after grading, halation is the wrong tool - that's what the pack's Color Split & Clarity node is for.

CategoryHackAfterDark

Inputs (5)

NameTypeDefaultDescription
imageIMAGE
halation_intensityFLOAT0.350–1
thresholdFLOAT0.700.3–0.99
bloom_radiusFLOAT12.01–40
halation_tintCOMBORed / Orange (CineStill 800T)4 options: Red / Orange (CineStill 800T), Golden Amber, Warm Yellow, Soft White

Outputs (1)

NameTypeDescription
imageIMAGE