Bump map
Textures often called Bump Maps, or Normal Maps are used to simulate three-dimensional details on a two-dimensional surface by manipulating its lighting.
Textures often called Bump Maps, or Normal Maps are used to simulate three-dimensional details on a two-dimensional surface by manipulating its lighting.
Format
Each pixel in a bump map contains the (x, y, z) coordinates that define a normalized vector.
Because of this each color channel in a bump map has meaning:
Red
Horizontal facing (X axis).
- 0 = left 
- 128 = forward or facing viewer 
- 255 = right 
Green
Vertical facing (Y axis).
- 0 = up 
- 128 = forward, or facing viewer 
- 255 = down 
Blue
Height (Z axis).
- 0 = facing 'in' to the texture, away from the viewer. This is a 'bad' value. Anything under 128 means that the surface should be facing away from the player, which is not possible. 
- 128 = maximum depth capable of receiving dynamic light. It's a bad idea to go under this. 
- 255 = facing 'out' of the texture towards the viewer. 
dev/flat_normal uses the above-mentioned values. However they are incorrect. An actually flat bump map should be [128, 128, 255]
The three channels represent a normal vector for every pixel which represents the direction that the pixel is facing in 3D spaces. This allows the engine to generate shadows and highlights on a two-dimensional surface, or give a 3D model more detail.
A bump map is largely useless for really flat surfaces like smooth concrete or metal, but even smooth concrete sometimes has enough depth to it to make one worthwhile.

Creation
A bump map should be rendered in Tangent space and use vector dimensions X+ Y- Z+.
Programs
Various programs can automate the creation of bump maps, either by image analysis or by using 3D geometry the user pro

2D tools
3D tools
Other
- Bitmap2Material 3: Alternative to CrazyBump. 
- CrazyBump: Produces some very good normal maps. Some of them can be argued as almost having the same depth as a parallax map. 
- Filter Forge: Can generate normal maps for its filters and external images. 
- InsaneBump: Specifically made to be a free alternative to CrazyBump, produces high quality normal maps. 
- MindTex: A cheaper alternative to CrazyBump. Also produces high-quality normal maps. 
- Normal2dudv: a third party tool for converting bump maps to Dx8-friendly du/dv maps. 
- ShaderMap: A free alternative to CrazyBump. 
- SSBump Generator 5.3: Another free, open source alternative to CrazyBump that generates Self Shadowed Bump Maps as well as normal maps. 
Conversion
In VTFEdit
When converting your texture:
- Choose your image format. Uncompressed formats like BGR888 are higher-quality than compressed formats like DXT1, but be wary of file size. 
- 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
- Add - nocompress 1and- normal 1to <texture filename>.txt in the same folder as your texture, then compile.
Implementation
See $bumpmap.
Last updated
Was this helpful?


