Recent, companiile care produc jetoane grafice, încercând să obțină cele mai înalte imagini detaliate, pentru a le face mai realiste. În același timp, se dezvoltă multe tehnologii noi care permit creșterea vitezei și calității procesării computerizate a imaginilor grafice. Există algoritmi noi pentru compresie, arhitectura de memorie, toate acestea fiind în mod constant îmbunătățite și îmbunătățite. Din păcate, din ideal, care este grafica fotorealistă, suntem încă departe. Și tocmai pentru că chips-urile grafice actuale trebuie să se bazeze pe câteva tehnologii de bază, dintre care una este utilizarea texturilor și, mai precis, filtrarea texturii - vom analiza acum.
Având un calculator perfect, am putea folosi cu siguranță un număr nelimitat de cifre grafice și puncte, ar obține imagini detalii incredibile folosind milioane, sau chiar miliarde de pixeli, fiecare cu o culoare unică, și au primit imagini foarte realiste. Dar, din păcate, acest lucru nu este încă posibil. Prea multe restricții impuse din cauza unitatea de calcul, memoria, lățimea de bandă, din cauza a ceea ce dezvoltatorii de cipuri grafice veni cu o varietate de moduri de a simula acest lucru sau că. Într-un cuvânt, astăzi, grafica bună începe cu înșelăciune.
Și una dintre primele astfel de înșelări pentru a obține detalii mai detaliate este utilizarea texturilor. Ce este o textura? Imagine bidimensională a unui obiect tridimensional sau a unei suprafețe. Arată ca o imagine a ceva. Luați un exemplu de zid de cărămidă. Vreți să le arătați altora, dar nu purtați cu dvs. întregul zid sau un munte de cărămizi. Este mult mai ușor să faci o imagine a unei cărămizi și a unui model de perete. Așa funcționează texturile. Arătați pur și simplu o imagine bidimensională a unui obiect tridimensional sau a unei suprafețe. Peretele de cărămidă, geometria și toate detaliile sunt prea complexe pentru a controla în mod eficient afișarea sa, deci în schimb folosim texturi și, astfel, simulează toate aceste detalii. Astfel, textura ne permite să afișăm geometria obiectului și toate detaliile lui de culoare, care de fapt nu există.
Când se analizează texturarea, este necesar să se înțeleagă ce este textura și de ce este compus la cel mai scăzut nivel. Cel mai simplu răspuns este că textura constă din numeroase fragmente colorate. Aceste fragmente colorate sau texele (elementul text) reprezintă un exemplu de determinare a culorii individuale atribuite fiecărui pixel în timpul procesării, iar numărul total de texele depinde în întregime de rezoluția texturii care este procesată. Aceasta este, de asemenea, puteți spune că texel este un pixel texturat. Aplicarea unei texturi unui obiect face posibilă acoperirea unui obiect mare cu o textura mică, care simplifică calculele și crește productivitatea în consecință.
MIP-cartografiere
Mișcarea este caracteristica oricărui obiect pe care îl procesăm. Obiectul în sine, desigur, poate să nu se miște, dar își va schimba poziția în funcție de schimbarea punctului de vedere. Și este evident că textura plasată pe obiect trebuie să se deplaseze împreună cu obiectul. Apoi sarcina devine și mai complicată. Ce se întâmplă dacă vă uitați la un obiect cum ar fi, de exemplu, podeaua din diferite unghiuri? Dacă podeaua se extinde la o distanță mare, atunci elementele texturii sale ar trebui să devină mai mici cu distanța (simularea adâncimii). Adică textura se schimbă cu distanța. Din nefericire, cu o astfel de schimbare în dimensiunea texturii, apare un efect "plutitor". O altă problemă apare atunci când texele originale sunt mai mari decât dimensiunea finală a pixelilor care afișează rezultatul. Uitați-vă la aceste două exemple:
Pentru a rezolva aceste probleme, se folosește mip-mapping. Mip-maparea ia textura originală și o generează de mai multe ori cu dimensiuni diferite. Datorită acestui fapt, putem vedea texturi de dimensiunea corectă la distanțe diferite ale unui obiect texturat extins. Dacă obiectul se îndreaptă spre tine, atunci se aplică o versiune cu o textura mai mare și dacă este mai mică de la tine. Mărește calitatea imaginii și o face mai lină. Uitați-vă la exemplele acelorași imagini care au fost menționate mai sus, dar cu funcția de cartografiere mip activată:
Ați observat diferența de calitate? Mai ales diferența este clar vizibilă în imaginea galbenă. Rețineți că, pe măsură ce ștergeți numerele din imaginea de jos, nu sunt supuse unei denaturări atât de puternice, ca în absența unei mapări mip.
filtrare
Eșantionarea punct-cu-punct este cea mai obișnuită metodă de textură. Atunci când se utilizează această metodă, se ia o textură de textură și culoarea sa este folosită pentru a colora un anumit pixel. Dar problema este inexactitatea acestei metode, care, în analiza finală, este exprimată în pierderea detaliilor imaginii. De asemenea, trebuie subliniat faptul că eșantionarea prin puncte este o metodă plană, iar în standardele ridicate de astăzi grafica nu este potrivită. Mai jos puteți vedea textura, rezultatul aplicării eșantionului în punctele și captura de ecran din joc, arătând cum arată în final (captura de ecran este mai bine să priviți într-o vedere mărită, pentru care faceți clic pe ea).
Bilinear Filtering
O altă metodă de texturare este filtrarea bilineară. Este similar cu eșantionarea de puncte, dar în loc de un singur eșantion, acesta folosește blocuri de patru texele de textură pentru a obține culoarea medie a pixelului prelucrat. Această procesare permite transferul mai bun al detaliilor fine ale texturii și obținerea unor valori exacte ale culorii mai albe.
Iată o captură de ecran cu utilizarea filtrării bilinere cu mip-mapping.
Un mod mai avansat de filtrare a texturilor este filtrarea trilineară. Filtrarea trilinică oferă rezultate mai bune decât filtrarea bilineară, deoarece face ca filtrul să depindă de nivelurile mip-map. Cu filtrarea trilineară, se ia un bloc de patru texele și se găsește valoarea medie a culorii, la fel ca în cazul bilinear, atunci același bloc cu patru cutii este luat de la nivelul mip-hartă corespunzător și este, de asemenea, media. Și după toate acestea, există o valoare medie între cele două recepționate, care va fi culoarea pixelului procesat. Acest lucru elimină efectiv liniile care apar la intersecțiile diferitelor nivele de mip-hartă cu filtrare bilineară. În plus, filtrarea trilineară îmbunătățește suplimentar efectul de netezire. Acest lucru se realizează prin creșterea numărului de eșantioane și prin tranziții de culoare mai precise între pixeli. Mai jos în imagine puteți vedea schema filtrării triline și o captură de ecran din joc, care arată acest tip de filtrare în acțiune.
Rețineți că chiar și cu filtrarea trilineară activată, încălcările de textură sunt observate la o distanță mare. Astfel, filtrarea trilineară este utilă în primul rând pentru organizarea tranzițiilor netede între nivelurile mip-map, deși, așa cum sa menționat mai sus, oferă atât o redare a culorilor mai precise, cât și o netezire îmbunătățită a imaginii.
Așa cum am spus deja, obiectele pot fi văzute în unghiuri foarte diferite și, prin urmare, suprafața nu se rupe întotdeauna în pătrate. Uită-te la această imagine furnizată de SGI:
Anisil. ce ??
Forma obiectelor texturate este o problemă atât în filtrarea bilineară, cât și în cea trilinară, deoarece acestea sunt filtre izotropice - adică sunt aplicabile într-o formă omogenă, într-un pătrat. Și deoarece cele mai multe obiecte nu au o formă uniformă, este nevoie de filtrare anizotropă. Anisotropic înseamnă literalmente nu formularul ("an") general ("iso") ("tropic"); Astfel, numele acestei metode indică foarte clar diferența sa față de metodele de filtrare deja luate în considerare. Filtrarea anizotropică medie mărește, de obicei, mai multe texele la diferite niveluri de mip-hartă. Prin urmare, se pare că nu există o regulă clară pentru formarea texelor, poziția dominantă fiind localizarea pixelului texturat. Astfel, filtrarea anizotropică nu este altceva decât un filtru în funcție de formă, iar teoretic poate fi doar un filtru pe două nivele. Dar foloseste mai mult de 8 probe.
De fapt, prin aplicarea filtrării anizotrope, eliminăm liniile de mip-hartă cu încălcări ale texturii. De exemplu, comparați cele două imagini de mai jos, una cu filtrare anizotropă, iar cea de-a doua fără ea.
Uită-te la ambele imagini din afară, atunci diferența dintre ele devine foarte vizibilă. Filtrare anizotropică oferă aceeași (sau aproape același) nivelul de texturi de detaliu la distante mai mari, ca și în mici, în timp ce filtrarea izotrop tinde să estompeze imaginea la distanțe mari, rezultând o pierdere de detaliu. La fel ca filtrarea trilineară, filtrarea anizotropică îmbunătățește netezirea imaginii. Într-adevăr, imaginea care utilizează filtrarea anizotropică arată mai bine, deoarece mai multe probe sunt folosite pentru a forma culoarea fiecărui pixel. Vezi-ți următoarea captură de ecran.
Până în prezent, cardurile grafice la nivelul consumatorului nu sunt capabile să ofere o imagine mai bună decât cea oferită de filtrarea anizotropă. Astfel de carduri, cum ar fi NVIDIA GeForce 2 și ATI Radeon, sunt capabile să efectueze numai filtrarea anizotropă pe 16 niveluri (texel). Obținerea aceleiași calități semnificativ superioare posibilității filtrelor izotropice poate fi aplicată numai anizotropiei pe 32 de niveluri. Următoarea generație, care reprezintă doar GeForce3, va oferi filtrarea anizotropă pe 32 de niveluri și poate chiar mai mult. Mai jos puteți vedea ce arată filtrarea anizotropă pe 64 de niveluri în acțiune, aveți grijă - dimensiunea completă a imaginii este de 630Kb.
Filtrarea anizotropică joacă un rol tot mai important în grafica computerizată modernă. O nouă generație de carduri grafice aduce noi forme de antialiasing. Dar aceste forme noi nu folosesc potrivirea texturii, ca în suprasampling (eșantion redundant), astfel încât nevoia de filtre avansate, cum ar fi anisotropic, este pur și simplu evidentă. Și în viitorul îndepărtat, ne putem aștepta la suportul hardware pentru filtrarea anizotropică de 128 de niveluri, care va fi un alt pas care va aduce lumea graficii computerelor mai aproape de realitate.