Treba li omogućiti anizotropno filtriranje ili ne. Podešavanje Nvidia grafičke kartice za igranje igara

Pretplatite se
Pridružite se zajednici “koon.ru”!
U kontaktu sa:

Zdravo svima! Danas je veoma zanimljiv članak o finom podešavanju video kartice za Visoke performanse V kompjuterske igrice. Prijatelji, složite se da ste nakon instaliranja drajvera za video karticu jednom otvorili “Nvidia Control Panel” i tamo vidjeli nepoznate riječi: DSR, shaderi, CUDA, clock puls, SSAA, FXAA, i tako dalje, i odlučili da više ne idete tamo . Ali ipak, sve je to moguće, pa čak i potrebno razumjeti, jer performanse direktno zavise od ovih postavki. Postoji zabluda da je sve na ovom sofisticiranom panelu prema zadanim postavkama ispravno konfigurirano, nažalost to je daleko od slučaja i eksperimenti pokazuju da ispravno podešavanje nagrađen značajnim povećanjembrzina kadrova.Zato se pripremite, razumjet ćemo optimizaciju striminga, anizotropno filtriranje i trostruko baferovanje. Na kraju, nećete požaliti i bićete nagrađeni u formipovećanje FPS-a u igricama.

Podešavanje Nvidia grafičke kartice za igranje igara

Tempo razvoja proizvodnje igara svakim danom dobija sve veći zamah, kao i glavno jelo novčana jedinica u Rusiji, a samim tim i važnost optimizacije rada hardvera, softvera i operativni sistem je naglo porasla. Nije uvijek moguće održati svog čeličnog pastuha u dobroj formi kroz stalne finansijske injekcije, pa ćemo danas govoriti o povećanju performansi video kartice zbog detaljna podešavanja. U svojim člancima sam više puta pisao o važnosti instaliranja drajvera za video, tako da , mislim da to možeš preskočiti. Siguran sam da svi savršeno dobro znate kako se to radi, a svi ste to već odavno instalirali.

Dakle, da biste došli do menija za upravljanje video drajverima, kliknite desnim tasterom miša bilo gde na radnoj površini i izaberite „Nvidia Control Panel“ iz menija koji se otvori.

Zatim, u prozoru koji se otvori, idite na karticu "Upravljanje 3D parametrima".

Ovdje ćemo konfigurirati različite parametre koji utječu na prikaz 3D slika u igricama. Nije teško shvatiti da ćete morati značajno smanjiti kvalitetu slike kako biste dobili maksimalne performanse od video kartice, stoga budite spremni na to.

Dakle, prva tačka" CUDA - GPU-ovi" Evo liste video procesora iz kojih možete birati i koje će koristiti CUDA aplikacije. CUDA (Compute Unified Device Architecture) je paralelna računarska arhitektura koju koriste svi moderni GPU-ovi za povećanje performansi računara.

Sljedeća tačka " DSR - glatkoća„Preskačemo ga jer je to dio postavki stavke „DSR - Degree“, a njega, zauzvrat, treba onemogućiti, a sada ću objasniti zašto.

DSR (Dinamička super rezolucija)– tehnologija koja vam omogućava da izračunate slike u igricama u višoj rezoluciji, a zatim skalirate rezultat prema rezoluciji vašeg monitora. Kako biste razumjeli zašto je ova tehnologija uopće izmišljena i zašto nam nije potrebna za maksimalne performanse, pokušat ću dati primjer. Sigurno ste u igrama često primijetili da mali detalji poput trave i lišća vrlo često trepere ili mreškaju prilikom kretanja. To je zbog činjenice da što je niža rezolucija, to je manji broj tačaka uzorkovanja za prikaz finih detalja. DSR tehnologija to može ispraviti povećanjem broja tačaka (što je veća rezolucija, veći je broj tačaka uzorkovanja). Nadam se da će ovo biti jasno. U uslovima maksimalne produktivnosti ova tehnologija nam nije interesantna jer troši dosta sistemski resursi. Pa, kada je DSR tehnologija onemogućena, podešavanje glatkoće, o čemu sam pisao malo iznad, postaje nemoguće. Generalno, isključimo ga i idemo dalje.

Sledeće dolazi anizotropno filtriranje. Anizotropno filtriranje je algoritam kompjuterske grafike kreiran da poboljša kvalitet tekstura koje su nagnute u odnosu na kameru. Odnosno, kada se koristi ova tehnologija, teksture u igrama postaju jasnije. Ako uporedimo antizotropno filtriranje sa prethodnicima, odnosno bilinearnim i trilinearnim filtriranjem, onda je anizotropno filtriranje najproždrljivije u smislu potrošnje memorije video kartice. Ova stavka ima samo jedno podešavanje - odabir koeficijenta filtera. Nije teško to pogoditi ovu funkciju mora biti onemogućen.

Sljedeća tačka - vertikalni sinhronizacioni puls. Ovo je sinhronizacija slike sa brzinom osvježavanja monitora. Ako omogućite ovu opciju, možete postići najglatkiju moguću igru ​​(cijepanje slike se eliminira kada se kamera naglo okrene), međutim, pad okvira se često dešava ispod brzine osvježavanja monitora. Za dobijanje maksimalna količina kadrova u sekundi, bolje je onemogućiti ovu opciju.

Prethodno obučeno osoblje virtualne stvarnosti . Funkcija naočala za virtuelnu stvarnost nam nije zanimljiva, jer je VR još uvijek daleko od svakodnevne upotrebe običnih igrača. Ostavljamo ga na zadanom - koristite postavku 3D aplikacije.

Sjenčanje pozadinskog osvjetljenja. Čini da scene izgledaju realističnije ublažavanjem intenziteta ambijentalnog svjetla na površinama koje su zaklonjene obližnjim objektima. Funkcija ne radi u svim igrama i zahtijeva veliku količinu resursa. Stoga je vodimo digitalnoj majci.

Keširanje shadera. Kada je ova funkcija omogućena, CPU sprema shadere kompajlirane za GPU na disk. Ako je ovaj shader ponovo potreban, GPU će ga uzeti direktno s diska, bez prisiljavanja CPU-a da ponovo kompajlira ovaj shader. Nije teško pretpostaviti da će performanse pasti ako onemogućite ovu opciju.

Maksimalan broj unaprijed pripremljenih okvira. Broj okvira koje CPU može pripremiti prije nego što ih GPU obradi. Što je veća vrijednost, to bolje.

Multi-frame anti-aliasing (MFAA). Jedna od tehnologija anti-aliasinga koja se koristi za eliminisanje "nazubljenosti" na ivicama slike. Bilo koja tehnologija anti-aliasing (SSAA, FXAA) je veoma zahtevna za GPU (pitanje je samo stepen proždrljivosti). Isključite je.

Stream optimizacija. Omogućavanjem ove funkcije, aplikacija može koristiti više CPU-a odjednom. Ako stara aplikacija ne radi kako treba, pokušajte postaviti “Auto” način rada ili potpuno onemogućiti ovu funkciju.

Način upravljanja napajanjem. Dostupne su dvije opcije - adaptivni način rada i režim maksimalnih performansi. Tokom adaptivnog režima, potrošnja energije zavisi direktno od GPU opterećenja. Ovaj način rada je uglavnom potreban za smanjenje potrošnje energije. Tokom režima maksimalnih performansi, kao što možete pretpostaviti, održava se najviši mogući nivo performansi i potrošnje energije, bez obzira na opterećenje GPU-a. Stavimo drugu.

Anti-aliasing – FXAA, Anti-aliasing – gama korekcija, Anti-aliasing – parametri, Anti-aliasing – transparentnost, Anti-aliasing – način rada. Već sam pisao o zaglađivanju malo više. Isključi sve.

Trostruko puferovanje. Vrsta dvostrukog puferiranja; metoda izlaza slike koja izbjegava ili smanjuje artefakte (izobličenje slike). Ako razgovaramo jednostavnim riječima, zatim povećava produktivnost. ALI! Ova stvar radi samo u kombinaciji s vertikalnom sinhronizacijom, koju smo, kao što se sjećate, ranije onemogućili. Stoga, također deaktiviramo ovaj parametar, za nas je beskoristan.

Filtriranje teksture.

Filtriranje rješava problem određivanja boje piksela na osnovu postojećih teksela sa slike teksture.

Najjednostavniji način primjene tekstura se zove tačkasto uzorkovanje(uzorkovanje u jednoj tački). Njegova suština je da se za svaki piksel koji čini poligon bira jedan teksel iz slike teksture koja je najbliža centru svjetlosne točke. Došlo je do greške jer je boja piksela određena s nekoliko teksela, ali je samo jedan odabran.

Ova metoda je vrlo neprecizna i rezultat njene upotrebe je pojava nepravilnosti. Naime, kad god su pikseli veći od teksela, uočava se efekat treperenja. Ovaj efekat se dešava ako je deo poligona dovoljno udaljen od tačke posmatranja da se na prostor koji zauzima jedan piksel postavlja mnogo teksela. Imajte na umu da ako je poligon veoma blizu tačke posmatranja i tekseli su veći od piksela, primećuje se druga vrsta degradacije kvaliteta slike. IN u ovom slučaju, slika počinje izgledati kockasto. Ovaj efekat se javlja kada je tekstura dovoljno velika, ali ograničenje dostupne rezolucije ekrana sprečava da originalna slika bude pravilno predstavljena.

Drugi metod - bilinearno filtriranje(Bi-linear Filtering) se sastoji od upotrebe tehnologije interpolacije. Za određivanje teksela koje treba koristiti za interpolaciju koristi se osnovni oblik svjetlosne mrlje - krug. U suštini, krug je aproksimiran sa 4 teksela. Bilinearno filtriranje je tehnika za eliminisanje izobličenja slike (filtriranje), kao što je "blokiranje" tekstura kada su uvećane. Prilikom sporog rotiranja ili pomicanja objekta (približavanje/udaljavanje) može biti primjetno „skakanje” piksela s jednog mjesta na drugo, tj. pojavljuje se blokada. Da bi se izbjegao ovaj efekat, koristi se bilinearno filtriranje, koje koristi ponderirani prosjek vrijednosti boje četiri susjedna teksela za određivanje boje svakog piksela i, kao rezultat, određuje boju teksture preklapanja. Rezultirajuća boja piksela se određuje nakon tri operacije miješanja: prvo se miješaju boje dva para teksela, a zatim se miješaju dvije rezultirajuće boje.

Glavni nedostatak bilinearno filtriranje je da se aproksimacija izvodi ispravno samo za poligone koji se nalaze paralelno sa ekranom ili tačkom posmatranja. Ako je poligon rotiran pod uglom (a to je u 99% slučajeva), koristi se pogrešna aproksimacija, jer treba aproksimirati elipsu.

Greške "dubinskog aliasinga" proizlaze iz činjenice da se objekti koji su udaljeniji od tačke gledišta čine manjim na ekranu. Ako se objekt pomiče i udaljava od točke gledanja, slika teksture koja se nalazi iznad objekta koji se skuplja postaje sve više i više komprimirana. Na kraju, slika teksture primijenjena na objekt postaje toliko komprimirana da dolazi do grešaka u renderiranju. Ove greške u renderiranju su posebno problematične u animaciji, gdje takvi artefakti pokreta uzrokuju treperenje i efekte usporenog kretanja u dijelovima slike koji bi trebali biti stacionarni i stabilni.

Sljedeći pravokutnici s bilinearnom teksturom mogu poslužiti kao ilustracija opisanog efekta:

Rice. 13.29. Sjenčanje objekta pomoću metode bilinearnog filtriranja. Pojava artefakata "dubinskog aliasinga", koji rezultiraju spajanjem nekoliko kvadrata u jedan.

Kako bi se izbjegle greške i simulirala činjenica da se objekti na daljinu čine manje detaljnim od onih koji su bliže tački gledanja, tehnika poznata kao mip-mapping. Ukratko, mip-mapping je preklapanje tekstura s različitim stupnjevima ili nivoima detalja, kada se, u zavisnosti od udaljenosti do tačke posmatranja, bira tekstura sa potrebnim detaljima.

Mip tekstura (mip-map) se sastoji od skupa prethodno filtriranih i skaliranih slika. Na slici povezanoj sa slojem mip mape, piksel je predstavljen kao prosjek četiri piksela iz prethodnog sloja s više visoka rezolucija. Dakle, slika povezana sa svakim nivoom mip teksture je četiri puta manja od prethodnog nivoa mip-mape.

Rice. 13.30. Slike povezane sa svakim nivoom mip mape valovite teksture.

S lijeva na desno imamo nivoe mip mape 0, 1, 2, itd. Što je slika manja, gubi se više detalja, sve do kraja kada se ništa ne vidi osim mutnog zamućenja sivih piksela.

Nivo detalja, ili jednostavno LOD, koristi se za određivanje koji nivo mip-mape (ili nivo detalja) treba odabrati za primjenu teksture na objekt. LOD mora odgovarati broju teksela prekrivenih po pikselu. Na primjer, ako se teksturiranje dogodi s omjerom blizu 1:1, tada će LOD biti 0, što znači da će se koristiti nivo mip-mape s najvećom rezolucijom. Ako 4 teksela preklapaju jedan piksel, tada će LOD biti 1 i koristit će se sljedeći mip nivo s nižom rezolucijom. Obično, kada se udalji od tačke posmatranja, objekat koji zaslužuje najveću pažnju ima više visoka vrijednost LOD.

Dok mip teksturiranje rješava problem grešaka u dubinski aliasingu, njegova upotreba može uzrokovati pojavu drugih artefakata. Kako se objekat pomiče sve dalje i dalje od tačke posmatranja, dolazi do prelaska sa niskog nivoa mip-mape na visoki. Kada je objekat u prelaznom stanju sa jednog nivoa mip-mape na drugi, poseban tip greške vizualizacije poznate kao "mip-banding" - banding ili laminacija, tj. jasno vidljive granice prelaska sa jednog nivoa mip-mape na drugi.

Rice. 13.31. Pravougaona traka se sastoji od dva trokuta sa teksturom u obliku valova, gdje su artefakti "mip-banding" označeni crvenim strelicama.

Problem "mip-banding" grešaka posebno je akutan u animaciji, zbog činjenice da je ljudsko oko vrlo osjetljivo na pomake i lako može uočiti mjesto oštrog prijelaza između nivoa filtriranja kada se kreće oko objekta.

Trilinearno filtriranje(trilinearno filtriranje) je treća metoda koja uklanja artefakte mip-bandinga koji se javljaju kada se koristi mip teksturiranje. Kod trilinearnog filtriranja, za određivanje boje piksela, uzima se prosječna vrijednost boje od osam teksela, uzimaju se četiri od dvije susjedne teksture i kao rezultat sedam operacija miješanja određuje se boja piksela. Kada se koristi trilinearno filtriranje, moguće je prikazati teksturirani objekat sa glatkim prelazima sa jednog mip nivoa na drugi, što se postiže određivanjem LOD-a interpolacijom dva susedna nivoa mip-mape. Time je riješena većina problema povezanih s mip teksturiranjem i grešaka zbog netačnog izračuna dubine scene ("depth aliasing").

Rice. 13.32. Piramidalna MIP-mapa

Primjer korištenja trilinearnog filtriranja dat je u nastavku. Ovdje se opet koristi isti pravougaonik, teksturiran sa slikom nalik na valove, ali sa glatki prelazi sa jednog mip nivoa na drugi kroz upotrebu trilinearnog filtriranja. Imajte na umu da nema primjetnih grešaka u renderiranju.

Rice. 13.33. Pravougaonik sa teksturom talasastom slikom se prikazuje na ekranu korišćenjem mip teksture i trilinearnog filtriranja.

Postoji nekoliko načina za generiranje MIP tekstura. Jedan od njih je jednostavno ih pripremiti unaprijed koristeći grafičke pakete kao što su Adobe PhotoShop. Drugi način je generiranje MIP tekstura u hodu, tj. tokom izvršavanja programa. Unaprijed pripremljene MIP teksture znače dodatnih 30% prostora na disku za teksture u osnovnoj instalaciji igre, ali omogućavaju fleksibilnije metode upravljanja njihovim kreiranjem i omogućavaju dodavanje različitih efekata i dodatni detalji različiti MIP nivoi.

Ispada da je trilinearno mipmapiranje najbolje što može biti?

Naravno da ne. Vidi se da problem nije samo u odnosu veličine piksela i teksela, već iu obliku svakog od njih (ili, preciznije, u odnosu oblika).

Metoda mip teksturiranja najbolje funkcionira za poligone koji su direktno licem u lice s tačkom gledišta. Međutim, poligoni koji su kosi u odnosu na točku posmatranja savijaju teksturu preklapanja tako da se pikseli mogu preklapati razne vrste i kvadratna područja oblika na slici teksture. Metoda mip teksturiranja to ne uzima u obzir i rezultat je da je slika teksture previše mutna, kao da su korišteni pogrešni tekseli. Da biste riješili ovaj problem, potrebno je uzorkovati više teksela koji čine teksturu, i trebate odabrati ove teksele uzimajući u obzir "mapirani" oblik piksela u prostoru teksture. Ova metoda se zove anizotropno filtriranje(“anizotropno filtriranje”). Konvencionalno mip teksturiranje se naziva "izotropno" (izotropno ili uniformno) jer uvijek zajedno filtriramo kvadratne regije teksela. Anizotropno filtriranje znači da se oblik regiona teksela koji koristimo mijenja ovisno o okolnostima.

Da biste razumjeli razliku između različitih algoritama filtriranja, prvo morate razumjeti šta filtriranje pokušava učiniti. Vaš ekran ima određenu rezoluciju i sastoji se od takozvanih piksela. Rezolucija je određena brojem piksela. Vaša 3D ploča mora odrediti boju svakog od ovih piksela. Osnova za određivanje boje piksela su slike teksture koje su postavljene na poligone smještene u trodimenzionalnom prostoru. Slike teksture se sastoje od piksela koji se nazivaju tekseli. U suštini, ovi tekseli su pikseli sa 2D slike koji su postavljeni na 3D površinu. Glavno pitanje je ovo: koji teksel (ili koji tekseli) određuje boju piksela na ekranu?

Zamislite sljedeći problem: recimo da je vaš ekran ploča s puno rupa (pretpostavimo da pikseli imaju okruglog oblika). Svaka rupa je piksel. Ako pogledate kroz rupu, vidjet ćete koje je boje u odnosu na trodimenzionalni prizor iza ploče. Sada zamislite snop svjetlosti koji prolazi kroz jednu od ovih rupa i udara u teksturirani poligon koji se nalazi iza njega. Ako je poligon lociran paralelno sa ekranom (tj. naša zamišljena ploča sa rupama), tada svjetlosni snop koji udara u njega formira okruglu svjetlosnu mrlju (vidi sliku 1). Sada, koristeći ponovo svoju maštu, učinimo da se poligon okreće oko svoje ose i najjednostavnije znanje će vam reći da će se oblik svjetlosne mrlje promijeniti, te će umjesto okruglog postati eliptičan (vidi slike 2 i 3). Verovatno se pitate kakve veze ima ova svetlosna tačka sa problemom određivanja boje piksela. Elementarno, svi poligoni koji se nalaze u ovoj svjetlosnoj tački određuju boju piksela. Sve o čemu smo ovdje raspravljali je osnovno znanje koje trebate znati da biste razumjeli razni algoritmi filtracija.

Možete pogledati različite oblike svjetlosne točke koristeći sljedeće primjere:


Rice. 1

Rice. 2


Rice. 3

1. Point Sampling

Point Sampling - tačkasto uzorkovanje. Ovo je najjednostavniji način za određivanje boje piksela na osnovu slike teksture. Samo trebate odabrati teksel najbliži centru svjetlosne točke. Naravno, griješite, jer boju piksela određuje nekoliko teksela, a vi ste odabrali samo jedan. Takođe ne uzimate u obzir činjenicu da se oblik svetlosne tačke može promeniti.

Glavna prednost ove metode filtriranja su niski zahtjevi za memorijski propusni opseg, jer da biste odredili boju piksela, morate odabrati samo jedan teksel iz memorije teksture.

Glavni nedostatak je činjenica da kada se poligon nalazi bliže ekranu (ili tački gledanja) broj piksela će biti veći od broja teksela, što rezultira blokadom i ukupnim pogoršanjem kvaliteta slike.

Međutim, glavna svrha korištenja filtriranja nije poboljšanje kvalitete uz smanjenje udaljenosti od točke posmatranja do poligona, već da se riješi efekta pogrešnog izračunavanja dubine scene (depth aliasing).

2. Bi-linearno filtriranje

Bi-Linear Filtering - bilinearno filtriranje. Sastoji se od upotrebe tehnologije interpolacije. Drugim riječima, za naš primjer, za određivanje teksela koje treba koristiti za interpolaciju, koristi se osnovni oblik svjetlosne mrlje - krug. U suštini, krug je aproksimiran sa 4 teksela. Ova metoda filtriranja je znatno bolja od uzorkovanja u tačkama jer dijelom uzima u obzir oblik svjetlosne mrlje i koristi interpolaciju. To znači da ako se poligon previše približi ekranu ili tački gledišta, za interpolaciju će biti potrebno više teksela nego što je stvarno dostupno. Rezultat je mutna slika koja izgleda sjajno, ali to je jednostavno nuspojava.

Glavni nedostatak bilinearnog filtriranja je što se aproksimacija izvodi ispravno samo za poligone koji se nalaze paralelno sa ekranom ili tačkom posmatranja. Ako je poligon okrenut pod uglom (a to je u 99% slučajeva), onda koristite pogrešnu aproksimaciju. Problem je u tome što koristite kružnu aproksimaciju kada biste trebali aproksimirati elipsu. Glavni problem je u tome što bilinearno filtriranje zahtijeva čitanje 4 teksela iz memorije teksture kako bi se odredila boja svakog piksela prikazanog na ekranu, što znači da se zahtjevi za memorijski propusni opseg povećavaju četiri puta u poređenju sa filtriranjem od tačke do tačke.

3. Tri-linearno filtriranje

Tri-linearno filtriranje - trilinearno filtriranje je simbioza mip teksturiranja i bilinearnog filtriranja. U suštini, radite bilinearno filtriranje na dva mip nivoa, što vam daje 2 teksela, po jedan za svaki mip nivo. Boja piksela koji treba da se prikaže na ekranu se određuje interpolacijom boja dve mip teksture. U suštini, mip nivoi su unapred izračunate manje verzije originalne teksture, što znači da dobijamo bolju aproksimaciju teksela koji se nalaze u svetlosnoj tački.

Ova tehnika obezbeđuje bolja filtracija, ali samo ima male prednosti prije bilinearnog filtriranja. Zahtjev za memorijski propusni opseg je dvostruko veći od bilinearnog filtriranja jer morate pročitati 8 teksela iz memorije teksture. Korištenje mipmappinga omogućava bolju aproksimaciju (koristeći više teksela smještenih u svjetlosnoj tački) preko svih teksela u svjetlosnoj tački, zahvaljujući korištenju unaprijed izračunatih mip tekstura.

4. Anizotropno filtriranje

Anizotropno filtriranje - anizotropno filtriranje. Tako da zaista dobijete dobri rezultati, morate zapamtiti da svi tekseli u svjetlosnoj tački određuju boju piksela. Također morate zapamtiti da se oblik svjetlosne točke mijenja kako se položaj poligona mijenja u odnosu na tačku posmatranja. Do ove tačke smo koristili samo 4 teksela umjesto svih teksela pokrivenih svjetlosnom mrljom. To znači da sve ove tehnike filtriranja daju iskrivljene rezultate kada se poligon nalazi dalje od ekrana ili od tačke posmatranja, jer ne koristite dovoljno informacija. U stvari, previše filtrirate u jednom smjeru, a ne filtrirate dovoljno u svim ostalim. Jedina prednost svih gore opisanih filtriranja je činjenica da kada se približite točki gledanja, slika izgleda manje blokovana (iako je to samo nuspojava). Dakle, da bismo postigli najbolji kvalitet, moramo koristiti sve teksele pokrivene svjetlosnom mrljom i usredsrediti njihovu vrijednost. Međutim, to ozbiljno utiče propusni opseg memorije - možda je jednostavno nema dovoljno, a izvođenje takvog uzorka s usrednjavanjem je netrivijalan zadatak.

Možete koristiti različite filtere da biste aproksimirali oblik svjetlosne točke kao elipse za nekoliko mogućih uglova poligona u odnosu na tačku gledišta. Postoje tehnike filtriranja koje koriste 16 do 32 teksela iz teksture za određivanje boje piksela. Istina, korištenje takve tehnike filtriranja zahtijeva znatno veći memorijski propusni opseg, a to je gotovo uvijek nemoguće postojeći sistemi vizualizacija bez upotrebe skupih memorijskih arhitektura. U sistemima za vizualizaciju koji koriste pločice 1, resursi memorijskog propusnog opsega su značajno ušteđeni, što omogućava korištenje anizotropnog filtriranja. Omogućava vizualizacija pomoću anizotropnog filtriranja najbolji kvalitet slike, zbog bolje dubine detalja i preciznijeg predstavljanja tekstura postavljenih na poligonima koji nisu paralelni sa ekranom ili tačkom gledanja.

1 Pločica (pločica) - pločica ili fragment slike. U stvari, pločica je dio slike, obično veličine 32 x 32 piksela; Sortiranje se vrši po ovim područjima kako bi se utvrdilo koji su poligoni koji padaju u ovu pločicu vidljivi. Tiled tehnologija je implementirana u VideoLogic/NEC čipsetima.

Dodatne informacije o ovoj temi možete pročitati i.

Pomoć u pripremi materijala pružili su Kristof Beets(PowerVR Power)

Pojavom 3D igara počeli su se pojavljivati ​​problemi koji nisu postojali u 2D igrama: na kraju krajeva, sada trebate prikazati trodimenzionalnu sliku na ravnom monitoru. Ako je objekat paralelan sa ravninom ekrana u blizini, nema problema: jedan piksel odgovara jednom tekselu (teksel je piksel dvodimenzionalne slike koji je superponovan na 3D površinu). Ali šta učiniti ako je objekt nagnut ili je daleko? Na kraju krajeva, tada postoji nekoliko teksela po pikselu, a pošto monitor ima ograničen broj piksela, boja svakog se mora izračunati iz nekoliko teksela kroz određeni proces – filtriranje.


Da bismo stvari lakše razumjeli, zamislimo da je svaki piksel kvadratna "rupa" na monitoru, mi ispaljujemo "zrake svjetlosti" iz očiju, a tekseli se nalaze na kvadratnoj mreži iza monitora. Ako rešetku postavimo paralelno sa monitorom odmah iza nje, tada će svjetlost iz jednog piksela pokrivati ​​samo jedan teksel. Sada ćemo početi da pomeramo rešetku - šta ćemo dobiti? Činjenica da će naša svjetlosna tačka iz piksela već pokrivati ​​više od jednog teksela. Sada zarotirajmo rešetku i dobićemo istu stvar: tačka od jednog piksela će pokriti mnogo teksela. Ali piksel može imati jednu boju, a ako u njemu ima mnogo teksela, onda nam je potreban algoritam pomoću kojeg ćemo odrediti njegovu boju - to se zove filtriranje teksture.


Ovo je najjednostavniji algoritam filtriranja: baziran je na činjenici da za boju piksela uzimamo boju teksela koja je najbliža centru svjetlosne točke iz piksela. Prednost ove metode je očigledna - najmanje opterećuje video karticu. Ima i dosta nedostataka - boja jednog centralnog teksela može se značajno razlikovati od boje desetina, pa čak i stotina drugih teksela koji padaju u tačku piksela. Osim toga, oblik same točke može se značajno promijeniti, ali njeno središte može ostati na istom mjestu, a kao rezultat toga, boja piksela se neće promijeniti. Pa, glavni nedostatak je problem "blokiranja": kada ima malo teksela po pikselu (odnosno, objekat pored plejera), onda dobijamo da se ovom metodom filtriranja popuni prilično veliki deo slike sa jednom bojom, što dovodi do jasno vidljivih „blokova“ iste boje na ekranu. Konačni kvalitet slike je... jednostavno užasan:


Stoga nije iznenađujuće da se takvo filtriranje danas više ne koristi.


Sa razvojem video kartica, njihova snaga je počela da raste, pa su programeri igara otišli dalje: ako uzmete jedan teksel za boju piksela, ispada loše. U redu - uzmimo prosječnu boju od 4 teksela i nazovimo je bilinearnim filtriranjem? S jedne strane, sve će biti bolje - blokada će nestati. Ali neprijatelj broj dva će doći - zamućenost slike u blizini igrača: to je zbog činjenice da je za interpolaciju potrebno više teksela od četiri.

Ali glavni problem ne ovo: bilinearno filtriranje dobro funkcioniše kada je objekat paralelan sa ekranom: tada uvek možete da izaberete 4 teksela i dobijete „prosečnu“ boju. Ali 99% tekstura je nagnuto u odnosu na plejer, i ispostavilo se da se približavamo 4 pravougaoni paralelepiped(ili trapez) kao 4 kvadrata, što je netačno. I što je tekstura više nagnuta, to je niža preciznost boje i jače zamućenje:


U redu, programeri igre su rekli - pošto 4 teksela nisu dovoljna, uzmimo dva puta četiri, a za preciznije podudaranje boje koristićemo tehnologiju mip teksturiranja. Kao što sam već napisao gore, što je tekstura dalje od plejera, to će više teksela biti u pikselu, a video kartici je teže obraditi sliku. MIP teksturiranje znači pohranjivanje iste teksture u različitim rezolucijama: na primjer, ako je originalna veličina teksture 256x256, tada se njene kopije pohranjuju u memoriju u 128x128, 64x64 i tako dalje, do 1x1:


A sada, za filtriranje, ne uzima se samo sama tekstura, već i mipmap: ovisno o tome da li je tekstura dalje ili bliže od playera, uzima se ili manja ili veća mipmapa teksture, a već na njoj najbliža 4 teksela do centra piksela se uzimaju i vrši se bilinearna analiza filtracijom. Zatim se uzimaju 4 teksela najbliža pikselu originalne teksture i opet se dobija "prosječna" boja. Nakon toga, "prosječna" boja se uzima iz prosječnih boja mipmapa i originalne teksture i dodjeljuje se pikselu - tako radi algoritam trilinearnog filtriranja. Kao rezultat toga, učitava video karticu nešto više od bilinearnog filtriranja (mipmap također treba obraditi), ali je kvalitet slike bolji:


Kao što vidite, trilinearno filtriranje je ozbiljno bolje od bilinearnog, a još više od filtriranja tačaka, ali slika i dalje postaje mutna na velikim udaljenostima. A nejasna slika je zbog činjenice da ne uzimamo u obzir činjenicu da se tekstura može nagnuti u odnosu na plejer - a to je upravo problem koji rješava anizotropno filtriranje. Ukratko, princip rada anizotropnog filtriranja je sljedeći: uzima se MIP tekstura, postavlja se preko smjera gledanja, nakon čega se njene vrijednosti boje usrednjavaju s bojom određenog broja teksela duž smjera gledanja. Broj teksela varira od 16 (za x2 filtriranje) do 128 (za x16). Pojednostavljeno rečeno, umjesto kvadratnog filtera (kao kod bilinearnog filtriranja), koristi se izduženi, koji vam omogućava da odaberete bolji željenu boju za piksel ekrana. Budući da na ekranu može biti milion ili čak više piksela, a svaki teksel teži najmanje 32 bita (32-bitna boja), anizotropno filtriranje zahtijeva ogromnu propusnost video memorije - desetine gigabajta u sekundi. Ovako veliki zahtjevi za memorijom su smanjeni zbog kompresije teksture i keširanja, ali i dalje na video karticama s DDR memorijom ili 64-bitnom sabirnicom razlika između trilinearnog i x16 anizotropnog filtriranja može doseći 10-15% fps, ali slika nakon takvog filtriranja ispostavilo se da je najbolji:

Teksturiranje je najvažniji element od današnjih 3D aplikacija, bez toga mnogi 3D modeli gube većinu svoje vizuelne privlačnosti. Međutim, proces nanošenja tekstura na površine nije bez artefakata i odgovarajućih metoda za njihovo suzbijanje. U svijetu 3D igre S vremena na vrijeme naiđete na specijalizirane izraze poput „mip mapiranja“, „trilinearnog filtriranja“ itd., koji se posebno odnose na ove metode.

Poseban slučaj efekta aliasinga o kojem smo ranije govorili je efekat aliasinga teksturiranih površina, koji se, nažalost, ne može ukloniti gore opisanim metodama višestrukog uzorkovanja ili superuzorkovanje.

Zamislite crno-bijelo šahovska tabla velike, gotovo beskonačne veličine. Recimo da nacrtamo ovu ploču na ekranu i pogledamo je pod blagim uglom. Za dovoljno udaljena područja ploče, veličina ćelija će se neizbježno početi smanjivati ​​na veličinu od jednog piksela ili manje. Ovo je takozvana optička redukcija teksture (minifikacija). Počeće „borba“ između piksela teksture za posedovanje piksela ekrana, što će dovesti do neprijatnog treperenja, što je jedna od varijanti efekta aliasinga. Povećanje rezolucije ekrana (stvarne ili efektivne) pomaže samo malo, jer za objekte koji su dovoljno udaljeni detalji teksture i dalje postaju manji od piksela.

S druge strane, dijelovi ploče koji su nam najbliži zauzimaju veliku površinu ekrana i možete vidjeti ogromne piksele teksture. To se zove optičko povećanje teksture (uvećanje). Iako ovaj problem nije toliko akutan, njime se također treba baviti kako bi se smanjio negativan učinak.

Za rješavanje problema teksturiranja koristi se takozvano filtriranje teksture. Ako pogledate proces crtanja trodimenzionalnog objekta sa superponiranom teksturom, možete vidjeti da izračunavanje boje piksela ide "obrnuto" - prvo se nalazi ekranski piksel gdje će biti određena tačka objekta. projektovana, a zatim za ovu tačku svi pikseli teksture koji padaju unutar nje. Odabir teksturnih piksela i njihovo kombiniranje (prosječenje) kako bi se dobila konačna boja piksela ekrana naziva se filtriranje teksture.

Tokom procesa teksturiranja, svakom pikselu ekrana je dodijeljena koordinata unutar teksture, a ta koordinata nije nužno cijeli broj. Štaviše, piksel odgovara određenoj oblasti na slici teksture, koja može sadržavati nekoliko piksela iz teksture. Ovo područje ćemo nazvati slikom piksela u teksturi. Za obližnje dijelove naše ploče, piksel ekrana postaje znatno manji od piksela teksture i, takoreći, nalazi se unutar njega (slika se nalazi unutar piksela teksture). Za udaljene, naprotiv, svaki piksel pada veliki broj teksturne tačke (slika sadrži nekoliko tačaka teksture). Slika piksela može imati različit oblik a u opštem slučaju je proizvoljan četvorougao.

Hajde da razmotrimo razne metode teksture filtriranja i njihove varijacije.

Najbliži susjed

U ovoj, najjednostavnijoj metodi, boja piksela se jednostavno bira da bude boja najbližeg odgovarajućeg piksela teksture. Ova metoda je najbrža, ali i najmanje kvalitetna. Zapravo, ovo čak i nije posebna metoda filtriranja, već jednostavno način odabira barem nekog teksturnog piksela koji odgovara pikselu ekrana. Bio je naširoko korišten prije pojave hardverskih akceleratora, čija je široka upotreba omogućila korištenje boljih metoda.

Bilinearno filtriranje

Bilinearno filtriranje pronalazi četiri piksela teksture najbliže trenutnoj tački na ekranu, a rezultujuća boja se određuje kao rezultat miješanja boja ovih piksela u nekom omjeru.

Filtriranje najbližeg susjeda i bilinearno filtriranje rade prilično dobro kada je, prvo, stepen redukcije teksture mali, a drugo, kada teksturu vidimo pod pravim uglom, tj. frontalno. Sa čime je ovo povezano?

Ako uzmemo u obzir, kao što je gore opisano, "sliku" piksela ekrana u teksturi, onda će u slučaju jakog smanjenja ona uključivati ​​puno piksela teksture (do svih piksela!). Također, ako pogledamo teksturu iz ugla, ova će slika biti jako izdužena. U oba slučaja, opisane metode neće dobro funkcionirati, jer filter neće "hvatati" odgovarajuće piksele teksture.

Za rješavanje ovih problema koriste se takozvano mip mapiranje i anizotropno filtriranje.

Mip mapiranje

Sa značajnom optičkom redukcijom, tačka na ekranu može odgovarati prilično velikom broju piksela teksture. To znači da će implementacija čak i najboljeg filtera zahtijevati dosta vremena za prosječenje svih bodova. Međutim, problem se može riješiti kreiranjem i pohranjivanjem verzija teksture u kojima su vrijednosti unaprijed prosječne. I u fazi renderiranja, potražite željenu verziju originalne teksture za piksel i uzmite vrijednost iz nje.

Termin mipmap dolazi od latinskog multum in parvo - mnogo u malom. Prilikom korištenja ove tehnologije, pored slike teksture, memorija grafičkog akceleratora pohranjuje i skup njegovih umanjenih kopija, pri čemu je svaka nova tačno upola manja od prethodne. One. za teksturu veličine 256x256 dodatno se pohranjuju slike 128x128, 64x64 itd., do 1x1.

Zatim se odabire odgovarajući nivo mipmapa za svaki piksel (što je veća veličina "slike" piksela u teksturi, manja je mipmapa). Zatim se vrijednosti u mipmap-u mogu usrednjavati bilinearno ili korištenjem metode najbližeg susjeda (kao što je gore opisano) i dodatno se filtrira između susjednih nivoa mipmapa. Ova vrsta filtriranja naziva se trilinearnom. Daje vrlo kvalitetne rezultate i ima široku primjenu u praksi.


Slika 9. Mipmap nivoi

Međutim, problem sa "izduženom" slikom piksela u teksturi ostaje. Upravo zbog toga naša ploča iz daljine izgleda vrlo nejasno.

Anizotropno filtriranje

Anizotropno filtriranje je proces filtriranja teksture koji posebno uzima u obzir slučaj izdužene slike piksela u teksturi. Zapravo, umjesto kvadratnog filtera (kao kod bilinearnog filtriranja), koristi se izduženi, koji vam omogućava da bolje odaberete željenu boju za piksel ekrana. Ovo filtriranje se koristi zajedno sa mipmappingom i daje rezultate vrlo visokog kvaliteta. Međutim, postoje i nedostaci: implementacija anizotropnog filtriranja je prilično složena i kada se omogući, brzina crtanja značajno opada. Anizotropno filtriranje podržavaju najnovije generacije NVidia i ATI GPU-a. I sa različitim nivoima anizotropija - što je ovaj nivo viši, to se slike više "izduženih" piksela mogu pravilno obraditi i bolji je kvalitet.

Poređenje filtera

Rezultat je sljedeći: da bi se potisnuli artefakti zamjenjivanja teksture, nekoliko metoda filtriranja je podržano u hardveru, koji se razlikuju po kvalitetu i brzini. Najjednostavniji metod filtriranja je metoda najbližeg susjeda (koja se zapravo ne bori protiv artefakata, već jednostavno ispunjava piksele). Danas se najčešće koristi bilinearno filtriranje zajedno sa mip mapiranjem ili trilinearno filtriranje. IN U poslednje vreme GPU-ovi su počeli podržavati najkvalitetniji način filtriranja - anizotropno filtriranje.

Bump mapping

Bump mapping je vrsta grafičkih specijalnih efekata koji su dizajnirani da stvore utisak "hrapavih" ili neravnih površina. Nedavno je korištenje bump mapiranja postalo gotovo standard za aplikacije za igre.

Glavna ideja iza mapiranja neravnina je korištenje tekstura za kontrolu načina na koji svjetlost stupa u interakciju s površinom objekta. Ovo vam omogućava da dodate male detalje bez povećanja broja trokuta. U prirodi razlikujemo male neravne površine po sjenama: svaka kvrga će biti svijetla s jedne strane, a tamna s druge. Zapravo, oko možda neće moći otkriti promjene u obliku površine. Ovaj efekat se koristi u tehnologiji bump mapiranja. Jedna ili više dodatnih tekstura se primjenjuju na površinu objekta i koriste za izračunavanje osvjetljenja tačaka objekta. One. površina objekta se uopšte ne menja, samo se stvara iluzija nepravilnosti.

Postoji nekoliko metoda mapiranja neravnina, ali prije nego što ih pogledamo, moramo shvatiti kako zapravo definirati neravnine na površini. Kao što je gore spomenuto, za to se koriste dodatne teksture, a mogu biti različitih vrsta:

Normalna mapa. U ovom slučaju, svaki piksel dodatne teksture pohranjuje vektor okomit na površinu (normalan), kodiran kao boja. Normale se koriste za izračunavanje osvjetljenja.

Mapa pomaka. Mapa pomaka je tekstura u sivim tonovima gdje svaki piksel pohranjuje pomak od originalne površine.

Ove teksture pripremaju dizajneri 3D modela zajedno sa geometrijom i osnovnim teksturama. Postoje i programi koji vam omogućavaju da automatski dobijete normalne ili karte pomaka

Unaprijed izračunato mapiranje bumpova

Teksture, koje će pohranjivati ​​informacije o površini objekta, kreiraju se unaprijed, prije faze renderiranja, potamnjivanjem nekih teksturnih tačaka (a samim tim i same površine) objekta i isticanjem drugih. Zatim, prilikom crtanja, koristi se uobičajena tekstura.

Ova metoda ne zahtijeva nikakve algoritamske trikove tokom crtanja, ali, nažalost, promjene u osvjetljenju površina ne nastaju kada se promijene položaj izvora svjetlosti ili kretanje objekta. A bez toga se ne može stvoriti zaista uspješna simulacija neravne površine. Slične metode se koriste za statične dijelove scene, često za arhitekturu nivoa, itd.

Mapiranje neravnina pomoću utiskivanja (Emboss bump mapping)

Ova tehnologija je korišćena na prvim grafičkim procesorima (NVidia TNT, TNT2, GeForce). Za objekt se kreira mapa pomaka. Crtanje se odvija u dvije faze. U prvoj fazi, karta pomaka se dodaje sebi piksel po piksel. U ovom slučaju, druga kopija se pomiče na kratku udaljenost u smjeru izvora svjetlosti. Ovo proizvodi sljedeći učinak: pozitivne vrijednosti razlike određuju se osvijetljenim pikselima, negativne vrijednosti pikselima u sjeni. Ove informacije se koriste za promjenu boje osnovnih piksela teksture u skladu s tim.

Mapiranje neravnina pomoću utiskivanja ne zahtijeva hardver koji podržava pikselne shadere, ali ne radi dobro za relativno velike površinske nepravilnosti. Također, objekti ne izgledaju uvijek uvjerljivo; to uvelike zavisi od ugla pod kojim gledate na površinu.

Pixel bump mapiranje

Pixel bump mapping je trenutno vrhunac razvoja takvih tehnologija. U ovoj tehnologiji sve je proračunato što je moguće poštenije. Piksel shaderu je data normalna mapa kao ulaz, iz koje se uzimaju normalne vrijednosti za svaku tačku objekta. Normalna vrijednost se zatim upoređuje sa smjerom izvora svjetlosti i izračunava se vrijednost boje.

Ova tehnologija je podržana u opremi počevši od grafičkih kartica GeForce2 nivoa.

Dakle, vidjeli smo kako možemo iskoristiti posebnosti ljudske percepcije svijeta da poboljšamo kvalitetu slika koje stvaraju 3D igre. Sretni vlasnici najnovije generacije video kartica NVidia GeForce, ATI Radeon(međutim, i ne samo ove druge) mogu se samostalno poigrati nekim od njihovih opisanih efekata, budući da su postavke za de-aliasing i anizotropno filtriranje dostupne u opcijama drajvera. Ove i druge metode, koje su izvan okvira ovog članka, programeri igara uspješno implementiraju u nove proizvode. Generalno, život postaje bolji. Nešto drugo će se desiti!

Povratak

×
Pridružite se zajednici “koon.ru”!
U kontaktu sa:
Već sam pretplaćen na zajednicu “koon.ru”