Skip to content

Zoom Blur

Streaks the picture outward from a centre point, as if the camera rushed in while the shutter was open. A burst of speed.

Group: Blur & Sharpen · How to add an effect

The rainy night street, original left and with Zoom Blur at Amount 0.3 right: the neon signs, shop fronts and wet reflections streak outward from the walker in the middle, as if the camera rushed down the street while the shutter was open
Left: original. Right: Amount 0.3.

Use it for: an impact or a sudden reveal · a rush into the picture between two scenes · a tunnel of light around a performer.

  • Amount – how long the streaks are.
  • Center X / Center Y – where the burst starts.

Tip: keyframe Amount from 0 up to 0.3 and back over a few frames for a punch on a beat. For a softer zoom that fades towards the edges, use the Zoom type of Radial Blur.

The rainy night street four times, labelled: Push In with the edges just starting to streak and the signs still readable, Impact with the shop fronts and signs pulled into short streaks, Rush with long rays of neon light around the walker, Light Speed with the whole street dissolved into rays and only the walker in the middle left

The four presets on the night street.

Pick one in the Preset row of the effect card. It sets Amount and puts the centre back in the middle of the frame, in one undo step; the row shows its name until you change something. A control with keyframes keeps them, and the card says so.

Push In – Amount 0.08: the edges of the frame just begin to move while faces and text stay readable. A quiet push towards the middle, under a cut or a sound.

Impact – Amount 0.2: a clear jolt into the picture. For a hit on a beat; keyframe it for a few frames only.

Rush – Amount 0.45: long rays of light shoot out of the middle and only the centre stays recognisable. For the moment of a rush or a transition into the next scene.

Light Speed – Amount 0.9: everything but the very middle dissolves into rays. For a jump into another world; works best on dark pictures with bright points.

Properties, Effects with a Zoom Blur card: the Preset menu showing Rush, Amount at 0.45 and Center X and Center Y at 0.5, beside a strip of the preview where the shop fronts and neon lights on the left of the night street stretch into long rays pointing away from the middle of the frame

Zoom Blur with the Rush preset. 1 — Preset: pick a starting point. 2 — Amount: how long the streaks are. 3 — Center X: where the burst starts across. 4 — Center Y: where the burst starts up or down.

Preset – a starting point for Amount; see Presets.

Amount – how long the streaks are. Every pixel is averaged with the picture on the way out from it, away from the centre, over half of Amount times its distance from the centre: the middle stays sharp, the streaks grow towards the edges and every point along them counts the same. At the default 0.3 the corners of a 1080p frame streak about 165 px, at 0.1 about 55 px and at 1 about 550 px, where only the middle survives. Animated it changes smoothly, and 0 leaves the picture untouched. 0 to 1, default 0.3.

Center X – where the burst starts across the frame: 0 is the left edge, 0.5 the middle, 1 the right edge. The point under it stays sharp, and the streaks are longest at the corner farthest from it, so an off-centre point gives a lopsided rush. Keyframe it to follow a performer. 0 to 1, default 0.5.

Center Y – where the burst starts from top to bottom: 0 is the top edge, 0.5 the middle, 1 the bottom. Move it up to the height of a face (a smaller value) to keep the face sharp. 0 to 1, default 0.5.

The Zoom Blur graph: Parameters feed Blur Range; Blur Range feeds Tap Counts & Box Length, Stage A and Stage B; Input Frame feeds Premultiplied Source, which feeds Stage A; Stage A's short boxes feed Stage B, and Straight Alpha Output turns its result back into a normal picture

Zoom Blur opened in the Nodes tab (Constants, Coordinates and the Output card left out). 1 — Blur Range: how far the streak reaches. 2 — Tap Counts & Box Length: how to cut the streak into pieces. 3 — Premultiplied Source: the picture, ready to average. 4 — Stage A: averages one short piece. 5 — Stage B: adds up the pieces along the streak. 6 — Straight Alpha Output: back to a normal picture.

Zoom Blur works in the six stages of Motion Blur, one folder each in the Nodes tab; only the path of the streak differs: a ray out from the centre instead of a straight line. Blur Range turns Amount into the range of the streak, Tap Counts & Box Length cuts the longest streak into short pieces, and Premultiplied Source prepares the picture so transparent edges stay clean. Stage A averages one short piece of the ray around every pixel and caches it, Stage B reads that cache once per piece along the whole streak, and Straight Alpha Output turns the result back into a normal picture. Click a folder’s header to open it.

Inside the Blur Range folder, reduced to its recipe: Amount times Zoom Scale Per Amount, plus One and at least Min Scale by Maximum, gives the End Scale, its Natural Logarithm the Range Length and Absolute the Longest Range

Inside Blur Range, reduced to the range of the streak (the distance to the farthest corner is left out). 1 — Multiply: how much farther out the streak reaches. 2 — Maximum: never past the centre. 3 — Natural Logarithm: the range of the streak. 4 — Absolute: the longest range.

Multiply – Amount times Zoom Scale Per Amount (0.5): how much farther out than the pixel the streak reaches, as a share of the pixel’s distance from the centre. Add puts One in front of it: the End Scale, 1.15 at the default.

Maximum – keeps the End Scale at Min Scale 0.05 or above. That only matters for a negative Amount, which a keyframe overshoot or a tool can produce and which streaks inward: below −1.9 the streak would pass the centre, so it stops there, and the card and the tool result say so.

Natural Logarithm – the logarithm of the End Scale is the Range Length, so equal steps along the streak are equal steps in size, as in a real zoom. Zoom Blur’s range is the same for every pixel; the streak in pixels grows with the distance from the centre because each step scales that distance.

Absolute – the Range Length without its sign: the Longest Range, which the tap counts are planned for, also when a negative Amount streaks inward. Beside this chain the folder measures the distance from the centre to the farthest corner of the frame in pixels (Farthest (px)): the streak is longest there, so the later stages plan their reads for it.

Remix: for twice as long streaks, set the Value Zoom Scale Per Amount to 1. Amount 1 then streaks each pixel all the way out to twice its distance from the centre, beyond what the card’s slider reaches.

Inside the Tap Counts & Box Length folder: Longest Range times Farthest (px) gives the longest streak in pixels; times Two it goes through Square Root and is clamped between One and Coarse Limit 64 into the Coarse Taps, not rounded; Longest Range divided by the Coarse Taps, at least Tiny by Maximum, gives the Box Length

Inside Tap Counts & Box Length. 1 — Multiply: the longest streak in pixels. 2 — Square Root: the balance of both stages. 3 — Clamp: how many pieces. 4 — Maximum: how long one piece is.

Multiply – the Longest Range times the distance to the farthest corner: about the longest streak anywhere in the frame, in pixels. At the default (Amount 0.3, centred) it is about 150 px in a 1080p frame, at Amount 1 about 450 px.

Square Root – the square root of twice that length. Cutting the streak into that many pieces gives both stages about the same work: 150 px become about 17 pieces of about 9 px, so a pixel in the corner reads about 26 times instead of 150.

Clamp – keeps that between 1 and 64 without rounding it: the Coarse Taps, how many pieces Stage B reads at most. It is rarely a whole number; the last piece then counts only with the share of it that fits (Stage B), so the pieces grow smoothly with Amount instead of jumping by one.

Maximum – the Longest Range divided by the number of pieces: the Box Length, shared by every pixel. It is measured along the range, not in pixels, so a piece is longer far from the centre and shorter close to it, just like the streak. It never reaches 0, so a zero streak cannot divide by zero.

Inside the Premultiplied Source folder: Frame goes into Split RGB + Alpha; Alpha to Scalar and Multiply scale the colour by the alpha; Combine RGB + Alpha joins it with the alpha again, and Cache Image keeps the result

Inside Premultiplied Source (cached). 1 — Multiply: colour times transparency. 2 — Cache Image: keeps the prepared picture.

Multiply – multiplies each pixel’s colour by its alpha. A see-through pixel then adds almost nothing to the average, so the colour of its invisible part cannot smear into the streak as a dark rim around a cut-out figure or a title.

Cache Image – keeps the prepared picture in a 16-bit float texture for Stage A to read, so no precision is lost in dark areas.

Inside the Stage A folder, reduced to its recipe: Half Box (px) divided by Cell (px) gives the half piece in cells; minus the Ring and clamped between 0 and 1 it is the share of that ring's cell the piece covers, at least a tiny floor by Maximum the Fine Weight; Rings needed, clamped and doubled by Multiply, gives the Fine Taps; Sample Image reads the Premultiplied Source at the Read position, Sequence Reduce adds up the weighted reads, Normalize by Weight turns the sum into an average and Cache Image keeps the Short Boxes

Inside Stage A, reduced to its recipe (how the piece and the read position are worked out is left out, and so are the fixed values). 1 — Divide: the half piece in cells. 2 — Clamp: how much of a cell counts. 3 — Multiply: how many reads. 4 — Sequence Reduce: adds up the reads. 5 — Cache Image: keeps the short pieces.

Divide – half of this pixel’s piece in cells of one pixel. The piece is the Box Length times the pixel’s distance from the centre (Length in the folder), so it is longer far from the centre and shorter close to it. Only a piece longer than 256 px gets cells wider than a pixel (Cell).

Clamp – the reads sit one pixel apart, in pairs from the pixel outward, each in the middle of its one-pixel cell. A cell the piece covers only partly counts with that share, and its read moves to the middle of the covered part; Maximum keeps every weight just above 0. So the piece grows smoothly with Amount: a new pair enters with weight 0 and grows in, and even a piece shorter than a pixel blurs a little instead of leaving the picture unchanged.

Multiply – the number of reads: twice the rings needed to reach the end of the piece, kept between 1 and 128 pairs by the other Clamp. Close to the centre it is 2, in the far corners as many as the piece has pixels.

Sequence Reduce – reads the Premultiplied Source at every position along the piece (Sample Image) and adds up the reads, each times its weight; Normalize by Weight divides by the summed weight, so the sum becomes an average. The reads run along the ray through the centre: each read’s step along the range becomes a scale (Exponential) of the pixel’s offset from the centre. A read that falls outside the frame repeats the edge pixel; a mirrored edge, as in Motion Blur, would fold the path onto another ray.

Cache Image – keeps, for every pixel, the average of the short piece around it: the Short Boxes that Stage B reads.

Inside the Stage B folder, reduced to its recipe: Streak length divided by Box Length gives the number of pieces; minus the Coarse Tap and clamped it gives the covered share, at least Covered Floor by Maximum the Box Weight; One times the Box Weight by Multiply gives the Tap Weight; Sample Image reads the Short Boxes at the Read position, Sequence Reduce adds up the weighted reads over Taps Here and Normalize by Weight divides by the summed weight

Inside Stage B, reduced to its recipe (how the read offset and position are worked out is left out). 1 — Divide: how many pieces fit. 2 — Clamp: how much of a piece lies on the streak. 3 — Multiply: the weight of a read. 4 — Sequence Reduce: adds up the pieces.

Divide – the Streak length divided by the Box Length: how many pieces fit on this pixel’s streak. In Zoom Blur every pixel has the same range, so that is the Coarse Taps, rarely a whole number: the last piece counts only with the share of it that fits (Clamp), so the blur grows smoothly with Amount.

Clamp – how much of piece number Coarse Tap lies on the streak, between 0 and 1: 1 for every piece but the last, which counts only the share of it that fits, so the blur grows smoothly with Amount.

Multiply – One times the Box Weight: the Tap Weight of a read. Every piece along the streak counts the same, which gives Zoom Blur its hard, even rays; Radial Blur’s Zoom puts a fade into this input instead.

Sequence Reduce – reads one cached short piece per tap (Sample Image on the Short Boxes). The Read position is left out of the picture: as in Stage A, an Exponential turns the tap’s place along the range into a scale around the centre, so each tap lands one piece farther out on the ray. Sequence Reduce adds them up with their Tap Weights, and Normalize by Weight divides by the summed weight, so the streak keeps the picture’s brightness.

Inside the Straight Alpha Output folder: the Coarse Average goes into Split RGB + Alpha; Alpha to Scalar and the Coverage Floor feed Maximum; Divide divides the colour by it, and Combine RGB + Alpha joins colour and alpha into the Blurred Image

Inside Straight Alpha Output. 1 — Maximum: never divide by zero. 2 — Divide: the colour back to full strength. 3 — Combine RGB + Alpha: the finished picture.

Maximum – the averaged alpha, but never below the Coverage Floor, a tiny 0.000001. Fully transparent pixels then stay black and transparent instead of turning into errors.

Divide – divides the averaged colour by the averaged alpha: the reverse of the Multiply in Premultiplied Source, so half-transparent streaks get their real colour back.

Combine RGB + Alpha – joins colour and alpha into the finished picture that leaves the effect.

  • Units. Center X and Y are shares of the frame (0 to 1, from the top left). Each pixel reads from its own place out to 1 + Amount / 2 times its distance from the centre, with even weights, so the streak is Amount / 2 of that distance: 0 in the centre, about 550 px in the corners of a 1080p frame at Amount 1. At the same Amount the streak is about 3.5 times as long as that of Radial Blur’s Zoom in the corners, and even more so near the centre.
  • Two stages. About 2 × √(2 × longest streak in pixels) reads per pixel: Stage B reads up to 64 pieces, Stage A up to 256 pixels per piece. Neither count is rounded to a whole read: the last piece and the outermost reads count with the share of them that fits, so the blur changes smoothly when the amount is animated. A streak beyond that (only on very large frames) reads its pieces further apart, and the card and the tool result say so.
  • Edges. At the frame edge the picture is clamped, not mirrored. Because the reads look outward, a cut-out layer’s edge pulls inward and gets soft instead of spreading; transparent edges keep their real colour without a dark rim, and the preview and the export match.
  • Below 0 and zero. A negative Amount (from a keyframe overshoot or a tool) streaks inward, as in earlier versions, which looks like a zoom out; below −1.9 the streak stops at the centre and the card and the tool result say so. An unedited Zoom Blur at Amount 0 is skipped, so the picture passes through exactly.
  • Software preview. Where the editor falls back to its software preview, Zoom Blur reads the same path in one stage of up to 64 one-pixel steps, blended between pixels, so an animated amount changes smoothly there too. Streaks longer than 64 px spread their reads and can look stepped; the SoftwareBlur log says so.
  • Saved projects. They keep their look, with one fix: every Zoom Blur without an edited node setup renders with the current recipe, also in projects saved with version 3.2.7 (that recipe jumped a little where an animated amount added a read, and left a streak under about a pixel unchanged). Still pictures differ by less than half a level on average, up to about 10–30 levels on thin high-contrast lines. The old Samples value is kept in the project but no longer changes anything. A Zoom Blur whose node setup you edited keeps its own recipe.
  • More: Blur & Sharpen notes · Editable blur kernels · Node Catalog · Styles and presets.