Weird artifacts with parallax occlusion mapping in landscapes

Hey all,

I’ve been working on a sand material and figured that a good way to get the detailed minute variations in the sand would be through POM.

The results I’ve had are a bit weird in that from a distance or at most viewing angles the effect seems okay, but at others it completely breaks down. The second picture is the easily noticeable example from the results below:

Is this just an inherent weakness of POM or am I doing something wrong? Here’s my setup.

I am also explicitly calculating mips for the normals as mentioned by Ryan in the training livestream.

It should also be mentioned that I am using a Landscape material in this situation so would I need to do anything differently?

Can’t see the artifact clearly in the screenshot,but if what you are mentioning, is straight horizontal line of blurred texture, that happens when Z axis position of camera and pixel(in tangent, or world space) is same or nearly same. It can’t happen on a flat surface, but for landscape, this can manifest itself on high slopes. You can make your POM fade out and relatively short distance from the camera to minimize visibility of the effect, but the problem cant be cured completely.

Sorry, It is a bit difficult to catch the effect without being in motion.

But I do believe that you and I are talking about the same thing, i.e. when the camera is almost at the same Z pos as pixel, stuff goes wonky.

Good to know!

The only other issue is that I cannot seem to raise the occlusion textures height beyond a certain level. For instance setting it to beyond 0.1 makes a hopeless mess of the occlusion textures getting stretched.

Any solution for this?

The more height you need the larger max steps value you will have to use.
Generally, 0.1 is way too much. The heightmap you are trying to use seems very noisy. In your case, POM would be good thing to show depth of sand dunes, but not individual sand particles. It works best with smooth low frequency details in heightmaps. I suggest using detail texture with sharp normal map for what you are trying to achieve.

A great observation!

Indeed yes I am trying to add that ‘grainy sand feel’ to the material using an extra noise map. It seems to be messing up the POM though.

I am at a loss however as for how to blend in the noise without affecting the POM itself.
Considering that all the texture samples (Diffuse, normals etc.) need to take in the parallax UVs, is there any way to overlay a noise normal map on top of them after the parallax effect is calculated?

If you could elaborate on what exactly you mean by ‘detail texture with sharp normal map’ I would be grateful!

I am not very experienced in graphics programming so a bit out of my depth here, but appreciate your advice and time! =)

You would just take Parallax UVs output from material node, multiply it by a number, that would represent tiling factor between main and detail texture, and use result as UVs for your detail maps. That way you can overlay maps with diferent tiling, but keeping parallax effect.

By detail texture with sharp normal map I mean, that you would be using some sort of detail maps. It can be detail normal map alone, or full range of detail textures, including detail basecolor, detail roughness, detail normal etc.

Detail normal map will give best overall contribution. And to create visually rough sand, it needs to be sharp. Sharp and noisy and strong.

Ahhh I see what you mean, the effect of over laying is achieved by tiling them separately.

And I am currently using a detail normal map, if I understand your definition of them. Will need to iterate on the combination of detail maps and POM in order to get the best effect.

In any case, that gives me much hope that I am progressing correctly!

Thanks so much for the advice and time you took for this! =)

You’re welcome.

Thanks so much, was searching for this exact thing! :slight_smile: