Boost Your Parallax Occlusion Mapping Performance

Hi everyone, I want to share a solution for POM (Parallax Occlusion Mapping) performance of Unreal Engine. If you wanted to use POM, you probably had tough times with its performance impact. We have researching to fix that problem for couple days and I can tell you that we found a way to minimize the cost of POM without any visual loss. I will share solution but first, let’s some review.

I have 2 versions of Unreal Engine; Lovely Maxime Dupart’s 4.17.2 Nvidia Gameworks. Also, I have 4.10.4 because this is the version that has minimum POM cost. After the 4.10 or 4.11, Unreal has bad POM performance. I want to share with you some comparison.

Scene Setup:
Both Scenes;

  • Have same landscape and totally same Landscape Material that created in each engine (Not Copy&Paste)
  • Have 1 movable Directional Light, 1 movable Skylight, 1 default SkySphere and 1 Post Process Volume To Disable Eye Adaption
  • 1 BSP Box
    (All of them have same parameters, settings even locations)

(I uploaded images to imgsli.com because of having a better comparison)

First Comparison: Without POM Just Normal Map

As you can see, both of them have similar fps. (±2)
4.10.4 : 252 FPS
4.17.2 : 252 FPS

Second Comparison: With POM

As you can see, there is a huge performance difference between versions. About 50 fps!!
4.10.4 :195 FPS
4.17.2 :148 FPS

Third Comparison: With POM but default and Fixed

As you can see, performance increased 83 fps without any visual differences
4.17.2 Default : 148 FPS
4.17.2 with Solution: 231 FPS

I will upload “solution” POM Material function for you try too. Let me know the results.

But the funny thing in here, this is almost same Material Function that comes with 4.10.4. I did some arrangements and changed it a little bit to have better performance at lower graphics settings. (There is no any visual loss at higher graphics settings)

Also, I’m really wondering that huge performance impact on new versions. If there is something that I missed. Please, let me know. And I’m waiting for an explanation from Epic.

The function should work on 4.17 and 4.18, But It may work older versions.
You can download from : https://drive.google.com/open?id=1RI…NMs8iLzj7ZrfUE

While the perforamnce is better Your solution gives me this strange effect (not talking about self shadowing but thing on the slopes, also i am not a shader expert so bare with me). The UE4 one doesnt have this issue, is there any reason for this ?