Bump map

A bump map is an RGB image that can be used to simulate a three-dimensional surface through a process known as normal mapping. They are sometimes called normal maps.
Format
Each color channel in a bump map has a meaning:
- The red channel defines horizontal facing (X-axis)
- 0 = left
- 128 = forward (facing viewer)
- 255 = right
- The green channel defines vertical facing (Y-axis)
- 0 = up
- 128 = forward (facing viewer)
- 255 = down
- The blue channel defines height (Z-axis)
- 0 = deepest
- 128 = maximum depth capable of receiving dynamic light (it's a bad idea to go under this)
- 255 = at the material's surface
The three channels between them allow the engine to calculate a normal vector for every pixel, allowing it to generate shadows and highlights on a two-dimensional surface.
A bump 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 one worthwhile.
Creation
A bump map should:
- Be at the same resolution as the albedo/s it is to be used with.
- Be stored in an uncompressed format (see Conversion).
Programs
Various programs can automate the creation of bump maps, either by image analysis or by using 3D geometry the user provides.
- 2D
- Photoshop or Paint Shop Pro
- The GIMP
- 3D
- XSI
- ZBrush2
- Lightwave
- 3D Studio Max
- Maya
- Blender
- NVIDIA Melody
- Cinema 4D
- NormalMapper
- xNormal
- Other
- CrazyBump: Produces some very good normal maps. Some of them can be argued as almost having the same depth as a parallax map.
- ShaderMap: A free alternative to CrazyBump.
- SSBump Generator 5.0: Another free alternative to CrazyBump that generates Self Shadowed Bump Maps as well as normal maps.
- Normal2dudv: a third party tool for converting bump maps to Dx8-friendly du/dv maps.
Conversion
In VTFEdit
When converting your texture:
- Choose BGR8888 or BGRA8888 (if your texture has an alpha channel) as your image format.
Tip:You can sometimes get away with DXT compression.
- Check the "Normal map" box in the texture's flags list after the import is complete. It's about 1/5 of the way down the list.

In Vtex
- Save your normal map as a TGA in the same resolution as the original texture. Give it a name that ends in _normal. The _normal at the end of the name will affect how Vtex converts it. For the brick wall example, we would name the file
brickwall_normal.tga
. - Add
nocompress 1
andnormal 1
to <texture filename>.txt in the same folder as your texture, then compile.
Implementation
See $bumpmap
.
See also
$ssbump
: creation and usage of Valve's new self-shadowing bump maps.- An old article that explains normal mapping quite well.
- Material Creation
- [1]
Template:Otherlang:en Template:Otherlang:en:jp Template:Otherlang:en:fr