Requirements:
Uses three layers of vertex painting to reveal different "sub-materials"
Uses height lerp
Uses VertexNormalWS
Allows the user to change the color and tiling of each individual "sub-material" in the material instance
I was inspired by Aganetha Dyck's work with honeybees, and decided to make vertex painted honeycomb. Being a digital format though, I did take some artistic license scale wise, as well as still having honey in my honeycombs!
As a material that should be able to be overlayed on top of any material, I decided to well, make it with the Overlay Material option in mind. That means no need for a master material/putting a material function into every single material that might be used with the honeycomb!
However, because the overlay material doesn't communicate with the base materials (as far as I'm aware), lerping the thin wax layer with things underneath isn't possible. Instead, the honeycomb material is translucent.
This does allow for a trick later! The translucent material is rendered after most things so SceneTexture inputs are accessible in this material, and do not affect said inputs. Meaning, the material below can be accessed. I use this later for edge masking.
Using object bounds and scale I did my best to keep textile density consistent across any mesh that uses this material. For mesh-specific adjustments, I also have Custom Primitive Data tied to this.
UVs get fed into the Parallax node. Admittedly, I don't think it holds up the best on non-flat meshes, but the extra depth is still a neat touch at times.
I originally had some large noise overlaid on my honeycomb height map in Substance Designer, but had trouble controlling the honey mask with the varying heights. My solution was to use a mask and multiply it with Vertex Data R, and multiply that with Height Intensity for extra height variation.
I used a couple of height lerps to create the masks for the Hex, Honey, and Wax layers.
I also made a switch parameter for world aligned textures, in case that was preferable to regular uvs. This option sacrifices parallax as they can't be neatly hooked up to each other. Wax ORH was a stand in for a texture, but I ended up keeping it since it looked fine.
Could save a few instructions by remaking the heightlerp node without the A and B inputs, since I just used the alphas. Too bad!
I'm kind of doing my own extreme height lerp in the Honey Mask too in order to prevent the Honey Mask from being close to the edge of where the honeycomb ends.
I wanted to increase wax density in areas based off the base material's normals. Vertex normals are easily accessible, but the definition from normal textures would be lost. Since this is a translucent material I can get the WorldNormal SceneTexture input, and sample high values from that for my mask. I also use this to add a little bit more definition to the wax normal itself.
Vertex color R/Honeycomb is fed into the world position offset, with a SmoothStep to prevent lower-opacity areas from coming off the mesh.
The top nodes are only activated during "Sticky," for meshes meant to be bashed into other structures.
Statue Model: https://www.fab.com/listings/4c550ce5-1b30-4e9d-8386-1ebd346d0e80
Original Statue: https://sketchfab.com/3d-models/cemetery-angel-leubner-b38e47e47ada4081852557c9ccaf3b71
Misc Masks: https://nielsdewitte.be/VFExtra/