How to Create Heat Distortion

Let your audience feel the heat by adding heat wave distortion to your scene.

VN:F [1.9.22_1171]
Rating: 5.0/5 (10 votes cast)

Last week I showed you how to create a lightning storm, but this week I wanted to show you something a little hotter… Heat Distortion!

This is an effect frequently seen by those who live in hotter climates. Heat distortion occurs when the ground becomes so hot that the rising heat waves distort your view and perception.

In this tutorial you will learn how to:

  • Distort your scene without the need for ray tracing
  • Create a procedural heat wave texture
  • Make the effect increase over longer distances
  • Use the defocus node to simulate noisy out of focus

This tutorial is an adaptation of the idea presented in Matt Ebb’s displace node tutorial.

The finished result:

Close up:

Before starting a project it’s important to saturate yourself with as much reference material as you can, so you can see how the effect appears in the real world.

Photo: Matt Audet

Photo: Ken Koller

Photo: Michael Gwyther-Jones

You may wish to watch these stock footage clips as well:

Ready to create the effect yourself?

Bring the heat!

To play along at home, download the starting .blend file.

(Russian Translation)

Setting up the scene

1. Start by adding a plane and placing it directly in-front of the camera. Rotate the plane so that it complete blocks the view of the camera.

Later we will apply a texture to this plane that we will use to apply a distortion map. When it moves past the camera, the texture we apply will distort the view behind it.

2. First we need to increase the height of the plane so that it moves past the camera. Scale the plane along the Z-Axis till it’s x4 as tall (Press, S, Z, 4, Enter)

3. Position the plane so that the top of it is covering the camera.

4. Move to frame 250 and positing the plane so that the bottom of the plane is covering the camera.

5. With the plane still selected, switch to the graph editor.

In the graph editor you should see a curved line for the Z Location line (blue line).

This curved line creates a problem as it makes the plane move at a non consistent speed (starting slow then speeding up, then slowing down again). To fix this we need to make the curve line straight.

7. With the blue curve selected, hit H and in the popup menu select Vector.

The curve should now be straight:

This will move the plane at a consistent speed throughout the animation.

If you have done everything right, pressing Alt+A now will look like this:

The faster the plane moves, the more rapid the heat distortion will look.

9. With the plane selected, add a new material.

10. Leave all the options as default, but check Shadeless and uncheck Traceable so that the plane doesn’t cast a shadow.

11. Switch to the texture panel, and add a new texture.

12. Leave the default texture slot to Clouds, but change the size to 0.10 and the depth to 1.

13. Because we have scaled the plane vertically we need to increase the mapping size Y to 4 to ensure the texture doesn’t stretch.

14. Change the texture color to black.

Distorting the scene

With the basic scene setup we can now move onto the scene distortion.

15. With the plane selected, move it to a separate layer with nothing else on it. I have used layer 4.

16. In the render options, press the + button to add a new render layer.

17. Rename the Render Layer to ‘Heat Distortion’ and select the layer you moved the plane to.

18. Switch to the compositor (Shift+Right Arrow).

19. Add a new render layer (Add>Input>Render Layer), from the layer drop down list select Heat Distortion.

21. Add a displace node (Add>Distort>Displace). Connect the scene render layer to the image input and the Heat Distortion render layer to the Vector input. Set the X and Y value to 10.

This displacement node has now warped the scene with the cloud texture:

The only problem is that the entire image has been warped regardless of the distance from the camera.

In real life heat distortion builds up over longer distances. To simulate this effect we will setup a node array to distort the image relative to the Z depth pass.

Increasing the distortion over long distances

22. Add a Map Value node (Add>Vector>Map Value) and connect it to the Z-depth output. This will allow us to edit the Z-depth pass. Set the Offset to -7.00 and the size to 0.020 (these measurements will vary according to your scene). Connect the output to a viewer node to see the results.

You should have a result like this:

The darker the area, the less that area will be distorted.

23. Connect the output from the Map Value node to a ColorRamp node (Add>Converter>ColorRamp)

This will remove unwanted artifacts by converting the Z-Depth to an easy to read B&W output.

24. Add a Mix Node (Add>Color>Mix) and connect the output from the scene render layer, and the displace output into the mix node inputs.

25. Connect the output from the ColorRamp into the Fac input. This will use the Z-depth pass as a mask for the two inputs.

The scene now becomes more and more distorted the further objects are from the camera.

Creating a noisy depth of field effect

26. Add a defocus node and connect the image input to the mix output. Connect the Z input to the Z output of the scene render layer.

27. Check Use Z-Buffer so that the defocus node uses the Z-input. The fStop will define how shallow to make the depth of field. I have set mine to 10. To create a noisy depth of field effect, leave Preview checked. The lower the number of samples, the more grainy the effect looks.

Creating a Mirage

This step is optional depending on your scene, but you can create a mirage effect by adding a plane with a mirror material, or simply by raising your objects off the ground. I chose the later:

The finished animation:

Close up:

>>Download the finished .blend<<

Russian Flag IconRead the Russian Translation

How to Create Heat Distortion, 5.0 out of 5 based on 10 ratings

About Andrew Price

User of Blender for 9+ years. I've written tutorials for 3d World Magazine and spoken at three Blender conferences. My goal is to help artists get employed in the industry by making training accessible and easy to understand. I'm an Aussie and I live in South Korea ;)
  • agmlabs

    Great tutorial ! The only thing is the Defocus Node does not have “Samples” anymore I guess. But the effect is just great

  • Ray Koster

    Great work , Super effect! sadly I’m unable to make an animation in the compositor that renders both layers

  • dfsfra

    didn’t work, I made the displace layer connect to the mix node and I just get some weird double images

    oh well.

  • Riaan

    Looks like a great tut. Will give it a go tonight!

    Thanks for sharing!!!

  • Keavon

    Where’s the video? Or is it a step-by-step only tutorial?


    that is very nice , I do wonder if you can use your method to do a small part of the scene , like maybe a Heat Grid on the floor of a scifi scene ?

  • Owldude

    the displace node just moved the whole scene upwards in my file

  • Yo Mama

    I dont have a graph editor. :(

  • Pingback: How to Create Rain in Blender | Blender Compositing | Blender Guru

  • Xavier

    you guys are the reason we love CGI, keep this up , u make learning easier and cool


  • The Hammer

    This sort of confuses me…
    When I try to go to the compositer by clicking shift-right arrow, it instead goes to the end of the animation.
    I’m really not sure why my computer doesn’t do that.

    • Guest

      its ctrl+left arrow not shift
      thats two years to late I guess, though

  • Reggie

    just wondering if there is a video version of this?

  • http://Website(optional) Quieme

    expunge remorseful
    erase sorry 24

  • Miki

    Hello I have problem.
    I do all from step 1 to 5, but in the step 5, when I clicked on “Grapf Editor” no line appear to me. Why? If you can do video tutorial and send it to me please.

  • Lala McLala

    I have to admit, your stuff is pretty dope and you find creative ways to make it happen.

  • Doogie

    can somebody please help me to get this to render, everytime i try do anything blender crashes and its not my computer, becuase this render really shouldnt be difficult, but any help would be appreciated

  • http://Website(optional) Wemjeogma
  • Pingback: How to create snow in Blender | Blender Modeling | Blender Guru

  • someguy


    I just had to mess around with the nodes in 2.5 a bit


  • someguy

    Doesn’t work for me : (

    I have tried everything.

  • Manu

    Hi Andrew,

    another great tutorial, thanks a lot!

    I got a question, is the compositior in 2.5 as unstable as I am experiencing it? I got constant crashes even with simple setups, rendering an animation with composite nodes on every frame doesnt work at all – either crashes or not all effect nodes become applied.

  • fader

    can you make a video of the tutorial instead of screenshots…sry coz its hard for me to understand.

  • Ryan Bailey

    great now ive found a new issue…if i create a new object the generated drop down box disappears for that new object but stays available for the first object…. grrr cant seem to get a break. anybody else experiencing this? if not i think ill report it to the bug tracker

  • Ryan Bailey

    Hey thanks Jerry that did the trick…its just odd cause i dont remember having to do those steps before. maybe my memory is just starting to go… im too young for alzheimers :( oh well thanks again finally i can jump into this tut hopefully before the next one is posted :D

  • Jerry

    @ Ryan Bailey:

    to see were the generated drop box is:
    goto step 13. above
    – see were it says [ generated ] under the texture button… change that to UV

    but you need to select your plane..
    goto texture… select image and choose.. change generated to uv… and render

    Then render it .. hope this helps…

  • Ryan Bailey

    hey andrew i just decided to give this tutorial a go a couple days ago and i was wondering, when i uv map an image to say a plane isnt that mapped image supposed to show up on the plane in a render?

    i was trying to do the compositing part of this tutorial but i noticed whenever i tried rendering a plane with the cracked soil image uv mapped to it the render just shows the plane without the image.

    so is this how its supposed to work and i just didnt realise it or does it sound like something got screwed up?

  • Sammy


  • Revolt2563

    Great tutorial Andrew!
    Since we are in the weather topic, I would like to request a tutorial on tornadoes.
    If you know of any good tutorials on tornadoes please give me a website on where to get it.
    Thanks for all the great tutorials, and keep up the good work!

  • Dykam

    I wonder why you didn’t subtract/add the z to the Heat Distance and use that as distortion input, instead of mixing two different images.

  • dyllon

    you left out the i location part!

  • Philip Peterson

    I’m guessing this doesn’t work in realtime?

  • victor

    Hey, Andrew. Great tut, as always, and now in plain text, which is even better for learning purposes, though harder to teach.
    Yes, you’re awesome.

    BTW, a lightning is way hotter than the usual ground/material temperature needed for a heat distortion to be perceived. Anyway, just messing with you. :D


  • Titanium Pen

    Lol, I’ve been scratching my head for hours wondering why my renders have no distortion at all. Then I realised I had never had the patience to wait for the render to be composited!
    /Bangs head against table

  • Pingback: The Complete Weather Series | Blender Monthly Specials | Blender Guru

  • Pingback: How to Create Lightning in Blender | Blender Compositing | Blender Guru

  • jaydez

    That’s Awesome! Thanks for giving some of your tutorials in text form!

  • Lucio

    one more great tutorial!!!