Le bump mapping fait partie des techniques d'éclairage par pixel c'est à dire que tous les calculs d'éclairage (application des équations de la lumière)
sont effectués pour chaque pixel. La puissance des processeurs graphiques actuels (ou gpu) nous permet d'atteindre cette précision tout en conservant des framerates
acceptables.
En effet, la démo qui accompagne ce tutorial nous montre une sphère rendu en simple texturing avec éclairage par vertex (torus_simple_mapping_test.xml)
et la même sphère rendue avec la technique du bump mapping (torus_bump_mapping_test.xml). Dans le premier cas, le FPS se situe autour des 900
(valeur sur ma machine de dev, avec une GF7800GT) et dans le second cas, le FPS chute aux environs de 500 mais avec une qualité de rendu largement supèrieure comme
le montre les images suivantes:

fig.1 - Rendu en simple texturing avec éclairage par vertex.
fig.2 - Rendu en bump mapping avec éclairage par pixel.Mais attention, ces différences de performances s'expliquent pour deux raisons: la première est que le bump mapping est par nature
une technique multitexturing. Dans notre cas, 2 textures sont utilisées pour l'effet bump. Accéder à plusieurs textures est plus pénalisant qu'à une.
La seconde raison est que tous les calculs d'éclairages sont réalisés pour chaque pixel.
Ceci étant dit, passons à l'étude de la technique du bump mapping. Le principal objectif du bump mapping est de simuler du relief sur
une géométrie plane. Cela permet de rendre à moindre coût des objets d'apparence très détaillés. La technique du bump mapping est
toute simple puisqu'elle consiste à utiliser un vecteur normal déformé au niveau du pixel en cours de traitement. Mais avant d'entrer
dans les détails du code, il d'abord avoir en tête les équations de la lumières que nous allons implémenter.