Static Switch/Bool Question

Hi,

I had a question on static bools and switches…

This parameter is named static because it cannot change at runtime, it can only be set in the Material Instance Editor. Static Switches are applied at compile time, not at runtime. This means that whatever branch of the material was dropped will never be executed, so static switches are effectively free at runtime. On the other hand, a new version of the material must be compiled out for every used combination of static parameters in a material, which can lead to a shader explosion if abused. Try to minimize the number of static parameters in the material and the number of permutations of those static parameters that are actually used.

I see a lot of master materials use dozens (sometimes hundreds) of switches but Unreal seem to recommend against doing so. However, if it’s just compiling a new material for each used combination then does that matter as the alternative would just be to create another material or material instance anyway, right?

Basically are there really any performance/memory benefits breaking materials up into multiple materials or instances rather than a single master with switches?

Thanks!