Shaders vs substances for player customization

Hello,

Our game features a fair bit of simple customization by players: i.e. on almost any object they can pick simple changes like different texture options, applying various tints to those based on masks, etc. Currently it is implemented with a few shaders that combine the choices based on alpha channel masks and vertex colors.

We have been looking at Substances, and they would be great for the huge flexibility, not to mention so much better for downloading. However, I am wondering about performance, mainly from a memory point of view. The worst case, which would probably be the typical case, would be everyone has slightly different customization options on each of their objects (each player could have many objects out for others to see), so every object would have a unique texture. So rather than all N instances of a certain object using 1-3 texture possibilities (tinted differently, etc), there would be N different textures. Does that imply many more materials/surfaces/draw calls, or would it amount to the same anyway?

Any guidance here is appreciated.

If every player has a different customisation, then yes they’ll each have a separate instance of the substance material and thus will be a draw call each. But as you guessed, it would work out the same anyway, as a shader approach would also have this drawback.

I would definitely go for substances if you’re after customisation though, and in this case you should still see an increase in performance because the shader isn’t doing as much work, it’ll all be pre-computed (as long as the players aren’t customising in real time constantly, because regenerating a substance is expensive on the fly).

Ok, that’s good to know. Thanks a lot!