ComfyUI Node

Halation

Halation, the Cinestill signature

By criskb·Created 7 months ago·Updated 5 months ago· 0
Halation
  • image
  • mask
  • image
  • mask
  • halation_info
settings_json{"threshold":0.72,"softness":0.1,"radius":14.0,"strength":0.45,"tint_r":1.0,"tint_g":0.34,"tint_b":0.08,"mix":1.0,"mask_feather":12.0,"invert_mask":false}

The photorealism KB has a specific callout for the look this node produces: Cinestill 800T for night halation - the reddish-orange glow that bleeds out of bright light sources on film. It happens physically when light bounces off the back of the film base, and it's one of the most instantly recognizable "shot on film" signatures in photography. x1Halation reproduces it in a node, and it's the most photoreal of the MKRShift "film" family precisely because it reproduces a real optical defect.

It's part of MKRShift Nodes by Cris K B, under MKRShift Nodes/VFX/Photo.

How it works

The recipe is faithful to the physics, simplified. The node finds the bright regions of the image - anything above threshold (default 0.72), feathered by softness (default 0.1) - and blurs them outward by radius (default 14px). That blurred bright-pass is then tinted and added back at strength (default 0.45). The tint is the signature: the defaults tint_r 1.0, tint_g 0.34, tint_b 0.08 give that warm orange-red glow, the exact color of light bleeding through film's anti-halation layer. mix blends the whole effect.

The reason it reads as halation rather than "a glowy blob": it's a bright-pass blur, not a blur of the whole image. The light sources bleed outward while the rest of the frame stays sharp - which is precisely how halation behaves on real film, and why it's distinct from bloom (which softens everything bright) and from lens flare (which streaks).

The inputs that matter

Inside the settings_json:

  • threshold - how bright a region must be to glow (default 0.72; lower it to halo more).
  • radius - how far the glow bleeds (default 14px).
  • strength - how strong the halo is (default 0.45).
  • tint_r / tint_g / tint_b - the halo color; the orange-red default is the Cinestill look.

Optional mask input with mask_feather / invert_mask, plus outputs image, mask, and a halation_info string.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes

Restart ComfyUI, or install via ComfyUI Manager (search MKRShift_Nodes). No requirements.txt, no models, no keys.

The take

This is the single best "film realism" node in the pack, and the recipe for using it is straight from the photorealism playbook: night street scenes, neon, city lights, candles - anything with point light sources. Put a small halation (strength 0.3–0.5) on the highlights and the night scene stops looking like a clean render and starts looking lit. The trap is applying it to daylight or overexposed images where "bright" is most of the frame - then it's just a warm blur. Target the lights, keep threshold high, and change the tint if you want tungsten (warmer) or the green-blue fringe of old Soviet glass (go tint_g up, tint_b up). One of the few nodes here that's worth installing the whole pack for.

CategoryMKRShift Nodes/VFX/Photo

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
settings_jsonSTRING{"threshold":0.72,"softness":0.1,"radius":14.0,"strength":0.45,"tint_r":1.0,"tint_g":0.34,"tint_b":0.08,"mix":1.0,"mask_feather":12.0,"invert_mask":false}
maskoptMASK

Outputs (3)

NameTypeDescription
imageIMAGE
maskMASK
halation_infoSTRING