Displacement and Tessellation not Appearing on Material

I want to make displacement and tessellation on a rock material to bring out the bumps. I followed a video and it worked for them and it doesn’t work for me. I have looked at some posts and they said that some people had to change some settings, which I couldn’t find, so what is the problem. It is not because of vertercies because it is like this in the preview. Could there be another problem with this?

Since this is a material function, is tessellation enabled on the master material?

@Gampersnaz, No. But I changed it and there is still no bumping out at all

I have noticed sometimes that I need to multiply my height map by quite a bit to get it to influence the displacement. You could create a function input in place of the “5” that you are multiplying the heightmap by. Then in the main material hook up a scalar parameter to it. Create a material instance of your master material and apply it to the mesh. You can then change the value that the heightmap is being multiplied by without having to re compile the shader everytime you use it.

I have also read that displacement in a material function doesn’t always work as expected. You can create another output on your material function, and pass the heighmap out of it. Then in your main material, break out the material attributes from the function and hook them all up to the main material attributes except the tessellation multiplier and the world displacement. Connect the second output of your material function (the heightmap) to the world displacement, and create a scalar parameter to control the tessellation multiplier right in the master material. Please see my 3 images below for reference. (edit: I forgot to multiply the heightmap by vertex normal ws too, so just pretend that I did)

I am a little confused. I am trying the first suggestion. I am creating the material input as a scalar and have done what you did in the first picture but i am confused what to do next. I don’t understand what you mean when you say, “hook up a scalar parameter to it”, what is “it”? And in the input in there are more than one values like x, y, and z values, which one do I change. Could you possibly post a picture of the second part of the first suggestion please?

I will make a short video for you and post a link once it’s ready :slight_smile:

In the first picture, that is a function input that i have created to hook to the multiply node. X is the only value that you need to change, but you will be using a scalar parameter to change it in the master material. In the second picture, that is in the master material. I dragged the material function into the master material and made a scalar parameter (press “s” and click). I then hooked that parameter to the function input that was created in the material function. This will pass the scalar value into the function input and change the amount the heightmap is multiplied by. 1st picture is in the material function, 2nd picture is in the main material with the function added and the scalar parameter hooked up to it. Then I created a material instance of the master material, which exposes the parameter to be adjusted. It’s the material instance that you want to apply to your mesh. That is seen in the third picture. As you can see, I had to multiply the heightmap by about 78 to get some bumping.

Thank you I think that will help a lot

I think i did it but it still isn’t bumping out at 500. This is what the material instance looks like applied to the scene:

This is my material function:

This is my master material(I highlighted all of the parts relating to the displacement):

Is there anything wrong with this.

Its fairly hard to tell, because you are lerping your displacement maps with alpha channels, and they may be getting a mixed value from those alpha channels making the heightmaps weaker. On another note, you seem to be calling material functions multiple times and breaking out only 1 of their properties. It’s a little cleaner to call each different function once, and pull out everything that you need from them. The video I made is fairly basic, and it looks like you have a grasp on it. I think the lerps and the alpha channels driving your displacement maps from the world aligned blend nodes may be giving you issues.

Here is the link to the video, if you are interested, but it is less complex than your current material.

I will play with the world aligned blend and see what’s up to get you up and running hopefully!

Its not just from lerping though. The displacement doesn’t work at all on just a single material. If i just made one material with displacement, it still wouldnt work. I noticed that when I was using my height maps, that when I was converting them from tif to jpeg, they might have lost their transparency. Would that make a difference?

If you are using the alpha channel of a texture for your heightmap, yes you would have lost it, but if you are using a standalone texture with the information in rgb, it should be fine. I did notice one thing, If you are applying this material to a landscape, turn off crack free displacement in the tessellation settings of the material. It seems to be broken or something. I did have some troubles using the world aligned blend and had to output from the “w/ vertex normals” to the lerp instead of just the alpha. Once I did that, I had no problem achieving displaced terrain.

Ok. But it doesn’t show up on the preview. Shouldn’t it show up on the preview no matter what?

Just to see if it is because of lerping and world position offset, I just made a regular material. Everything is set up correctly and even with the level for multiplying displacement at 50000 doing nothing. I think this might be a problem with my settings or something, like it just won’t show tessellations. Do you know of any settings that would restrict using them or anything else the problem could be.

In that test material, you don’t have anything plugged in to the UV on your textures. That makes it not bump at all. Hold “u” and click to create a texcoord node and plug that into your UV inputs on all of your textures, including the heightmap. That seems to be all I can see at the moment.
You can also then hook up a multiply node to your texcoord to change the tiling amount to what you desire.

Yep I did all that and nothing happened. Could it be with my computer with my graphics card and driver being low? Or are there any settings to change because I have seen people do that in other posts?

I’m not too sure about your computer itself being the culprit, but in your engine scalability settings, make sure it is set to epic. That might make a difference. I’m also not sure if forward rendering has anything to do with it if you have that enabled. I’m still learning a lot of this myself. My project was made with the maximum quality setting, you could try that if it isn’t already. Another thing you could try for troubleshooting purposes, is to make a new project bp first person or whatever with maximum quality, and recreate your material in there. If it works, then you know that it is a setting that needs to be adjusted in your current project.

I set the scalability to epic and I made a new project with maximum quality settings. I don’t know what to do. All I want is for the material to have some bump and it won’t even work.

Do you think if I emailed epic games that they could figure out the problem