Layer Effect: Outer Glow (MEC)
Outer glow without the paint-bucket look
- layer_image
- background_image
- layer_mask
- image
- effect_mask
- report
What it is
A halo around the subject, extending outward from the matte. It's a compositing effect with two very different jobs: the optical one (a practical light bleeding, neon, a screen glow, lens bloom faked in post) and the graphic one (the esports-logo rim light that makes a sticker pop off a background). Same node, wildly different settings.
The LayerEffect nodes in this pack are a torch-native port of chflame163's ComfyUI_LayerStyle drop shadow / glow / stroke family - the eight layer effects, standalone, with no upstream dependency. That matters if you've looked at upstream's install: it's a few hundred nodes, a README heavy enough that brave browsers give up rendering it, a big dependency list, and a handful of nodes that phone home to Google's API if you give them a key. Several community threads asked whether it was safe to install and the honest answer was "the deps are mostly ML libraries, but it's a wide surface". Eight effects don't justify that.
How the glow is built
The matte is grown outward by glow_range and blurred, then the node runs a gradient from the glow colour at the inner edge to the light colour at the outer edge across brightness passes - the tooltip calls brightness the "number of glow passes from core to edge", and it's what gives the halo a gradient instead of a flat smudge. The result is blended onto the plate with the chosen blend_mode and opacity, then the layer is composited on top through its matte.
The default blend mode for the glow nodes is a light-mode list - screen, linear dodge(add), color dodge, lighten and friends sit at the top of the dropdown, because that's what a glow is. Using multiply here is legal and produces a shadow, which is not what you asked for.
effect_mask is the glow footprint: the band outside the subject, not the subject itself. Wire it if you want to grade, blur or grain the glow independently - that's the difference between a glow and light.
Inputs
- layer_image - the layer. Alpha is used if no mask is wired.
- layer_mask (optional) - the matte. One of the two is required; a plain 3-channel image with nothing wired raises
needs a layer mask. - invert_mask - defaults to true, and it inverts. With a standard white-on-subject matte the default makes your background the layer, which is the fastest way to conclude the node is broken. Check this first.
- brightness - 2–20, default 5. Passes from core to edge. Higher is a denser, more saturated core.
- glow_range - the initial spread before blur. Clamped internally to frame size, so a silly number is survivable.
- blur - default 25. For a light bleed this is your real softness control; for a graphic rim you want it low.
- light_color and glow_color - two stops, inner to outer. Defaults are orange-to-red; neon green inside with cyan outside is the classic screen-glow cheat.
- blend_mode (30 modes), opacity, dissolve_seed - dissolve is stochastic; the seed is a fixed widget here so it doesn't crawl frame to frame, where upstream reseeded per frame and flickered.
- background_image (optional) - the plate. Empty means a transparent canvas, i.e. black in the RGB output; that's actually the right way to isolate the glow pass for a later screen composite.
Outputs: image, effect_mask, report.
Getting a good one
A glow that reads as light, rather than as a colour wash, is almost always: low opacity, big blur, small range, and a blend mode that only adds. Start at glow_range 20, blur 40, opacity 40, screen. Then push brightness until the core holds together and no further. If you can see the matte in the result - hard edges under the glow - your glow_range is too small relative to the blur.
For a graphic rim instead: glow_range 6–10, blur 0–4, opacity 100, linear dodge(add), and pick both colours identically.
Install
ComfyUI Manager → search "CustomNodePacks", or:
cd ComfyUI/custom_nodes
git clone https://github.com/Code2Collapse/ComfyUI-CustomNodePacks
Restart ComfyUI. Required pack deps are opencv-python, scipy, safetensors; this node is tier 1 and loads no model. The README's blunt warning applies: don't run pip install -r requirements.txt blind - it lists libraries ComfyUI already provides - check pip list first.
Common issues
- The glow is inverted / around the background.
invert_mask. Alwaysinvert_mask. - A rectangle of glow. A mask size mismatch used to be silently replaced with solid white upstream - that's fixed here, so if you see it you're on an old commit. Update the pack.
- It looks like a sticker.
brightnesstoo high andblurtoo low. The glow is supposed to fall off; if it has a defined outer boundary, it isn't glowing, it's outlined.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| layer_image | IMAGE | — | |
| invert_mask | BOOLEAN | true | — |
| blend_mode | COMBO | 30 options: screen, linear dodge(add), color dodge, lighten, dodge, hard light, +24 | |
| opacity | INT | 1000–100 | — |
| brightness | INT | 52–20 | Number of glow passes from core to edge. |
| glow_range | INT | 48-9999–9999 | Initial spread for the outer glow; clamped to frame size. |
| blur | INT | 250–9999 | — |
| light_color | STRING | #FFBF30 | — |
| glow_color | STRING | #FE0000 | — |
| dissolve_seed | INT | 00–2147483647 | Only used by the 'dissolve' blend mode. Upstream reseeds every frame, so a dissolve flickers through a sequence; a fixed seed here holds still. |
| background_imageopt | IMAGE | — | |
| layer_maskopt | MASK | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| effect_mask | MASK | — |
| report | STRING | — |