I need to pass four channels to a model shader: metallic, roughness, emission, and a game-specific mask.
Almost all models have one or two of these channels completely black. Some other models need (for example) a hi-res metallic and roughness, and low-res emission.
Scene may contain 300-600 different non-instanced models.
Storing the maps as four different texture objects (and binding to 4 samplers) will save gpu memory and caches. If we neglect the overhead on binding, can separately-stored textures perform better than a single four-channel texture?
Does sampling different samplers leads to more cache misses than using one sampler with unused channels?
I’m targeting desktops with OpenGL >= 3.0.