MIP mapping

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

MIP mapping[modifier | modifier le code]

Le MIP mapping est une technique d'application de textures, les MIP maps, 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.

Le niveau de détail des textures est donc adapté à 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 faible taille. 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'à appliquer les bonnes textures sur les bons objets suivant 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. Il est à noter que la compression par ondelettes fait appel à cette technique.

Par exemple, à partir d'une image d'une taille de 256x256 pixels seront produits les mêmes images aux résolutions de 128x128 pixels, 64x64, 32x32, 16x16, 8x8, 4x4, 2x2 et 1x1. Si la taille de l'objet sur l'image projetée à l'écran est de 30x30 pixels, la texture utilisée sera alors celle de résolution 32x32 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].

Attention à ne pas confondre le terme MIP de MIP Mapping avec la projection MIP = "maximum intensity projection" utilisée en imagerie médicale par exemple. Bien que la création de textures en MIP map demande plus de mémoire vidéo (environ 33 % de plus), cette technique 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.

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.


Filtrage anisotrope[modifier | modifier le code]

Quand une texture est vue suivant un angle rasant, le filtrage ne doit pas être uniforme dans toutes les direction (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 elle 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 2^n×2^n, les résolutions des textures en rip-map sont 2^i×2^j pour des valeurs i et j de 0 à n.

Voir aussi[modifier | modifier le code]

Références[modifier | modifier le code]

Articles connexes[modifier | modifier le code]