Mip texturare

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 4 februarie 2015; verificările necesită 19 modificări .

Texturarea MIP ( Eng.  MIP mapping ) este o metodă de texturare care utilizează mai multe copii ale aceleiași texturi cu detalii diferite. Numele provine de la lat.  multum in parvo  - „mult în puțin”.

Numire

Imaginea arată cel mai bine atunci când detaliile texturii sunt aproape de rezoluția ecranului . Dacă rezoluția ecranului este mai mare decât rezoluția texturii (textura prea mică/obiect prea aproape), imaginea va fi neclară. Dacă rezoluția texturii este prea mare (textura este prea mare / obiectul este prea departe), obținem pixeli aleatori - ceea ce înseamnă pierderea detaliilor fine, moiré și pâlpâire. Detalierea excesivă este, de asemenea, dăunătoare în ceea ce privește performanța - supraîncărcă magistrala video și dă un procent mare de pierderi de memorie cache . Se dovedește că este mai bine să aveți mai multe texturi cu detalii diferite și să o aplicați pe cea mai potrivită în această situație obiectului. În unele cazuri, creșterea vitezei de texturare poate crește de mii de ori, iar viteza de afișare a întregii scene pe ecran - de zeci de ori.

Multe jocuri moderne pentru PC permit utilizatorului să seteze manual calitatea texturii, în setări, alegând între performanță și calitate. Dacă calitatea texturii este setată la „scăzută”, jocul va folosi mipmap-urile lor (copii mici) în loc de texturile originale.

Cum funcționează

Este creată o așa-numită piramidă MIP  - o secvență de texturi cu o rezoluție de la maxim la 1x1. De exemplu: 1x1, 2x2, 4x4, 8x8, 16x16, 32x32, 64x64, 128x128, 256x256, 512x512 și 1024x1024. Fiecare dintre aceste texturi este numită nivel MIP ( ing.  nivel MIP ) sau nivel de detaliu ( ing.  nivel de detaliu ).

Toate aceste texturi au aceeași imagine. Astfel, mip-texturarea crește consumul de memorie video cu o treime:

.

La aplicarea texturilor, se calculează distanța până la obiect, iar numărul texturii este găsit prin formula:

,

unde rezoluția  este rezoluția camerei virtuale (numărul de pixeli care vor fi într-un obiect cu dimensiunea de 1 unitate situat la 1 unitate de cameră), texelsize  este dimensiunea texelului în unități lumii 3D, dist  este distanța la obiectul din aceleași unități, mip bias  - un număr care vă permite să selectați o textură mai mult sau mai puțin detaliată decât o oferă formula.

Acest număr este rotunjit la un număr întreg, iar textura cu numărul corespunzător (zero este cel mai detaliat, primul este de două ori mai mic etc.) este aplicată obiectului.

Dezavantaje, soluții

Consumul de memorie video crește cu o treime (totuși, în schimb, viteza de desenare a obiectelor pe ecran crește). Cu toate acestea, dimensiunile tipice ale memoriei video la începutul anilor 2010 sunt de 1-3 GB. În plus, dacă obiectul este departe, textura sa detaliată poate fi încărcată în RAM .

Texturarea MIP nu rezolvă problema texturilor care se află la un unghi ascuțit față de vizualizator (cum ar fi un drum într-un simulator de mașină ). Pentru astfel de texturi, rezoluția de-a lungul unei axe este foarte diferită de rezoluția de-a lungul celeilalte - și, de exemplu, imaginea este clar neclară de-a lungul axei X, în timp ce pâlpâirea este vizibilă de-a lungul axei Y, ceea ce este caracteristic unei texturi supradimensionate. rezoluţie. Există mai multe moduri de a rezolva acest lucru simultan (începând cu cea mai mică calitate):

  1. Setați cea mai confortabilă valoare mip bias în driverul video  - un număr care este responsabil pentru alegerea numărului texturii din piramidă. Dacă este negativ, driverul video preia texturi mai detaliate, dacă este pozitiv, mai puțin detaliate.
  2. Multe jocuri în sine stabilesc părtinirea mip adecvată pentru diferite tipuri de obiecte. De exemplu, în Live for Speed ​​​​mip părtinirea este setată de utilizator separat pentru mașini, obstacole și drumuri.
  3. Profitați de filtrarea anizotropă  , o metodă de texturare care își propune să rezolve această problemă.

Este vizibilă o limită clară între nivelurile MIP. Acest lucru este rezolvat prin filtrare triliniară .

Dacă există bucăți de suprafețe diferite în aceeași textură, trebuie să faceți alocații și goluri care depășesc 1 pixel din cel mai „călător” nivel MIP. Acest nivel nu este neapărat cel mai înalt (de exemplu, în Dota 2 vedem atât un erou detaliat în meniu, cât și unul în miniatură în joc) - prin urmare, aceste lacune au fost prescrise în mod explicit în manualul de modelare Dota 2 .

Alternative

Renderele de înaltă calitate pot folosi un tabel de sumă parțială . Aceasta oferă cea mai înaltă calitate a imaginii (patru accesări la tabel pot media culoarea pe orice dreptunghi), dar aveți nevoie de tipuri mai largi pentru a stoca sumele. În consecință, tabelul sumelor parțiale nu mai este o treime, ci cel puțin de două ori. Tabelul de sumă parțială nu rezolvă problemele cu erorile de cache.

Link -uri