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.

Przykładowe mipmapy dla oryginalnej tekstury o rozmiarach 256×256.

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.

Po lewej płaszczyzna teksturowana bez mipmappingu, po prawej z zastosowaniem techniki mipmappingu.

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 ⅓.

Zobacz też

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.