Hide Overwritten Preview Parameters of Material Function Inputs inside Material Instances

Hi everyone,

I have the following problem:

Material Functions are used and created a lot in my material creation process, because of reuse obvisously.

To make reuse faster I already plug a parameter into the function input as Preview Value inside the Material Function (!) and check “Use Preview Value as Default”. I will call this Parameter “Default Parameter” from here on.

This way I don´t have to nessesarly, when creating a new material using this material functions, plug in some values or parameters for each input. The instance of the new material will handle instead, but still if I want to, I can create some values or parameters in the Material and plug them into the MF inputs to overwrite them. So I get best of both worlds.
To already know which material function input is already parameterized from the start I call those function inputs “AP - …”. AP stands for Already Parameterized (would be nice BTW if Epic would mark MF inputs with default values somehow automatically)

However, now comes the issue…

… when I overwrite the default parameter of the MF in the material using this MF, then I will still see (!) the default parameter of the MF inside the Material Instance. So basically I see them twice and one of them being useless then (the default parameter of the MF).

This is pretty confusing for people using the material functions / materials I create. Can I somehow prevent this behaviour so that the overwritten parameter won´t show up in the material instance since it is completly useless after all.

I am thankful for any help I can get.


The problem is that you are using parameters. Use a constant and the parameter will no longer be present unless specifically overwritten with a parameter in the outer material.

Also, maybe you don’t realize that when you name parameters the same include them in separate functions, once you bring them into the same material, as the material compiles the parameters merge.
Changes to one parameter in the instance will affect everything with that same parameter name, regardless of what function it belongs to.