LC Vignette
LC Vignette — the edge-darkening that makes AI images read as photographs
- image
- image
LC Vignette darkens the edges of an image and leaves the center alone - the effect that makes a flat render feel like it came through a real lens. Vignetting is one of those cheap, deterministic tells that separates "generated" from "photographed," right up there with film grain in the realism toolbox. It's the same finishing move photographers have been getting for free from mediocre lenses for a century, and here you get it as a slider.
The community's standing recipe for killing the AI look is motion blur + camera shake + grain + chromatic aberration + vignetting - a stack of post-processing passes that cost milliseconds and no GPU. This node is the vignetting step of that stack, and it lives in the LC123 image-FX family where everything else is on-node and wipe-previewable.
How it works
The node builds a radial mask - brightest in the center, falling off toward the corners - and multiplies the image by it. The default is a cos⁴ falloff, which is the physically-motivated model of how real lenses darken off-axis (cos⁴ of the viewing angle). That's the "this actually looks like a lens" detail, and it's on by default. Here's what the controls do:
- intensity (−1 to 1, default 0.25) - how much the edges darken. Here's the fun bit: negative values brighten the edges instead, a reverse vignette that can lift a muddy frame or fake a subtle radial glow. 0 is a hard bypass.
- midpoint (default 0.55) - where the falloff starts, as a fraction of the frame. Lower = the darkening kicks in earlier, eating more of the image.
- roundness (default 0.8) - stretches the mask vertically. Below 1 makes the vignette taller than wide; above 1 squashes it wider. Handy when your subject sits toward the top or bottom and you want the falloff to respect that.
- feather (default 0.35) - how soft the transition into darkness is. High feather = gentle, invisible-to-most-people darkening; low feather = a visible dark frame.
- cos4_falloff (on) - the lens-realistic curve. Turn it off for a simpler smooth falloff.
- tint_r/g/b (default 1, 1, 1.05) - color the shadowed edges. The default has a barely-there blue push in the corners, which is the classic "cool shadow" look; pull these around if you want a warm or greenish falloff instead.
One image in, one image out, with the hover-to-wipe before/after preview. You can also use it on a batch - it processes each frame independently.
Where people get burned
The classic mistake is cranking intensity and wondering why it looks like you're peering through a tube. Vignettes are supposed to be nearly invisible - the "I can't see it but the image feels more finished" range is usually 0.1–0.3. Beyond that you're making an aesthetic choice, not a correction.
Second: it multiplies, so it darkens - it won't restore detail that was already clipped. And if you've got a bright subject dead-center with dark edges, watch the midpoint: too low and the vignette will start eating into your subject's face.
Install
Part of lonecatone23's ComfyUI_LC123_nodes pack. Standard two ways:
- ComfyUI Manager - search "LC123" or "ComfyUI_LC123_nodes", install, restart.
- Manual -
cd ComfyUI/custom_nodes && git clone https://github.com/lonecatone23/ComfyUI_LC123_nodes, restart.
No pip packages, no model downloads - pure numpy/torch pixel math in ComfyUI's own environment. That's the norm for this pack and it's refreshing.
The honest verdict
If you're chasing photorealism, this is one of the highest value-per-effort nodes in the pack: a single subtle vignette, a whisper of grain, and the image stops looking like a render. It's not flashy, it's not new, and you could absolutely build the same mask by hand - but at the price of a slider and a wipe-preview, why would you.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| intensity | FLOAT | 0.25-1–1 | Darken edges. Negative = brighten edges |
| midpointopt | FLOAT | 0.550.1–1 | — |
| roundnessopt | FLOAT | 0.80.3–2 | — |
| featheropt | FLOAT | 0.350.05–1 | — |
| cos4_falloffopt | BOOLEAN | true | — |
| tint_ropt | FLOAT | 1.000.5–1.5 | — |
| tint_gopt | FLOAT | 1.000.5–1.5 | — |
| tint_bopt | FLOAT | 1.050.5–1.5 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |