This is just a general question with Materials vs Material Instances on something that I don’t fully understand yet so I wanted to ask for help on understanding it more.
Do Material Instances created from Materials help with " Performance " at all in any way or is it mainly just for extending and controlling the visual functionalities on-the-fly across multiple meshes such as several similar Modular Houses per say as an example of that?
I was just trying to understand if it really makes any difference or not…
Its mainly the latter.
It helps with improving workflow as you don’t need to recreate every material from scratch, and the added benefit of switches, variables, and such makes it much faster to tweak materials.
Game-Performance-wise there is no performance benefit.
gamedev-performance-wise it helps you work faster.
here is a document with some easy-to-set-up performance tips for materials/instances and such
Alrighty, thanks for the help, much appreciated.
As Luos said, mainly the latter.
There is a tiny performance positive to certain uses.
Having say 3 materials that use an image for albedo and normal but everything else is the same. It is slightly better to have one be the master and instance to replace the images in the other 2 than to create them from scratch.
(still far more of an improvement in workflow)
Copy the level you’re working with and paint things with the alternative materials there.
Run each map and hit tilde (~) and type in
to keep an eye on what might be tying up resources in the visuals department.
there should not be any meaningful differences between the two unless the test scenario is flawed.
Having the editor running while doing such tests would not give superly accurate results and some other random things like texture size could influence said results.
I would expect someone doing work detailed enough to wonder about this would be detailed enough to use the same materials to compare.
But it isn’t really important. Instances are about speeding development, not making it more efficient on the user’s end.