Displacement mapping
Le « displacement mapping » est une technique similaire au bump mapping, normal mapping, et au parallax mapping, mais qui utilise, contrairement aux autres techniques, une texture (qui peut être procédurale) ou ce que l'on appelle une « height map » (texture créant du relief dans certains cas) qui modifiera la position géométrique des points de la surface à laquelle on applique cette « displacement map ». Ces positions géométriques seront déterminées selon la valeur (représentée par une couleur) affectée à la texture. Cet effet donnera à la surface une grande précision et un grand nombre de détails. En revanche, c'est, parmi les autres techniques citées plus haut, celle qui demande le plus de ressources à l'ordinateur, gourmandise due à la grande quantité de « nouvelle géométrie ».
Pendant des années, le displacement mapping était une technique réservée aux moteurs de rendu haut-de-gamme, tels que RenderMan, tandis que des APIs en temps réél, comme OpenGL ou DirectX n'étaient pas capable de supporter une telle technique. Pour expliquer cette absence, une des raisons à citer est le fait que l'implémentation du displacement mapping aurait requis une tessellation adaptive de la surface, de sorte que les micropolygones causés par le displacement correspondent à la taille d'un pixel sur l'écran.
Valeurs pour les displacement maps
Les « displacement maps » utilisent des valeurs flottantes qui n'ont pas de référence propre. Par exemple, nous pourrions penser que le gris (50 % blanc / 50 % noir) est une valeur neutre, tandis que les valeurs dans le noir « creusent » l'objet et celles dans le blanc rajoutent du relief. Mais le displacement mapping ne marche pas comme cela. En effet, les valeurs de toutes les teintes du niveau de gris dépendent du moteur de rendu. Si nous prenons le cas où 0 est une valeur neutre, alors les valeurs qui seront au-dessus rajouteront du relief, tandis que les valeurs en dessous creuseront. Pour que les valeurs de la texture correspondent aux valeurs du moteur de rendu, un « node » est souvent utilisé pour pouvoir modifier les valeurs de la texture en temps réel. L'image placée à droite de la page illustre bien ce qui est décrit : le gris est utilisé comme valeur neutre. Ainsi, toutes les valeurs situées sous ce gris, celles qui sont donc sombres, ont creusé la surface. Il n'y a donc pas eu de relief ajouté, seulement « creusé ».