Bulge & Pinch
Swells a round area of the picture like a lens bump, or squeezes it together. Its rim blends smoothly into the rest.
Group: Lens & Distort · How to add an effect


Use it for: a magnifying-glass moment · a bump that grows out of the picture on a cue · a cartoon squeeze of a face or an object.
- Amount – above 1 the middle swells, below 1 it squeezes together.
- Radius – how large the round area is.
- Center X / Center Y – where it sits.
Tip: keyframe Amount from 1 (no change) up to 2 to let a bump grow out of a still picture, and back to 1 to let it sink again. Bulge & Pinch changes one round area and leaves the rest of the picture untouched; Fisheye Lens bends the whole frame like a lens and keeps the corners in place (which one?).
Presets
Section titled “Presets”Pick one in the Preset row of the effect card. It sets all controls at once, in one undo step, and the row then shows its name until you change something. A control with keyframes keeps them, and the card says so. Every preset sits in the middle of the frame: move Center X and Center Y afterwards to put it on your subject.
Magnifying Glass – Amount 3, Radius 0.3: a small, strong lens. What lies in the middle is three times as large, the rest of the picture stays as it is. For a detail the audience should read, or a comic peek.
Soft Swell – Amount 1.35, Radius 0.9: the whole middle swells gently, so the picture seems to breathe towards the audience. Animate Amount between 1 and 1.35 for a slow pulse.
Fishbowl – Amount 2, Radius 0.7, Shape Stretch to Frame: a wide oval bulge across the frame. The middle comes close and the sides bow round, as if seen through a fishbowl.
Pinch – Amount 0.5, Radius 0.5: the middle shrinks and pulls the picture in towards it, as if it were sucked away. Good for a disappearance or a dizzy moment.
Controls
Section titled “Controls”Preset – a starting point for every control; see Presets.
Amount – how strongly the area swells or squeezes. 1 changes nothing. Above 1 the middle is magnified exactly that many times: the default 2 makes it twice as large, 3 three times, and towards 3 the enlarged pixels get soft. Below 1 it pinches, but not as the mirror image of a bulge: 0.5 shows the middle about 1.6 times smaller (not half), and 0 about 2.6 times smaller. Below about 0.3 a ring halfway to the rim stretches into streaks that point to the middle. 0 to 3, default 2.
Radius – how large the round area is, as a share of the shorter side of the frame (the height of a wide picture). 0.5 makes a circle as tall as the picture, 0.2 a small spot, 1 reaches well beyond the top and bottom. Outside the area nothing moves, and towards its rim the effect fades out smoothly, so no edge shows. 0.05 to 1, default 0.5.
Center X – where the middle of the area sits across the frame: 0 is the left edge, 1 the right. Move it onto a face or an object that is not in the middle; the area may reach past the frame edge. 0 to 1, default 0.5.
Center Y – where the middle of the area sits from top (0) to bottom (1). 0 to 1, default 0.5.
Shape – Circle keeps the area round on any frame. Stretch to Frame stretches it with the frame into an oval as wide as the picture, so on a wide frame it bends more across than up and down; at Radius 0.5 the oval just touches all four edges. Circle, Stretch to Frame, default Circle.
Frame Edges – what shows where a pinch reads from beyond the picture: with a large Radius, or with the area near an edge. Mirror reflects the picture there, Clamp repeats its border pixels as streaks, and Transparent leaves those places empty, for a layer below to show through. A bulge only reads from nearer the middle, so with the area inside the frame it never needs this. Mirror, Clamp, Transparent, default Mirror.
Node setup
Section titled “Node setup”Bulge & Pinch does not paint anything: it moves where each pixel reads from, like every distortion of its group (the shared idea). It works in five stages, one folder each in the Nodes tab: Centre, Shape & Radius measures where a pixel lies in the area, Bulge & Pinch Curve works out from where it reads instead, Premultiplied Source prepares a copy of the picture with clean transparent edges, Frame Edges & Sampling reads that copy there, and Straight Alpha Output turns the result back into a normal picture. All of it runs in one pass after the copy. Click a folder’s header to open it; the sections below show what is inside.
Centre, Shape & Radius
Section titled “Centre, Shape & Radius”Subtract – the pixel’s place (UV) minus the centre, which Combine Vector builds from Center X and Center Y: the way from the middle of the area to this pixel, as a share of the frame.
Switch – the Shape Scale. For Circle it takes the frame size divided by its shorter side (Divide, Minimum), so a step across counts as much as a step up and the area stays round. For Stretch to Frame (Greater Than compares Shape with Half) it takes (1, 1), and the area stretches with the frame.
Multiply – the way from the centre times the Shape Scale: the Offset, measured in shorter sides of the frame. The later stages bend this Offset.
Divide – the Length of the Offset divided by Radius: Distance / Radius, 0 in the middle and 1 at the rim of the area. Maximum keeps Radius above 0.0001, so a Radius of 0 never divides by zero.
Bulge & Pinch Curve
Section titled “Bulge & Pinch Curve”Multiply – the falloff: Multiply, Subtract and Maximum turn Distance / Radius into 1 − r², which is 1 in the middle and 0 at the rim, and this Multiply squares it. Squared, it reaches 0 with no kink, so the rim of the area never shows as a line.
Natural Logarithm – the bulge strength: the logarithm of Amount, kept at 1 or more by Maximum. That value makes the middle grow exactly Amount times; for a pinch it is 0.
Pinch Beta Limit – −0.95, the deepest pinch. One minus Amount, held between 0 and 1 by Clamp, times this value is the pinch strength: 0 for a bulge, −0.95 at Amount 0. It stays above −1, where the pinch would fold the picture back over itself.
Add – the bulge strength plus the pinch strength: the Strength, positive for a bulge and negative for a pinch. The next Multiply scales it by the falloff, so it is full in the middle and fades to nothing at the rim.
Exponential – after Subtract from Zero, turns that into the Lens Scale: below 1 in a bulge, so a pixel reads nearer the middle and the picture there grows, above 1 in a pinch, so it reads farther out and the picture shrinks. The last Multiply applies it to the Offset; Divide and Add then turn the moved Offset back into the Read Position.
Remix: for a lens with a visible glass rim, connect the output of the top Maximum to input B of the Multiply right of Multiply (1), in place of the cable from Multiply (1). The bump then stays strong further out and ends in a clear edge.
Premultiplied Source
Section titled “Premultiplied Source”Multiply – multiplies each pixel’s colour by its alpha. A fully transparent pixel then carries no colour, so when the next stage blends neighbouring pixels, a cut-out figure gets no dark or coloured fringe.
Cache Image – keeps that copy for the frame, so the distortion reads it as often as it needs without preparing it again.
Frame Edges & Sampling
Section titled “Frame Edges & Sampling”Mirror Repeat – turns a Read Position beyond the frame into its mirror image inside it, as if the picture were reflected at its edges. Used for Mirror.
Clamp – holds the Read Position between (0, 0) and (1, 1), so a read beyond the frame takes the nearest border pixel. Used for Clamp and Transparent; the Switch beside it picks one of the two positions (Greater Than checks whether Frame Edges is past Mirror).
Sample Image – reads the prepared copy at that position, blending the four nearest pixels. It is the only read of the effect.
Multiply – multiplies the sample by 1, or for Transparent by the Coverage: 1 inside the frame, falling to 0 across one pixel at its border. Only the transparency drops, so the empty edges get a smooth rim.
Straight Alpha Output
Section titled “Straight Alpha Output”Maximum – the alpha of the sample, but never below 0.000001 (the Coverage Floor), so a fully transparent pixel never divides by zero.
Divide – divides the colour by that alpha: the reverse of the Premultiplied Source step. Combine RGB + Alpha joins it with the alpha into a normal picture for the next effect.
Technical details
Section titled “Technical details”- Formula. With p the offset from the centre (in shorter frame sides) and r = |p| / Radius, a pixel reads from p × exp(−β (1 − r²)²) inside the area, with β = ln(max(Amount, 1)) − 0.95 × clamp(1 − Amount, 0, 1). Above 1 the centre is magnified exactly Amount times; a pinch stays above β = −1, so it never folds the picture back on itself.
- Amount 1 skips the recipe, so the picture passes through exactly.
- Sampling. Each pixel is read once, from a premultiplied copy, and the result is unpremultiplied, so cut-outs keep clean edges. A strong pinch can shimmer on fine detail, and a strong bulge shows soft enlarged pixels.
- Warnings. A Radius at or below 0, a negative Amount (it acts like 0) and an unknown Shape or Frame Edges are named below the effect and in the tool results.
- Software preview and export. Without WebGPU the same recipe runs on the CPU.
- Saved projects. An untouched graph, an effect saved before effects owned a graph and an effect preset of the earlier recipe load as the current recipe with Stretch to Frame and Clamp, and get the smooth curve.
- More: Effect system: editable UV distortions · Lens & Distort notes · Node Catalog · Styles and presets.








