Nodes/RyanOnTheInside/Flex Image Bloom βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
ComfyUI Node

Flex Image Bloom βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜

Reactive glow, with actual surface awareness

By ryanontheinsideΒ·Created 2 years agoΒ·Updated 5 months agoΒ· 852
Flex Image Bloom βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
  • images
  • opt_feature
  • opt_normal_map
  • opt_mask
  • IMAGE
β—„strength1.00β–Ί
β—„feature_threshold0.00β–Ί
β—„feature_paramβ–Ύβ–Ί
β—„feature_moderelativeβ–Ί
β—„threshold0.70β–Ί
β—„blur_amount10.0β–Ί
β—„intensity0.50β–Ί
β—„num_passes4β–Ί
β—„color_bleeding0.20β–Ί
β—„falloff1.2β–Ί

Bloom is the glow that spills off bright areas of an image - the halo around a streetlight, the soft blowout around a sun-lit edge. FlexImageBloom does that, but it's built as one of RyanOnTheInside's "Flex" nodes, which means every knob on it can optionally be driven by a reactive Feature (audio, motion, brightness, whatever you've extracted elsewhere in the pack) instead of sitting at one fixed value for a whole sequence.

How it works

Under the hood it's a multi-pass bloom: pixels brighter than threshold (0.7 default) get treated as light sources, blurred by blur_amount, and blended back over the image at a strength set by intensity. num_passes stacks that blur multiple times at different radii, which is what gives bloom its layered, atmospheric look rather than a single flat glow ring - more passes cost more compute but read as noticeably richer. color_bleeding lets bright colors smear into their neighbors (the classic chromatic "hot" look around overexposed highlights), and falloff controls how sharply the glow fades with distance from its source - low values spread further, high values stay tight and punchy.

The one genuinely distinctive feature here is opt_normal_map - an optional normal map input that, if connected, makes the bloom "surface-aware": light scatters differently depending on the surface geometry the normal map encodes, rather than treating the image as flat. It's a small addition but it's the difference between bloom that looks pasted on top and bloom that reads as actually interacting with the scene's lighting.

Like every Flex image node, feature_param decides which one setting an optional feature is allowed to modulate (choices: intensity, threshold, blur_amount, num_passes, color_bleeding, falloff, or None to disable modulation entirely), feature_mode picks whether that modulation is relative (nudges around your base value) or absolute (recomputes from the feature directly), feature_threshold gates when it kicks in, and the top-level strength scales how hard it's allowed to push.

Inputs and outputs that matter

  • images - required, the sequence you're blooming.
  • threshold, blur_amount, intensity - the three settings that shape 90% of the look; start here before touching anything else.
  • opt_normal_map (optional IMAGE) - for surface-aware light scatter.
  • opt_mask (optional MASK) - restricts where the bloom applies, if you only want part of the frame glowing.

Output is a single IMAGE.

How to install it

Via ComfyUI Manager, search "RyanOnTheInside." Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside
cd ComfyUI_RyanOnTheInside
pip install -r requirements.txt

then restart. No model downloads needed - this is a pure image-processing effect, not a diffusion model.

Common issues & troubleshooting

Bloom looks harsh or blocky instead of soft. That's almost always blur_amount too low relative to your image resolution, or num_passes set to 1 - a single low-radius pass reads as a hard glow ring rather than a soft wash. Bump num_passes and blur_amount together before touching anything else.

Runs noticeably slower than other Flex image nodes. num_passes (up to 8) is the direct multiplier on cost - each pass is another blur over the frame. If you're iterating quickly, drop it low, then raise it once you've settled on threshold/intensity.

Nothing glows at all. Check threshold against your actual image's brightness range - if nothing in the frame exceeds it, there's no light source for the bloom to build from. Lower it, or check that your image isn't already low-contrast/dim going in.

opt_normal_map seems to do nothing. It only has an effect when connected - without it, bloom falls back to treating the image as flat, which is still a perfectly normal way to use this node.

CategoryRyanOnTheInside/FlexFeatures/Targets/Images

Inputs (14)

NameTypeDefaultDescription
strengthFLOAT1.000–1Overall strength of the effect (0.0 to 1.0) Higher values create more dramatic changes, while lower values are more subtle.
feature_thresholdFLOAT0.000–1Minimum feature value to trigger the effect (0.0 to 1.0) Only applies the effect when the feature value exceeds this threshold. Lower values make the effect more sensitive, higher values make it more selective.
feature_paramCOMBOChoose which parameter to modulate: - threshold: Dynamically adjust bloom threshold - blur_amount: Dynamically adjust bloom radius - intensity: Dynamically adjust bloom strength - num_passes: Dynamically adjust bloom quality - color_bleeding: Dynamically adjust color spread - falloff: Dynamically adjust bloom falloff - surface_scatter: Dynamically adjust surface influence - normal_influence: Dynamically adjust normal map impact - None: No parameter modulation
feature_modeCOMBOrelativeHow to apply the feature modulation: - relative: Changes are centered around the original value - absolute: Changes scale directly from zero to the maximum
imagesIMAGEInput image sequence to be processed (IMAGE type)
thresholdFLOAT0.700–1Brightness threshold for bloom effect. Only pixels brighter than this value will glow (0.0 to 1.0)
blur_amountFLOAT10.00–50Base radius of the bloom effect. Higher values create softer, more diffused glow (0.0 to 50.0)
intensityFLOAT0.500–1Overall strength of the bloom effect. Controls the brightness of the glow (0.0 to 1.0)
num_passesINT41–8Number of bloom passes. More passes create layered, atmospheric glow effects (1 to 8)
color_bleedingFLOAT0.200–1Amount of color spreading between bright areas. Higher values create more color mixing (0.0 to 1.0)
falloffFLOAT1.20.1–3How quickly the bloom effect diminishes with distance. Higher values create tighter, more focused glow (0.1 to 3.0)
opt_featureoptFEATUREOptional feature input for modulation Connect any feature node here to control the effect. Features can come from audio, motion, color, or other sources.
opt_normal_mapoptIMAGEOptional normal map for surface-aware bloom. Enables realistic light scattering based on surface geometry
opt_maskoptMASKβ€”

Outputs (1)

NameTypeDescription
IMAGEIMAGEβ€”