Clean colored materials vs. textures

Hello forums.

I’m in the process of creating some simple lowpoly assets for my game. I’m using Blender to create the models, and so far I’ve just assigned materials for each face on the model, and set the base color of the material, instead of using textures. I’m not sure what’s best practice, and whether or not I should be using clean colored materials (basically my materials consists of one single color) or if I should make one material per asset, with it’s own texture, and map that to the UV.

I don’t know if it’s impacting performance using many materials, or if it’s better to just use one material per asset with a texture assigned to it.

Any guidelines I could follow here, or is it fine to just use colored materials?

If you add one material to a mesh (does not matter if its only color or texture) you need one drawcall. If you add a further material to the mesh it’s a further drawcall and so on. For example a treasure chest with wood and metal parts: You can add one material on the wood faces (one drawcall) and a further one for the metal faces (a further drawcall). That means the treasure chest is drawn twice each frame. If you add 10 materials to your mesh then the mesh has to be drawn 10 times each frame. If it’s just a low poly mesh used few times in game this would not matter that much. But instead of thousands meshes you would probably only use hundrets of them in game afterwards and because you even have lots other meshes you should not waste drawcalls. But as an example the Paragon heros are using 14 different materials (e.g. Sparrow) on a mesh with 40k poly. It even matters if you create a game for mobile or desktop.

If you would reduce the drawcalls for the treasure chest example you can combine wood and metal into one material. You can combine a wood fibre texture and some metal scratches texture in one material and use UVs which is found where. Wood got different roughness than metal … so you would add a further (monochrome) texture that masks the wood and metal parts. E.g. if it’s green than its rough and if it’s black it’s glossy. Same with different color for metal. Using Texture Masks | Unreal Engine Documentation - You can do all of this with one one paint brush if you use a PBR capable paint program like 3D coat or Substance (or if you wait a bit Blender 2.8). But … even if you can reduce the drawcalls that way and create more realistic PBR materials you would usually even use more texture RAM instead if you only use colors. That means you have to choose if yo use a 4k albedo-texture + a further 4k Roughness/Metal/AO + a further 4k NormalMap-texture or just 2k …

Alright cool. Appreciate the information. I’ll go with one material and a texture then, as I have no normal maps, or roughness/metal/ao to think about. Thank you :slight_smile:

You could also use vertex painting/colors for the base color.