Filtrare anisotropic - Anisotropic filtering

O ilustrare a metodelor de filtrare a texturii care arată o textură cu mipmapping triliniar (stânga) și filtrare a texturii anizotrope.

În grafica computerizată 3D , filtrarea anizotropă (prescurtată AF ) este o metodă de îmbunătățire a calității imaginii texturilor pe suprafețele graficii computerizate care sunt la unghiuri de vizualizare oblică față de camera în care proiecția texturii (nu poligonul sau alt tip primitiv) pe care este redată) pare a fi non- ortogonală (deci originea cuvântului: "un" pentru nu , "iso" pentru același și "tropic" din tropism , referitor la direcție; filtrarea anizotropă nu filtrează la fel în toate direcțiile).

La fel ca filtrarea biliniară și triliniară , filtrarea anizotropă elimină efectele de aliasing , dar îmbunătățește aceste alte tehnici prin reducerea neclarității și păstrarea detaliilor la unghiuri de vizualizare extreme.

Filtrarea anizotropă este relativ intensă (în principal lățimea de bandă a memoriei și într-o oarecare măsură din punct de vedere computerizat , deși se aplică regulile standard de compensare spațiu-timp ) și a devenit o caracteristică standard a plăcilor grafice la nivel de consumator la sfârșitul anilor '90. Filtrarea anizotropă este acum obișnuită în hardware-ul grafic modern (și software-ul driverului video) și este activată fie de utilizatori prin setările driverului, fie de aplicațiile grafice și jocurile video prin interfețe de programare.

O îmbunătățire a cartografierii izotrope MIP

Un exemplu de stocare a imaginilor mipmap anizotrope: imaginea principală din stânga sus este însoțită de copii filtrate, transformate liniar , de dimensiuni reduse.
Mipmap izotrop al aceleiași imagini.

Din acest moment, se presupune că cititorul este familiarizat cu cartografierea MIP .

Dacă ar fi să explorăm un algoritm anisotrop mai aproximativ, cartografierea RIP, ca o extensie de la cartografierea MIP, putem înțelege modul în care filtrarea anisotropă câștigă atât de multă calitate a cartării texturilor. Dacă trebuie să texturăm un plan orizontal care este într-un unghi oblic față de cameră, reducerea tradițională a hărții MIP ne-ar oferi o rezoluție orizontală insuficientă din cauza reducerii frecvenței imaginii pe axa verticală. Acest lucru se datorează faptului că în cartografierea MIP fiecare nivel MIP este izotrop, deci o textură de 256 × 256 este redusă la o imagine de 128 × 128, apoi o imagine de 64 × 64 și așa mai departe, deci rezoluția se înjumătățește pe fiecare axă simultan, deci o textură de hartă MIP sondarea unei imagini va prelua întotdeauna o imagine care are aceeași frecvență în fiecare axă. Astfel, atunci când se prelevează probe pentru a evita aliasarea pe o axă de înaltă frecvență, celelalte axe de textură vor fi în mod similar descompuse și, prin urmare, potențial neclare.

Cu MIP map filtrare anizotrope, în plus față de la 128 x sub - eșantionare 128, imaginile sunt de asemenea incluși în eșantion la 256 x 128 și 32 x 128 etc. Aceste anizotrop sub - eșantionate imagini pot fi probate când frecvența imaginii mapate textura este diferită pentru fiecare axă textura. Prin urmare, o axă nu trebuie să se estompeze din cauza frecvenței ecranului unei alte axe, iar aliasarea este încă evitată. Spre deosebire de filtrarea anizotropă mai generală, cartografierea MIP descrisă pentru ilustrare este limitată doar prin susținerea sondelor anizotrope care sunt aliniate pe axa în spațiul texturii , astfel încât anizotropia diagonală prezintă încă o problemă, chiar dacă cazurile de utilizare reală a texturii anizotrope au în mod obișnuit astfel de mapări ale spațiului de ecran .

Deși implementările sunt libere să își varieze metodele, cartografierea MIP și constrângerile asociate aliniate pe axă înseamnă că este suboptimă pentru filtrarea anizotropă adevărată și este utilizată aici doar în scop ilustrativ. Implementarea complet anizotropă este descrisă mai jos.

În termeni laici, filtrarea anizotropă păstrează „claritatea” unei texturi pierdute în mod normal de încercările texturii hărții MIP de a evita aliasarea. Prin urmare, se poate spune că filtrarea anizotropă menține detaliile clare ale texturii la toate orientările de vizualizare, oferind în același timp o filtrare rapidă a texturii anti-aliased .

Gradul de anizotropie susținut

Diferite grade sau rapoarte de filtrare anizotropă pot fi aplicate în timpul redării și implementările curente de redare hardware stabilesc o limită superioară pentru acest raport. Acest grad se referă la raportul maxim de anizotropie susținut de procesul de filtrare. De exemplu, filtrarea anizotropă 4: 1 (pronunțată „4-la-1”) va continua să ascuțească texturi mai oblice dincolo de intervalul ascuțit cu 2: 1.

În practică, ceea ce înseamnă acest lucru este că, în situații de texturare foarte oblică, un filtru 4: 1 va fi de două ori mai ascuțit decât un filtru 2: 1 (va afișa frecvențe duble față de filtrul 2: 1). Cu toate acestea, majoritatea scenei nu va necesita filtrul 4: 1; numai pixelii mai oblici și de obicei mai îndepărtați vor necesita o filtrare mai clară. Acest lucru înseamnă că, pe măsură ce gradul de filtrare anizotropă continuă să se dubleze, rezultatele se diminuează în ceea ce privește calitatea vizibilă, afectând din ce în ce mai puțini pixeli redați, iar rezultatele devin mai puțin evidente pentru privitor.

Când se compară rezultatele redate ale unei scene filtrate anizotrop 8: 1 cu o scenă filtrată 16: 1, doar câțiva pixeli foarte oblici, în cea mai mare parte pe geometrie mai îndepărtată, vor afișa texturi vizibil mai clare în scenă cu un grad mai ridicat de anizotrop filtrare, iar informațiile despre frecvență pentru acești câțiva pixeli filtrați 16: 1 vor fi doar duble față de filtrul 8: 1. Pedeapsa de performanță se diminuează, de asemenea, deoarece mai puțini pixeli necesită preluarea datelor cu o anizotropie mai mare.

În cele din urmă, complexitatea hardware suplimentară față de aceste randamente în scădere este cea care determină stabilirea unei limite superioare pe calitatea anizotropă într-un design hardware. Aplicațiile și utilizatorii sunt apoi liberi să ajusteze acest compromis prin setările driverului și software-ului până la acest prag.

Implementare

Filtrarea anizotropă adevărată sondează textura anizotrop din mers pe bază de pixel pentru orice orientare a anizotropiei.

În hardware-ul grafic, de obicei atunci când textura este eșantionată anizotrop, sunt luate mai multe sonde ( probe texel ) ale texturii din jurul punctului central, dar pe un model de eșantion mapat în funcție de forma proiectată a texturii la acel pixel, deși metodele software anterioare au folosit tabele de suprafață însumate.

Fiecare sondă de filtrare anizotropă este adesea în sine un eșantion de hartă MIP filtrat, care adaugă mai multe eșantionări procesului. Șaisprezece eșantioane anizotrope triliniare ar putea necesita 128 de eșantioane din textura stocată, deoarece filtrarea hărții triliniare MIP trebuie să preia patru eșantioane de două niveluri MIP și apoi eșantionarea anizotropă (la 16 atingeri) trebuie să ia șaisprezece dintre aceste sonde filtrate triliniare.

Cu toate acestea, acest nivel de complexitate a filtrării nu este necesar tot timpul. Există în mod obișnuit metode disponibile pentru a reduce cantitatea de muncă pe care trebuie să o facă hardware-ul de redare video.

Metoda de filtrare anizotropă cel mai frecvent implementată pe hardware-ul grafic este compoziția valorilor pixelilor filtrate dintr-o singură linie de probe de hartă MIP. În general, metoda de a construi un filtru de textură rezultat din mai multe sonde care umplu un eșantion de pixeli proiectat în spațiul texturii este denumită „ansamblu de amprentă”, chiar și în cazul în care detaliile de implementare variază.

Performanță și optimizare

Numărul de probe necesar poate face ca filtrarea anizotropă să fie extrem de intensă în lățimea de bandă . Texturile multiple sunt comune; fiecare eșantion de textură ar putea avea patru octeți sau mai mult, astfel încât fiecare pixel anizotrop ar putea necesita 512 octeți din memoria texturii, deși compresia texturii este frecvent utilizată pentru a reduce acest lucru.

Un dispozitiv de afișare video poate conține cu ușurință peste două milioane de pixeli, iar frecvențele dorite ale aplicației sunt adesea peste 60 de cadre pe secundă. Ca rezultat, lățimea de bandă necesară pentru memoria texturii poate crește la valori mari. Intervalele de sute de gigaocteți pe secundă de lățime de bandă a conductei pentru operațiuni de redare a texturii nu sunt neobișnuite acolo unde sunt implicate operații de filtrare anizotropă.

Din fericire, mai mulți factori se atenuează în favoarea unei performanțe mai bune:

  • Sondele în sine împărtășesc probe de textură stocate în cache , atât inter-pixel cât și intra-pixel.
  • Chiar și cu filtrarea anizotropă cu 16 apăsări, nu sunt întotdeauna necesare toate cele 16 apăsări, deoarece numai umpluturile de pixeli îndepărtate foarte oblice tind să fie foarte anizotrope.
  • Umplerea de pixeli foarte anizotropă tinde să acopere regiuni mici ale ecranului (adică în general sub 10%)
  • Filtrele de mărire a texturii (ca regulă generală) nu necesită filtrare anizotropă.

Vezi si

Referințe

linkuri externe