Docs · Distortion
Heat Shimmer
Heat-haze refraction: an evolving noise field bends the image the way hot air does, with wind that drifts the shimmer laterally and a heat-pass control that selectively blurs the most distorted regions, just like real mirage optics.
| Version | 0.3.0 |
|---|---|
| Parameters | 23 |
| GPU | On the GPU (Metal), with a CPU fallback. Nothing to configure. |
| Hosts | After Effects 2020 or later (2025 or later recommended). macOS 11 or later, Apple Silicon and Intel. |
Heat Shimmer pushes an evolving noise field through the image and bends it the way hot air does. It’s the tool for the wobble over pavement at noon, the column rising off an exhaust pipe or a jet nozzle, the air above a candle or a burn barrel — and, pushed past the photographic zone, for stylized energy fields that have nothing to do with a real plate.
It runs in two stages, and the second one is why it reads as heat rather than as a warp. First the refraction: the noise field bends the image, so the plate wobbles. Then the heat pass, which selectively blurs the most distorted regions — real mirage optics don’t just bend light, they scramble it, so the air that bends hardest is also the air you see through worst. Displacement alone reads as a wobbly plate; displacement plus a little of that softening reads as air. Most of the dials belong to one of those two stages, or to the noise field that both of them read; the handful that don’t — Mask, Render, Field to Alpha — decide where the effect lands and what you’re looking at while you dial it.
That split is also the working method. Distortion Amount is the honest “how much” dial and Heat Amount is its partner; everything in the noise block — pattern, scale, complexity, gamma, aspect — is character, deciding where the heat sits and what shape it takes rather than how hard it hits. Because the two stages cover for each other on screen, the Render popup lets you take them apart: Displacement isolates the bend, Heat isolates the softening, and Field shows the noise field itself in grayscale. Dial each thing where you can actually see it, then go back to All.
Noise Speed churns the field in place and Wind Speed drifts it; most convincing heat is both at once. Noise Seed is exposed, so a second instance at another seed stacks into the same shot without the two fields locking together. A Mask layer confines the shimmer to a region, Field to Alpha turns the effect from a filter on a plate into a compositable element with its own boiling matte, and the four Master dials ride the whole look once you’ve struck the balance underneath.
Parameters
Controls
19 params
Distortion Amount is the “how much” dial, and it decides whether you’re doing photography or graphics. The default Distortion Amount = 10 is visible on a locked-off shot without announcing itself as an effect; Distortion Amount 5–15 covers pavement, exhaust, and candle flames; by Distortion Amount = 20 the bend has stopped reading as air and started reading as a force field. The slider stops at 50 and the hard range runs to 100 — that upper country is for stylized fields, not for plates. Judge it with Render set to Displacement, where nothing else is covering for it.
The heat pass is what separates this from a wobble. Heat Amount sets how much detail the most distorted regions lose: at the default Heat Amount = 50 the hot regions visibly soften while the calm parts of the frame stay sharp, and Heat Amount = 0 turns the stage off entirely. Heat Bias decides how much of the frame the softening covers: lower it and the blur spreads wide, raise it and it retreats to the strongest pockets of the field. Start from the default Heat Bias = 0.5, then move it with Render on Heat and stop where the softening sits on the regions you meant to haze — spread too wide it takes the whole frame with it, pulled too tight it reads as isolated pockets rather than atmosphere. Heat Softness then smooths the handoff between softened and untouched. At Heat Softness = 0 you can see where the blur starts and stops — each hot region gets an edge of its own; the default Heat Softness = 5 hides that on most plates, and Heat Softness 10–20 is the fix when the softened patches still read as shapes instead of as air. Balance the two amounts against each other: heavy Distortion Amount with no heat is a clean glassy warp — right for a shockwave, wrong for hot air — while a light bend with a generous Heat Amount gives the soft breathing patches of very hot, very still air seen from a distance.
Noise Pattern is the first thing to audition and the hardest thing to describe on paper. Switch Render to Field, step through Flame (the default), Smoke, and Ember on your own plate, and keep the one whose structure sits where the heat belongs — busy where the source is, quiet where it isn’t. Noise Scale sets feature size: low values give the tight fizz of air coming off hot metal, the default Noise Scale = 100 suits a mid shot of pavement, and Noise Scale 200–400 gives the fat slow masses that read as a whole atmosphere rather than a single source. Noise Complexity is the octave count — Noise Complexity 1–2 for a smooth field and cheaper renders, the default Noise Complexity = 3 for most plates, Noise Complexity 6–8 when the field should break into filigree.
Four dials shape that field before either stage reads it. Noise Gamma reshapes its distribution — the dial for how much of the frame is doing anything at all. Noise Gamma = 1 is neutral; above it the field thins toward sparse tendrils, below it fattens into a dense full-frame wash — judge the move with Render on Field. Noise Aspect stretches the field along one axis: positive pulls it into the vertical columns of convection, negative lays it into the flat layers of stratified air over a long road — and the positive side pulls harder for the same move. The default Noise Aspect = 0 is neutral, and small moves show — Noise Aspect 0.2–0.4 is already a plain stretch. Noise Offset slides the field without changing the pattern — the way to move structure off a face or onto a hot spot — and it keyframes, so a slow linear offset is an alternative to wind. Noise Seed re-rolls the field for when the structure lands badly and you want a different draw rather than a different look; two instances at different seeds give you two independent fields to stack.
Noise Speed is evolution in place: features form and dissolve without going anywhere, which is the honest motion for still hot air over a parking lot or above a candle. The default Noise Speed = 1 is a lively boil, Noise Speed 0.2–0.5 the slow heavy churn of a large heat mass, Noise Speed = 0 a frozen field. Wind Speed drifts the whole field instead and Wind Direction sets which way it goes — scrub the angle with Render on Field and stop where the drift runs the way the air should. Useful wind numbers are small, and the working band sits below the default Wind Speed = 1: Wind Speed 0.2–0.8 covers everything from a barely-moving column to a steady plume, negative values reverse it, and the slider’s outer reaches are streaming-energy territory rather than heat. A convincing plume is almost always both dials at once — wind alone reads as a texture sliding past the camera, evolution alone as a static volume of air that happens to be boiling.
Mask confines the shimmer: assign any layer and the effect follows that layer’s matte, so it fades where the matte falls off instead of stopping at a hard edge. Left at none it renders over the whole frame — the default, not a bypass. Mask Mode picks what the matte reads: Alpha for a shape layer or a rendered element with real transparency, Luma for a painted grayscale plate, usually the fastest route — a white blob over the exhaust on black, feathered wide. Inverted Alpha and Inverted Luma are for when the easier region to paint is the one you want protected.
Render is the diagnostic popup, and using it is most of what makes this effect quick to dial. All is the finished result; Displacement and Heat isolate one stage each; Field shows the noise field itself in grayscale, the fastest way to see what Noise Scale, Noise Gamma, and Noise Aspect are actually doing. Field to Alpha is a different proposition entirely: the field is written into the alpha channel, and the effect stops being a filter on a plate and becomes a generator you can composite — a boiling, drifting matte with its motion already built in. Give it a layer with real color variation to work on; there’s nothing for either stage to bend or soften in a flat solid, and you’d get the matte with a dead interior.
| Name | Type | Range | Default | Choices |
|---|---|---|---|---|
| License | button | — | — | — |
| Noise Pattern | popup | — | Flame | Flame · Smoke · Ember |
| Distortion Amount | slider | 0–50 (hard 0–100) | 10 | — |
| Heat Amount | slider | 0–100 | 50 | — |
| Heat Bias | slider | 0–1 | 0.5 | — |
| Heat Softness | slider | 0–20 | 5 | — |
| Noise Scale | slider | 10–400 (hard 1–1000) | 100 | — |
| Noise Complexity | slider | 1–10 | 3 | — |
| Noise Gamma | slider | 0–4 (hard 0–5) | 1 | — |
| Noise Aspect | slider | -1–1 | 0 | — |
| Noise Offset | point | — | (0, 0) | — |
| Noise Speed | slider | 0–5 | 1 | — |
| Wind Speed | slider | -10–10 (hard -200–200) | 1 | — |
| Wind Direction | angle | — | 0 | — |
| Noise Seed | slider | 0–100 (hard 0–10000) | 0 | — |
| Mask | layer | — | none | — |
| Mask Mode | popup | — | Alpha | Alpha · Luma · Inverted Alpha · Inverted Luma |
| Render | popup | — | All | All · Displacement · Heat · Field |
| Field to Alpha | checkbox | — | off | — |
Master
4 params
The four macros ride the look you already struck, and 100 is neutral on each. Master Amount multiplies Distortion Amount and Heat Amount, each on its own fold — the dial to keyframe when shimmer should build as something heats up, since bend and softening then arrive in the proportion you set by hand. Master Speed multiplies Noise Speed and Wind Speed: one value for churn and drift when a shot gets retimed, and the ratio you struck between them survives the move. Master Scale multiplies Noise Scale, resizing the field’s features and nothing else. Master Complexity multiplies Noise Complexity — take it down while you work a heavy comp, back up for the final.
Ride either the macro or the dials it folds, never both: keyframe a macro and its underlying dial at once and the scaling compounds. Master Amount = 0 zeroes both, which makes it your A/B against the untouched plate and a clean place to keyframe from when the shimmer should arrive out of nothing.
| Name | Type | Range | Default | Choices |
|---|---|---|---|---|
| Master Amount | slider | 0–200 (hard 0–400) | 100% | — |
| Master Scale | slider | 0–200 (hard 0–400) | 100% | — |
| Master Speed | slider | 0–200 (hard 0–400) | 100% | — |
| Master Complexity | slider | 0–200 (hard 0–400) | 100% | — |
Examples
Heat haze over a highway plate
Air above sun-baked asphalt that wobbles and softens without ever announcing itself as an effect
- Apply Heat Shimmer to the plate and set
RendertoDisplacementso you’re judging the bend with nothing covering for it. PullDistortion Amount= 6, below the default — road haze through a normal lens is a small move, and it’s the difference between a plate that shimmers and a plate that swims. - Character: leave
Noise PatternonFlameas a first pass, and setNoise Scale= 140 so the features are sized like the air above a road rather than the air off a burner. Before you commit, flipRendertoFieldand step the other two patterns — one of them usually lands its structure closer to where the road actually cooks. - Stratify it: hot air over a long flat surface layers rather than columns, and negative
Noise Aspectis the layered direction. TakeNoise Aspect= -0.4 withRenderonFieldand watch the structure lay down flat across the road. This single dial does more for the shot than the amount does. - Motion:
Noise Speed= 0.6 for a slow churn andWind Speed= 0.4 for drift. Then scrubWind DirectionwithRenderstill onFieldand stop where the layers slide across frame instead of climbing out of it. - Now the softening. Switch
RendertoHeatto see that stage alone, setHeat Amount= 30 andHeat Bias= 0.55 so only the strongest lanes lose detail. If you can see where the softening starts and stops, takeHeat Softness= 8. - Confine it and go back to
All. Make a black solid, ramp a soft white band over the road surface and up to the horizon, then assign that layer toMaskwithMask Modeset toLuma. The shimmer only reaches as far as the matte does, so feather the top edge generously and the haze thins out with distance instead of ending on a line.
Variations: drop Distortion Amount to 4 and raise Heat Amount toward 45 for a distant, barely-moving heat mass; or duplicate the instance with a different Noise Seed and a larger Noise Scale underneath for a second, slower layer of atmosphere.
Exhaust plume off a hot nozzle
A confined column of distorted air rising off an engine, a jet wash, or a barrel fire
- Apply Heat Shimmer to the plate, set
Noise Scale= 70 — a plume’s structure is smaller than a landscape’s — and audition all threeNoise Patternchoices withRenderonField. Keep whichever one puts its busiest structure where the column will be. - Make it convect: stretch
Noise Aspectoff round toNoise Aspect= 0.35, checking both signs onField, and keep the one that stands the structure up into columns — that read is what turns the shimmer into rising air rather than a warp sitting on the shot. Distortion Amount= 14 — the hot end of the photographic band, warmer than road haze and still short of where refraction stops reading as air.- Climb: scrub
Wind Directionuntil the field travels up the column, thenWind Speed= 0.8 to carry it andNoise Speed= 1.2 so it churns on the way. Both together is what a plume actually does; either alone reads as a texture. - Confine it: a black solid with a soft white cone painted from the nozzle upward, widening as it rises, assigned to
MaskwithMask Modeset toLuma. Keep the top of the cone soft and the column dissipates into the frame rather than stopping at a line. - Add the detail loss:
Heat Amount= 45 withHeat Bias= 0.45 puts real softening inside the column. This is the read that sells actual heat over a displacement map — the background through the plume should be losing definition, not just moving. - If the field’s structure lands badly against the nozzle — a quiet region right where the plume should be busiest — nudge
Noise Offsetinstead of re-rolling. It slides the field without changing the pattern you already approved.
Variations: keyframe Master Amount from 0 up to 130 across an engine spool-up so the plume grows with the throttle; or tilt Wind Direction off the column’s axis and drop Noise Aspect to 0.2 for a plume leaning into a crosswind.
Stylized energy field with its own matte
A boiling, drifting energy element generated from the noise field instead of filtered from a plate
- Build the source layer first: a solid carrying a two-color gradient in your energy colors, not a flat fill. Both stages need color variation to act on — a flat fill gives you the matte and nothing moving inside it.
- Apply Heat Shimmer to that layer and check
Field to Alpha. The alpha channel now carries the noise field, so the element is cut into shapes that boil and drift on their own. - Set
RendertoFieldand dial the shape while you can see it plainly:Noise Scale= 60 andNoise Complexity= 6 for small, broken structure, then stepNoise PatternthroughFlame,Smoke, andEmberand keep the cell shape you want the element built from. - Shape the matte with
Noise Gamma, still onField:Noise Gamma= 1.6 thins it to sparse tendrils,Noise Gamma= 0.7 on the other side of neutral fattens it into a dense sheet with holes in it — keep the one your element wants. - Return
RendertoAlland push both stages well past the photographic zone:Distortion Amount= 28 andHeat Amount= 70. The gradient now warps and smears inside the matte, which is what keeps the element from looking like flat color in a fancy shape. - Motion:
Noise Speed= 1.5 withWind Speed= 0.5 — a field that boils faster than it travels reads as energy rather than as weather. If the whole element needs to sit in slow motion later,Master Speedtakes churn and drift down as one. - For depth, duplicate the layer, set
Noise Seed= 12 on the copy, scale it slightly and blend it under the original. The two seeds give you two independent fields, so the stack reads as volume instead of as one shape doubled.
Variations: drop Noise Complexity to 2 and raise Noise Scale toward 200 for a slow, massive containment-field version; or invert the intent — Noise Gamma = 0.4 with Distortion Amount = 45 for a churning full-frame plasma wall.