Dynamic blendable master material?

I am trying to create a base master material that can take in 4 textures (Color, Normal, Roughness, Metalness) as params. (thats not too hard) and then based on where the object is in the environment it will add procedural ground dirt, snow, moss, dust, etc etc to the object using some material functions and params passed to the Dynamic Material instance on the object. (also not to hard, I have it working.)

What I’d like to do is let the user select what kind of Dirt, Snow, Moss, etc will be added in. I.E. the user wants to use the master material for some rocks on a beach. He already has a sandy PBR material created and wants to blend it on to the rocks. He creates an instance of the master material, plugs in his rocks Color, Normal, Roughness, Metalness. I’d like for him to select his own sandy material to be used to blend on top of his other textures. I.E. not hardcoded to my current temporary blending dirt material.

I can’t figure out how to basically make a Dynamic Material Parameter like I have vector params and Texture Params. I suppose I could just use a ton of texture sampler parameters but that doesn’t seem like a good idea resource wise. And I feel like in other content packages I have seem what I’m trying to do.

Thank you.