[Suggestions] Material Layers improvments

After some working with material layers I have couple of suggestions:

Master Material Functions (or MaterialFunction Instace) - What would be really cool, if we could create single material function and then create derived material funcions from it. Much like in Materials, when we create master material. It would solve several problem we might be facing now, like:

a) We have family of Metal materials, If we like to add some new functionality to it, we have to iterate trough every material function we have created. It’s tedious process when we have only dozen of them, I can only image how horrific it must be with hunderds. If we could have several master metals functions, we only modify them and change is propgaded down the inheritance line.

b) I believe much like material instances, it would save us from recompiling every material function every time we change something, and also save some memory. Often metals will just differ by several scalar values, base texture and normal map. Creating what is basically separate material for each is just wasteful.

c) it would allow us to have multitude of material varations, without worry of “how do I update all of them ?”. Much like we now create MaterialInstance to create varation of existing material, we would create varations of MaterialFunctions.

A way to provide input inside MaterialInstaces to material functions. Much like we can now provide textures or other things in MaterialInstace it would be blessing if we could also insert material functions inside MaterialInstace. I can see several problems with it already (as the material functions might have their own inputs), but I can think of at least two possible solutions/compromises:

  1. Only material functions with Vector/Scalar values inputs can be used inside MaterialInstace. If such function is pluged it automatically exposes it’s inputs inside material instance editor. Or we can specify in master material inputs for said material function, and only material functions with exactly the same inputs can be used inside MaterialInstace Editor.

  2. Only material functions without inputs could be pluged inside editor. This actually make sense, because MaterialFunctions used in this case serve as prepacked material definitions, and doesn’t really need to expose any values. It would work very well with the MaterialFunction Instaces suggeste above.

Also welcome addition to above would be expose in material Instance editor, material layer tiling. We often don’t know what exact tiling should be on object, and possibility of setting it up idepndently would be very nice.

I believe both of these would greatly improve the workflow of material layers as well as make it more managable.

Hi Lukasz,

Thank you for your request. I have created a feature request for Material Function parent/child classes. It references this post for details. If there is anything else that you would like to see in the editor, please let us know.

Thank you,

Alexander