Bloom Lens Flares
Bloom, dirt, anamorphic streaks, god rays
- image
- tex_dirt
- tex_sprite
- IMAGE
This is the pack's heavy artillery. Bloom Lens Flares is a full reshade optical stack in one node - bloom, lens dirt, anamorphic horizontal streaks, chromatic-lens ghosts, and volumetric god rays, each independently toggleable with a dozen knobs apiece. The author openly credits it: it's a port of the classic Bloom.fx shader (Marty McFly / Gilcher Pascal's reshade effect) reimplemented for torch. If you want that cinematic "lit through a dirty anamorphic lens" look on a hero shot, this is the node. It's also the most intimidating node in the pack, with roughly forty parameters staring at you.
How it works
It's six stacked sub-effects, each with its own enable switch and parameter block:
- Bloom (
enable_bloom) - threshold, amount, saturation, tint, mix mode. The baseline glow - Lens dirt (
enable_lensdirt) - a dirt texture (thetex_dirtimage input) smeared over highlights, with intensity/saturation/tint. This is what makes it look like you're shooting through a dusty lens - Anamorphic flare (
enable_anam_flare) - the horizontal blue streaks you get from anamorphic lenses.anam_flare_amount,curve, blur strength and kernel - Lens ghosts (
enable_chap_flare) - the classic ring of chromatic ghost circles along the light axis (chap_flare_count,dispersal,size, per-channel CA) - God rays (
enable_godray) - volumetric light shafts (godray_decay,exposure,weight,density,samples) - Flare color (
enable_flare_color) - a big blurred, tinted bloom (flare_luminance,flare_blur,flare_intensity)
Two required IMAGE inputs beyond the photo: tex_dirt and tex_sprite (the sprite is the streak/ghost source). The pack ships example lens textures under assets/textures/lens/, so you're not stranded.
Inputs that matter
Honestly: the enable_* toggles, and then two or three knobs in whichever sub-effect you actually care about. Don't touch all forty.
- tex_dirt / tex_sprite - the texture inputs. Point them at the pack's bundled lens textures
- enable_bloom / enable_anam_flare / enable_godray - the three that sell the cinematic look
- bloom_threshold - how much of the image is allowed to flare (start high, 0.8+)
One IMAGE out.
Install
Standard pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/TrophiHunter/ComfyUI_Photography_Nodes
Restart, find it under TrophiHunter/Photography. No requirements beyond the pack's torch/PIL - the "dependencies" here are the texture assets, which ship in the repo.
Where people get burned
With every sub-effect enabled at defaults (which they are), the output can be a full-on lens festival - dirt everywhere, streaks, ghosts, rays. If it looks like a JJ Abrams fever dream, it's working as intended, and the fix is brutal curating: enable only what the shot needs. Also the defaults assume you have the textures wired; leaving tex_dirt/tex_sprite unwired makes the node error, so wire them first, then start disabling effects. And this is a late-chain effect - it's a lens artifact, so it goes after color grading but before final grain, same family as Chromatic Aberration.
Inputs (53)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| tex_dirt | IMAGE | — | |
| tex_sprite | IMAGE | — | |
| enable_bloom | BOOLEAN | true | — |
| bloom_threshold | FLOAT | 0.8000–1 | — |
| bloom_amount | FLOAT | 0.8000–1.5 | — |
| bloom_saturation | FLOAT | 0.8000–1.5 | — |
| bloom_tint_r | FLOAT | 0.7000–1 | — |
| bloom_tint_g | FLOAT | 0.8000–1 | — |
| bloom_tint_b | FLOAT | 1.0000–1 | — |
| bloom_mixmode | INT | 20–2 | — |
| enable_lensdirt | BOOLEAN | true | — |
| lensdirt_intensity | FLOAT | 0.4000–1 | — |
| lensdirt_saturation | FLOAT | 2.0000–4 | — |
| lensdirt_tint_r | FLOAT | 1.0000–1 | — |
| lensdirt_tint_g | FLOAT | 1.0000–1 | — |
| lensdirt_tint_b | FLOAT | 1.0000–1 | — |
| lensdirt_mixmode | INT | 10–2 | — |
| enable_anam_flare | BOOLEAN | true | — |
| anam_flare_threshold | FLOAT | 0.9000–1 | — |
| anam_flare_amount | FLOAT | 14.500–40 | — |
| anam_flare_curve | FLOAT | 1.2000–2 | — |
| anam_flare_color_r | FLOAT | 0.0120–1 | — |
| anam_flare_color_g | FLOAT | 0.3130–1 | — |
| anam_flare_color_b | FLOAT | 0.5880–1 | — |
| anam_flare_blur_strength | FLOAT | 0.9000–1 | — |
| anam_flare_blur_kernel_size | INT | 171–127 | — |
| enable_lenz | BOOLEAN | true | — |
| lenz_threshold | FLOAT | 0.8000–1 | — |
| lenz_intensity | FLOAT | 1.0000–1 | — |
| enable_chap_flare | BOOLEAN | true | — |
| chap_flare_threshold | FLOAT | 0.8000–1 | — |
| chap_flare_count | INT | 151–127 | — |
| chap_flare_dispersal | FLOAT | 0.2500–1 | — |
| chap_flare_size | FLOAT | 0.4500–1 | — |
| chap_flare_ca_r | FLOAT | 0.000–1 | — |
| chap_flare_ca_g | FLOAT | 0.010–1 | — |
| chap_flare_ca_b | FLOAT | 0.020–1 | — |
| chap_flare_intensity | FLOAT | 100.000–100 | — |
| enable_godray | BOOLEAN | true | — |
| godray_decay | FLOAT | 0.9900–1 | — |
| godray_exposure | FLOAT | 1.0000–1.5 | — |
| godray_weight | FLOAT | 1.2500–1.5 | — |
| godray_density | FLOAT | 1.0000–1.5 | — |
| godray_threshold | FLOAT | 0.9000–1 | — |
| godray_samples | INT | 1281–1024 | — |
| enable_flare_color | BOOLEAN | true | — |
| flare_luminance | FLOAT | 0.0950–1 | — |
| flare_blur | FLOAT | 200.00–400 | — |
| flare_intensity | FLOAT | 2.070–4 | — |
| flare_tint_r | FLOAT | 0.1370–1 | — |
| flare_tint_g | FLOAT | 0.2160–1 | — |
| flare_tint_b | FLOAT | 1.0000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |