Barrel Distortion
Warps an image radially to simulate lens barrel (bulge) or pincushion (pinch) distortion.
Category: Effects Menu path: Effects > Barrel Distortion
Ports
| Port | Type | Direction | Description |
|---|---|---|---|
in | imageRgba16f | input | Input image |
out | imageRgba16f | output | Distorted result |
Parameters
| Param | Type | Default | Description |
|---|---|---|---|
amount | scalar | 0.0 | Distortion strength. Positive = barrel (bulge, content pushes outward); negative = pincushion (pinch, content pulls inward). Useful range ~ -1 to 1. Keyframeable. |
zoom | scalar | 1.0 | Scales the result about the center so distorted corners stay in frame. Values above 1 zoom in (crop edges); below 1 zoom out. Keyframeable. |
Expose Channels
When enabled (E button on node header), adds input ports that override params via edge connections:
| Port | Type | Overrides |
|---|---|---|
amount_in | scalar | amount |
How It Works
For each output pixel the shader builds a centered, aspect-corrected coordinate c = uv - 0.5 (with x scaled by the comp's width/height ratio so the warp is radially symmetric on non-square comps). It computes the squared radius r2 = dot(c, c), applies the distortion c' = c * (1 + amount * r2) / zoom, undoes the aspect correction, and samples the input at 0.5 + c'. Pixels whose source coordinate falls outside the frame become transparent. All coordinate math uses the comp resolution (not the render resolution), so the result is identical across Draft / Preview / Full quality. When amount is 0 and zoom is 1 the node is a pure passthrough and the GPU pass is skipped.
Usage Examples
Basic: Lens bulge
- Add a Barrel Distortion node after your footage or render
- Set
amountto ~0.3 for a gentle fisheye-style bulge - Raise
zoomslightly (e.g. 1.1) to hide the transparent corners that the bulge pulls in
Creative: Pincushion correction
- Set
amountto a small negative value (e.g. -0.2) to counteract a barrel-distorted source - Adjust
zoomto recover any cropped edges
Advanced: Animated lens breathing
- Enable expose channels and connect an Oscillate or Time-driven Math node to
amount_in - Animate a subtle ±0.05 wobble for a handheld / organic lens feel
Tips
- The distortion is strongest at the corners (largest radius) and near zero at the center
- Increase
zoomwhenever a positiveamountintroduces transparent corners - Because the effect samples within the existing frame, it does not expand layer bounds — pair with a Transform2D scale-up first if you need more source coverage
Related Nodes
- UVRemap — arbitrary UV-space distortion driven by a map texture
- ChromaticAberration — per-channel fringing that pairs well with lens distortion for a realistic lens look
- Transform2D — affine scale/position/rotation without radial warping