Mipmapping – technika teksturowania bitmapami wykorzystywana w grafice trójwymiarowej, która pozwala uniknąć artefaktów i tym samym uzyskać lepszą jakość obrazów. Przyspiesza ona również sam proces teksturowania. Mipmapping został opracowany przez Lance’a Williamsa w 1983 roku.
Mipmapping jest implementowany sprzętowo w kartach graficznych od początku XXI w.
Opis metody
Mipmapping wykorzystuje serię MIP map (mipmap), tj. tekstur o różnych rozmiarach, które są wynikiem skalowania tekstury podstawowej (oryginalnej). Jeśli tekstura ta ma rozmiar będący potęgą dwójki to zostanie wygenerowanych mipmap o rozmiarach itd., aż do tekstury o rozmiarach 1×1 piksel. Np. jeśli to poszczególne mipmapy mają rozmiary: 256×256 (oryginalna tekstura), 128×128, 64×64, 32×32, 16×16, 8×8, 4×4, 2×2 i 1×1.
Skalowanie może być wykonane w prosty sposób poprzez uśrednianie pikseli albo jedną z bardziej zaawansowanych technik filtrowania. Kolejne mipmapy wstępnie są pozbawione zakłóceń.
Następnie do teksturowania obiektu trójwymiarowego używa się tej tekstury, której rozdzielczość jest wystarczająca do reprezentowania obiektu obserwowanego z pewnej odległości i to właśnie od odległości zależy, która mipmapa zostanie wybrana. Im obiekt znajduje się dalej od obserwatora, tym mniejszą zajmuje powierzchnię i tym mniejsza tekstura jest wymagana. Przykładowo, jeśli obiekt ma wymiary ok. 10×13 pikseli, to do jego teksturowania wystarczy tekstura o rozmiarze 16×16, jeśli obiekt ma ok. 54×40, to wystarcza tekstura 64×64 itd. W obu przykładach nie ma sensu odwoływać się do tekstury o najwyższej rozdzielczości (np. 256×256), bo i tak znaczna część jej pikseli nigdy nie będzie widoczna.
W przypadku filtrowania dwuliniowego wybierana jest jedna mipmapa, a w przypadku filtrowania trójliniowego używane są dwie najbliższe mipmapy i dokonywana jest ich interpolacja.
Zalety mipmappingu
- wstępne usuwanie zakłóceń skalowanych tekstur, co ma istotne znaczenie w grafice czasu rzeczywistego (gry komputerowe, symulatory lotu)
- zwiększenie prędkości teksturowania, ponieważ przetwarzana jest znacznie mniejsza liczba pikseli tekstury.
Wady
- zwiększenie wymagań pamięciowych o ⅓.