Colour and gradients
How colour is stored, why gradients band, and what to do about it.
Colour is mostly invisible as a system until something looks wrong — a gradient bands, a fade goes muddy in the middle, an export looks flatter than the canvas. All three have the same small set of causes.
Gradients#
A gradient is a list of stops, each with a colour and a position. Between two stops the colour is interpolated. Where you put the stops matters more than how many you use — three well-placed stops beat eight arbitrary ones.
- Linear ramps along an angle.
- Radial spreads from a point.
- Conic wraps around a point, which is what a colour wheel or a sweeping highlight needs.
The muddy-middle problem#
Interpolating between two saturated complementary colours passes through grey. Blue to orange goes through a dead zone in the middle that neither end predicts.
The fix is a third stop. Put a saturated colour at the midpoint — for blue to orange, something like magenta or a warm purple — and the ramp travels around the desaturated centre rather than through it.
Banding#
A large area with a subtle gradient shows visible steps, because there are only 256 values per channel and a slow ramp across 1000 px has to reuse each one about four times.
Two fixes, in order of preference:
- Add a little Noise / Grain. Three to five percent breaks up the step edges and is invisible as grain. This is what film did for free.
- Make the gradient travel further in colour, so it uses more of the available range over the same distance.
Video encoders allocate bits to detail, and a smooth gradient has none, so they quantise it further. A gradient that is marginal on the canvas will band in the MP4. Add the grain before exporting, not after seeing the problem.
Where colour changes hands#
Effects run on the finished picture, so a colour adjustment applies to everything below it in the stack — including other effects. Adding Levels above a glow grades the glow too. If that is not what you want, the adjustment belongs on a parent instead.
Reference: Gradient Map →