Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références ».
Le MIP mapping est une technique d'application de textures, les MIP maps (Multum In Parvo, « beaucoup de choses dans un petit endroit »), qui permet d'améliorer la qualité de l'affichage.
Le but du MIP mapping est d'éviter la pixellisation lorsqu'on s'éloigne d'une texture.
Principe
Le but général est d'adapter le niveau de détail des textures à la distance de l'objet. Ainsi, un objet proche affichera des textures en haute résolution tandis qu'un objet lointain se verra attribuer une texture de résolution faible. Différents niveaux de détails, dit MIP map levels, peuvent être choisis. Le MIP mapping consiste à envoyer au processeur graphique (GPU) des échantillons de texture de résolutions décroissantes qui seront utilisés à la place de la texture originale, en fonction de la distance du point de vue à l'objet texturé et du niveau de détails nécessaire. Le GPU n'a alors plus qu'à adapter les textures aux objets selon leur éloignement, réadaptant la texture chaque fois que l'objet se rapproche. La texture utilisée lors du rendu sera alors celle dont la résolution est la plus proche de celle de l'objet sur l'image projetée.
Par exemple, à partir d'une image d'une taille de 256×256 pixels seront produits les mêmes images aux résolutions de 128×128 pixels, 64×64, 32×32, 16×16, 8×8, 4×4, 2×2 et 1×1. Si la taille de l'objet sur l'image projetée à l'écran est de 30×30 pixels, la texture utilisée sera alors celle de résolution 32×32 pixels.
Le filtrage trilinéaire permet d'éviter de voir les « sauts » lors du passage d'une texture à l'autre, en faisant une transition progressive.
Le MIP mapping seul est bien adapté à une texture perpendiculaire à l'observateur. Mais pour un sol par exemple, un filtrage anisotrope est nécessaire (voir ci-dessous).
MIP vient du latin Multum In Parvo, qui signifie « beaucoup de choses dans un petit endroit ». Le terme a été introduit par Lance Williams en 1983 dans son article Pyramidal Parametrics[1]. Le terme MIP n'a donc aucun rapport avec le maximum intensity projection utilisée en imagerie médicale.
Le MIP mappingnécessite plus de mémoire vidéo (environ 33 % de plus), mais cela permet de réduire les artefacts dus à des filtrages successifs appliqués sur la texture lorsque l'objet est éloigné. La diminution du nombre de texels à traiter et des opérations de filtrages en temps réel de la texture permet également un rendu plus rapide de l'image.[réf. nécessaire]
Image originale RGB Dans le cas des images couleurs codées en Rouge/Vert/Bleu (RGB en anglais), trois plans couleurs sont nécessaires et la place totale occupée par la texture en MIP map est deux fois la place occupée par l'information de texture de la plus forte définition encodée. La représentation ci-dessus montre aussi comment chaque plan requiert 33% de place en plus.
L'accroissement de la place requise pour tous les échantillons de ces MIP maps est un tiers de celle de la texture d'origine, car la somme des nombres 1/4 + 1/16 + 1/64 + 1/256 + · · · converge vers 1/3.
Quand une texture est vue suivant un angle rasant, le filtrage ne doit pas être uniforme dans toutes les directions (il doit être anisotrope plutôt qu'isotrope), et un compromis doit être réalisé sur la résolution utilisée. Si une plus haute résolution est utilisée, la cohérence de cache faiblit, et la déformation par pixellisation est accrue dans une direction, mais l'image tend à être de meilleure apparence. Si une résolution plus basse est utilisée, la cohérence de cache est améliorée, mais l'image est exagérément floutée.
Des textures en MIP map non-uniformes (aussi appelées rip-map) peuvent résoudre ce problème, mais elles ne sont pas supportées par les accélérateurs matériels des cartes graphiques modernes (accélération matérielle). Avec une carte de texture de base 8×8, les résolutions de rip-map sont 8×8, 8×4, 8×2, 8×1; 4×8, 4×4, 4×2, 4×1; 2×8, 2×4, 2×2, 2×1; 1×8, 1×4, 1×2 et 1×1. En général, pour une carte de texture de base ×, les résolutions des textures en rip-map sont × pour des valeurs i et j de 0 à n.