My understanding is having the alpha doubles memory consumption when sampling the texture, but having the one-less sampler is more performant since sampling can be shared in the material. Ultimately you use less samplers/samples but extra RAM.
I’d go for the 2-texture. I seem to be doing well enough with that. I use a liberal amount of noise/maths to vary stuff up and seem to be getting away with just the two. Since my materials came out a bit more expensive than I wanted, instruction-wise, I’m feeling the tight-use of packed textures saved me.
Question: I use BC5 for a ‘plain’ normal map. I know Unreal reconstructs the Z on it’s own. Is the fidelity of that, bit-wise, the same as what you are doing with yout 2-channel DeriveNormalZ? If so, I could gain 2 moar channels in my setup by hacking apart my normal-map…
My take is memory is cheap, easily-used, and ultimately grows faster than the core-performance of GPUs. It’s better long-term to gain costs in RAM vs performance (additional sampler overhead).
Thoughts?
=-=-=-=-=-=
EDIT: I tried this on my own. Here’s an EXTREME closeup, like 1 more tiny mouse tick forward puts you in the model-cube. Left is a texture of XYR w/deriveNormalZ and the right is a snip from a straight-up normal-map. SMALL differences, but it looks very workable:
Normal is BC5 and the derived is DXT1.