OnoSendai wrote:It's true that bump maps and normal maps may have somewhat different performance characteristics, and may have differences in their susceptibilities to quantisation errors (e.g. problems when storing as 8 bit/channel).
However, on a fundamental/theoretical level, the only thing normals maps can do that bump maps can't, is to have 'non-conservative' normals - for example, you could have a normal map that described a circular ramp such that you are always heading 'downhill' as you complete successive paths around the circle. Bump maps can't do this as they are based on the derivative of a scalar function. However these non-conservative normals make absolutely no sense in the real world, so it's not really an advantage in practice.
If you really want to avoid this on textures, you can pre-remove the rotationnal part.
When I make nice algebric bump microfacet shaders, I would prefer derivating myself instead literally of letting the ugly numerical derivation.
And in many cases, the normal can be expressed simply. To convert it to bump, you need to integrate literally, which sometimes is not possible, sometimes possible but ugly. And finally, Indigo derivates numerically... That's too bad.
Also, normal map shaders allow making height discontinuities, which are ugly with bump shaders.