Mipmapping

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

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 2^n \times 2^n, to zostanie wygenerowanych n mipmap o rozmiarach 2^{n-1} \times 2^{n-1}, 2^{n-2} \times 2^{n-2}, 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.

Przykładowe mipmapy

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.

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

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.

Zobacz też[edytuj | edytuj kod]