Terrain Self-Shadow (POM/Tessellation)


I am trying to get a basic 4 layer terrain shader using either POM or Tessellation functioning as I would expect. I am seeing the tech on both types working, but it looks like it’s missing self shadowing or something. As when the POM material is applied to a normal cube, it looks great, but rubbish on the landscape, with crazy swimming at grazing angles. Upping the TempAA for the pom makes everything better, but kills performance.

POM on Landscape

POM Material

POM on Cube

Similarly for the tesselation, it’s certainly tessellating, and deforming based on the height map, but it doesn’t self shadow so you can barely tell. Also, “crack free displacement” is on, but there are still cracks (but not on the preview cube in the material editor view)

Tess Material

Is something wrong with landscapes, or do I need to do something differently?


You do not need crack-free displacement, when displacing only vertically. POM drift at such angles is expected.

Hi, thanks for the answer. I am tessellating vertically, but I have cracks, so not sure what to do about that, as you can see in the picture?

The POM drift is pretty extreme, so much so that I wouldn’t be comfortable using it on anything that’s not totally flat. I am finding that the POM solution is pretty good at 4 min samples, 8 max, with 3-5 tempAA set. Does that sound unreasonable? I can’t visualise the shader cost, it doesn’t seem to get affected by any changes to these values.


I have noticed a similar issue going from 4.18 to 4.21. Spotlights and directional lights create self shadowing on my tessalated ground, but point lights stopped doing so. :S

Hi, I have noticed this issue too! Have you found a solution? Is it just some bug in 4.21?

Hey! No, not yet. I have posted it as a separate question here though: "Self-Shadowing" on Tessellated ground broken from 4.18 to 4.21? - Rendering - Unreal Engine Forums

Hey, I found a solution that worked for me. You have to enable “Distance Field Meshes” in the project settings, and then for the light that you want to have cast a shadow, you have to check “Use Raytraced Distance Field Meshes” and it will cast shadows on tessellated objects. Hope this helps. Cheers.

Hmm, are you on 4.21? The distance fields seem to be missing from landscapes in the 4.21 version, and it’s on landscapes that I use tesselation. Otherwise I will give it a test!

In my case,after I done the other things U told,I found I just set the light detail-Casecaded shadow maps-Dynamic shadow distance stationaryLight to 15000,then the shadow came.