An old brick road mixed with grass and rocks.
I wanted to get the photographs I used to make image textures to have their own height maps that would only affect themselves when painted on the surface.
Lerp the height textures and plug the vertex colors into the alphas
Since this material is made of image textures, I put the images into Affinity Photo where I cleaned up the images and then imported them into an image texture software called Materialize, where I created the Height, Normal, Roughness, and AO maps as well as made them tileable.
First, with a multiply, add a Vector3Parameter and set it to white to maintain the original base color, then connect the Multiply to Lerps one by one. In the UV inputs, I place a named reroute that adjusts the texture size into each texture sample. For a cleaner graph, make Name Reroute nodes for each color and plug them into the alpha of the three Lerps. Repeat this for the Normal, Roughness, and other texture maps you have.
Using the Vertex Color nodes, I chose the Red for the brick and the Green for the Rocks and I plugged them into the transition phase. Plugged into the Height texture input are the brick and the rocks which are adjusted through Power and Saturate nodes to increase the contrast between the highest and lowest points of the texture. The rocks have a 1- to create a mask that prevents the grass texture specifically from appearing on the highest parts of the texture first.
Instead of individual Vector3 Parameters for each AO texture, one white will work for changing the value of maps
Connect the roughness maps into a multiply along with a Scalar Parameter to adjust the power of the roughness.
For the normal maps, instead of using the Vertex Colors, use a VertexNormalWS into the alphas of the lerps, and in the B input, add a single Vector3Parameter into the A input. The color will be used to adjust the intensity of the normal maps.
Duplicating the code, replace the textures with height maps and multiply them with VertexNormalWS and a ScalarParameter that will be used to adjust the size of the WPO for the individual texture.
For the sake of a cleaner space, in separate comment boxes, I used the TextureCoordinate nodes to adjust the scale of the specific textures then plugged the Named Reroutes into the height maps to change the size.
Material Demo Video
Add links to the resources you utilized
Link to Material Video Submission: https://drive.google.com/file/d/1Bvh3cQH4W36qLsw_e0L2mxc9QyODIrEj/view?usp=sharing
Add link to your Unreal project here