Karma Lens FX
The imperfections that make AI images look photographed
- image
- image
Real lenses are flawed, and that's precisely why they look real. Perfectly clean images - no fringing, no edge darkening, no bloom on bright lights - are one of the quickest tells that something was rendered rather than shot. Karma Lens FX is this pack's answer: a node that adds the four classic optical imperfections - chromatic aberration, vignetting, barrel/pincushion distortion, and halation - each independently controllable, all on a single IMAGE in, IMAGE out.
The four effects are what the name says, and each works the way it does on a real lens. Chromatic aberration offsets the color channels slightly so you get that color fringing at the edges of contrasty subjects (lateral CA grows toward image edges, just like real optics). Vignetting darkens the corners radially, with a falloff control that decides how tight the bright center is. Distortion remaps the geometry - positive values bow outward in the barrel direction, negative values pinch inward like pincushion. Halation is the glow that blooms off bright highlights, which is the effect behind CineStill 800T's neon look and, more generally, how light scatters in film emulsions.
Important default-check before you get confused: every effect defaults to 0 except halation_threshold (0.8) and halation_radius (10), so the node is inert until you dial something in. That's intentional - nothing happens until you ask it to. The inputs are chromatic_aberration (0–20, in pixels), vignette_strength (0–1) with vignette_falloff (0.5–5, higher = tighter center), distortion (-1 to +1), and the halation trio of halation_strength (0–1), halation_threshold (0–1, the brightness above which bloom kicks in), and halation_radius (1–50 px, how far the glow spreads).
Installing it
Search "KarmaNodes" in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/KarmaSwint/ComfyUI-KarmaNodes
cd ComfyUI-KarmaNodes
pip install -r requirements.txt
Restart ComfyUI. No model downloads - this is all pure pixel math.
Getting the look right
Where beginners get burned is cranking the values. Chromatic aberration below about 2–3 pixels is invisible (the README says so outright), but once it's visible it goes "oh, that's a lens artifact" fast - 5–10 is already a strong vintage-lens character. Subtle realism lives at CA 1–3 with vignette 0.1–0.2. Halation is the one to be careful with on the other side: halation_strength 0.3–0.5 with a low threshold (0.6–0.7) gives that dreamy bloom over everything, while 0.2–0.4 with a high threshold (0.85–0.95) limits the glow to actual light sources - the right choice for night scenes where you don't want the whole image fogged.
The context this node earns its keep in: it's the middle of the pack's suggested camera pipeline - tone curves, then color, then lens FX, then grain last. That ordering mimics how a real capture happens (the lens imposes its character before the film records it), and it's why stacking these in sequence sells photorealism more convincingly than any single filter. Like the rest of the pack, it won't rescue a bad image - but as the final optical character pass on a clean render, it's the difference between "AI picture" and "photo."
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Input image to apply lens effects to | |
| chromatic_aberration | FLOAT | 0.00–20 | Strength of color fringing at image edges (in pixels) |
| vignette_strength | FLOAT | 0.000–1 | Intensity of edge darkening (0 = none, 1 = maximum) |
| vignette_falloff | FLOAT | 2.00.5–5 | Controls how gradually the vignette fades (higher = tighter center) |
| distortion | FLOAT | 0.00-1–1 | Lens distortion: positive = barrel, negative = pincushion |
| halation_strength | FLOAT | 0.000–1 | Intensity of highlight bloom/glow effect |
| halation_threshold | FLOAT | 0.800–1 | Brightness threshold above which halation is applied |
| halation_radius | FLOAT | 101–50 | Spread radius of the halation glow (in pixels) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |