View Single Post
Old 17th February 2008, 09:46 AM   #24
Senior Member
Professional user
lisa's Avatar
Join Date: Mar 2005
Location: Phoenix, AZ
Posts: 917
Default Re: Hello & Questions

Bump Map or Normal Map

One of the downsides of a displacement map is that it needs one vertex for every point you want to displace. If you have many fine details this can eat up a lot of memory and slow down your game or render unacceptably. Bump mapping is a technique that lets you re-create the *appearance* of a displacement map without the performance penalty.

A bump map is a grayscale image that often looks similar or identical to a displacement map. In fact, the same image can often be used interchangeably as a displacement map or a bump map. However, unlike a displacement map, a bump map does not actually alter the geometry of the model. Instead, it alters the model's surface normals.

A surface normal is used by the renderer to calculate the angle between a surface and a light, so that the renderer knows how much light the surface should receive. By perturbing these surface normals, a bump map causes shadows to appear on the surface of the model as if it were covered in fine details. Because the human eye relies on light and shadow so heavily as an indicator of depth, the appearance of these shadows can convince the mind that the shapes are really there, even though no such details exist.

Bump maps aren't a 100% replacement for displacement maps. Because they only change the shadows, not the geometry, they can't be used for large bumps or anything that would change the silhouette of the model. However, for small details they can be very effective.

A normal map is a more advanced type of bump map. Whereas a bump map merely bends the existing surface normal, a normal map allows you to replace it entirely. Each RGB value in a normal map represents the new XYZ vector of the surface normal at that pixel. This allows you to create more convincing illusions of shape that are not possible with traditional bump maps.

Normal maps can be in "object space" or in "tangent space". Object space normal maps have the XYZ values relative to the object. These normal maps usually appear multi-colored. They are faster to render, but can't be easily used for animation and they can't be tiled. Tangent space normal maps have the XYZ values relative to each surface. They usually appear bluish in color. These type of normal maps are more common because they are more flexible to use.

The effects of a normal map can be *very* dramatic. Many modern games use normal maps to give the illusion of much higher resolution geometry than the game is actually capable of. The effect is often so convincing that it is difficult for players to discern a high resolution model from a lower-resolution normal mapped model even when they are placed side-by-side.
Attached Images
lisa is offline   Reply With Quote