10.10.2019

Anizotropā filtrēšana: kam tā paredzēta, ko tā ietekmē, praktiska izmantošana


IN mūsdienu spēles Attēla uzlabošanai tiek izmantots arvien vairāk grafisko efektu un tehnoloģiju. Tomēr izstrādātāji parasti neuztraucas paskaidrot, ko tieši viņi dara. Ja jums nav jaudīgākā datora, jums ir jāupurē dažas iespējas. Mēģināsim apskatīt, ko nozīmē izplatītākās grafikas opcijas, lai labāk saprastu, kā atbrīvot datora resursus, minimāli ietekmējot grafiku.

Anizotropā filtrēšana
Ja monitorā tiek parādīta jebkura tekstūra, kas nav tā sākotnējā izmērā, tajā ir jāievieto papildu pikseļi vai, gluži pretēji, jānoņem papildu pikseļi. Lai to izdarītu, tiek izmantota metode, ko sauc par filtrēšanu.


trīslīniju

anizotrops

Bilineārā filtrēšana ir vienkāršākais algoritms, kas prasa mazāku skaitļošanas jaudu, bet arī rada sliktākos rezultātus. Trilinear pievieno skaidrību, taču joprojām rada artefaktus. Anizotropā filtrēšana tiek uzskatīta par vismodernāko metodi, lai novērstu ievērojamus izkropļojumus objektos, kas ir stipri slīpi attiecībā pret kameru. Atšķirībā no divām iepriekšējām metodēm, tā veiksmīgi cīnās ar gradācijas efektu (kad dažas faktūras daļas ir izplūdušas vairāk nekā citas, un robeža starp tām kļūst skaidri redzama). Izmantojot bilineāro vai trilineāro filtrēšanu, tekstūra kļūst arvien neskaidrāka, palielinoties attālumam, bet anizotropajai filtrēšanai šī trūkuma nav.

Ņemot vērā apstrādājamo datu apjomu (un ainā var būt daudz augstas izšķirtspējas 32 bitu faktūru), anizotropā filtrēšana ir īpaši prasīga. joslas platums atmiņa. Satiksmi galvenokārt var samazināt, izmantojot tekstūras saspiešanu, ko tagad izmanto visur. Iepriekš, kad tā netika praktizēta tik bieži un video atmiņas caurlaidspēja bija daudz zemāka, anizotropā filtrēšana ievērojami samazināja kadru skaitu. Mūsdienu videokartēs tas gandrīz neietekmē fps.

Anizotropajai filtrēšanai ir tikai viens filtra koeficienta iestatījums (2x, 4x, 8x, 16x). Jo augstāks tas ir, jo skaidrākas un dabiskākas izskatās tekstūras. Parasti ar augstu vērtību nelieli artefakti ir redzami tikai slīpo tekstūru attālākajos pikseļos. Vērtības 4x un 8x parasti ir pietiekami, lai atbrīvotos no lauvas daļas vizuālo izkropļojumu. Interesanti, ka, pārejot no 8x uz 16x, veiktspējas sods būs diezgan mazs pat teorētiski, jo papildu apstrāde būs nepieciešama tikai nelielam skaitam iepriekš nefiltrētu pikseļu.

Ēnotāji
Shaders ir mazas programmas, kuras var radīt noteiktas manipulācijas ar 3D ainu, piemēram, mainiet apgaismojumu, uzklājiet tekstūru, pievienojiet pēcapstrādi un citus efektus.

Ēnotāji tiek iedalīti trīs veidos: virsotņu ēnotāji darbojas ar koordinātām, ģeometrijas ēnotāji var apstrādāt ne tikai atsevišķas virsotnes, bet arī veselas ģeometriskas formas, kas sastāv maksimāli no 6 virsotnēm, pikseļu ēnotāji strādā ar atsevišķiem pikseļiem un to parametriem.

Ēnotājus galvenokārt izmanto jaunu efektu radīšanai. Bez tiem darbību kopums, ko izstrādātāji varētu izmantot spēlēs, ir ļoti ierobežots. Citiem vārdiem sakot, ēnotāju pievienošana ļāva iegūt jaunus efektus, kas pēc noklusējuma nebija iekļauti videokartē.

Shaders strādā ļoti produktīvi paralēlā režīmā, un tāpēc mūsdienu grafikas adapteriem ir tik daudz straumēšanas procesoru, kurus sauc arī par ēnotājiem.

Parallakses kartēšana
Parallaksa kartēšana ir modificēta versija slavenajai izciļņu kartēšanas tehnikai, ko izmanto, lai tekstūrām piešķirtu reljefu. Paralakses kartēšana nerada 3D objektus šī vārda parastajā nozīmē. Piemēram, grīda vai siena spēles ainā izskatīsies raupja, bet patiesībā ir pilnīgi plakana. Reljefa efekts šeit tiek panākts, tikai manipulējot ar faktūrām.

Avota objektam nav jābūt plakanam. Metode darbojas uz dažādiem spēles objektiem, taču tās izmantošana ir vēlama tikai gadījumos, kad virsmas augstums vienmērīgi mainās. Pēkšņas izmaiņas tiek apstrādātas nepareizi, un objektā parādās artefakti.

Parallax kartēšana ievērojami ietaupa datora skaitļošanas resursus, jo, izmantojot analogos objektus ar tikpat detalizētu 3D struktūru, video adapteru veiktspēja nebūtu pietiekama, lai reāllaikā renderētu ainas.

Efektu visbiežāk izmanto uz akmens ietvēm, sienām, ķieģeļiem un flīzēm.

Anti-aliasing
Pirms DirectX 8 anti-aliasing spēlēs tika veikta, izmantojot SuperSampling Anti-Aliasing (SSAA), kas pazīstams arī kā Full-Scene Anti-Aliasing (FSAA). Tās izmantošana izraisīja ievērojamu veiktspējas samazināšanos, tāpēc, izlaižot DX8, tas tika nekavējoties pamests un aizstāts ar Multisample Anti-Aliasing (MSAA). Lai gan šī metode deva sliktākus rezultātus, tas bija daudz produktīvāks nekā tā priekšgājējs. Kopš tā laika ir parādījušies uzlaboti algoritmi, piemēram, CSAA.

AA izslēgts AA ieslēgts

Ņemot vērā, ka pēdējo gadu laikā videokaršu veiktspēja ir manāmi pieaugusi, gan AMD, gan NVIDIA atkal ir atgriezuši saviem paātrinātājiem atbalstu SSAA tehnoloģijai. Taču to nevarēs izmantot arī tagad mūsdienu spēlēs, jo kadru/s skaits būs ļoti mazs. SSAA būs efektīva tikai iepriekšējo gadu projektos vai aktuālajos, bet ar pieticīgiem citiem grafiskajiem parametriem. AMD ir ieviesis SSAA atbalstu tikai DX9 spēlēm, bet NVIDIA SSAA darbojas arī DX10 un DX11 režīmos.

Izlīdzināšanas princips ir ļoti vienkāršs. Pirms rāmis tiek parādīts ekrānā, noteikta informācija tiek aprēķināta nevis tās sākotnējā izšķirtspējā, bet gan palielinātā un reizinātā ar diviem. Tad rezultāts tiek samazināts līdz vajadzīgajam izmēram, un tad “kāpnes” gar objekta malām kļūst mazāk pamanāmas. Jo augstāks ir sākotnējais attēls un izlīdzināšanas koeficients (2x, 4x, 8x, 16x, 32x), jo mazāk būs modeļiem robainības. MSAA atšķirībā no FSAA izlīdzina tikai objektu malas, kas būtiski ietaupa videokartes resursus, tomēr šī tehnika var atstāt artefaktus poligonu iekšienē.

Iepriekš Anti-Aliasing vienmēr ievērojami samazināja fps spēlēs, bet tagad tas tikai nedaudz ietekmē kadru skaitu, un dažreiz tas vispār neietekmē.

Teselācija
Izmantojot teselāciju datormodelī, daudzstūru skaits palielinās par patvaļīgu skaitu reižu. Lai to izdarītu, katrs daudzstūris tiek sadalīts vairākos jaunos, kas atrodas aptuveni tādā pašā veidā kā sākotnējā virsma. Šī metode ļauj viegli palielināt vienkāršu 3D objektu detalizāciju. Tomēr vienlaikus palielināsies arī datora slodze, un dažos gadījumos nevar izslēgt nelielus artefaktus.

No pirmā acu uzmetiena teselāciju var sajaukt ar Parallax kartēšanu. Lai gan tie ir pilnīgi atšķirīgi efekti, jo teselācija faktiski maina objekta ģeometrisko formu, nevis tikai simulē reljefu. Turklāt to var izmantot gandrīz jebkuram objektam, savukārt Parallax kartēšanas izmantošana ir ļoti ierobežota.

Tesellation tehnoloģija kino ir pazīstama kopš 80. gadiem, taču spēlēs to sāka atbalstīt tikai nesen, vai drīzāk pēc tam, kad grafiskie paātrinātāji beidzot sasniedza nepieciešamo veiktspējas līmeni, kurā to var izpildīt reāllaikā.

Lai spēle izmantotu tesselāciju, tai ir nepieciešama videokarte, kas atbalsta DirectX 11.

Vertikālā sinhronizācija

V-Sync ir spēļu kadru sinhronizācija ar monitora vertikālās skenēšanas frekvenci. Tās būtība ir tāda, ka tajā brīdī, kad attēls tiek atjaunināts, ekrānā tiek parādīts pilnībā aprēķināts spēles kadrs. Svarīgi, lai arī nākamais kadrs (ja tas jau ir gatavs) parādītos ne vēlāk un ne agrāk, kad beidzas iepriekšējā izvade un sākas nākamais.

Ja monitora atsvaidzes intensitāte ir 60 Hz un videokartei ir laiks renderēt 3D ainu ar vismaz tādu pašu kadru skaitu, tad katrā monitora atsvaidzināšanas reizē tiks parādīts jauns kadrs. Citiem vārdiem sakot, ar 16,66 ms intervālu lietotājs ekrānā redzēs pilnīgu spēles ainas atjauninājumu.

Jāsaprot, ka, ja ir iespējota vertikālā sinhronizācija, fps spēlē nedrīkst pārsniegt monitora vertikālās skenēšanas frekvenci. Ja kadru skaits ir mazāks par šo vērtību (mūsu gadījumā mazāks par 60 Hz), tad, lai izvairītos no veiktspējas zudumiem, ir nepieciešams aktivizēt trīskāršo buferizāciju, kurā kadri tiek aprēķināti iepriekš un saglabāti trīs atsevišķos buferos, kas ļauj tos biežāk nosūtīt uz ekrānu.

Vertikālās sinhronizācijas galvenais uzdevums ir novērst nobīdīta kadra efektu, kas rodas, kad displeja apakšējā daļa ir piepildīta ar vienu kadru, bet augšējā daļa ir piepildīta ar citu, nobīdītu attiecībā pret iepriekšējo.

Pēcapstrāde
Šis ir vispārīgs nosaukums visiem efektiem, kas tiek uzklāti uz gatavā pilnībā renderētas 3D ainas kadra (citiem vārdiem sakot, uz divdimensiju attēla), lai uzlabotu galīgā attēla kvalitāti. Pēcapstrāde izmanto pikseļu ēnotājus un tiek izmantota gadījumos, kad papildu efektiem nepieciešama pilnīga informācija par visu ainu. Šādas metodes nevar izmantot atsevišķi atsevišķiem 3D objektiem, neizraisot artefaktu parādīšanos kadrā.

Augsts dinamiskais diapazons (HDR)
Efekts, ko bieži izmanto spēļu ainās ar kontrastējošu apgaismojumu. Ja viens ekrāna apgabals ir ļoti spilgts, bet otrs ir ļoti tumšs, katrā apgabalā tiek zaudēta liela daļa detaļu un tie izskatās vienmuļi. HDR piešķir kadram lielāku gradāciju un ļauj iegūt vairāk detaļu sižetā. Lai to izmantotu, parasti ir jāstrādā ar plašāku krāsu diapazonu, nekā var nodrošināt standarta 24 bitu precizitāte. Sākotnējie aprēķini notiek ar augstu precizitāti (64 vai 96 biti), un tikai pēdējā posmā attēls tiek noregulēts uz 24 bitiem.

HDR bieži izmanto, lai realizētu redzes pielāgošanas efektu, kad spēles varonis no tumša tuneļa izkļūst uz labi apgaismotas virsmas.

Bloom
Bloom bieži tiek izmantots kopā ar HDR, un tam ir arī diezgan tuvs radinieks Glow, tāpēc šīs trīs metodes bieži tiek sajauktas.

Bloom simulē efektu, ko var redzēt, uzņemot ļoti spilgtas ainas ar parastajām kamerām. Iegūtajā attēlā šķiet, ka intensīvā gaisma aizņem vairāk tilpuma, nekā vajadzētu, un “uzkāpj” uz objektiem, lai gan tā atrodas aiz tiem. Lietojot Bloom, uz objektu apmalēm var parādīties papildu artefakti krāsainu līniju veidā.

Filma Grauds
Grauda ir artefakts, kas rodas analogajā televīzijā ar vāju signālu, vecās magnētiskās videolentēs vai fotogrāfijās (jo īpaši digitālajos attēlos, kas uzņemti vājā apgaismojumā). Spēlētāji bieži atspējo šo efektu, jo tas nedaudz sabojā attēlu, nevis to uzlabo. Lai to saprastu, katrā režīmā varat palaist Mass Effect. Dažās šausmu filmās, piemēram, Silent Hill, troksnis ekrānā, gluži pretēji, papildina atmosfēru.

Kustības aizmiglojums
Kustības izplūšana ir attēla izplūšanas efekts, kad kamera ātri kustas. To var veiksmīgi izmantot, kad skatuvei nepieciešams piešķirt lielāku dinamiku un ātrumu, tāpēc tas ir īpaši pieprasīts sacīkšu spēlēs. Šāvējos ne vienmēr izplūšanas izmantošana tiek uztverta viennozīmīgi. Pareiza pielietošana Kustības aizmiglojums var pievienot ekrānā notiekošajam kinematogrāfisku sajūtu.

Efekts arī palīdzēs, ja nepieciešams, slēpt zemo kadru ātrumu un piešķirs spēlei gludumu.

SSAO
Apkārtējā oklūzija ir paņēmiens, ko izmanto, lai padarītu ainu fotoreālistisku, radot ticamāku tajā esošo objektu apgaismojumu, kas ņem vērā citu tuvumā esošo objektu klātbūtni ar savām gaismas absorbcijas un atstarošanas īpašībām.

Screen Space Ambient Occlusion ir modificēta Ambient Occlusion versija, kā arī simulē netiešo apgaismojumu un ēnojumu. SSAO parādīšanās bija saistīta ar to, ka pašreizējā GPU veiktspējas līmenī Ambient Occlusion nevarēja izmantot ainu renderēšanai reāllaikā. SSAO uzlabotā veiktspēja maksā zemāku kvalitāti, taču pat ar to pietiek, lai uzlabotu attēla reālismu.

SSAO darbojas pēc vienkāršotas shēmas, taču tai ir daudz priekšrocību: metode nav atkarīga no ainas sarežģītības, neizmanto operatīvo atmiņu, var darboties dinamiskās ainās, neprasa kadru priekšapstrādi un ielādē tikai grafisko adapteri. nepatērējot CPU resursus.

Cel ēnojums
Spēles ar Cel ēnošanas efektu sāka veidot 2000. gadā, un vispirms tās parādījās konsolēs. Personālajos datoros šī tehnika kļuva patiesi populāra tikai pāris gadus vēlāk. Katrs kadrs ar Cel ēnojumu palīdzību praktiski pārtop ar roku zīmētā zīmējumā vai fragmentā no multfilmas.

Komiksi tiek veidoti līdzīgā stilā, tāpēc tehnika bieži tiek izmantota ar tiem saistītās spēlēs. Starp jaunākajiem labi zināmajiem izlaidumiem ir šāvēja Borderlands, kur Cel ēnojums ir redzams ar neapbruņotu aci.

Tehnoloģijas iezīmes ir ierobežota krāsu kopuma izmantošana, kā arī vienmērīgu gradientu trūkums. Efekta nosaukums cēlies no vārda Cel (Celluloid), t.i., caurspīdīga materiāla (filmas), uz kura tiek zīmētas animācijas filmas.

Lauka dziļums
Laukuma dziļums ir attālums starp tuvāko un tālāko telpas malu, kurā visi objekti tiks fokusēti, bet pārējā aina būs izplūdusi.

Zināmā mērā lauka dziļumu var novērot, vienkārši fokusējoties uz objektu, kas atrodas tuvu jūsu acu priekšā. Viss, kas atrodas aiz tā, tiks izplūdis. Ir arī pretējais: ja fokusēsities uz attāliem objektiem, viss, kas atrodas viņu priekšā, izrādīsies izplūdis.

Dažās fotogrāfijās var redzēt lauka dziļuma efektu pārspīlētā veidā. Šī ir izplūduma pakāpe, ko bieži mēģina simulēt 3D ainās.

Spēlēs, kurās tiek izmantots lauka dziļums, spēlētājs parasti izjūt spēcīgāku klātbūtnes sajūtu. Piemēram, skatoties kaut kur caur zāli vai krūmiem, viņš fokusā redz tikai mazus ainas fragmentus, kas rada klātbūtnes ilūziju.

Ietekme uz veiktspēju

Lai noskaidrotu, kā noteiktu opciju iespējošana ietekmē veiktspēju, mēs izmantojām spēļu etalonu Heaven DX11 Benchmark 2.5. Visas sistēmas pārbaudes tika veiktas Intel Core 2 Duo e6300, GeForce GTX460 ar 1280×800 pikseļu izšķirtspēju (izņemot vertikālo sinhronizāciju, kur izšķirtspēja bija 1680×1050).

Kā jau minēts, anizotropā filtrēšana praktiski neietekmē kadru skaitu. Atšķirība starp anizotropijas atspējošanu un 16x ir tikai 2 kadri, tāpēc mēs vienmēr iesakām to iestatīt uz maksimālo.

Anti-aliasing pakalpojumā Heaven Benchmark samazināja fps daudz vairāk, nekā mēs gaidījām, īpaši vissmagākajā 8x režīmā. Tomēr, tā kā 2x ir pietiekami, lai manāmi uzlabotu attēlu, mēs iesakām izvēlēties šo opciju, ja spēlēt augstākos līmeņos ir neērti.

Tesellation, atšķirībā no iepriekšējiem parametriem, var iegūt patvaļīgu vērtību katrā atsevišķa spēle. Debesu etalonā attēls bez tā ievērojami pasliktinās, un maksimālajā līmenī, gluži pretēji, tas kļūst nedaudz nereāls. Tāpēc vidējās vērtības ir jāiestata uz mērenām vai normālām.

Vertikālajai sinhronizācijai tika izvēlēta augstāka izšķirtspēja, lai fps neierobežotu ekrāna vertikālā atsvaidzes intensitāte. Kā gaidīts, kadru skaits gandrīz visa testa laikā ar ieslēgtu sinhronizāciju stingri saglabājās aptuveni 20 vai 30 kadri sekundē. Tas ir saistīts ar faktu, ka tie tiek parādīti vienlaikus ar ekrāna atsvaidzināšanu, un ar skenēšanas frekvenci 60 Hz to var izdarīt nevis ar katru impulsu, bet tikai ar katru sekundi (60/2 = 30 kadri/s) vai trešo. (60/3 = 20 kadri/s). Kad V-Sync tika izslēgts, kadru skaits palielinājās, bet ekrānā parādījās raksturīgi artefakti. Trīskāršajai buferizācijai nebija pozitīvas ietekmes uz ainas gludumu. Tas var būt saistīts ar faktu, ka videokartes draivera iestatījumos nav iespējas piespiest atspējot buferizāciju, un standarta deaktivizēšana tiek ignorēta, un tā joprojām izmanto šo funkciju.

Ja Heaven Benchmark būtu spēle, tad pie maksimālajiem iestatījumiem (1280×800; AA 8x; AF 16x; Tessellation Extreme) būtu neērti spēlēt, jo ar 24 kadriem tam viennozīmīgi nepietiek. Ar minimālu kvalitātes zudumu (1280 × 800; AA 2x; AF 16x, Tesselation Normal) varat sasniegt pieņemamākus 45 kadrus sekundē.



Veiktspējas testi:

Un tagad, kad esam iepazinušies ar filtrēšanas un tekstūras izlīdzināšanas pamatjēdzieniem, varam pāriet pie prakses.

Datora konfigurācija:
Procesors: Intel Core 2 Quad Q6600 @ 3200MHz (400x8, 1,3125V)
Videokarte: Palit Nvidia GeForce 8800GT
Mātesplate: Asus P5Q PRO TURBO
Atmiņa: 2x2048MB DDR2 Corsair XMS2 @ 1066MHz, 5-5-5-15
Barošanas avots: Corsair CMPSU-850HXEU 850W
CPU dzesētājs: Zalman CNPS9700 LED
OS: Windows 7 Ultimate x64
Video draivera versija: Nvidia 195.62 x64

Mūsu šodienas testēšanas galvenais priekšmets bija ļoti vecais, bet ne mazāk slavenais Counter-Strike: Source, jo šī ir viena no retajām patiesi plaši izplatītajām spēlēm, kas nodrošina milzīgu dažādu antialiasing un filtrēšanas iestatījumu klāstu. Neskatoties uz dzinēja senumu (2004), šī spēle joprojām var diezgan labi ielādēt pat vismodernāko platformu. Šeit ir tik bagātīgs iestatījumu klāsts, kas tiek piedāvāts lietotājam:

Anti-aliasing un filtrēšanas testi tika veikti iebūvētajā etalonā ar izšķirtspēju 1280x1024. Visi pārējie iestatījumi tika pieņemti kā maksimāli, kā parādīts iepriekš redzamajā ekrānuzņēmumā. Lai rezultāts būtu pēc iespējas tuvāks patiesībai, katrs parametrs tika pārbaudīts trīs reizes, pēc tam tika atrasts iegūto vērtību vidējais aritmētiskais.

Un ko mēs saņēmām:

Rezultāti bija diezgan negaidīti. Pārklājuma paraugu ņemšanas tehnoloģija (CSAA), kurai pēc definīcijas vajadzētu patērēt mazāk resursu nekā MSAA, šeit rāda pilnīgi pretēju ainu. Iemesli šī parādība var būt liela dažādība. Pirmkārt, jāņem vērā, ka daudzējādā ziņā veiktspēja, ieslēdzot anti-aliasing, ir atkarīga no GPU arhitektūras. Un vienlīdz svarīga loma ir gan pašas spēles, gan draivera versijas dažādu tehnoloģiju optimizācijai. Tāpēc rezultāti, izmantojot citas videokartes vai pat citu draivera versiju, var būt pilnīgi atšķirīgi.

Testi ar atspējotu anti-aliasing (atzīmēts zilā krāsā, lai atvieglotu uztveri) parādīja aptuveni vienādu attēlu, kas norāda uz nelielu videokartes slodzes atšķirību.

Turklāt, izmantojot vienu un to pašu anti-aliasing metodi, AF 8x un AF 16x ir skaidra atbilstība starp FPS indikatoriem. Tajā pašā laikā atšķirība svārstās no 1 līdz 4 kadriem sekundē (izņemot MSAA 8x, kur atšķirība ir 11 kadri sekundē). Tas liecina, ka 16x filtrēšanas izmantošana var būt ļoti noderīga, ja nepieciešams uzlabot attēla kvalitāti, būtiski neietekmējot veiktspēju.

Un tomēr ir jāizdara atruna, ka ir vienkārši nereāli iegūt vienādas FPS vērtības tieši spēlē, jo daudzas ainas izrādās daudz grūtākas, it īpaši ar daudziem spēlētājiem.

Testa attēli:

Tātad, kas mums ir? Mēs uzzinājām par dažādu iestatījumu konfigurāciju ietekmi uz veiktspēju. "Bet kāpēc tas viss ir vajadzīgs?" - tu jautā. Lai uzlabotu parādītā attēla kvalitāti, es atbildēšu. Vai tāds pieaugums vispār ir? Lai atbildētu uz šo jautājumu, iesaku apskatīt šādus ekrānuzņēmumus:

Billineārs/MSAA 2xTrillinear/MSAA 2xAF 2x / MSAA 2x
AF 2x / CSAA 8xAF 2x / MSAA 8xAF 2x / CSAA 16x
AF 2x / CSAA 16xQAF 8x/MSAA x2AF 8x / CSAA 8x
AF 8x / MSAA 8xAF 8x / CSAA 16xAF 8x / CSAA 16xQ
AF 16x / MSAA 2xAF 16x / CSAA 8xAF 16x / MSAA 8x
AF 16x / CSAA 16xAF 16x / CSAA 16xQBillinear/CSAA 16xQ

Kā redzat, kombinācijās “virs” AF 8x / MSAA 8x (CSAA 8x) vienkārši nav būtisku atšķirību. Taču tas ievērojami pasliktina veiktspēju, it īpaši, ja tiek izmantota pārklājuma izlases antialiasing.

Secinājumi:

Noteikti starp tiem, kas lasa Šis raksts būs Cs:s, HL2 un citu spēļu spēlētāji, kuru pamatā ir Source motors. Viņiem šis raksts šķitīs interesantāks un izglītojošāks nekā citi. Tomēr šī raksta mērķis bija tikai pastāstīt par modernās tehnoloģijas, palīdzot uzlabot spēļu vizuālo uztveri. Un testi ir veids, kā praksē parādīt izvirzīto teoriju.

Protams, lai nodrošinātu rādījumu ticamību, veiktspējas testus vajadzēja veikt gan citiem video mikroshēmām, gan papildu spēlēm.

Lai kā arī būtu, atgriežoties pie šī raksta tēmas, katrs pats izvēlas, ar kādiem iestatījumiem spēlēt. Un es nesniegšu padomus vai ieteikumus, jo tie jau iepriekš ir lemti neveiksmei. Es ceru, ka iepriekš minētā teorija un testi palīdzēs jums labāk iepazīties ar aprakstītajām tehnoloģijām.

Autors Stormcss


Nežēlīgi spārda

Spriežot pēc informācijas forumos un rakstiem internetā, ATI izspēlē trikus ar trīslīniju tekstūras filtrēšanu jaunajā X800 GPU. Taču ir arī tādi, kas sīvi aizstāv ATi. Kopumā šādas diskusijas atgādina pirms gada notikušo skandālu saistībā ar nVidia.

Iemesls tik karstām diskusijām bija raksts Vācijas vietnē Computerbase. Tas parādīja, kā ATI Radeon 9600 un X800 GPU izmanto optimizētu trīslīniju tekstūras filtrēšanu, ko bieži sauc par "brilineāro" bilineārās un trilineārās filtrēšanas kombinācijas dēļ. Ziņas bija patiesi satriecošas, jo ATI vienmēr ir runājis par patiesas trilineārās filtrēšanas izmantošanu.

Bet kā patiesībā izskatās situācija? Vai tā ir optimizācija, triks vai vienkārši gudrs risinājums? Lai spriestu, mums jāiedziļinās tehnoloģijās dažādos veidos filtrēšana. Un raksta pirmā daļa būs veltīta tieši tam, un mēs ļoti vienkāršotā veidā iepazīstināsim ar dažām tehnoloģijām, lai to ievietotu dažās lappusēs. Tātad, apskatīsim filtrēšanas pamatfunkcijas.

Vai būs turpinājums? Iespējams, jo turpinās strīdi par nesen atklāto brilineāro filtrēšanu Radeon 9600 un X800 kartēs. Jāuzskaita ATi, ka karšu attēla kvalitāte vizuāli necieš no šīs filtrēšanas. Vismaz mums nav piemēru, kas liecinātu par pretējo. Kamēr brilineārā filtrēšana izpaužas mākslīgi radītā laboratorijas apstākļi. Tajā pašā laikā ATi neļauj minētajām kartēm iespējot pilnu trilineāro filtrēšanu neatkarīgi no tā, vai tā ir adaptīva vai nē. Jaunās filtrēšanas dēļ veiktspējas vērtības testos nerāda visu X800 potenciālu, jo FPS vērtības tiek iegūtas pēc optimizācijas, kuras ietekmi uz ātrumu ir grūti novērtēt. Un vārds “adaptīvs” atstāj rūgtu pēcgaršu. ATI nesniedza mums nekādu informāciju par to, kā darbojas draiveris, un daudzas reizes ir paziņojis, ka karte piedāvā pilnu trīslīniju filtrēšanu. Tikai pēc iepriekš minētās atklāsmes ATi atzina, ka filtrēšana ir optimizēta. Cerēsim, ka citur šoferī nav tādas "pielāgošanās spējas".

Tomēr ražotāji lēnām, bet noteikti virzās uz punktu, kur pielaides līmenis tiks pārvarēts. "Adaptivitāte" vai palaižamās lietojumprogrammas definīcija neļauj etalonprogrammām parādīt kartes faktisko veiktspēju spēlēs. Spēles attēla kvalitāte dažādiem draiveriem var atšķirties. Ražotāji var brīvi izklaidēties kopā ar vadītāju, atkarībā no tā, kāds sniegums mārketinga nodaļai tajā laikā ir vajadzīgs. Nu, patērētāja tiesības zināt, ko viņš patiesībā pērk, šeit vairs nevienu neinteresē. Tas viss atstāts mediju ziņā – lai viņi pilda savu izglītojošo misiju. Un filtrēšanas triki, par kuriem mēs runājām mūsu rakstā, ir tikai slavenākie šādi gadījumi. Kas vēl ir paslēpts no mūsu uzmanības, var tikai minēt.

Katrs ražotājs pats izlemj, kādu attēla kvalitātes līmeni tas nodrošinās kā standartu. Tomēr ražotājiem ir jādokumentē izmantotās optimizācijas, it īpaši, ja tās ir paslēptas no zināmiem etaloniem, kā tas ir nesenajā ATI piemērā. Risinājums ir acīmredzams: dodiet iespēju izslēgt optimizācijas! Tad patērētājs pats varēs izlemt, kas viņam ir svarīgāk - vairāk FPS vai labāka kvalitāte. Arī uz Microsoft kā šķīrējtiesnesi nevar paļauties. WHQL testi nenovērtē daudzas lietas, un tos var viegli apiet: vai jūs zināt vārda "atsaucīgs" nozīmi?

Šobrīd zināmās filtrēšanas optimizācijas
ATi nVidia
Trīslīnijas
optimizācija
R9600
X800
GF FX5xxx
(GF 6xxx)*
Leņķiskā optimizācija
anizotropā filtrēšana
R9xxx
X800
GF 6xxx
Adaptīvs
anizotropā filtrēšana
R9xxx
X800
GF FX5xxx
GF 6xxx
Skatuves optimizācija R9xxx
X800
GF FX5xxx
LOD optimizācija R9xxx
X800(?)

Kopumā šādām diskusijām ir savas priekšrocības: pircēji un, iespējams, OEM klienti sāk uzklausīt problēmu. Mums nav šaubu, ka nevaldāmas optimizācijas mānija turpināsies. Tomēr tumšajā valstībā parādījās gaismas stars, ko nVidia skaidri demonstrēja ar savu trilineāro optimizāciju. Cerēsim uz turpmākiem līdzīgiem soļiem!

Tehnoloģijas 3D objektu attēlošanai personālo datoru monitoru ekrānā attīstās līdz ar mūsdienu grafikas adapteru izlaišanu. Ideāla attēla iegūšana trīsdimensiju lietojumprogrammās, pēc iespējas tuvāk reālam video, ir aparatūras izstrādātāju galvenais uzdevums un datorspēļu cienītāju galvenais mērķis. Jaunākās paaudzes videokartēs ieviestā tehnoloģija ir paredzēta, lai to palīdzētu - anizotropā filtrēšana spēlēs.

Kas tas ir?

Katrs datorspēļu spēlētājs vēlas, lai ekrānā parādītos krāsains attēls virtuālā pasaule, lai, uzkāpis kalna galā, varētu apsekot gleznaino apkārtni, lai, līdz galam nospiežot paātrinājuma pogu uz klaviatūras, būtu redzama ne tikai sacīkšu trases taisne, bet arī pilnvērtīga vide pilsētas ainavu veidā līdz pat horizontam. Objekti, kas tiek parādīti monitora ekrānā, ideālā gadījumā atrodas tieši lietotāja priekšā visērtākajā mērogā; patiesībā lielākā daļa trīsdimensiju objektu atrodas leņķī pret redzes līniju. Turklāt dažādi faktūru virtuālie attālumi līdz skatu punktam veic arī objekta izmēru un tā faktūru korekcijas. Aprēķini trīsdimensiju pasaules attēlošanai uz divdimensiju ekrāna tiek izmantoti dažādās 3D tehnoloģijās, kas paredzētas vizuālās uztveres uzlabošanai, tostarp tekstūras filtrēšanai (anizotropiska vai trīslīnija). Šāda veida filtrēšana ir viens no labākajiem sasniegumiem šajā jomā.

Uz pirkstiem

Lai saprastu, ko dara anizotropā filtrēšana, jums ir jāsaprot teksturēšanas algoritmu pamatprincipi. Visi trīsdimensiju pasaules objekti sastāv no "rāmja" (objekta trīsdimensiju trīsdimensiju modelis) un virsmas (tekstūras) - divdimensiju attēla, kas "izstiepts" virs rāmja. Mazākā daļa tekstūras - krāsaini tekseļi, tie ir kā pikseļi uz ekrāna, atkarībā no tekstūras “blīvuma” tekseli var būt dažāda izmēra. Sastāv no daudzkrāsainiem tekseļiem pilns attēls jebkurš objekts trīsdimensiju pasaulē.

Ekrānā tekseli kontrastē ar pikseļiem, kuru skaitu ierobežo pieejamā izšķirtspēja. Lai gan virtuālās redzamības zonā var būt gandrīz bezgalīgs skaits tekseļu, pikseļiem, kas rāda attēlu lietotājam, ir noteikts skaits. Tātad redzamo tekseļu pārveidošana krāsu pikseļos tiek veikta ar trīsdimensiju modeļu apstrādes algoritmu - filtrēšanu (anizotropu, bilineāru vai trilineāru). Sīkāka informācija par visiem veidiem ir sniegta tālāk secībā, jo tie nāk viens no otra.

Vidējā krāsa

Vienkāršākais filtrēšanas algoritms ir attēlot krāsu, kas ir vistuvāk katra pikseļa skata punktam (Point Sampling). Tas ir vienkārši: noteikta ekrāna punkta redzamības līnija nokrīt uz trīsdimensiju objekta virsmas, un attēlu tekstūra atgriež tā teksela krāsu, kas ir vistuvāk krišanas punktam, filtrējot visus pārējos. Ideāli piemērots vienkrāsainām virsmām. Ar nelielām krāsu atšķirībām tas arī dod diezgan kvalitatīvu attēlu, bet diezgan blāvu, jo kur jūs esat redzējuši vienādas krāsas trīsdimensiju objektus? Apgaismojums, ēnas, atspulgi un citi ēnotāji vien ir gatavi izkrāsot jebkuru spēļu objektu kā Ziemassvētku eglīte, ko lai saka par pašām faktūrām, kas dažkārt reprezentē tēlotājmākslas darbus. Pat pelēka bezdvēseles betona siena mūsdienu spēlēs nav tikai neaprakstāmas krāsas taisnstūris, tā ir nelīdzenuma, dažkārt plaisām un skrāpējumiem un citiem mākslinieciskiem elementiem izraibināta virsma, kas virtuālās sienas izskatu maksimāli pietuvina īstām sienām. vai izstrādātāju iztēles izdomātas sienas. Kopumā gandrīz krāsu varēja izmantot pirmajās trīsdimensiju spēlēs, taču tagad spēlētāji ir kļuvuši daudz prasīgāki pret grafiku. Kas ir svarīgi: tuvu krāsu filtrēšanai praktiski nav nepieciešami aprēķini, tas ir, tas ir ļoti ekonomisks datora resursu ziņā.

Lineārā filtrēšana

Atšķirības starp lineāro algoritmu nav pārāk būtiskas; tuvākā teksela punkta vietā lineārā filtrēšana izmanto 4 uzreiz un aprēķina vidējo krāsu starp tiem. Vienīgā problēma ir tā, ka uz virsmām, kas atrodas leņķī pret ekrānu, redzamības līnija veido faktūras elipsi, savukārt lineārā filtrēšana izmanto perfektu apli, lai izvēlētos tuvākos tekseli neatkarīgi no skata leņķa. Izmantojot četrus tekseļus viena vietā, var ievērojami uzlabot faktūru atveidi, kas atrodas tālu no skatpunkta, taču ar to joprojām nepietiek, lai pareizi atspoguļotu attēlu.

MIP kartēšana

Šī tehnoloģija ļauj nedaudz optimizēt datorgrafikas atveidi. Katrai tekstūrai tiek izveidots noteikts kopiju skaits ar dažādās pakāpēs detalizēti, katram detalizācijas līmenim tiek izvēlēts cits attēls, piemēram, garam koridoram vai plašai zālei, tuvējās grīdas un sienas prasa pēc iespējas lielāku detalizāciju, savukārt tālākie stūri aizņem tikai dažus pikseļus un neprasa ievērojamu detaļa. Šī 3D grafikas funkcija palīdz izvairīties no attālu tekstūru izplūšanas, kā arī attēla kropļojumiem un zudumiem un darbojas kopā ar filtrēšanu, jo video adapteris, aprēķinot filtrēšanu, nevar izlemt, kuri tekseļi ir svarīgi attēla pilnīgumam. attēlu, un kas nav tik daudz.

Bilineārā filtrēšana

Izmantojot lineāro filtrēšanu un MIP teksturēšanu kopā, mēs iegūstam bilineāru algoritmu, kas ļauj vēl labāk attēlot attālos objektus un virsmas. Taču tie paši 4 tekseļi nenodrošina tehnoloģijai pietiekamu elastību, turklāt bilineārā filtrēšana nemaskē pārejas uz nākamo mērogošanas līmeni, strādājot ar katru faktūras daļu atsevišķi, un var būt redzamas to robežas. Tādējādi tālāk liels attālums vai lielā leņķī faktūras ir stipri izplūdušas, padarot attēlu nedabisku, it kā cilvēkiem ar tuvredzību, turklāt faktūrām ar sarežģītiem rakstiem ir pamanāmas dažādas izšķirtspējas faktūru savienojuma līnijas. Bet mēs esam aiz monitora ekrāna, mums nevajag tuvredzību un dažādas dīvainas līnijas!

Trīslīniju filtrēšana

Šī tehnoloģija ir paredzēta, lai labotu zīmējumu uz tekstūras mēroga maiņas līnijām. Kamēr bilineārais algoritms darbojas ar katru MIP kartēšanas līmeni atsevišķi, trilineārā filtrēšana papildus aprēķina detalizācijas līmeņu robežas. Ar visu to prasības RAM palielinās, un attēla uzlabojumi attālos objektos nav īpaši pamanāmi. Protams, robežas starp blakus esošajiem tālummaiņas līmeņiem saņem labāku apstrādi nekā ar bilineāru, un izskatās harmoniskāk bez asām pārejām, kas ietekmē kopējo iespaidu.

Anizotropā filtrēšana

Ja aprēķināsiet katra ekrāna pikseļa redzamības līnijas projekciju uz faktūras atbilstoši skata leņķim, iegūsiet nepareizas formas - trapeces. Kopā ar vairāk tekseļu izmantošanu galīgās krāsas aprēķināšanai, tas var dot daudz labāku rezultātu. Ko dara anizotropā filtrēšana? Ņemot vērā, ka teorētiski izmantoto tekseļu skaitam nav ierobežojumu, šāds algoritms spēj attēlot datorgrafiku neierobežotā kvalitātē jebkurā attālumā no skata punkta un jebkurā leņķī, ideālā gadījumā salīdzināmu ar reālu video. Anizotropās filtrēšanas iespējas ierobežo tikai personālo datoru grafikas adapteru tehniskie parametri, kam ir paredzētas mūsdienu videospēles.

Piemērotas videokartes

Anizotropais filtrēšanas režīms ir iespējams pielāgotos video adapteros kopš 1999. gada, sākot ar slavenajām Riva TNT un Voodoo kartēm. Šo karšu augstākās konfigurācijas bija diezgan spējīgas atveidot trīslīniju grafiku un pat radīja pienācīgus FPS skaitļus, izmantojot x2 anizotropo filtrēšanu. Pēdējais cipars norāda filtrēšanas kvalitāti, kas savukārt ir atkarīga no pikseļa galīgās krāsas aprēķināšanā iesaistīto tekseļu skaita ekrānā; šajā gadījumā tiek izmantoti pat 8. Turklāt aprēķinos tiek izmantots uztvert šo tekseļu laukumu, kas atbilst skata leņķim, nevis aplim, kā lineārajos algoritmos iepriekš. Mūsdienu videokartes spēj apstrādāt filtrēšanu ar anizotropu algoritmu x16 līmenī, kas nozīmē izmantot 128 tekseļus, lai aprēķinātu galīgo pikseļu krāsu. Tas sola būtisku uzlabojumu no skatpunkta attālināto faktūru displejā, kā arī nopietnu slodzi, taču jaunākās paaudzes grafiskie adapteri ir aprīkoti ar pietiekami daudz operatīvās atmiņas un daudzkodolu procesoriem, lai tiktu galā ar šo uzdevumu.

Ietekme uz FPS

Ieguvumi ir nepārprotami, bet cik anizotropā filtrēšana maksās spēlētājiem? Ietekme uz spēļu video adapteru ar nopietnu aparatūru, kas izlaisti ne vēlāk kā 2010. gadā, veiktspēju ir ļoti nenozīmīga, ko apstiprina neatkarīgu ekspertu testi vairākos populāras spēles. Anizotropās tekstūras filtrēšana x16 kvalitātē budžeta kartēs uzrāda samazinājumu kopējais rādītājs FPS par 5-10%, un pēc tam mazāk produktīvu grafikas adaptera komponentu dēļ. Šāda modernās aparatūras lojalitāte resursietilpīgai skaitļošanai liecina par ražotāju pastāvīgām rūpēm par mums, pazemīgajiem spēlētājiem. Pilnīgi iespējams, ka pāreja uz nākamajiem anizotropijas kvalitātes līmeņiem nav tālu, ja vien spēļu veidotāji mūs nepievils.

Protams, attēla kvalitātes uzlabošanā ir iesaistīta tikai anizotropā filtrēšana. Spēlētājam ir jāizlemj, vai to iespējot vai nē, taču laimīgiem jaunāko Nvidia vai AMD (ATI) modeļu īpašniekiem nevajadzētu pat domāt par šo problēmu - anizotropās filtrēšanas iestatīšana līdz maksimālajam līmenim neietekmēs veiktspēju un piešķir ainavām un plašām vietām reālismu. Maz situācija ir sarežģītāka Intel integrēto grafikas risinājumu īpašnieki, jo šajā gadījumā daudz kas ir atkarīgs no datora RAM kvalitātes, tā takts frekvences un jaudas.

Opcijas un optimizācija

Filtrēšanas veida un kvalitātes kontrole ir pieejama, pateicoties īpašai programmatūrai, kas regulē grafikas adaptera draiverus. Spēļu izvēlnēs ir pieejami arī uzlaboti anizotropās filtrēšanas iestatījumi. Augstas izšķirtspējas ieviešana un vairāku monitoru izmantošana spēlēs lika ražotājiem domāt par savu produktu veiktspējas paātrināšanu, tostarp optimizējot anizotropos algoritmus. Karšu ražotāji iekšā jaunākās versijas prezentēti autovadītāji jauna tehnoloģija sauc par adaptīvo anizotropo filtrēšanu. Ko tas nozīmē? Šī funkcija, ko ieviesa AMD un daļēji ieviesta jaunākajos Nvidia produktos, ļauj pēc iespējas samazināt filtrēšanas koeficientu. Tādējādi anizotropā filtrēšana ar koeficientu x2 var apstrādāt tuvumā esošās tekstūras, savukārt attāli objekti tiks renderēti, izmantojot sarežģītākus algoritmus līdz maksimālajam koeficientam x16. Kā parasti, optimizācija nodrošina ievērojamu uzlabojumu uz kvalitātes rēķina; dažās vietās adaptīvā tehnoloģija ir pakļauta kļūdām, kas ir pamanāmas dažu jaunāko 3D videospēļu ultraiestatījumos.

Ko dara anizotropā filtrēšana? Video adapteru skaitļošanas jaudas izmantošana, salīdzinot ar citām filtrēšanas tehnoloģijām, ir daudz lielāka, kas ietekmē veiktspēju. Tomēr veiktspējas problēma, izmantojot šo algoritmu, jau sen ir atrisināta mūsdienu grafikas mikroshēmās. Kopā ar citām 3D tehnoloģijām anizotropā filtrēšana spēlēs (mēs jau iedomājamies, kas tas ir) ietekmē kopējo iespaidu par attēla integritāti, it īpaši, ja tiek parādīti attāli objekti un faktūras, kas atrodas leņķī pret ekrānu. Tas acīmredzot ir galvenais, kas spēlētājiem ir vajadzīgs.

Ieskats nākotnē

Mūsdienu aparatūra ar vidējiem un augstākiem parametriem ir diezgan spējīga tikt galā ar spēlētāju prasībām, tāpēc par trīsdimensiju datoru pasauļu kvalitāti tagad var runāt videospēļu izstrādātājiem. Jaunākās paaudzes grafikas adapteri atbalsta ne tikai augstas izšķirtspējas un resursietilpīgas attēlu apstrādes tehnoloģijas, piemēram, anizotropās tekstūras filtrēšanu, bet arī VR tehnoloģijas vai atbalstu vairākiem monitoriem.

Tekstūra ir būtisks mūsdienu 3D lietojumprogrammu elements, un bez tā daudzi 3D modeļi zaudē lielu daļu no savas vizuālās pievilcības. Tomēr faktūru uzklāšanas uz virsmām process nav bez artefaktiem un atbilstošām metodēm to apspiešanai. Trīsdimensiju spēļu pasaulē šad un tad parādās specializēti termini, piemēram, “mip mapping”, “trīslīniju filtrēšana” utt., kas īpaši attiecas uz šīm metodēm.

Īpašs iepriekš apspriestais aliasing efekta gadījums ir teksturētu virsmu aliasing efekts, ko diemžēl nevar noņemt ar iepriekš aprakstītajām vairāku vai supersampling metodēm.

Iedomājieties melnbaltu šaha galds liels, gandrīz bezgalīgs izmērs. Pieņemsim, ka mēs uzzīmējam šo tāfeli uz ekrāna un skatāmies uz to nelielā leņķī. Pietiekami attālos tāfeles apgabalos šūnu izmērs neizbēgami sāks samazināties līdz viena pikseļa izmēram vai mazākam. Šī ir tā sauktā optiskā tekstūras samazināšana (minifikācija). Sāksies “cīņa” starp tekstūras pikseļiem par ekrāna pikseļu iegūšanu, kas radīs nepatīkamu mirgošanu, kas ir viena no aliasing efekta paveidiem. Ekrāna izšķirtspējas palielināšana (reāla vai efektīva) palīdz tikai nedaudz, jo pietiekami tālu objektiem faktūras detaļas joprojām kļūst mazākas par pikseļiem.

No otras puses, mums tuvākās dēļa daļas aizņem lielu ekrāna laukumu, un jūs varat redzēt milzīgus tekstūras pikseļus. To sauc par optisko tekstūras palielinājumu (palielinājumu). Lai gan šī problēma nav tik akūta, ar to arī jācīnās, lai mazinātu negatīvo ietekmi.

Tekstūras problēmu risināšanai tiek izmantota tā sauktā tekstūras filtrēšana. Ja paskatās uz trīsdimensiju objekta zīmēšanas procesu ar uzklātu tekstūru, jūs varat redzēt, ka pikseļa krāsas aprēķināšana notiek "apgriezti" - vispirms tiek atrasts ekrāna pikselis, kurā tiks atrasts noteikts objekta punkts. projicēts, un tad šajā punktā visi tekstūras pikseļi, kas atrodas viņā. Tekstūras pikseļu atlasi un to apvienošanu (vidējo vērtību), lai iegūtu galīgo ekrāna pikseļu krāsu, sauc par tekstūras filtrēšanu.

Teksturēšanas procesa laikā katram ekrāna pikselim tekstūrā tiek piešķirta koordināta, un šī koordināte ne vienmēr ir vesels skaitlis. Turklāt pikselis atbilst noteiktai tekstūras attēla apgabalam, kurā var būt vairāki faktūras pikseļi. Mēs šo apgabalu sauksim par pikseļa attēlu tekstūrā. Mūsu tāfeles tuvumā esošajām daļām ekrāna pikselis kļūst ievērojami mazāks par tekstūras pikseli un it kā atrodas tā iekšpusē (attēls atrodas tekstūras pikseļa iekšpusē). Attālinātajiem, gluži pretēji, katrs pikselis nokrīt liels skaits tekstūras punkti (attēlā ir vairāki tekstūras punkti). Pikseļu attēlā var būt dažāda forma un vispārīgā gadījumā ir patvaļīgs četrstūris.

Apsvērsim dažādas metodes filtrēšanas faktūras un to variācijas.

Tuvākais kaimiņš

Šajā, vienkāršākajā, paņēmienā pikseļu krāsa tiek vienkārši izvēlēta kā tuvākā atbilstošā tekstūras pikseļa krāsa. Šī metode ir ātrākā, bet arī nekvalitatīvākā. Patiesībā šī pat nav īpaša filtrēšanas metode, bet vienkārši veids, kā atlasīt vismaz dažus tekstūras pikseļus, kas atbilst ekrāna pikselim. To plaši izmantoja pirms aparatūras paātrinātāju parādīšanās, kuru plašā izmantošana ļāva izmantot labākas metodes.

Bilineārā filtrēšana

Bilineārā filtrēšana atrod četrus faktūras pikseļus, kas ir vistuvāk pašreizējam ekrāna punktam, un iegūtā krāsa tiek noteikta, sajaucot šīs pikseļu krāsas noteiktā proporcijā.

Tuvākā kaimiņa filtrēšana un bilineārā filtrēšana diezgan labi darbojas, ja, pirmkārt, faktūras samazināšanas pakāpe ir maza, un, otrkārt, kad mēs redzam tekstūru taisnā leņķī, t.i. frontāli. Ar ko tas ir saistīts?

Ja ņemam vērā, kā aprakstīts iepriekš, ekrāna pikseļa “attēlu” tekstūrā, tad spēcīga samazinājuma gadījumā tas ietvers daudz tekstūras pikseļu (līdz visiem pikseļiem!). Turklāt, ja mēs skatāmies uz tekstūru no leņķa, šis attēls būs ievērojami izstiepts. Abos gadījumos aprakstītās metodes nedarbosies labi, jo filtrs "neuzņems" atbilstošos tekstūras pikseļus.

Lai atrisinātu šīs problēmas, tiek izmantota tā sauktā mip kartēšana un anizotropā filtrēšana.

MIP kartēšana

Ar ievērojamu optisko samazinājumu ekrāna punkts var atbilst diezgan daudziem tekstūras pikseļiem. Tas nozīmē, ka pat vislabākā filtra ieviešana prasīs diezgan daudz laika, lai vidēji aprēķinātu visus punktus. Tomēr problēmu var atrisināt, izveidojot un saglabājot tekstūras versijas, kurās vērtības tiek aprēķinātas iepriekš. Un renderēšanas stadijā meklējiet pikselim vēlamo sākotnējās tekstūras versiju un paņemiet no tā vērtību.

Termins mipmap cēlies no latīņu vārda multum in parvo — daudz maz. Lietojot šo tehnoloģiju, papildus tekstūras attēlam grafiskā paātrinātāja atmiņā tiek saglabāts tā samazināto kopiju komplekts, kur katra jaunā ir tieši uz pusi mazāka par iepriekšējo. Tie. tekstūrai ar izmēru 256x256 tiek papildus saglabāti attēli 128x128, 64x64 utt., līdz 1x1.

Tālāk katram pikselim tiek izvēlēts atbilstošs mipmap līmenis (jo lielāks ir pikseļa “attēla” izmērs tekstūrā, jo mazāks tiek uzņemts mipmap). Pēc tam vērtības mipmap var aprēķināt bilineāri vai izmantojot tuvākā kaimiņa metodi (kā aprakstīts iepriekš), un papildus notiek filtrēšana starp blakus esošajiem mipmap līmeņiem. Šo filtrēšanas veidu sauc par trīslīniju. Tas dod ļoti kvalitatīvus rezultātus un tiek plaši izmantots praksē.


9. attēls. Mipmap līmeņi

Tomēr problēma ar pikseļa "iegareno" attēlu tekstūrā paliek. Tieši tāpēc mūsu dēlis no attāluma izskatās ļoti izplūdis.

Anizotropā filtrēšana

Anizotropā filtrēšana ir tekstūras filtrēšanas process, kas īpaši ņem vērā gadījumu, kad tekstūrā ir iegarens pikseļu attēls. Faktiski kvadrātveida filtra vietā (kā bilineārajā filtrēšanā) tiek izmantots iegarens, kas ļauj labāk izvēlēties vēlamo ekrāna pikseļa krāsu. Šī filtrēšana tiek izmantota kopā ar mipmapping un rada ļoti augstas kvalitātes rezultātus. Tomēr ir arī trūkumi: anizotropās filtrēšanas ieviešana ir diezgan sarežģīta, un, ja tā ir iespējota, zīmēšanas ātrums ievērojami samazinās. Anizotropo filtrēšanu atbalsta jaunākās paaudzes NVidia un ATI GPU. Turklāt ar dažādiem anizotropijas līmeņiem - jo augstāks šis līmenis, jo vairāk “iegarenu” pikseļu attēlu var apstrādāt pareizi un jo labāka kvalitāte.

Filtru salīdzinājums

Rezultāts ir šāds: lai novērstu tekstūras aizstājēju artefaktus, aparatūrā tiek atbalstītas vairākas filtrēšanas metodes, kas atšķiras pēc to kvalitātes un ātruma. Vienkāršākā filtrēšanas metode ir tuvākā kaimiņa metode (kas faktiski neapkaro artefaktus, bet vienkārši aizpilda pikseļus). Mūsdienās visbiežāk tiek izmantota bilineārā filtrēšana kopā ar mip kartēšanu jeb trilineāro filtrēšanu. IN Nesen GPU sāka atbalstīt augstākās kvalitātes filtrēšanas režīmu - anizotropo filtrēšanu.

Izsitumu kartēšana

Nelīdzenumu kartēšana ir grafisko specefektu veids, kas paredzēts, lai radītu iespaidu par “raupju” vai nelīdzenu virsmu. Pēdējā laikā izciļņu kartēšanas izmantošana ir kļuvusi gandrīz par standartu spēļu lietojumprogrammām.

Izciļņu kartēšanas galvenā ideja ir izmantot tekstūras, lai kontrolētu, kā gaisma mijiedarbojas ar objekta virsmu. Tas ļauj pievienot nelielas detaļas, nepalielinot trīsstūru skaitu. Dabā nelielas nelīdzenas virsmas mēs atšķiram pēc ēnām: jebkura pumpiņa vienā pusē būs gaiša, bet otrā tumša. Faktiski acs var nespēt noteikt virsmas formas izmaiņas. Šis efekts tiek izmantots izciļņu kartēšanas tehnoloģijā. Viena vai vairākas papildu faktūras tiek uzklātas uz objekta virsmas un tiek izmantotas, lai aprēķinātu objekta punktu apgaismojumu. Tie. objekta virsma nemaz nemainās, rodas tikai nelīdzenumu ilūzija.

Ir vairākas izciļņu kartēšanas metodes, taču, pirms mēs tās aplūkojam, mums ir jāizdomā, kā faktiski noteikt nelīdzenumus uz virsmas. Kā minēts iepriekš, šim nolūkam tiek izmantotas papildu faktūras, un tās var būt dažāda veida:

Parasta karte. Šajā gadījumā katrs papildu faktūras pikselis saglabā vektoru, kas ir perpendikulārs virsmai (normāls), kas kodēts kā krāsa. Apgaismojuma aprēķināšanai izmanto normālos rādītājus.

Nobīdes karte. Nobīdes karte ir pelēktoņu tekstūra, kurā katrs pikselis saglabā nobīdi no sākotnējās virsmas.

Šīs faktūras kopā ar ģeometriju un pamata faktūrām sagatavo 3D modeļu dizaineri. Ir arī programmas, kas ļauj automātiski iegūt parastās vai pārvietošanās kartes

Iepriekš aprēķināta izciļņu kartēšana

Tekstūras, kurās tiks saglabāta informācija par objekta virsmu, tiek izveidotas iepriekš, pirms renderēšanas stadijas, aptumšojot dažus objekta faktūras punktus (tātad arī pašu virsmu), bet citus izceļot. Tālāk, zīmējot, tiek izmantota parastā faktūra.

Šī metode neprasa nekādus algoritmiskus trikus zīmēšanas laikā, bet diemžēl izmaiņas virsmu apgaismojumā nenotiek, mainoties gaismas avotu pozīcijām vai objekta kustībai. Un bez tā nevar izveidot patiesi veiksmīgu nelīdzenas virsmas simulāciju. Līdzīgas metodes tiek izmantotas statiskām ainas daļām, bieži vien līmeņa arhitektūrai utt.

Izciļņu kartēšana, izmantojot reljefu (Emboss Bump Mapping)

Šī tehnoloģija tika izmantota pirmajos grafikas procesoros (NVidia TNT, TNT2, GeForce). Objektam tiek izveidota pārvietošanās karte. Zīmēšana notiek divos posmos. Pirmajā posmā pārvietošanās karte tiek pievienota pikseļiem pa pikseļiem. Šajā gadījumā otrā kopija tiek pārvietota nelielā attālumā gaismas avota virzienā. Tas rada šādu efektu: pozitīvās atšķirības vērtības nosaka izgaismotie pikseļi, negatīvās vērtības - pikseļi ēnā. Šī informācija tiek izmantota, lai attiecīgi mainītu pamatā esošo tekstūras pikseļu krāsu.

Izciļņu kartēšanai, izmantojot reljefu, nav nepieciešama aparatūra, kas atbalsta pikseļu ēnotājus, taču tā nedarbojas labi salīdzinoši lielu virsmas nelīdzenumu gadījumā. Turklāt objekti ne vienmēr izskatās pārliecinoši; tas lielā mērā ir atkarīgs no leņķa, kurā skatāties uz virsmu.

Pikseļu izciļņu kartēšana

Pikseļu izciļņu kartēšana pašlaik ir šādu tehnoloģiju attīstības virsotne. Šajā tehnoloģijā viss tiek aprēķināts pēc iespējas godīgāk. Pikseļu ēnotājam kā ievade tiek dota parasta karte, no kuras tiek ņemtas katra objekta punkta normālās vērtības. Pēc tam normālo vērtību salīdzina ar gaismas avota virzienu un aprēķina krāsas vērtību.

Šī tehnoloģija tiek atbalstīta aprīkojumā, sākot ar GeForce2 līmeņa videokartēm.

Tātad, mēs esam redzējuši, kā mēs varam izmantot cilvēka pasaules uztveres īpatnības, lai uzlabotu 3D spēļu radīto attēlu kvalitāti. Laimīgi jaunākās paaudzes videokaršu NVidia GeForce, ATI Radeon īpašnieki (tomēr un ne tikai jaunākie) var patstāvīgi spēlēt ar dažiem to aprakstītajiem efektiem, jo ​​draivera opcijās ir pieejami de-aliasing un anizotropās filtrēšanas iestatījumi. Šīs un citas metodes, kas ir ārpus šī raksta darbības jomas, spēļu izstrādātāji veiksmīgi ievieš jaunos produktos. Kopumā dzīve kļūst labāka. Būs vēl kaut kas!