Hum.. interresting.. I'm glad I posted 🙂
When you say fragment masking, you mean you sampled all textures and then multiplied by 0/1 to pick the correct one? (I'm not very good in shader lingo)
Did you try with AGAL2 conditionals, it may give vastly different results because it doesn't need as many texture samples, no ?
I'm surprised that you dont expect big improvements from that technique. In my specific situation, I have a scene with 20-25 "flipbook" animations (just images sequences but from 9 atlases), not much CPU calculation etc.. just a lot of images changing all the time.
My draw calls are between 120 and 200 and my FPS, on desktop, felt from 60 fps (before, with 20 draw calls and no animations) to 33 fps.