1 The idea
Real lenses send less light to the corners (vignetting). CG doesn’t have it, so if the plate has a vignette and the CG doesn’t, CG near a corner looks too bright.
A vignette is a multiply. Match it on the CG, or apply it to the whole frame at the end, but don’t add it again on top of a plate that already has one.
2 Hands-on in the mini compositor
3 Deep dive
A vignette is a multiply that depends on position
The centre is multiplied by 1, the corners by less than 1. In our lab the corners are multiplied by (1 − amount), and softness sets how far from the corner the darkening starts. The table turns amount into stops.
| amount | Corner × | Equals |
|---|---|---|
| 0.2 | 0.8 | −0.32 stop |
| 0.3 | 0.7 | −0.51 stop |
| 0.5 | 0.5 | −1 stop |
| 0.75 | 0.25 | −2 stops |
Why the CG needs it, and why it moves
A vignette is stuck to the frame, not to the scene. When the robot walks from the centre towards a corner, the plate around it keeps getting darker. A Grade matched while the robot was in the centre is too bright by the time it reaches the corner.
Because it is a multiply, the blacks drop too. A black sampled in the centre won’t hold in the corners; when matching blacks, sample near where the CG really is.
Where it goes in the script
There are two right ways. One: give only the CG a vignette that matches the plate, before the merge. Two: divide the vignette out of the plate at the start, comp everything in an evenly lit frame, then multiply the vignette back over the whole image at the end, much like undistort and redistort.
Either way, the vignette sits after lens distortion and before grain, because grain is made at the film or sensor and isn’t darkened by the lens.
- 1Redistort CG
- 2Vignette on the CG
- 3Merge over plate
- 4Grain
- 5Write
Measuring the plate’s vignette
The accurate way is an even, flat surface shot with the same lens and aperture, like a plain wall or the lens grid. Divide the corner value by the centre value and you have the corner multiplier directly.
The sky in the desert plate is only a rough guide, since a real sky isn’t evenly bright; it is often brighter near the horizon. Vignetting is usually strongest wide open and weaker as you stop down.
Corner ÷ centre = corner multiplier
4 In real work
In Nuke
- A large, soft Radial → used (inverted) as the mask of a Grade or Multiply that darkens
- Apply it to the CG before the Merge, using the multiplier measured from the plate
- Or: Merge divide to take the vignette out of the plate at the start, then Merge multiply it back at the end
- Order: CG → LensDistortion (redistort) → vignette on the CG → Merge over the plate → Grain → Write (if you divided the vignette out of the plate first, put it back on the whole frame after the Merge, then Grain)
Common mistakes → the fix
- ✗ Adding a vignette to the whole frame at the end when the plate already has one✓ Apply it to the CG only, or divide it out of the plate first and put it back later
- ✗ Matching the CG Grade on one frame while the robot is in the centre✓ Check several frames, especially with the robot near a corner, or give the CG a frame-locked vignette
- ✗ Putting the vignette after the grain✓ Vignette before grain, or the grain fades unnaturally in the corners
- ✗ Measuring the vignette from the sky and trusting it exactly✓ Use a flat surface or lens grid if you have one; the sky is only an estimate
Before you send the shot
- The plate’s corners aren’t vignetted twice
- CG near the corners darkens as much as the plate around it
- Several frames checked when the CG moves across the frame
- Order: distortion → vignette → grain
5 Check yourself
The plate already has a vignette. What about the CG?
🔒 Answer the question above and this card opens
1. In the lab, amount = 0.5. How many stops darker are the corners?
2. The robot walks from the centre to a corner, and a Grade matched at the start becomes too bright. Most likely cause?
Where the numbers come from: Computed in your browser. Saturation, Multiply, Clamp, Invert, Keymix, Copy and Grade match Nuke 17.0v2 (checked). Blur, Defocus, Glow, Sharpen, ChromaticAberration, Vignette, LensDistort, Grain, Erode, Toe, the Keyer and Despill are teaching versions, not identical to Nuke’s nodes. Transform here is also a teaching version: bilinear filtering, no concatenation, cropped at the frame edge. Images are our own Blender renders (the green screen is fully code-built; the desert scene uses Gaea 2.3 hills, a Poly Haven CC0 HDRI sky, Poly Haven CC0 rocks and grass, Quixel sand and cliff textures and a Mixamo rig for the robot, with Quixel and Mixamo used in the renders only).