Mipmapping
Z Wikipedii
Mipmapping to technika teksturowania bitmapami wykorzystywana w grafice trójwymiarowej, która pozwala uniknąć artefaktów i tym samym uzyskać lepszą jakość obrazów. Także przyspiesza sam proces teksturowania. Mipmapping został opracowany przez Lance Williamsa w 1983 roku.
Mipmapping wykorzystuje serię MIP map (mipmap), tj. tekstur o różnych rozmiarach, które są wynikiem skalowania wyjściowej tekstury. Jeśli wyjściowa tekstura ma rozmiar będący potęgą dwójki , to zostanie wygenerowanych n mipmap o rozmiarach
,
, itd., aż do tekstury o rozmiarach 1x1 pikseli. Np. jeśli n = 8, to kolejne mipmapy mają rozmiary: 256x256 (oryginalna tekstura), 128x128, 64x64, 32x32, 16x16, 8x8, 4x4, 2x2 i 1x1.
Skalowanie może być wykonane w prosty sposób poprzez uśrednianie pikseli, albo jakąś bardziej zaawansowaną techniką filtrowania. W każdym razie kolejne mipmapy są wstępnie pozbawione zakłóceń.
Następnie do poteksturowania 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 potrzebna. Np. jeśli obiekt ma wymiary ok. 10x13 pikseli, to do jego poteksturowania wystarczy tekstura 16x16, jeśli obiekt ma ok. 54x40 to wystarcza tekstura 64x64 itd. W obu przykładach nie ma sensu odwoływać się do tekstury o najwyższej rozdzielczości (powiedzmy 256x256) bo i tak duża część pikseli nigdy nie będzie widoczna.
W praktyce nie jest wybierana jedna mipmapa, ale brane są dwie najbliższe i dokonywana jest ich interpolacja.
Zalety mipmappingu:
- Wspomniane wcześniej 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 o wiele mniejsza liczba pikseli tekstury.
Wady:
- Zwiększenie wymagań pamięciowych o 1/3.
Mipmapping jest implementowany sprzętowo w kartach grafiki.