What is more expensive, a model with 5 materials, and five 256 sized images or 1 material and one 1280 sized image?

Ok so while making a game I have noticed that people are obsessed with optimization when its not really needed. And when I ask what is more expensive this way or this way its basically the loudest person’s way is the correct way. But no one truly knows because then I’ll ask more hypothetical questions not about the game and more about unreal and textures and models in general and then I get the answer “I don’t know”. So with this hypothetical question I can get some answers. All I want to know is efficient ways of comboing materials and textures and poly counts and yeah. Also the question is 256x256 and 1280x1280. 1280 is 256x5 so I am sure you guys can figure where I am getting the numbers from. And please no one answer with “well it depend” because I know it depends. Just is more materials or more textures more expensive is the base question.

The first reason you’re not getting a straight answer about this is because it depends on what you’re developing for if you’re developing for mobile you have to worry about polycount obviously but you also have to worry about draw calls for every material you have it counts as a draw call. You’re developing for Xbox one or Playstation you should still keep an eye on your draw calls and materialsbut not as important as how expensive your materials are in computations.So you need to know what you’re developing for first. After that it’s a balancing act obviously as an artist you want things to look as good as possible . In your case I would go with a single material at the larger size. At a 256 resolution it’s not much and it’s a pain in the ■■■ managing 6 materials on a model especially if you come to find out later on that you need to do something that affects all six materials at the same time. I know because I have a model that has six materials on it that are 2048 textures and plans changed on it down the road in our game and I ended up having to make the model look like it was printed and it turned out to be a real pain in the ■■■.

It’s about drawcalls, One Mesh with 5 Materials = 5 Drawcalls, multiply by however many Meshes, One Mesh with 1 Material = 1 Drawcall per mesh, this is why there is instanced meshes for stuff like foliage that have many of the same mesh and materials.

So yeah math wise:
10 soldiers with 1 mesh and 1 material = 10 Drawcalls,
10 soldiers with 1 mesh and 5 materials = 50 Drawcalls.

There is also a limit on how many textures per Material if you develop for Mobile for example, so having all that stored in one big texture is easier on the performance for loading.

And I’d say the “depends” is less about the performance and more about “depends if you care” in the context of what you are building and how much you and your intented audience will care :slight_smile:

Another thing to keep in mind is that any textures that are not a power of two (ie. 64, 128, 256, etc) will never be streamed or use mip maps for quality, so you lose out on this optimization, and if you’ve got a lot of draw calls with textures that never stream you can run into memory issues since these textures are staying at full resolution no matter their size on screen.

Also, some devices like, IOS require all textures to be power of two, so you can run into issues there as well.

1 Like

Hmm all very helpful. And yes I know it depends on what you are going for but in a world where there is only one system and only able to play on one thing then eliminate the depends and think. So from the answers I guess the question will boil down to whats worse 1 huge drawcall or multiple small drawcalls. And yes I can think of multiple scenarios on how many “multiple small” are and how great you want something to look. I get frustrated when people say “it depends” because I know there are so many variables that go into this that if you eliminate one thing then it causes a chain reaction that can change something else. Like math. Anyways from the answers I’m guessing more drawcalls are worse than more memory used from the texture. I will have to do some testing. Thanks for the answers and thanks for your patience with me. =)

So we all know mipmapping needs a power of 2 texture. But can someone explain what the reason is that someone would want to have a non-square texture? Can someone tell me a situation you would consider using say a 2048 x 1024 image? Just wondering.

Shamanik - So let’s say you are making an American flag. The texture is longer than its height. What you would do it is make the UV like normal and then shrink it length wise into the 1 to 1. The texture should fall into place. With a longer texture on a squished UV map, the distortions cancel each other out allowing you to put more awkward shape into the UV space… Basically using multiple UV boxes as but you have to shrink it into the 1 to 1 because any UV outside of the 1 to 1 will repeat itself.