Comparison?

There are 2 factors of Bump Mapping that influence rendering speed : CPU dependency and Fill Rate demand. We will compare all techniques based on these 2 important factors.

Pre Calculated Bump Mapping uses very little resources and is possible on all hardware. You only need to be able to combine the pre-calculated lightmap with the base texture. No new texture map have to be uploaded. It is possible to even use only one texture map. Disadvantage is the fact that this trick only works for almost static scenes resulting in very unspectacular implementation.

Perturbed Environment Bump Mapping is a very advanced way to do Bump Mapping it can handle both the light effects and can also handle bump mapping combined with environment mapping. Unfortunately no hardware supports the special texture lookups needed. Disadvantage is the fact that for every frame a new environment map may be needed due to moving lights, some of this can be done by UV perturbations (shifting of the map). Still there is no evidence of how good this looks, we will have to wait for the MicroSoft DirectX 6 software renderer to try this out.

Perturbed Bump Mapping is a three pass technique. You first need to combine the bump map and its shifted version. The result is a lightmap that needs to be combined with the texture map in the third pass. On Voodoo2 hardware this technique halves the fill rate so it is not for free. The combination of the bump maps can be done in one pass using the two texelfx processors but the hardware still has to combine the lightmap with a texture map and this has to be done in a second pass. This technique also needs to CPU to calculate the shift for the bump map. For correct 3D effects the shift of the texture coordinates has to be recalculated for every polygon and this can put quite a bit of strain on the CPU. Some bump effects do not look right with this technique.

Perturbed Normal Bump Mapping is very close to the real thing. All sorts of bump effects are possible and very easy to achieve because a height map is used as input. PVRSG supports this technique in hardware resulting in almost no extra CPU use. Fill Rate is also hardly affected.