2
\$\begingroup\$

If I'm making a low-poly car pack of multiple cars for mobile platforms, should I:

  • Make a large texture like of 2048x2048 and unwrap all the models to it
  • Make separate, smaller (256x256) textures for all cars

Will there be a difference in performance? Which way of texturing is preferred? I've never seen any PC game have one large texture for all the cars, instead every car has its own set of textures and materials.

\$\endgroup\$
1
\$\begingroup\$

There is no "best" way to do it, in a general sense. That being said, hardware considerations can have an impact on the decision of which way to go.

For example, if you are running on something like an old HD3000 Intel GPU, you may have a decent amount of GPU ram, but the driver has limitations on how many active bound textures you have have at once (at least where OpenGL is concerned). This will cause serious issues with techniques such as deferred shading.

In such a case, a single, large texture would solve the problem, assuming that you have enough GPU ram to hold it, and all the other stuff (shaders, meshes etc) that you wish to use.

However this is unlikely to be the case in modern hardware, which supports 16-32 active bound textures.

Multiple textures have the advantage that you can choose which textures to have loaded, which improves flexibility, but with the drawback that you may have to load/unload textures to the GPU relatively frequently, which will affect performance. This is the preferred method of most game studios I have worked for, simply due to not having to support dated hardware, and that the PCI-E data bus is pretty fast.

However, being more specific to your case, you are talking about very small textures, vs one HD sized texture, so I doubt you would see any noticeable difference in performance either way. You would just have to write your shaders to accommodate the method you choose (mega texture uses UV offsets, whilst smaller textures have more work on the CPU side, in terms of binding texture units).

I appreciate this has not really answered your question, but as I opened with, there is no silver bullet approach.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.