Download

Normal Maps vs. Diffuse Maps, which one is cheaper?

Hey sorry if this has been addressed already, but I’m working on a project for mobile and my goal is to simplify the materials for optimization.

My question is: is a diffuse texture any different from a normal map texture in terms of texture lookup or memory usage? Both use RGBA, so are they going to be the same size? Or does the normal map channel slot render more quickly than a diffuse?

Practically, should I use a simple base color (No diffuse), and a normal map with detail for a material or would using a single diffuse map with details painted in (no normal) be cheaper?

Thanks for any explanation!

Normal maps change the direction that the surface is facing, a way of giving the impression of small details without them actually having to be modeled. I think memory wise, the normal map might be compressed more than a diffuse texture since it only needs the red and green channels. As for the material, if you add a normal map it will take more power to render the normal map, so a material with only a diffuse texture will render faster than a material with a normal map.

Oh, no, normal maps require MORE detail to get the angle right. They are imported as two uncompressed channels, each of which costs as much as 3 compressed channels. Normal maps cost twice as much memory as standard 3-channel textures do. And if you use the alpha channel on a texture, that channel will always be uncompressed as well, so a single 4-channel texture will cost as much as 2 @ 3-channel compressed ones.

The cost of rendering textures is practically the same as solid colors because the shader’s interaction with lighting is the same. But the cost of rendering normals affects the lighting and complexity significantly more. It is a much better idea to use textures and forego normals. There are exceptions to this rule: water typically looks better with normals and a reflection or distortion and no “texture,” though the reflection is much more easily provided by a cubemap texture than anything else. Some studios use a single grayscale channel multiplied against a single color to provide the final texture color, but this is no less computationally expensive than a colorful texture.

Look at games on the Wii if you want an idea what modern-day mobile gaming should look like. Focus less on graphics and more on colors and feeling, if that’s what you’re going for.

Thanks for the clarification. I figured normals were more expensive, but I guess my thought was this: a 256x256 normal map, or a 1k texture map, the actual texture sizes play a big role in memory usage, right? Or does the fact that the normal map still needs to bend the lighting increase the material expensiveness more?

I’m not trying to achieve photorealisitic fidelity or anything, but certain stylized objects might look better if they have indentations/bevels created by a normal rather than faked with diffuse.

Thanks again!

Sidenote: I thought normals used RGB channels for vertex normal locations? Not just RG?