Dithering will substantially reduce the number of max steps needed to eliminate stairsteps. But in exchange, you may get some noise or blurriness. Increasing the min and max sample count will improve the quality of the result (up to a point) whether you're dithering or not. But by dithering, you need fewer samples on average across the surface which makes it more efficient.
Amazing set of tutorials!! I've learned so much not just about Parallax but also how to tidy up my materials. One question I was hoping you might know the answer to is I got this all working in 5.3 however I went to copy this into a 5.1 project and for some reason I can't get it to work. i get SM6 Function ParallaXOcclusionMapping: (Node Camera VectorwWS) invalid node used in vertex/hull/domain shader input SM6 Function ParallaXOcclusionMapping: (Node DDX) invalid node used in vertex/hull/domain shader input SM6 Function ParallaXOcclusionMapping: (Node DDY) invalid node used in vertex/hull/domain shader input The one thing I can see that is slightly different in the 5.1 version is the Param Tex Object used for height map will not show DDX / DDY options even after selecting the Derivative option. Am I missing somthing obvious? I really don't want to have to upgrade the project to 5.3 to get this to work :D
Are you using the POM node from 5.1 or are you copying over the node from 5.3 too? Try whichever you haven't yet - in case there's a difference inside the function itself. However, an error like that is usually a sign that something is plugged into the WPO output that cannot be. If you're using WPO on this material, try unhooking POM from it.
@@TechArtAlex Thankyou Alex for such a quick response! I checked the 5.1 to 5.3 PDO function and there was no changes. Are you available adhoc from a consultation perspective? I have an internal team who use UE however not to this granule level of detail - I could do with getting our materials checked over so they can be as lean as possible when being used on pixel streamed servers. Not sure how to contact over youtube!
@@TechArtAlex Alex, would you be available for some material consultation with me and my team? I have got it to work now however it is still not right how I had it before - not sure the best way to reach out to you outside of UA-cam. I work for a housebuilder in the UK and we are building a really neat interactive pixelstreaming app.
@@TechArtAlex That's understandable thank you Alex. one last thing I've managed to get everything to work, and in 5.3 I do not need a shadow cast proxy or disable cast shadows to the object with the parallax material and it works beautifully, however in 5.1 for some reason It does not work. has somthing changed between 5.1 and 5.3 that allows the Parallax material to avoid self casting? Effectivly I am using this material for brick elevations, and using a proxy house for each model would be a significant performance hit, and I also don't want to upgrade to 5.3 as some of our plugins are not v 5.3 ready.
Thanks! Indeed, I made it. Just duplicate the DitherTAA and replace the noise sample. I then animate the noise via it's UV coordinates in a similar manner to a flip book, which avoids having the noise appear static in screen space. I may do a full video on it at some point but it's a really simple modification to the existing function.
Hi Alex. Thank you for the nice tutorial. I used parallax Occlusion my self, but I have a problem with the character seem like floating. I can't fix it with the reference plane and I can't think any other way besides using a second plane for the colission. Do you have any solution to it?
Using pixel depth offset can help, although it will cause clipping instead. Perhaps you can sample the heightmap in the Foot IK logic, to alter the foot placement to match the displacement effect.
@@TechArtAlex Thanks for the reply. Well this really doesn't sound as a nice solution. No offense. So actually there is no solution? This is what you are telling me?
@@ForPeakTank Correct. Deferred decals cannot alter the depth buffer in any way. There is no way around that. Even if you could apply PDO, unless you also could offset the depth of the surface behind it - it would simply just clip into the mesh it was applied to. Even if you could solve that problem, it would have a shadow artifact as the mesh it was applied to would cast a shadow into the offset pixels. The only way to alter depth is on the mesh's own material.
@@TechArtAlex thank you again. What I was trying to do is to play woth the midplane offset in the material but this alos didn't behave as expected. In case you have an example of a character moving on a mesh with parallax occlusion material on it please direct me to it.
for the shadow artifact, I thought moving the reference plane higher than the plane position in pom would solve it? and also to move the texture only in positive direction, so that none of the pixels overlap with the position in z that creates the shadow
PDO can only increase the pixel depth. It cannot decrease the depth, so unfortunately this is not possible. You cannot use PDO with a reference plane that would result in any part of the heightmap extruding above the plane's surface.
Fantastic explanation and tips.
Thank you for video
Glad to share, thanks for watching!
Hey! Interesting as hell!
Are your dithering tech more efficient than using the built in min max steps to get rid of the stairs artifacts?
Dithering will substantially reduce the number of max steps needed to eliminate stairsteps. But in exchange, you may get some noise or blurriness. Increasing the min and max sample count will improve the quality of the result (up to a point) whether you're dithering or not.
But by dithering, you need fewer samples on average across the surface which makes it more efficient.
@@TechArtAlex cool cool 🖖
Amazing set of tutorials!! I've learned so much not just about Parallax but also how to tidy up my materials. One question I was hoping you might know the answer to is I got this all working in 5.3 however I went to copy this into a 5.1 project and for some reason I can't get it to work. i get
SM6 Function ParallaXOcclusionMapping: (Node Camera VectorwWS) invalid node used in vertex/hull/domain shader input
SM6 Function ParallaXOcclusionMapping: (Node DDX) invalid node used in vertex/hull/domain shader input
SM6 Function ParallaXOcclusionMapping: (Node DDY) invalid node used in vertex/hull/domain shader input
The one thing I can see that is slightly different in the 5.1 version is the Param Tex Object used for height map will not show DDX / DDY options even after selecting the Derivative option. Am I missing somthing obvious? I really don't want to have to upgrade the project to 5.3 to get this to work :D
Are you using the POM node from 5.1 or are you copying over the node from 5.3 too? Try whichever you haven't yet - in case there's a difference inside the function itself.
However, an error like that is usually a sign that something is plugged into the WPO output that cannot be. If you're using WPO on this material, try unhooking POM from it.
@@TechArtAlex Thankyou Alex for such a quick response! I checked the 5.1 to 5.3 PDO function and there was no changes. Are you available adhoc from a consultation perspective? I have an internal team who use UE however not to this granule level of detail - I could do with getting our materials checked over so they can be as lean as possible when being used on pixel streamed servers. Not sure how to contact over youtube!
@@TechArtAlex Alex, would you be available for some material consultation with me and my team? I have got it to work now however it is still not right how I had it before - not sure the best way to reach out to you outside of UA-cam. I work for a housebuilder in the UK and we are building a really neat interactive pixelstreaming app.
@@THINKTANK7233 That sounds like an exciting project, but unfortunately I'm not able to take on any additional work right now.
@@TechArtAlex That's understandable thank you Alex. one last thing I've managed to get everything to work, and in 5.3 I do not need a shadow cast proxy or disable cast shadows to the object with the parallax material and it works beautifully, however in 5.1 for some reason It does not work. has somthing changed between 5.1 and 5.3 that allows the Parallax material to avoid self casting? Effectivly I am using this material for brick elevations, and using a proxy house for each model would be a significant performance hit, and I also don't want to upgrade to 5.3 as some of our plugins are not v 5.3 ready.
Such a great tutorial! Where can we get our hands on that BlueNoiseDitherTemporalAA? Or did you make that yourself?
Thanks! Indeed, I made it. Just duplicate the DitherTAA and replace the noise sample. I then animate the noise via it's UV coordinates in a similar manner to a flip book, which avoids having the noise appear static in screen space. I may do a full video on it at some point but it's a really simple modification to the existing function.
@@TechArtAlex Excellent thank you
Hi Alex. Thank you for the nice tutorial. I used parallax Occlusion my self, but I have a problem with the character seem like floating. I can't fix it with the reference plane and I can't think any other way besides using a second plane for the colission. Do you have any solution to it?
Using pixel depth offset can help, although it will cause clipping instead. Perhaps you can sample the heightmap in the Foot IK logic, to alter the foot placement to match the displacement effect.
@@TechArtAlex Thanks for the reply. Well this really doesn't sound as a nice solution. No offense. So actually there is no solution? This is what you are telling me?
@@ForPeakTank Correct. Deferred decals cannot alter the depth buffer in any way. There is no way around that. Even if you could apply PDO, unless you also could offset the depth of the surface behind it - it would simply just clip into the mesh it was applied to. Even if you could solve that problem, it would have a shadow artifact as the mesh it was applied to would cast a shadow into the offset pixels.
The only way to alter depth is on the mesh's own material.
@@TechArtAlex thank you again. What I was trying to do is to play woth the midplane offset in the material but this alos didn't behave as expected. In case you have an example of a character moving on a mesh with parallax occlusion material on it please direct me to it.
THANKS
Thanks for watching!
HI, great tut.
Thanks!
for the shadow artifact, I thought moving the reference plane higher than the plane position in pom would solve it? and also to move the texture only in positive direction, so that none of the pixels overlap with the position in z that creates the shadow
PDO can only increase the pixel depth. It cannot decrease the depth, so unfortunately this is not possible. You cannot use PDO with a reference plane that would result in any part of the heightmap extruding above the plane's surface.