π¬ CYH Post Process | ARRI Halation
That dreamy highlight glow everyone's chasing
- image
- IMAGE
Halation is that soft, colored bloom that wraps around bright highlights in real film - the reason a streetlight in a movie looks like it's glowing through fog rather than just being bright. Diffusion models will happily render the light, but they won't give you the bloom. That's what this node adds, and it's the trendy finishing move in the cinematic-image corner of the community right now.
It's one of four post-process nodes in the Chye ComfyUI Toolset, sitting after VAE Decode: KSampler β VAE Decode β CYH Post Process | ARRI Halation β Save.
How it works
The mechanism is classic and easy to follow:
- Convert the image to luminance and threshold it - pixels brighter than threshold (default 220) become the "highlight mask."
- Build a colored glow mask from that mask, tinted by a color-temperature conversion (Kelvin β RGB, black-body approximation).
- Gaussian-blur the mask by blur_size (default 25) so the glow spreads outward instead of hugging the highlight.
- Additively blend the glow back onto the image, scaled by intensity.
Blur a mask, add it back. That's halation in four steps, and it's the same approach professional film-emulation tools use - threshold highlights, color them, blur, blend.
The inputs that matter
Image in, and these are the three to reach for first:
- threshold (0β255, default 220) - what counts as a highlight. Lower it and more of the image glows; 220 keeps it to the actual hot spots.
- blur_size (1β101, default 25) - the spread of the glow. This is the personality knob: small = tight halo, large = dreamy haze.
- intensity (0β1, default 0.6) - how strong the blend is. 0.3β0.6 is the tasteful range for a "real" look; push past 0.8 and it gets very stylized.
Then there's a full color-grade suite bolted on - temperature (Kelvin, 1000β40000), saturation, tint (greenβmagenta), gamma, exposure (EV stops), contrast - applied to the glow color. That's how you get warm amber blooms (low Kelvin) or cool blue ones. Output is IMAGE.
Where it bites
Same limitation as the pack's other post-process nodes: only the first image in a batch is processed (the code takes image_np[0] and drops the rest). And it's a CPU OpenCV pass - a few seconds on a 1024Β² image, more at 4K. Neither is fatal; both matter if you're feeding it batches or big frames.
Also worth knowing: this is the effect of ARRI halation, not a simulation of a specific ARRI sensor/optical stack. The "ARRI" in the name is vibe, not fidelity - there's no camera profile under the hood. If you want true film emulation with named stocks, this won't get you there; it gets you the glow.
Install
ComfyUI Manager (search "Chye ComfyUI Toolset"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/chyer/Chye-ComfyUI-Toolset
cd Chye-ComfyUI-Toolset
pip install -r requirements.txt
Restart ComfyUI. The node needs opencv-python (from the pack's requirements.txt), which you almost certainly already have if you run other post-process packs. Zip installs need .git/.cnr-id (Chye-ComfyUI-Toolset) per the README.
Verdict
If you want the halation look without building the blur-and-add pipeline yourself, this is the quickest on-ramp in the pack, and the Kelvin-tinted glow control is genuinely nice. Treat it as a stylize tool, not a film emulator, and you'll be happy.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | β | |
| threshold | INT | 2200β255 | β |
| blur_size | INT | 251β101 | β |
| intensity | FLOAT | 0.600β1 | β |
| temperature | INT | 65001000β40000 | β |
| saturation | FLOAT | 1.000β2 | β |
| tint | FLOAT | 0.00-1β1 | β |
| gamma | FLOAT | 1.000.5β2.5 | β |
| exposure | FLOAT | 0.0-4β4 | β |
| contrast | FLOAT | 1.000.5β2 | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | β |