Nodes/Photography Nodes/Bloom Lens Flares
ComfyUI Node

Bloom Lens Flares

Bloom, dirt, anamorphic streaks, god rays

By TrophiHunter·Created about a year ago·Updated about a year ago· 5
Bloom Lens Flares
  • image
  • tex_dirt
  • tex_sprite
  • IMAGE
◄enable_bloomtrue►
◄bloom_threshold0.800►
◄bloom_amount0.800►
◄bloom_saturation0.800►
◄bloom_tint_r0.700►
◄bloom_tint_g0.800►
◄bloom_tint_b1.000►
◄bloom_mixmode2►
◄enable_lensdirttrue►
◄lensdirt_intensity0.400►
◄lensdirt_saturation2.000►
◄lensdirt_tint_r1.000►
◄lensdirt_tint_g1.000►
◄lensdirt_tint_b1.000►
◄lensdirt_mixmode1►
◄enable_anam_flaretrue►
◄anam_flare_threshold0.900►
◄anam_flare_amount14.50►
◄anam_flare_curve1.200►
◄anam_flare_color_r0.012►
◄anam_flare_color_g0.313►
◄anam_flare_color_b0.588►
◄anam_flare_blur_strength0.900►
◄anam_flare_blur_kernel_size17►
◄enable_lenztrue►
◄lenz_threshold0.800►
◄lenz_intensity1.000►
◄enable_chap_flaretrue►
◄chap_flare_threshold0.800►
◄chap_flare_count15►
◄chap_flare_dispersal0.250►
◄chap_flare_size0.450►
◄chap_flare_ca_r0.00►
◄chap_flare_ca_g0.01►
◄chap_flare_ca_b0.02►
◄chap_flare_intensity100.00►
◄enable_godraytrue►
◄godray_decay0.990►
◄godray_exposure1.000►
◄godray_weight1.250►
◄godray_density1.000►
◄godray_threshold0.900►
◄godray_samples128►
◄enable_flare_colortrue►
◄flare_luminance0.095►
◄flare_blur200.0►
◄flare_intensity2.07►
◄flare_tint_r0.137►
◄flare_tint_g0.216►
◄flare_tint_b1.000►

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 (the tex_dirt image 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.

CategoryTrophiHunter/Photography

Inputs (53)

NameTypeDefaultDescription
imageIMAGE—
tex_dirtIMAGE—
tex_spriteIMAGE—
enable_bloomBOOLEANtrue—
bloom_thresholdFLOAT0.8000–1—
bloom_amountFLOAT0.8000–1.5—
bloom_saturationFLOAT0.8000–1.5—
bloom_tint_rFLOAT0.7000–1—
bloom_tint_gFLOAT0.8000–1—
bloom_tint_bFLOAT1.0000–1—
bloom_mixmodeINT20–2—
enable_lensdirtBOOLEANtrue—
lensdirt_intensityFLOAT0.4000–1—
lensdirt_saturationFLOAT2.0000–4—
lensdirt_tint_rFLOAT1.0000–1—
lensdirt_tint_gFLOAT1.0000–1—
lensdirt_tint_bFLOAT1.0000–1—
lensdirt_mixmodeINT10–2—
enable_anam_flareBOOLEANtrue—
anam_flare_thresholdFLOAT0.9000–1—
anam_flare_amountFLOAT14.500–40—
anam_flare_curveFLOAT1.2000–2—
anam_flare_color_rFLOAT0.0120–1—
anam_flare_color_gFLOAT0.3130–1—
anam_flare_color_bFLOAT0.5880–1—
anam_flare_blur_strengthFLOAT0.9000–1—
anam_flare_blur_kernel_sizeINT171–127—
enable_lenzBOOLEANtrue—
lenz_thresholdFLOAT0.8000–1—
lenz_intensityFLOAT1.0000–1—
enable_chap_flareBOOLEANtrue—
chap_flare_thresholdFLOAT0.8000–1—
chap_flare_countINT151–127—
chap_flare_dispersalFLOAT0.2500–1—
chap_flare_sizeFLOAT0.4500–1—
chap_flare_ca_rFLOAT0.000–1—
chap_flare_ca_gFLOAT0.010–1—
chap_flare_ca_bFLOAT0.020–1—
chap_flare_intensityFLOAT100.000–100—
enable_godrayBOOLEANtrue—
godray_decayFLOAT0.9900–1—
godray_exposureFLOAT1.0000–1.5—
godray_weightFLOAT1.2500–1.5—
godray_densityFLOAT1.0000–1.5—
godray_thresholdFLOAT0.9000–1—
godray_samplesINT1281–1024—
enable_flare_colorBOOLEANtrue—
flare_luminanceFLOAT0.0950–1—
flare_blurFLOAT200.00–400—
flare_intensityFLOAT2.070–4—
flare_tint_rFLOAT0.1370–1—
flare_tint_gFLOAT0.2160–1—
flare_tint_bFLOAT1.0000–1—

Outputs (1)

NameTypeDescription
IMAGEIMAGE—