Changing LOD Materials: Worth It?

Just curious what you guys think about this:

I have a fairly heavy skin material I’m using on my human characters; it’s 483 instructions. It looks fantastic up close, but obviously you don’t need to be able to count every pore on the guy’s nose once you’re past bad breath distance from his face. So, I’ve set up the LODs to swap out the heavy material for a more lightweight 358 instruction material for LOD1 and after (heh! well, “lightweight” is relative in this context).

It works like a charm, but the only problem is that, in order for this to work, the mesh now needs an extra copy of every material slot, to hold the new lightweight material. Each material slot adds draw calls, which is not ideal, but I’m assuming the benefit here outweighs the cost? I’ve got 8 materials, so that means I’m adding an additional 8 material slots for the LOD adjustment… but I’m saving 125 material instructions per slot by switching out my materials. That’s not a crazy trade-off, I think.

Any thoughts on this? Know some better ways to optimize shader performance? Or is this even worth bothering with?

It depends unfortunately. You’re right that it usually results in more draw calls. The only way to know is to profile the performance. Plus not all instruction costs are equal. For example, skipping a texture sample for detail normals that are no longer visible is a much bigger deal than a little bit of math. Changing to a non subsurface scattering shading model can be a nice savings too. But there’s no way to know if it’s worth it until you test, and even then, hardware varies and what is better on one rig might not be on another.