Bump map
A texture used to give a material the illusion of depth through refracting light cast upon it (pixel by pixel). This shader method is called bump mapping, and is perhaps the main reason that games such as Doom 3, FarCry, and Half-Life 2 are able to look so much better than previous games. The normal map is the successor to the heightmap. While heightmaps only used one channel to decode the height of each pixel, normal maps use all three:
- The red channel contains the horizontal facing (X-axis)
- 0 = facing left
- 128 = facing forward
- 255 = facing right.
- The green channel includes the vertical facing (Y-axis)
- 0 = facing up
- 128 = facing forward
- 255 = facing down
- The blue channel decodes the height of the pixel (Z-axis)
- 0 = deepest
- 127 = maximum depth capable of receiving light
- 255 = at the material surface.
With these 3 channels, every pixel has a normal vector, means the engine knows in which direction the pixel is facing and can thereby calculate shadows and highlights.
A normal map is largely useless for really flat surfaces like smooth concrete or metal. But even rough concrete sometimes has enough depth to it to make a normal map worthwhile. This is an old article that explains the concept well.