Landscape displacement disabled once landscape scale is too big

update 2017.07.12: pls scroll down to post #13…i found my problem has nothing to do with landscape scale or lods…but is a nested lerps issue with displacement.


after a lot of testing i finally figured out that the problem i have is probably caused by an engine check turning of my landscape displacement from the material.

my testcase:

i have a 8km terrain from worldmachine with a 4x4 output of 4033px textures.

the calculation of the landscape scale in ue4 should be:

meters100 /number of tiles/resolution of 1 tile = dimension xy
8000
100/4/4033= 49.59087527894867

and for the height:
worldmachine max height * 0.1953125 = Z scale
2625 * 0.1953125 = 512.6953125

if i enter these values i get my 8 km terrain (tested by a 1 square-meter cube scaled accordingly).

with this scaling i will not get any displacement from material.

if i enter the landscape mode and leave it again im able to change the value of the landscape node to a tenth of my above settings (xy =4.9 z=51.2) and BAM the displacement tesselation kicks in.

if i scale it up again by 10 to get my initial scale, the displacement stays! but saving the project will make it disappear again.

pls if anyone knows anything about what could cause it and especially why it behaves this way…pls help me.

im on unreal 4.15.1

after import of the landscape and assignment of the worldmachine masks and scaled based on formula (no displacement):


scaling the landscape down by 0.1 (displacement appears)

scaling the landscape up again by 10 (displacement stays)

after saving (displacement disappears)

this is my master landscape material, on the landscape i assigned an instance of this:

one of the functions that make one of the landscape layers. i always use that same function for all layers.

Post pictures of material and landscape.

added the screenshots…pls let me know if you need more screenshots of other settings

I’m not sure why it’d do that, but scaling landscape down from X100 Y100 to X49 Y49 isn’t the proper way to scale down a landscape. If you want your landscape to be half the size, just shrink your heightmap before you import it, and keep both X and Y at 100. That might solve the issue.

but scaling down the landscape is the right way to get more density (other than 1m per quad)

If you want more vertex per meter you resample the landscape instead of scaling down.

How about using dynamic level streaming?
Does it help when we are talking about the open world?

the scale is a basic parameter of the tiled-landscape-creation-dialog. if it shouldnt be used that would be a silly concept.

bump for visibility

after lots of testing i come to the conclusion that ue4s landscape system is a useless pile of random ******** in its current state.
i made a simple two layered shader with displacement…and did create new landscape…with pretty much all settings and noted down if i get tessellation on the result or not (via looking through wireframe alt-2 mode).
with low settings like 63x63, 1x1,8x8, 505x505, 64 i get tessellation, with 63x63, 1x1, 16x16, 1009x1009, 256 i still get tessellation, with everything above the resulting landscape did not show any tessellation anymore. some of the middle dense settings showed some partial tessellation on parts of the landscape…aka appeared very broken. with higher settings i did not get any tessellation…NOW THE ****ED UP PART…once testing higher settings that did not work and trying again a low settings landscape that showed tessellation before, i now didnt get any tessellation…aka something internal already broke and noone can tell me what or why.
it would be very useful if the landscape system would get hardened…aka give more feedback if the system reaches its limits and what to expect else wise. right now it appears to act completely random…and once u broke it its broken for any settings…aka im not very confident in the idea to spend more time with such unreliable system. i was testing from 4.14 to 4.16 with same results. (as can be red above i was suspecting the scale to be the issue,…but now i think its some hardware resource that makes it break in the background without any feedback)

additional information: importing a weightmap into a layer typically breaks tesselation for me. and i havent found any way to restore it. tesselation and landscape system in 4.16 is kind of a nono (my machine has a nvidia k6000 and 64gig ram).

it appears that my landscape falls back onto lod3 of itself and therefore does not show tessellation. manually browsing through “max LODlevel” shows landscape only with 3 or higher…going down to 2, 1 and 0 will make the landscape disappear. choosing -1 will show quality of lod3 again.
using the landscape lod visualizer i always only get blue lod3 close to the cam.
procedural foliage generation seems to take lod0 into account since i get big offsets of foliage to my lod3 landscape

choosing the “landscape lod fixed at 0” setting in the viewport created a unshaded minecraft type of representation without any tesselation
choosing the “landscape lod fixed at 1” setting in the viewport created a shaded minecraft type of representation without any tesselation

lod0

lod1
c6049b103f6d2e4b95d71fff838e6187aeb0520a.jpeg

reloading the heightfield makes the lod0, lod1 and lod2 show up again.
saving the map will make the landscape jump back to lod3 as highest again.

finally found the core of my problems:

im using too many lerps to generate my displacement.
here is what i have:

disp0030a lerps with disp0030b via noisemap -> result disp0030
disp3060a lerps with disp3060b via noisemap -> result disp3060
disp6090a lerps with disp6090b via noisemap -> result disp6090

disp0030 lerps with disp3060 via slopeselector -> dispA
dispA lerps with disp6090 via slopeselector -> dispFINAL

this is using 5 lerps with the result of not getting tesselation
if i remove one of the lerps and compile i get tesselation!!!

it doesnt matter which lerp i remove the result is always the same…4 chained lerps GOOD…5 BAD!

im using the same setup for all the other material channels (normals, diffuse, roughness,…) with no issue (cant tell 100%, visually it appears ok) seems only the displacement channel is affected by this.
it would be awsome if a epic dev could chime in to tell me if this is a hard limit of if there is a workaround…else i have to reduce my complexity by one.

sorry that this topic is jumping around many areas of unreal, which often turned out to not be the source of the issue…but that was my debug journey. im very relieved that i was able to boil it down now to lerp-complexity…pls forget about landscape scales or lod oddities…the core is the lerps :wink: