Vignette Pro
Vignettes that don't wreck your highlights — a Pro-grade falloff
- image
- mask
- image
- mask
- vignette_info
A vignette is the cheapest single move for making an image read as "photographed" - corner falloff is what real lenses do, and the corpus is clear that it's part of the standard de-AI kit (motion blur + grain + vignetting shows up in more than one realism thread). But a bad vignette is worse than none: the kind that just darkens everything clips your shadows and puts a muddy ring in the frame. Vignette Pro is the version that does it properly - with shape control, highlight protection, and a saturation shift - so the edges fall off like glass instead of a flashlight with a hole cut in it.
How it works
The vignette is built as a radial falloff field with amount (how strong), midpoint (where the falloff starts), and feather (how soft the transition is) - those three are the classic shape controls. Then the two Pro knobs: roundness lets you push the falloff from circular toward rectangular so it respects a 16:9 or 3:2 frame, and center_x/center_y offset it if your composition wants an off-center falloff. highlight_protect is the one that matters in practice: it reduces how hard the vignette crushes bright regions, so a glowing sky doesn't turn into a gray smudge at the edges. saturation_shift lets you desaturate the darkened corners slightly, which is what gives a vignette that "lens" feel rather than "shade over the frame" feel. mix is the master blend.
Optional mask with mask_feather/invert_mask restricts where the vignette applies. Outputs: image, mask (the falloff field - handy if you want to inspect it), and vignette_info.
The inputs that matter
amount- strength (0.42 default; can go negative for an inverse/light vignette)roundness- circular (lower) vs. rectilinear (higher) falloffhighlight_protect- keep skies and bright edges from going muddy (0.35 default)saturation_shift- the lens-like corner desaturation (default −0.06)
Installing it
Ships in MKRShift Nodes from criskb. ComfyUI Manager → "MKRShift Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes
Restart ComfyUI; it's under MKRShift Nodes → VFX → Photo. No models or extra deps - numpy/Pillow/torch.
Common gotchas
New pack, no community lore, so the code is ground truth. Standard MKRShift JSON traps: broken settings_json silently reverts to defaults, out-of-range values clamp silently. The grading gotcha: a vignette should be felt, not seen. At the default amount 0.42 you'll notice it; for most AI images the tasteful setting is lower, around 0.2–0.3, especially if you're also adding tone_fade from the Tone node - stacking both washes the corners out fast. And if you're working on a wide frame, raise roundness or the corners will darken before the edges do, which looks like a spotlight, not a lens.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| settings_json | STRING | {"amount":0.42,"midpoint":0.58,"feather":0.24,"roundness":0.78,"center_x":0.5,"center_y":0.5,"highlight_protect":0.35,"saturation_shift":-0.06,"mix":1.0,"mask_feather":12.0,"invert_mask":false} | — |
| maskopt | MASK | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |
| vignette_info | STRING | — |