How to use Displacement maps in Substance Painter (Update 3)

Oh yes!

With the latest release of Substance Painter (2019.1) we have true, tessellation based displacement in the viewport and in Iray as well.

Finally we can see exactly what the height (or displacement) values are doing. 🙂
You will find the controls inside the Shader Settings.

Cheers, D

My original post:

Hi there,

Unfortunately you can’t bake height/displacement map directly in Substance Painter.
If you have a really high resolution model for example in ZBrush, you can create a true dispalcement (32 bit/channel) map for its low/mid resolution version.
You can use that map in Substance Painter as Height map.

If the displacement texture is a 32 bit/channel .exr file you can do this:

  • Import the low res object to SP
  • Import the displacement texture to SP
  • Create a fill layer (Turn off the unnecessary channels in that if you want)
  • Set the UV Scale to 1
  • Load the map to the Height slot
  • Add a Levels modifier to the fill layer
  • Set the Affected channel to Height
  • Click the Auto button (You may have to adjust the Levels – just like in Photoshop)
  • Update 2! In case you’ve got stair step like results you have to change the Height channel depth (TextureSet Settings -> Height L16F to L32F).

Of course the simple way is, you don’t use dispalcement maps but Normal maps.
It’s not the same, but so much faster.
SP can bake the normal maps super fast for the low/mid res object using the high res object.


Since Substance Painter supports the Parallax Occlusion feature we have an additional way to visualize displacements. You don’t have to do too much to use the PO.

  • Add a Displacement Channel at the TextureSet panel
  • Update 2! You have to turn on the “displ” channel for that specific layer which you want to use as displacement, and you have to connect the same texture you used for height (with the same adjustments). Also with Substance Materials you have to check the Channels mapping section, because Substance usually assign the Diffuse or other maps for the Displacement component (You need the Height component of course).
  • Go to the Viewer Settings panel -> Shader section, enable the Parallax Occlusion Mapping feature
  • The PO is not a true displacement (just a smarter shading trick) use it wisely (low strength values)
  • Works best on flat surfaces

Cheers, D


  1. Hi! I followed your instruction and when I clicked Auto Button at the end. my obj turned black. Do you know why? Thanks! 🙂

      • 대용량 첨부파일 2개(67MB)대용량 첨부 파일은 30일간 보관 / 100회까지 다운로드 가능 4_2monk_alpha-DM1001.exr 33MB 4_2monk_alpha-DM1002.exr 35MB 다운로드 기간: 2017/01/26 ~ 2017/02/25Hi! Thank you for the reply! yes i set level to height.. but it didn’t work These are my files! 🙂 Really thanks for trying for me. 🙂

      • oh..! well.. after hours of trying different ways. I decided to follow your last advice. just using NormalMap works great.. Thanks though! 🙂

    • By the way, You can’t get a black surface if you adjust only the height values.
      Maybe you connected the map to the base color?
      I’ll create a video tutorial for this soon.
      Cheers, D

  2. hi sir. i am more interested in knowing if we can use this displacement map plugged in height channel to add generators like edge detect? cz once i tried, it failed to consider the edges and height and i couldnt get the edge wear.

    • You can modulate generators via its Micro Details feature using height data (Micro Height input).
      You can use Anchors as well to link the Height data form other layers.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.