Nodes/DJZ-Nodes/Video VignettingV1
ComfyUI Node

Video VignettingV1

Film-era corner darkening, minus the film

By MushroomFleet·Created 2 years ago·Updated 5 months ago· 78
Video VignettingV1
  • images
  • IMAGE
vignette_type
mechanical_intensity0.50
mechanical_feather0.30
chemical_intensity0.40
chemical_irregularity0.20
temporal_variance
custom_expressionsin(t * 0.1) * 0.2
variance_speed1.0
variance_amplitude0.20

A vignette is one of those effects you barely notice until it's gone, and then the image looks flat and wrong. It's the natural darkening toward the frame edges, and real footage has it baked in from the lens (mechanical) and the film stock (chemical). Video Vignetting V1 is DJZ-Nodes' take on faking both convincingly on video batches - and the "video" part is the interesting bit, because this one can animate the vignette over time instead of just sitting there static.

If your workflow is producing clean, sterile AI footage and you want it to read as shot on actual optics, this is the node that adds the gravitas in one pass.

How it works

The node separates vignetting into its two real-world causes, which behave differently:

  • Mechanical vignetting is the lens's fault. Light falloff toward the edges is smooth and radially symmetric - a gentle, feathered darkening that's strongest in the corners. You control it with mechanical_intensity (0–1) and mechanical_feather (0.1–1), where feather is how soft the transition from bright center to dark edge is. Lower feather, more visible ring; higher, a subtle cinematic gradation.
  • Chemical vignetting is the film's fault. It's irregular, blotchy, organic - the kind of uneven density you get from aged chemistry. chemical_intensity (0–1) sets how strong it is and chemical_irregularity (0–1) sets how noisy and organic the pattern is.

Pick one via vignette_type ("Mechanical", "Chemical", "Both", or "None"), and "Both" is where the realism lives - smooth lens falloff plus irregular chemical mottling is exactly what real frames show.

The temporal bit, which is the reason it says Video

Here's what makes it worth having over a still-image vignette node: temporal_variance. Real film doesn't hold a vignette constant - breathing, gate wobble, and exposure shifts make it pulse subtly. You get five modes: None, Sine, Random, Pulse, and Custom.

  • variance_speed (0.1–5) - how fast the variation oscillates.
  • variance_amplitude (0–1) - how much the effect moves frame to frame. Small values are invisible-but-alive; big ones are dramatic flicker.
  • custom_expression - a math string with t as the frame variable (default sin(t * 0.1) * 0.2). This is the same mini-expression-engine pattern the pack uses elsewhere, so you can write sin(t*0.05) + 0.3*random() style formulas. Invalid expressions fall back to 1.0 rather than crashing.

Feed it an images batch, get an IMAGE batch back. Nothing else to wire.

Installing it

Pack-level install - this lives in DJZ-Nodes:

cd ComfyUI/custom_nodes
git clone https://github.com/MushroomFleet/DJZ-Nodes
cd DJZ-Nodes
pip install -r requirements.txt

Restart ComfyUI afterward, or search "DJZ-Nodes" in ComfyUI Manager. The requirements file is heavy (opencv, librosa, trimesh, moderngl among others) so give the first install a minute.

Troubleshooting

  • "None" does nothing. Correct - that's the off switch. If you want the effect and see nothing, check vignette_type first; it defaults to "Mechanical" in the schema so this one's usually not the trap.
  • The effect flickers too hard. You've got temporal_variance on Random or Pulse with a high amplitude. For "looks like film, doesn't look like a broken light," keep amplitude under ~0.2 and reach for Sine.
  • Edges look banded, not soft. Raise mechanical_feather. A tight feather at high intensity draws a hard ring, which is a look - just probably not the one you wanted.

The honest take: it's a subtle tool for finishing, not a headline effect. But subtle is what separates AI video that looks generated from AI video that looks shot. Pair it with the pack's film grain and color temperature nodes and you've got a one-pack analog film finish.

Categoryimage/effects

Inputs (10)

NameTypeDefaultDescription
imagesIMAGE
vignette_typeCOMBO4 options: Mechanical, Chemical, Both, None
mechanical_intensityFLOAT0.500–1
mechanical_featherFLOAT0.300.1–1
chemical_intensityFLOAT0.400–1
chemical_irregularityFLOAT0.200–1
temporal_varianceCOMBO5 options: None, Sine, Random, Pulse, Custom
custom_expressionSTRINGsin(t * 0.1) * 0.2
variance_speedFLOAT1.00.1–5
variance_amplitudeFLOAT0.200–1

Outputs (1)

NameTypeDescription
IMAGEIMAGE