Texturing best practices: Huge texture for many models or small textures per model?

For optimization, I always assumed many small textures (per model) were best, since it meant the engine was only rendering whatever was visible at any moment.

But evidently the engine gets bogged down by draw cells, meaning the more entities (including texture entities), the more work it has to do. Thus, I’ve started combining many texture elements into one huge (2048 square or even larger) massive map and single material.

Similarly, I’ve begun glomming lots of model elements into one huge export, assuming it was better to have one HUGE draw cell rather than dozens of small ones. This is not my experience with previous game engines (Unreal) where small individual elements were preferred because they were culled out when off screen or occluded.

Am I thinking about this properly? Because it still seems like it MUST be a drag on the engine to show a single model whose huge material includes texture content for half a dozen other models, or to show a HUGE thousands of poly model, even if we are only focusing on a small portion of it.

What’s the best practice? How to balance texture/model size and draw cells?

1 Like

Hi @gnormanlippert,

I don’t think there is an easy answer to that, since it depends a lot on the kind of project in question.

One factor to also consider apart from runtime performance is download size. Too many unique texture files, too many http requests, long download times.

In general if you are able to pack your textures in texture atlases and the end resolution per final texture is fine, you should definitely do that.

Though just to be clear, packing or no packing, doesn’t really affect the number of drawcalls on its own. That is related with how many unique materials per surface your final model has.

If you have more specific examples I’d be glad to comment further.