Čo je filter v hrách. Anizotropné filtrovanie

Výkonnostné testy:

A teraz, keď sme sa zoznámili so základnými pojmami filtrovania a vyhladzovania textúr, môžeme prejsť k praxi.

Konfigurácia počítača:
Procesor: Intel Core 2 Quad Q6600 @ 3200 MHz (400 x 8, 1,3125 V)
Grafická karta: Palit Nvidia GeForce 8800GT
Základná doska: Asus P5Q PRO TURBO
Pamäť: 2x2048 MB DDR2 Corsair XMS2 @ 1066 MHz, 5-5-5-15
Napájanie: Corsair CMPSU-850HXEU 850W
Chladič CPU: Zalman CNPS9700 LED
OS: Windows 7 Ultimate x64
Verzia ovládača videa: Nvidia 195.62 x64

Hlavným testovacím subjektom v našom dnešnom testovaní bola veľmi stará, no nemenej známa hra Counter-Strike: Source, keďže ide o jednu z mála skutočne rozšírených hier, ktorá poskytuje obrovské množstvo rôznych nastavení vyhladzovania a filtrovania. Napriek starobylosti enginu (2004) dokáže táto hra stále dobre načítať aj najmodernejšiu platformu. Tu je taký bohatý sortiment nastavení prezentovaných používateľovi:

Testy anti-aliasingu a filtrovania boli vykonané v zabudovanom benchmarku v rozlíšení 1280x1024. Všetky ostatné nastavenia boli prijaté ako maximálne, ako na obrázku vyššie. Aby sa výsledok čo najviac priblížil pravde, každý parameter bol testovaný trikrát, po čom bol zistený aritmetický priemer výsledných hodnôt.

A čo sme teda dostali:

Výsledky boli celkom neočakávané. Technológia pokrytia vzorkovania (CSAA), ktorá by podľa definície mala spotrebovať menej zdrojov ako MSAA, tu ukazuje úplne opačný obraz. Príčin tohto javu môže byť veľa. V prvom rade treba brať do úvahy, že výkon pri povolenom vyhladzovaní do značnej miery závisí od architektúry GPU. Áno, a rovnako dôležitú úlohu zohráva optimalizácia rôznych technológií samotnej hry a verzie ovládača. Preto môžu byť výsledky pri použití iných grafických kariet alebo dokonca inej verzie ovládača úplne odlišné.

Testy s deaktivovaným antialiasingom (označené modrou farbou pre ľahšie vnímanie) ukázali približne rovnaký obraz, čo naznačuje malý rozdiel v záťaži grafickej karty.

Okrem toho existuje jasná zhoda medzi indikátormi FPS pri použití rovnakej metódy vyhladzovania pre AF 8x a AF 16x. Zároveň sa rozdiel pohybuje od 1 do 4 fps (s výnimkou MSAA 8x, kde je rozdiel 11 fps). To naznačuje, že použitie 16-násobného filtrovania môže byť veľmi užitočné, ak potrebujete zlepšiť kvalitu obrazu bez výrazného zásahu do výkonu.

A napriek tomu je potrebné urobiť výhradu, že je jednoducho nereálne získať rovnaké hodnoty FPS priamo v hre, pretože mnohé scény sú oveľa zložitejšie, najmä s mnohými hráčmi.

Testy obrázkov:

A čo teda máme? Dozvedeli sme sa o vplyve rôznych konfigurácií nastavení na výkon. "Ale prečo je to všetko potrebné?" - pýtaš sa. Pre zlepšenie kvality zobrazeného obrázku odpoviem. Je tam vôbec nejaký nárast? Ak chcete odpovedať na túto otázku, odporúčam vám pozrieť si nasledujúce snímky obrazovky:

Biliárne / MSAA 2xTrilineárne / 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 16xQBiliárne / CSAA 16xQ

Ako vidíte, medzi „vyššími“ kombináciami AF 8x / MSAA 8x (CSAA 8x) jednoducho nie je žiadny zvláštny rozdiel. Zároveň je tu však badateľný výkonnostný zásah, najmä pri použití funkcie Coverage Sampling AntiAliasing.

Závery:

Určite sa medzi tými, ktorí čítajú tento článok, nájdu hráči Cs:s, HL2 a iných hier založených na Source engine. Tento článok bude pre nich zaujímavejší a poučnejší ako ostatné. Účelom tohto písania však bolo iba hovoriť o moderných technológiách, ktoré pomáhajú zlepšiť vizuálne vnímanie hier. A testy - ako spôsob, ako v praxi ukázať uvedenú teóriu.

Samozrejme, pre spoľahlivosť svedectva bolo potrebné vykonať testy výkonu na iných video čipoch aj na ďalších hrách.

Nech je to akokoľvek, vrátim sa k téme tohto článku, každý si vyberie s akými nastaveniami bude hrať. A nebudem dávať rady ani odporúčania, pretože sú vopred odsúdené na neúspech. Dúfam, že vyššie uvedená teória s testami vám pomôže lepšie sa oboznámiť s opísanými technológiami.

Od Stormcss


Zlostne kope nohami

S príchodom 3D hier sa začali objavovať problémy, ktoré v 2D hrách neboli: napokon, teraz musíte zobraziť trojrozmerný obraz na plochom monitore. Ak je objekt rovnobežný s rovinou obrazovky v jeho blízkosti, nie je problém: jeden pixel zodpovedá jednému texelu (texel je pixel dvojrozmerného obrazu superponovaný na 3D povrch). Ale čo ak je objekt naklonený alebo je ďaleko? Koniec koncov, potom je na jeden pixel niekoľko texelov a keďže monitor má obmedzený počet pixelov, farba každého musí byť vypočítaná z niekoľkých texelov určitým procesom - filtrovaním.


Pre zjednodušenie pochopenia si predstavme, že každý pixel je štvorcová „diera“ v monitore, z očí vypúšťame „lúče svetla“ a texely sú umiestnené na štvorcovej mriežke za monitorom. Ak hneď za monitor umiestnime mriežku rovnobežne s monitorom, tak svetlo z jedného pixelu pokryje len jeden texel. Teraz začneme posúvať rošt – čo získame? Skutočnosť, že náš bod svetla z pixelu pokryje viac ako jeden texel. Teraz otočme mriežku - dostaneme to isté: bod z jedného pixelu pokryje veľa texelov. Ale koniec koncov, pixel môže mať jednu farbu, a ak do neho padne veľa texelov, potom potrebujeme algoritmus, pomocou ktorého určíme jeho farbu - nazýva sa to filtrovanie textúr.


Toto je najjednoduchší algoritmus filtrovania: je založený na skutočnosti, že ako farbu pixela berieme farbu texelu, ktorá je najbližšie k stredu svetelného bodu z pixelu. Výhoda tejto metódy je zrejmá - najmenej zaťažuje grafickú kartu. Existuje aj veľa mínusov - farba jedného centrálneho texelu sa môže výrazne líšiť od farby desiatok a dokonca stoviek ďalších texelov, ktoré spadajú do bodu z pixelu. Okrem toho sa môže vážne zmeniť tvar samotného bodu, zatiaľ čo jeho stred môže zostať na rovnakom mieste a v dôsledku toho sa farba pixelu nezmení. No a hlavnou nevýhodou je problém „blokovanosti“: keď je na pixel málo texelov (teda objekt vedľa prehrávača), tak dostaneme, že pri tejto metóde filtrovania je dostatočne veľká časť obrazu vyplnená s jednou farbou, čo vedie k jasne viditeľným „blokom“ rovnakej farby na obrazovke. Konečná kvalita obrazu je... jednoducho hrozná:


Nie je teda prekvapujúce, že takéto filtrovanie sa dnes už nepoužíva.


S vývojom grafických kariet začala rásť ich sila, takže vývojári hier išli ďalej: ak vezmete jeden texel za farbu pixelu, dopadne to zle. Dobre - vezmeme priemernú farbu zo 4 texelov a nazveme to bilineárne filtrovanie? Na jednej strane sa veci zlepšia – zmizne blokovosť. Príde však nepriateľ číslo dva – rozmazaný obraz v blízkosti hráča: je to spôsobené tým, že interpolácia si vyžaduje viac texelov ako štyri.

Toto však nie je hlavný problém: bilineárne filtrovanie funguje dobre, keď je objekt rovnobežný s obrazovkou: potom môžete vždy vybrať 4 texely a získať „priemernú“ farbu. Tu je však 99% textúr naklonených smerom k hráčovi a ukázalo sa, že 4 obdĺžnikové polia (alebo lichobežníky) aproximujeme ako 4 štvorce, čo nie je správne. A čím viac je textúra skreslená, tým je presnosť farieb nižšia a rozmazanie silnejšie:


Dobre, vývojári hry povedali - keďže 4 texely nestačia, vezmime si dva krát štyri a pre presnejšie zasiahnutie farby použijeme technológiu MIP-texturing. Ako som písal vyššie, čím ďalej je textúra od prehrávača, tým viac texelov bude v pixeli a tým ťažšie je pre grafickú kartu spracovať obraz. MIP-texturing na druhej strane znamená ukladanie rovnakej textúry v rôznych rozlíšeniach: ak je napríklad pôvodná veľkosť textúry 256x256, potom sa jej kópie uložia do pamäte s rozmermi 128x128, 64x64 atď., až do 1x1:


A teraz sa na filtrovanie odoberie nielen samotná textúra, ale aj mipmapa: v závislosti od toho, či je textúra ďalej alebo bližšie od prehrávača, sa vezme buď menšia alebo väčšia mipmapa textúry a 4 texely najbližšie k stredu pixelu sú už na ňom zachytené a bilineárna filtrácia. Ďalej vezmeme 4 texely najbližšie k pixelu, čo je už pôvodná textúra, a opäť dostaneme „priemernú“ farbu. Potom sa „priemerná“ farba vyberie z priemerných farieb mipmapy a pôvodnej textúry a priradí sa k pixelu – takto funguje algoritmus trilineárneho filtrovania. Výsledkom je, že načíta grafickú kartu o niečo viac ako bilineárne filtrovanie (musíte tiež spracovať mipmapu), ale kvalita obrazu sa ukáže byť lepšia:


Ako vidíte, trilineárne filtrovanie je vážne lepšie ako bilineárne filtrovanie a ešte viac bodové, ale obraz sa stále „premýva“ na veľké vzdialenosti. A fuzzy obraz sa získa vďaka tomu, že neberieme do úvahy skutočnosť, že textúra môže byť naklonená vzhľadom na prehrávač - a to je presne problém, ktorý rieši anizotropné filtrovanie. Stručne povedané, princíp fungovania anizotropného filtrovania je nasledujúci: odoberie sa textúra MIP, ktorá sa nastaví v smere pohľadu, po ktorej sa hodnoty jej farieb spriemerujú s farbou určitého počtu texelov pozdĺž smeru pohľadu. . Počet texelov sa pohybuje od 16 (pre x2 filtrovanie) do 128 (pre x16). Zjednodušene povedané, namiesto štvorcového filtra (ako pri bilineárnom filtrovaní) sa používa podlhovastý filter, ktorý umožňuje vybrať požadovanú farbu pre pixel obrazovky s lepšou kvalitou. Keďže na obrazovke môže byť milión alebo aj viac pixelov a každý texel váži najmenej 32 bitov (32-bitová farba), anizotropné filtrovanie vyžaduje obrovskú šírku pásma videopamäte – desiatky gigabajtov za sekundu. Takéto veľké požiadavky na pamäť sú znížené v dôsledku kompresie textúr a ukladania do vyrovnávacej pamäte, ale stále na grafických kartách s pamäťou DDR alebo 64-bitovou zbernicou môže rozdiel medzi trilineárnym a x16 anizotropným filtrovaním dosiahnuť 10-15% fps, ale obraz po takomto filtrovaní je najlepší:

Filtrovanie textúry.

Filtrovanie rieši problém určenia farby pixelu na základe dostupných texelov z obrázka textúry.

Najjednoduchšia metóda mapovania textúr je tzv bodový odber vzoriek(jednobodový odber vzoriek). Jeho podstatou je, že pre každý pixel, ktorý tvorí polygón, sa z obrázka textúry vyberie jeden texel, ktorý sa nachádza najbližšie k stredu svetelného bodu. Vyskytla sa chyba, pretože farbu pixelu určuje viacero texelov a bol vybratý iba jeden.

Táto metóda je veľmi nepresná a výsledkom jej aplikácie je vznik hrbolčekov. Konkrétne, vždy, keď sú pixely väčšie ako texely, je pozorovaný efekt blikania. Tento efekt nastáva, ak je časť mnohouholníka dostatočne vzdialená od pohľadu, takže sa v priestore, ktorý zaberá jeden pixel, prekrýva veľa texelov naraz. Všimnite si, že ak je polygón veľmi blízko pohľadu a texely sú väčšie ako pixely, pozoruje sa iný typ zhoršenia kvality obrazu. V tomto prípade začne obraz vyzerať blokovo. Tento efekt nastane, keď môže byť textúra pomerne veľká, ale obmedzenie dostupného rozlíšenia obrazovky znemožňuje správne zobrazenie pôvodného obrázka.

Druhá metóda - bilineárne filtrovanie(Bi-Linear Filtering) spočíva v použití interpolačnej techniky. Na určenie texelov, ktoré by sa mali použiť na interpoláciu, sa používa hlavný tvar svetelného bodu - kruh. Kruh je v podstate aproximovaný 4 texelmi. Bilineárne filtrovanie je technika na odstránenie skreslenia obrazu (filtrovanie), ako sú napríklad „blokové“ textúry pri ich zväčšení. Pri pomalom otáčaní alebo pohybe objektu (približovaní/odstraňovaní) môžu pixely „preskakovať“ z jedného miesta na druhé, t.j. objaví sa zablokovanie. Aby sa predišlo tomuto efektu, používa sa bilineárne filtrovanie, ktoré používa vážený priemer farby štyroch susedných texelov na určenie farby každého pixelu a v dôsledku toho určuje farbu textúry prekrytia. Výsledná farba pixelov sa určí po vykonaní troch operácií prelínania: najprv sa zmiešajú farby dvoch párov texelov a potom sa zmiešajú dve výsledné farby.

Hlavnou nevýhodou bilineárneho filtrovania je, že aproximácia sa vykonáva správne len pre polygóny, ktoré sú rovnobežné s obrazovkou alebo pozorovacím bodom. Ak je mnohouholník otočený pod uhlom (a to je v 99% prípadov), použije sa nesprávna aproximácia, pretože by sa mala aproximovať elipsa.

Chyby hĺbkového aliasingu vyplývajú zo skutočnosti, že objekty ďalej od pohľadu sa na obrazovke javia menšie. Keď sa objekt pohybuje a vzďaľuje od pozorovacieho bodu, obraz textúry prekrytý na zmenšenom objekte sa stále viac stláča. Nakoniec sa obrázok textúry aplikovaný na objekt tak skomprimuje, že sa objavia chyby vykresľovania. Tieto chyby vykresľovania sú nežiaduce najmä pri animáciách, kde takéto pohybové artefakty spôsobujú blikanie a efekty spomaleného pohybu v časti obrazu, ktorá by mala byť nehybná a stabilná.

Nasledujúce obdĺžniky s bilineárnou textúrou môžu slúžiť ako ilustrácia opísaného efektu:

Ryža. 13.29. Tienenie objektu pomocou metódy bilineárneho filtrovania. Vzhľad „hĺbkového aliasingu“ artefaktov, vyjadrený v tom, že niekoľko štvorcov sa spája do jedného.

Aby sa predišlo chybám a simulovalo sa, že vzdialené objekty vyzerajú menej detailne ako tie, ktoré sú bližšie k pohľadu, používa sa technika známa ako mip-mapping. Stručne povedané, mip-mapping je prekrytie textúr, ktoré majú rôzny stupeň alebo úroveň detailov, kedy sa v závislosti od vzdialenosti od pozorovacieho bodu vyberie textúra s potrebnými detailmi.

Mip-texture (mip-map) pozostáva zo sady predfiltrovaných a škálovaných obrázkov. V obrázku spojenom s vrstvou mip-map je pixel reprezentovaný ako priemer štyroch pixelov z predchádzajúcej vrstvy s vyšším rozlíšením. Obrázok spojený s každou úrovňou mipmapy je teda štyrikrát menší ako predchádzajúca úroveň mipmapy.

Ryža. 13:30. Obrázky spojené s každou úrovňou mip-map textúry vĺn.

Zľava doprava máme mip-map úrovne 0, 1, 2 atď. Čím je obrázok menší, tým viac detailov sa stráca, až kým sa nepriblíži ku koncu, keď už nie je vidieť nič, iba rozmazané sivé pixely.

Úroveň detailov, alebo jednoducho LOD, sa používa na určenie, ktorá úroveň mip-mapy (alebo úroveň detailov) by sa mala vybrať na textúrovanie objektu. LOD sa musí zhodovať s počtom texelov aplikovaných na pixel. Napríklad, ak sa textúrovanie vyskytuje v pomere blízkom 1:1, potom LOD bude 0, čo znamená, že sa použije úroveň mip-mapy s najvyšším rozlíšením. Ak 4 texely prekrývajú jeden pixel, potom LOD bude 1 a použije sa najbližšia nižšia úroveň rozlíšenia mip. Zvyčajne, keď sa vzďaľujete od hľadiska, objekt, ktorý si zaslúži najväčšiu pozornosť, má vyššiu hodnotu LOD.

Zatiaľ čo mipmapping rieši problém chýb „hĺbkového aliasingu“, jeho použitie môže priniesť ďalšie artefakty. Keď sa objekt vzďaľuje od pohľadu, dochádza k prechodu z nízkej úrovne mip-mapy na vysokú. Keď je objekt v prechodnom stave z jednej úrovne mip-mapy do druhej, objaví sa špeciálny typ chyby vykresľovania, známy ako „mip-banding“ – pruhovanie alebo vrstvenie, t.j. jasne rozlíšiteľné hranice prechodu z jednej úrovne mip-mapy na druhú.

Ryža. 13.31 hod. Obdĺžniková stuha pozostáva z dvoch trojuholníkov s textúrou v tvare vlny, kde sú artefakty „mip-banding“ označené červenými šípkami.

Problém chýb „mip-banding“ je obzvlášť akútny v animácii, pretože ľudské oko je veľmi citlivé na posuny a pri pohybe okolo objektu si ľahko všimne miesto ostrého prechodu medzi úrovňami filtrovania.

Trilineárne filtrovanie(trilineárne filtrovanie) je tretia metóda, ktorá odstraňuje „mip-banding“ artefakty, ktoré vznikajú pri použití mip-texturingu. Pri trilineárnom filtrovaní sa na určenie farby pixelu berie priemerná farebná hodnota ôsmich texelov, štyroch z dvoch susediacich textúr a ako výsledok siedmich operácií prelínania sa určí farba pixelu. Pri použití trilineárneho filtrovania je možné zobraziť textúrovaný objekt na obrazovke s plynulými prechodmi z jednej úrovne mip do ďalšej, čo sa dosiahne určením LOD interpoláciou dvoch susedných úrovní mip-map. Tým sa rieši väčšina problémov spojených s mip-texturingom a chybami spôsobenými nesprávnym výpočtom hĺbky scény ("depth aliasing").

Ryža. 13.32. Pyramídová mapa MIP

Príklad použitia trilineárneho filtrovania je uvedený nižšie. Aj tu je použitý rovnaký obdĺžnik, textúrovaný s vlnovitým obrazom, ale s plynulými prechodmi z jednej úrovne mip na ďalšiu vďaka použitiu trilineárneho filtrovania. Všimnite si absenciu akýchkoľvek viditeľných chýb pri vykresľovaní.

Ryža. 13.33. Obdĺžnik s vlnovou textúrou vykreslený pomocou mipmappingu a trilineárneho filtrovania.

Existuje niekoľko spôsobov, ako generovať textúry MIP. Jedným z nich je jednoducho ich pripraviť vopred pomocou grafických balíkov, ako je Adobe PhotoShop. Ďalším spôsobom je generovanie MIP textúr za behu, t.j. počas vykonávania programu. Vopred MIP textúry znamenajú dodatočných 30% miesta na disku s textúrami v základnej inštalácii hry, ale umožňujú flexibilnejšiu kontrolu nad ich vytváraním a umožňujú pridávať rôzne efekty a ďalšie detaily do rôznych úrovní MIP.

Ukazuje sa, že trilineárne mipmapping je to najlepšie, čo môže byť?

Samozrejme, že nie. Je vidieť, že problém nie je len v pomere veľkostí pixelov a texelov, ale aj v tvare každého z nich (či presnejšie v pomeroch tvarov).

Metóda mipmapping funguje najlepšie pre polygóny, ktoré sú priamo „tvárou v tvár“ pohľadu. Avšak, mnohouholníky, ktoré sú šikmé vzhľadom k pohľadu, deformujú prekrývajúcu textúru, takže pixely môžu byť prekryté odlišne vyzerajúcimi a štvorcovými oblasťami obrázka textúry. Metóda miptexturing to neberie do úvahy a výsledkom je prílišné rozmazanie obrazu textúry, ako keby boli použité nesprávne texely. Riešením tohto problému je vzorkovanie viacerých texelov, ktoré tvoria textúru, a tieto texely by sa mali vyberať s ohľadom na „mapovaný“ tvar pixelu v priestore textúr. Táto metóda sa nazýva anizotropné filtrovanie("anizotropné filtrovanie"). Pravidelné mip textúrovanie sa nazýva "izotropné" (izotropné alebo rovnomerné), pretože vždy spolu filtrujeme štvorcové plochy tvorené texelom. Anizotropné filtrovanie znamená, že tvar nami používanej texelovej plochy sa mení v závislosti od okolností.

Popis textúrovacích algoritmov: filtrovanie textúr

Filtrovanie textúry

V poslednej dobe sa spoločnosti zaoberajúce sa 3D počítačovou grafikou neustále snažia o zvýšenie detailov a kvality obrazu v počítačovom vykresľovaní. Neustále sa vyvíjajú nové technológie a architektúry 3D vykresľovania, zdokonaľujú sa a modernizujú kompresné algoritmy na zvýšenie šírky pásma pamäte a architektúra pamäte tiež prechádza zmenami. Bohužiaľ, priepasť medzi pokročilými nápadmi v 3D grafike a bežnými počítačmi je dosť veľká: realizmus v moderných hrách atď. vyrobené pomocou technológií vyvinutých pred 1-2 rokmi. Okrem toho je výkon bežných počítačov veľmi obmedzený, a preto sa pre hry používajú pomerne jednoduché algoritmy, o ktorých budeme diskutovať v tomto článku: ide o textúrovanie a podrobnejšie o filtrovanie textúr.

S ideálnym počítačom s oveľa lepším výkonom by sme boli schopní zobraziť obraz v reálnom čase s veľmi realistickým vykreslením. Bolo by možné napočítať milióny, dokonca miliardy pixelov, aby si každý z nich nastavil svoju vlastnú farbu – v tomto prípade sa obrázok jednoducho nedá odlíšiť od skutočného videa. Ale bohužiaľ, zatiaľ sú to len sny: pre existujúce počítače je stále príliš ťažké súčasne spracovať kreslenie objektov počas pohybu atď. Navyše, zatiaľ je katastrofálny nedostatok šírky pásma pamäte. Na zabezpečenie dobrej kvality v 3D aplikáciách sa vyvíjajú technológie, ktoré zjednodušujú proces kreslenia obrazu.

Jednou z najpoužívanejších technológií, ktoré zjednodušujú výpočet dostatočne kvalitného obrazu, je textúrovanie. Textúra je 2D obraz prekrytý na 3D objekte alebo akomkoľvek povrchu. Vezmime si ako príklad nasledujúcu situáciu: ste vývojár a chcete, aby používateľ videl tehlovú stenu. Vytvorí sa 3D rám steny a tehly môžete vybrať samostatne. Teraz urobíme 2D obrázok tehly a položíme ju na tehlu v 3D ráme a tak ďalej - celú stenu. Výsledkom je bežná 3D stena a grafický čip nemusí kresliť a počítať každý pixel – vypočíta súradnice 3D drôtového modelu, ku ktorému je pripojený 2D obraz.

V textúrovaní je ešte jeden koncept, o ktorom by sa malo diskutovať. Pri prekrývaní 2D obrazu sa tento rozbije na veľa farebných fragmentov. Robí sa to pre zmenu mierky objektu – textúra je 2-rozmerná a 3-rozmerný objekt by sa mal meniť, keď sa približuje alebo vzďaľuje. Zmeniť sa musí aj textúra, aby sa zachoval realizmus a kvalita. Textúra je teda rozdelená do mnohých farebných fragmentov, ktoré sa nazývajú texely (texely - prvky textúry). V budúcnosti, napríklad, keď sa priblížite k objektu, nie je potrebné znovu načítať novú textúru: texely sa prevezmú z pôvodnej textúry a zväčšia sa. Kvalita sa samozrejme stráca, ale zostáva na dosť vysokej úrovni, navyše pri tomto prístupe je výrazne vyťažený grafický procesor a pamäť.

Mip-Mapping (mip-mapping)

Pohyb je charakteristický pre všetky renderované objekty; aj keď je samotný objekt nehybný, stále sa mení, keď sa mení uhol pohľadu postavy v dôsledku jej pohybu. Preto sa musí pohybovať aj textúra umiestnená na objekte - to so sebou prináša určité komplikácie a dodatočné spracovanie. Ale čo keď sa na objekt pozrieme z nejakého uhla, napríklad na podlahu? Podlaha môže zaberať veľkú plochu a pre zachovanie realizmu platí, že čím je od nás ďalej, tým sú jej súčasti (napríklad dlažba) menšie. Aby sa to zabezpečilo, textúra musí byť určitým spôsobom znížená. Žiaľ, obyčajná zmena rozlíšenia textúr môže viesť k dosť nepríjemnému efektu, kedy jedna textúra vizuálne splýva s druhou. Ďalší nepríjemný efekt môže nastať, ak je texel väčší ako požadovaný počet pixelov. Stáva sa to pri pohľade na textúru, ktorá je veľmi vzdialená. Obidve situácie nastávajú pri použití tradičného anti-aliasingu. A tu sú skutočné príklady týchto prípadov: v tomto abstrakte nie sú žiadne

Na zmiernenie takýchto situácií bol vytvorený mip-mapping (mip-mapping). Táto technológia funguje veľmi jednoducho: pôvodná textúra sa generuje v rôznych situáciách tak, aby správne zobrazila textúru v rôznych vzdialenostiach a pri rôznych uhloch pohľadu. Pri približovaní sa k objektu sa zobrazuje textúra s vyšším rozlíšením a pri pohybe preč - s nízkym. Mip-mapping teda zlepšuje kvalitu obrazu a znižuje zubatosť. Nižšie sú rovnaké obrázky, len s povoleným mip-mappingom: v tomto abstrakte nie sú žiadne obrázky.

Zaznamenali ste zlepšenie kvality? Nápadné je to najmä na druhom obrázku so žlto-červeným vzorom. Poznámka: Zlepšila sa nielen kvalita vzdialených textúr, ale aj blízke vyzerajú oveľa lepšie. Vo všeobecnosti obraz s mip-mappingom vyzerá oveľa lepšie ako bez neho: nie je tam veľa skreslení a skreslení, ktoré sú badateľné pri bežnom zobrazení.

Filtrácia

Bodové textúrovanie je možno hlavným typom textúrovania. Pri bodovej textúre sa vyberie jeden kus textúry (texel) a použije sa ako hodnota farby pre pixely. Faktom je, že táto metóda má za následok určitú nepresnosť a v dôsledku toho zhoršenie kvality obrazu. Takýto obraz s existujúcimi štandardmi je jednoducho neprijateľný. Nižšie je textúra, ktorá bola spracovaná bodovou textúrou (spodná časť obrázku). Obrázok ukazuje teoretické zhoršenie kvality pri výbere príliš veľkej veľkosti texelu.

Bilineárna filtrácia

Ďalšou technikou textúrovania je bilineárne filtrovanie. Princíp fungovania tejto metódy textúrovania je veľmi podobný bodovej metóde, ale na rozdiel od nej sa na výber farby pixelov nepoužíva celý obrázok, ale blok 4 texelov. Zvýši sa tak presnosť výberu farby pixelu a dosiahne sa lepšie vykreslenie jednotlivých malých detailov obrazu.

Tento obrázok ukazuje príklad vykreslenia obrázka pomocou bilineárneho filtrovania a mip-mappingu.

Trilineárne filtrovanie

Bilineárne filtrovanie dostalo svoj druhý zrod v podobe trilineárneho filtrovania, ktorého princíp je úplne rovnaký, no je použitý vylepšený výpočtový algoritmus, ktorý zvyšuje presnosť kresby. Trilineárne filtrovanie, podobne ako bilineárne filtrovanie, používa bloky 4 texelov, rovnako ako pri bilineárnom filtrovaní sa obraz normalizuje a potom sa normalizuje z hraničného bloku 4 texelov. Posledným krokom je analýza hranice oboch blokov, v dôsledku čoho sa opravia prípadné chyby a nezrovnalosti na hranici týchto 2 blokov. Pri bilineárnom filtrovaní je celkom bežné vidieť čiary objavujúce sa na hraniciach bloku, ktoré zmiznú pri použití trilineárneho filtrovania. Navyše, pri použití trilineárneho filtrovania sa skreslenia a nepravidelnosti lepšie odstraňujú pri pohybe a pri zmene uhla pohľadu. Nižšie je uvedený diagram použitia trilineárneho filtrovania a je v akcii.

Je potrebné poznamenať, že niektoré chyby na slušnej vzdialenosti sa vyskytujú aj pri použití trilineárneho filtrovania. Je to preto, že bol pôvodne navrhnutý na zníženie skreslenia medzi úrovňami mip-map.

Obraz je veľmi kvalitný len pri priamočiarejších uhloch pohľadu, pri reálnom vykreslení môžu byť narušené geometrické tvary objektu. Pozrite si obrázok od SGI:

Anizotropné filtrovanie

Tvar textúrovaných objektov, s bilineárnym aj trilineárnym filtrovaním, môže byť skreslený, pretože obe tieto filtrácie sú izotropné – obraz je filtrovaný v konkrétnom tvare – v tvare štvorca. Väčšina tvarovaných predmetov tomuto jednoznačnému a nemennému tvaru nesedí: pre ich kvalitné spracovanie je potrebné použiť iný typ filtrácie - anizotropný. Anizotropia pozostáva z viacerých slov v latinčine a doslova znamená „Ani“ – nie, „iso“ – určitá forma a „tropia“ – model – t.j. neurčité modely. Názov tejto technológie odráža jej technickú implementáciu. Anizotropné filtrovanie zvyčajne pracuje s minimálne 8 texelmi vo všetkých smeroch úrovní mip-mapy, pričom sa vopred používa model neurčitého tvaru. Vďaka tomu je odstránený šum a skreslenie objektov a obraz ako celok je kvalitnejší.

Porovnajte dva obrázky: na prvom bolo použité anizotropné filtrovanie 16-texelov, pomocou ktorého zmizli skreslenia medzi úrovňami mip-mapy a obrazovým šumom, na druhom obrázku bolo anizotropné filtrovanie vypnuté.

Dávajte pozor na veľké vzdialenosti obrazu: rozdiely medzi anizotropným a izotropným filtrovaním sú zrejmé. Kvalita textúry s anizotropným filtrovaním zostáva podobná originálu aj na veľké vzdialenosti; pri izotropnom filtrovaní je tendencia „vyhladzovať“ obraz, v dôsledku toho sa stráca kvalita. Anizotropné filtrovanie, podobne ako trilineárne filtrovanie, znižuje drsnosť textúry. Ale pri použití anizotropného filtrovania je kvalita stále lepšia, pretože. na použitie oveľa väčší počet blokov na porovnanie. Tu je ďalší príklad ukazujúci anizotropné filtrovanie v akcii:

Spotrebiteľské grafické karty už dlho nevykazujú kvalitu obrazu, ktorá je možná pri anizotropnom filtrovaní. S príchodom grafických čipov ako NVIDIA GeForce2 a ATI Radeon bolo možné použiť anizotropné filtrovanie, ktoré analyzuje bloky 16 texelov v hardvéri. Grafické karty GeForce3 a Radeon 8500 už používajú 32 texelové anizotropné filtrovanie. Obrázok nižšie ukazuje obrázok, ktorý sa približuje tomu, čo by sa získalo profesionálnym 64 texelovým anizotropným filtrovaním:

Budúce…

V blízkej budúcnosti sa bude anizotropné filtrovanie používať čoraz častejšie. Pre grafické čipy novej generácie sa už vyvíjajú nové technológie na elimináciu nerovností a uhlov v objektoch. V blízkej budúcnosti uvidíme obraz spracovaný pomocou multitexelových blokov. K dispozícii budú grafické karty schopné hardvérovej podpory anizotropného filtrovania pomocou 128 jednotiek texel. Kvalita obrazu sa výrazne zlepší a výkon sa zvýši.

Okrem toho:

Anti-aliasing a anizotropné filtrovanie dnes: čo, kde a koľko? Časť prvá

V skutočnosti by článok s takýmto názvom mohol začať nejakou banalitou, ako napríklad „každý používateľ počítača niekedy videl prácu takých techník vylepšenia 3D obrazu, ako je anti-aliasing alebo anizotropné filtrovanie“. Alebo toto: „Zatiaľ čo naše lode brázdia vesmír, programátori NVIDIA a ATI hľadajú spôsoby, ako zlepšiť výkon známych techník vylepšovania obrazu.“ Druhá platňa má oveľa väčšiu šancu byť živá v tom zmysle, že už teraz púta akýmsi zložením toho, že budeme skúmať otázku, kto a ako „optimalizoval“ ich ovládače.

Možno sa však zaobídeme úplne bez fráz. Pretože je oveľa zaujímavejšie špekulovať na tému, koľko techník na vylepšenie obrazu je teraz dostupných pre jednoduchého používateľa, alebo by bolo správnejšie povedať, pre jednoduchého hráča. Dnes sú hráči najaktívnejšími spotrebiteľmi všetkých nových technológií a inovácií v 3D. Celkovo je dnes výkonný 3D akcelerátor potrebný len na hranie najnovších počítačových hier s výkonnými 3D engine, ktoré pracujú s komplexnými shadermi rôznych verzií. Teraz už nikoho neprekvapíte hrou s pixel shadermi verzie 2.0 – v hernom svete sa takáto zábava stáva pomaly každodennou záležitosťou. Väčšina hier stále vychádza na shader model 1.1, pretože najdôležitejšou vecou pre vývojárov hier je zabezpečiť, aby ich hra bežala na hardvéri, ktorý má drvivá väčšina hráčov, znesiteľne dobre. Vyrobiť teraz super sofistikovaný motor je veľká strata a dokonca riziko. Posúďte sami: vývoj enginu triedy Doom 3 alebo Half-Life 2 (dobre, pridajme sem priekopníka shaderov 2.0 v plnej kráse, výplod Cryteku - FarCry, aby sme získali skutočnú všadeprítomnú trojicu) trvá obrovské množstvo času, čo prináša vo vývoji ďalšie ťažkosti - je potrebné vyvinúť motor v takom čase, aby inovácie a originálny vývoj nezastarali pri tvorbe motora.

Ak pochybujete, že sa to môže stať, potom je to úplne márne - v prípade Half-Life 2 bolo všetko presne tak (a Doom 3 bol vyvinutý s ohľadom na GeForce 3 a vyšiel, keď GeForceFX). Vývoj motorov tejto triedy je tiež spojený s vysokými nákladmi na vývoj: talentovaní programátori dnes nie sú lacní. A v poslednej dobe sa veľa pozornosti (dokonca viac, ako je potrebné) venuje takpovediac „politike“ ohľadom herných enginov.

Áno, je to tak, počuli ste dobre, 3D má už dlho svoju politiku založenú samozrejme na záujmoch dvoch gigantov v štruktúre grafických procesorov: ATI a NVIDIA. Ťažká Kanada dlho bojuje proti slnečnej Kalifornii a zatiaľ sa tejto konfrontácii nevidia žiadne konca, čo nám, obyčajným spotrebiteľom, samozrejme, len prospieva. Teraz už nestačí vyvinúť cool engine – aby ste boli úspešní, musíte získať podporu buď kalifornskej divy NVIDIA alebo kanadskej ATI, našťastie, teraz už prvá aj druhá majú svoje vlastné pridružené programy pre vývojárov hier. NVIDIA nazýva takýto program „Spôsob, akým sa má hrať“, zatiaľ čo ATI ho nazýva „Dostaňte to do hry.“ Všetko je dosť výrečné a jasné: NVIDIA hovorí, že „musíte hrať takto“ a vôbec nie takto a ATI uisťuje, že čokoľvek chceme, určite dostaneme do samotnej hry. Dosť lákavé, však? Motory triedy "Doom 3" a "Half-Life 2" (v prípade hry V druhom prípade sa engine nazýva Source, ale pre uľahčenie vnímania ho budeme nazývať „Half-Life 2“, aby sme zachovali správnu asociáciu) a pôvodne boli vyvinuté v úzkej spolupráci s inžiniermi výrobcov grafických čipov, aby hry fungovali čo najlepšie na GPU od jedného výrobcu.

Preto, ako vidíme, je veľmi problematické robiť revolúcie v oblasti nových 3D grafických enginov a preto sa práve tieto revolúcie vo svete herných enginov nedejú tak často. Kvalitu obrazu však treba nejakým spôsobom zlepšiť. Ak jednoducho zväčšíme počet polygónov v snímke, čím získame vizuálne krajší obraz pre vnímanie, tak nakoniec dospejeme k záveru, že akcelerátor nebude schopný spracovať scénu s prijateľnou snímkovou frekvenciou, ale na obrázku bude stále niečo chýbať. Rebríky pixelov stále zostanú a kvalita textúr sa nezlepší. Existujú menej zrejmé spôsoby, ako zlepšiť kvalitu trojrozmerného obrazu na monitore – anizotropné filtrovanie a antialiasing. Tieto techniky vylepšovania obrazu nemajú nič spoločné priamo so samotným 3D enginom a samozrejme nedokážu urobiť samotný engine krajším, ale dokážu pracovať s textúrami a obrázkami tak, že na výstupe, teda na monitor, môžeme vidieť vizuálne krajší a jemnejší obraz.

Práve v oblasti anizotropného filtrovania a anti-aliasingu vykonávajú NVIDIA aj ATI obrovské množstvo optimalizácií ovládačov. Spoločnosti majú rôzne prístupy a zásady týkajúce sa týchto optimalizácií, ktoré niekedy nie sú úplne férové ​​voči používateľom. Náš článok je však určený len na to, aby sme zistili, čo je dobré a čo zlé na prístupoch oboch výrobcov GPU a čo dnes môže zlepšiť kvalitu obrazu v 3D hrách.

Čo je to anti-aliasing a s čím sa stravuje?

Predtým, než sa pustíme do detailov takej pálčivej témy, akou je optimalizácia anti-aliasingu a rôzne druhy filtrovania textúr, nezaškodí (a o to viac je potrebné) získať nejaké teoretické znalosti na tému nášho dnešného rozhovoru.

Takže antialiasing - čo to je a prečo je to potrebné. V prvom rade pri slove „anti-aliasing“ je potrebné vyzdvihnúť jeho časť – „anti“. Je úplne jasné, že táto časť slova naznačuje, že samotný fenomén „anti-aliasingu“ je zameraný na boj proti niečomu. Ako asi tušíte, v našom prípade – s „aliasingom“. Preto je pre nás v súčasnosti dôležité jasne pochopiť, čo je notoricky známy „aliasing“.

Na začiatok musíte jasne pochopiť, že obraz, ktorý vy a ja môžeme denne pozorovať na obrazovkách našich monitorov, pozostáva z takzvaných malých častíc, ktoré sa bežne nazývajú pixely. Dobrou analógiou v tomto zmysle je príklad kockovaného papiera. Obraz na monitore je rovnaký kockovaný papier, len v tomto prípade sú veľmi, veľmi malé. Ak sa hovorí, že rozlíšenie obrazovky je 1024 x 768 s 32-bitovými farbami, potom to znamená, že 1024 bodov sa zmestí na monitor horizontálne a 768 bodov vertikálne. Navyše každý bod môže byť premaľovaný jednou farbou, ktorá je dostupná v 32-bitovej palete . V súčasnosti je 32-bitová farba limitom toho, čo môžeme dosiahnuť na obrazovke počítača. Najlepšie mysle ľudstva (ako Carmack) už hovoria o potrebe prejsť na 64-bitové farby a poukazujú na zjavné nevýhody 32-bitovej palety. Kedysi pri prechode zo 16-bitovej na 32-bitovú farbu bola táto potreba jednoznačne opodstatnená a existovali reálne dôvody, prečo by sa oplatilo prejsť na 32-bitovú. Prechod na 64-bitové farby je dnes skôr prehnaný. Podobne ako v prípade 16 a 32 bitov, aj tu si treba pomerne dlho počkať, kým urýchľovače všetkých úrovní dokážu spracovať 64 bitovú farbu prijateľnou rýchlosťou.

Drvivá väčšina článkov, ktoré sa tak či onak zaoberajú princípmi vytvárania obrázkov v 3D a kde sa diskutuje o anti-aliasingu, je plná jednoduchého, no zároveň najefektívnejšieho príkladu, ktorý možno použiť celkom dobre pochopiť, čo je anti-aliasing. Pozrite sa na zväčšený nápis „Upgrade“ vytvorený vo Word'e a potom jednoducho zväčšený vo Photoshope. Nevyzerá to veľmi dobre, však? Po stranách písmen je viditeľný takzvaný hrebeň alebo, ako sa tiež nazýva, "rebrík". V podstate tento „hrebeň“ alebo „rebrík“ je aliasing. Môžete si predstaviť ďalší príklad vo forme geometrického objektu, napríklad pyramídy. Pozdĺž jeho okrajov je jasne viditeľný rovnaký „hrebeň“. Teraz sa pozrite na iný obrázok tej istej pyramídy, ale s dvojnásobným rozlíšením. Už to vyzerá oveľa lepšie a "hrebeň" takmer nevidno. Ako už bolo spomenuté vyššie, tento efekt, ktorý vyhladzuje „hrebeň“, bol dosiahnutý vďaka tomu, že sme rozlíšenie zvýšili 2-krát.

Čo to znamená? Predpokladajme, že sme vykreslili pyramídu s rozlíšením 200 x 200 pixelov (vyššie sme už podrobne objasnili otázku, čo sú pixely a prečo sú potrebné). Zvýšili sme počet bodov vertikálne a horizontálne presne 2-krát, to znamená, že sme dostali obrázok s rozlíšením 400 bodov vertikálne a 400 bodov horizontálne. To tiež znamená, že počet bodov na našom objekte, ktorý bol v scéne, sa zdvojnásobil. Čo to dalo vo vzťahu k nášmu aliasingovému efektu? Je zrejmé, že sa stala minimálnou, teda vyhladenou – veď aj počet bodov po okrajoch objektu sa zdvojnásobil. Slovo „sploštený“ je tu kľúčové. Koniec koncov, anti-aliasing sa nazýva anti-aliasing iným spôsobom, čo odráža samotnú podstatu technológie, ktorá vyhladzuje samotný „rebrík“ pozdĺž okrajov trojrozmerných objektov.

V skutočnosti po zvýšení rozlíšenia „rebrík“ z okraja pyramídy nikam neodišiel – zostáva tam ako predtým. Avšak vďaka tomu, že sme zvýšili rozlíšenie (čo znamená zvýšenie počtu bodov vynaložených na zobrazenie pyramídy), efekt „rebríka“ bol vyhladený kvôli zvláštnostiam ľudského videnia, ktoré už nevidí pixely. okraj objektu jasnejšie. Je úplne jasné, že ak budete rozlíšenie zvyšovať stále viac a viac, efekt aliasingu bude pozorovaný v menšej a menšej miere. Presnejšie povedané, ľudské oko si to začne všímať v menšej a menšej miere, pretože samotný efekt aliasingu nikam nevedie. Rovnako je ale úplne jasné, že zvyšovať rozlíšenie nebude možné donekonečna, pretože monitory, aj tie najmodernejšie, majú konečné rozlíšenia a nie také veľké, čo nám nedovolí neustále zvyšovať počet bodov. Zjednodušene povedané, najjednoduchší efekt vyhladzovania možno dosiahnuť jednoduchým zvýšením rozlíšenia obrazovky, no rozlíšenie nemožno zvyšovať donekonečna. Zdá sa, že neexistuje žiadna cesta von? V skutočnosti sa však našiel a vychádza z rovnakej črty ľudského videnia.

To bolo dosiahnuté vďaka plynulým prechodom farieb v obraze. V skutočnosti vizuálne zlepšenie obrazu nie je spôsobené fyzickým zvýšením rozlíšenia, ale takpovediac farebným zvýšením rozlíšenia. V tomto článku nebudeme popisovať algoritmy na výpočet týchto bodov a nepôjdeme do hĺbky matematických výpočtov, ale budeme hovoriť iba o princípe fungovania takéhoto anti-aliasingu. Rebrík na hraniciach objektov je viditeľný len preto, že okraje trojrozmerných objektov najčastejšie farebne vyčnievajú dosť výrazne od zvyšku obrázka a predstavujú tenké čiary jedného pixelu. Dá sa to kompenzovať umiestnením niekoľkých bodiek s farbami vypočítanými zo vzorca farebných hodnôt samotného okraja a bodov vedľa tohto okraja. To znamená, že ak je okraj objektu čierny a pozadie biele, bodka navyše vedľa čiernej okrajovej čiary sa zmení na sivú. Čím viac týchto dodatočných bodov je blízko okraja akéhokoľvek 3D objektu, tým hladšie vyzerajú jeho okraje a tým je rebrík menej viditeľný. Táto metóda sa nazýva vyhladzovanie hrán. Kvalita vyhladzovania nastavená v ovládači grafickej karty, ako napríklad: 2x, 4x, 6x, 8x, znamená počet pixelov navyše, ktoré sa majú umiestniť okolo riadku, ktorý potrebuje vyhladzovanie.

Anizotropné filtrovanie: mini vzdelávací program pre začiatočníkov

Aby ste pochopili, čo je filtrovanie, musíte mať nejaké základné znalosti. Už sme zistili, že obraz na obrazovke pozostáva z mnohých pixelov, ktorých počet je určený rozlíšením. Ak chcete zobraziť farebný obrázok, vaša grafická karta musí určiť farbu každého pixelu. Jeho farba je určená prekrytím obrázkov textúr na polygónoch, ktoré sa nachádzajú v trojrozmernom priestore. Textúrne obrázky sa skladajú z pixelov, alebo skôr z texelov, to znamená, že texel je pixel dvojrozmerného obrázku prekrytý na 3D povrchu. Hlavná dilema je: ktorý texel alebo texely určujú farbu pixelu na obrazovke. Na znázornenie problému filtrovania si predstavme jeden obrázok. Povedzme, že vaša obrazovka je doska s mnohými okrúhlymi otvormi, z ktorých každý je pixel. Ak chcete zistiť, akú farbu má pixel vzhľadom na 3D scénu za doskou, jednoducho sa pozrite cez jeden z otvorov.

A teraz si predstavme lúč svetla, ktorý prechádza cez jeden z otvorov a dopadá na náš textúrovaný polygón. Ak je druhý paralelný s otvorom, cez ktorý prechádza svetelný lúč, potom bude mať svetelný bod tvar kruhu. V opačnom prípade, ak mnohouholník nie je rovnobežný s otvorom, svetelný bod je skreslený a má eliptický tvar. Myslíme si, že mnohí čitatelia si v tejto dobe kladú jednu otázku: "ako súvisia všetky tieto platne, diera, lúč svetla s problémom určenia farby pixelu?" Pozor! Kľúčová fráza: všetky polygóny umiestnené vo svetlej škvrne určujú farbu pixelu. Všetky vyššie uvedené sú nevyhnutné základné znalosti, ktoré sú potrebné na pochopenie rôznych filtrovacích algoritmov.

A teraz, aby ste lepšie pochopili, na čo slúži filtrovanie, pouvažujme nad prebiehajúcimi procesmi na príklade legendárnej Quake 3 Areny. Predstavte si nejakú chodbu s množstvom štvorčekov a rôznych ozdôb (v Quake 3 Arena to našťastie stačí). Ornament na začiatku chodby je vysoko detailný a ku koncu chodby (horizontu) sa prvky ornamentu zmenšujú, t.j. zobrazujú sa s menším počtom pixelov. V dôsledku toho sa stratia detaily, ako sú švy medzi ozdobnými prvkami, čo následne vedie k zhoršeniu kvality obrazu.

Problém je v tom, že ovládač grafickej karty nevie, ktoré detaily v textúre sú dôležité.

Bodové vzorkovanie

Bodové vzorkovanie je najjednoduchší spôsob, ako určiť farbu pixelu. Tento algoritmus je založený na obrázku textúry: vyberie sa len jeden texel, ktorý je najbližšie k stredu svetelného bodu, a z neho sa určí farba pixelu. Nie je ťažké uhádnuť, že to absolútne nie je pravda. Po prvé, farba pixelu je určená viacerými texelmi a my sme si vybrali iba jeden. Po druhé, tvar svetelného bodu sa môže zmeniť a algoritmus to nezohľadňuje. Ale márne!

Hlavnou nevýhodou streamovaného vzorkovania je skutočnosť, že keď je polygón blízko obrazovky, počet pixelov bude oveľa vyšší ako počet texelov, čo výrazne ovplyvní kvalitu obrazu. Takzvaný blokovací efekt, ako veríme, mohli mnohí pozorovať v starých počítačových hrách, napríklad v rovnakom legendárnom Doomovi.

Bodové vzorkovanie má výhodu. Vzhľadom na skutočnosť, že farba pixelu je určená iba jedným texelom, táto metóda nie je kritická pre šírku pásma pamäte, a to automaticky dáva tejto metóde filtrovania obrovské výhody v tom zmysle, že na filtrovanie podľa tohto sa minie len veľmi málo zdrojov 3D akcelerátora. schéma..

Bi-lineárne filtrovanie

Bi-Linear Filtering je bilineárne filtrovanie založené na metóde použitia interpolačnej techniky. Na určenie požadovaných texelov sa používa hlavný tvar svetelného bodu, to znamená kruh. V našom príklade s kruhom je tento aproximovaný 4 texelmi. Ako vidíte, veci sú tu o niečo lepšie ako s bodovým vzorkovaním. Bilineárne filtrovanie už používa 4 texely.

Obraz je lepší, nedochádza k blokovaniu, ale polygóny blízko obrazovky vyzerajú rozmazane, a to je spôsobené tým, že interpolácia vyžaduje viac texelov ako dostupné štyri.

Nejasnosť v žiadnom prípade nie je hlavným problémom bilineárneho filtrovania. Faktom je, že aproximácia sa vykonáva správne iba pre objekty umiestnené rovnobežne s obrazovkou alebo pozorovacím bodom, zatiaľ čo 99% objektov v žiadnej počítačovej hre nie je rovnobežných s pozorovacím bodom. Z toho môžeme usúdiť, že 99% objektov bude aproximovaných nesprávne. Zoberme si napríklad náš kruh - mnohouholník nie je rovnobežný s bodom pozorovania, takže musíme aproximovať elipsu a my aproximujeme kruh, čo je extrémne nesprávne. Navyše, bilineárne filtrovanie je oveľa náročnejšie na šírku pásma pamäťových dát, čo je vo všeobecnosti viac než logické, keďže bilineárne filtrovanie už používa 4 texely na určenie farby pixelu.

Súdiac podľa informácií na fórach a z článkov na internete, ATi je zložité s trilineárnym filtrovaním textúr na novom grafickom procesore X800. Nájdu sa však aj urputne sa brániace ATi. Vo všeobecnosti nám takéto diskusie pripomínajú rok starý škandál týkajúci sa nVidie.

Dôvodom takejto búrlivej diskusie bol článok na nemeckej stránke Computerbase. Ukázalo sa, ako ATi používa optimalizované trilineárne filtrovanie textúr, často nazývané „brilineárne“ (brilineárne) vďaka zmesi bilineárneho a trilineárneho filtrovania v grafických procesoroch Radeon 9600 a X800. Táto správa bola skutočne zarážajúca, pretože ATi vždy hovorilo o použití skutočného trilineárneho filtrovania.

Ako však situácia v skutočnosti vyzerá? Je to optimalizácia, trik alebo len múdre rozhodnutie? Aby sme to mohli posúdiť, musíme sa ponoriť do technológie rôznych metód filtrovania. A práve tomu bude venovaná prvá časť článku, navyše si niektoré technológie predstavíme veľmi zjednodušene, aby sme sa zmestili na pár strán. Poďme sa teda pozrieť na základné a základné funkcie filtrovania.

Bude aj pokračovanie? Možno preto, že polemika o nedávno objavenom briline filtrovaní na kartách Radeon 9600 a X800 neutícha. Treba uznať ATi, že kvalita obrazu kariet týmto filtrovaním vizuálne neutrpí. Aspoň nemáme príklady svedčiace o opaku. Zatiaľ čo filtrovanie brilínu sa prejavuje v umelo vytvorených laboratórnych podmienkach. ATi zároveň pre spomínané karty neumožňuje úplné trilineárne filtrovanie, či už adaptívne alebo nie. Vďaka novému filtrovaniu hodnoty výkonu v testoch neukazujú plný potenciál X800, pretože hodnoty FPS sa získavajú po optimalizácii, ktorej vplyv na rýchlosť je ťažké posúdiť. A slovo „prispôsobivý“ zanecháva horkú pachuť. ATi nám neposkytla informácie o mechanizme ovládača a mnohokrát uviedla, že karta poskytuje plné trilineárne filtrovanie. Až spomínané odhalenie ATi priznalo, že filtrovanie bolo optimalizované. Dúfajme, že na iných miestach takýto „prispôsobivý“ vodič nie je.

Výrobcovia však pomaly, ale isto smerujú k momentu, kedy bude prekonaná miera tolerancie. "Adaptivita" alebo definícia spúšťanej aplikácie neumožňuje testovacím programom ukázať skutočný výkon karty v hrách. Kvalita obrazu v hre sa môže líšiť od jedného ovládača k druhému. Výrobcovia sa môžu voľne hrať s vodičom v závislosti od toho, aký výkon momentálne marketingové oddelenie potrebuje. No a právo spotrebiteľa vedieť, čo vlastne kupuje, tu už nikoho nezaujíma. Toto všetko necháva na médiá – nech plnia svoje výchovné poslanie. A triky filtrovania, o ktorých sme hovorili v našom článku, sú len najznámejšie z týchto prípadov. Čo je ešte skryté našej pozornosti, môžeme len hádať.

Každý výrobca sa sám rozhodne, akú úroveň kvality obrazu bude štandardne poskytovať. Výrobcovia by však mali zdokumentovať optimalizácie, ktoré používajú, najmä ak sú skryté pred známymi testami, ako v nedávnom príklade ATi. Riešenie je zrejmé: umožniť vypnutie optimalizácií! Potom sa spotrebiteľ bude môcť sám rozhodnúť, čo je pre neho dôležitejšie - viac FPS alebo lepšia kvalita. Nemôžete počítať ani s Microsoftom ako s arbitrom. Testy WHQL veľa vecí nedefinujú a dajú sa ľahko obísť: poznáte význam slova „adaptívny“?

V súčasnosti známe optimalizácie filtrovania
ATi nVidia
Trilineárne
optimalizácia
R9600
X800
GF FX5xxx
(GF 6xxx)*
Uhlová optimalizácia
anizotropné filtrovanie
R9xxx
X800
GF 6xxx
Adaptívny
anizotropné filtrovanie
R9xxx
X800
GF FX5xxx
GF 6xxx
Optimalizácia fázy R9xxx
X800
GF FX5xxx
Optimalizácia LOD R9xxx
X800(?)

Vo všeobecnosti majú takéto diskusie svoje výhody: kupujúci a možno aj OEM zákazníci začínajú problém počúvať. Nepochybujeme, že mánia bezuzdných optimalizácií bude pokračovať. V temnej sfére sa však objavil lúč svetla, čo nVidia jasne preukázala svojou trilineárnou optimalizáciou. Dúfajme v ďalšie kroky!

KATEGÓRIE

POPULÁRNE ČLÁNKY

2023 "kingad.ru" - ultrazvukové vyšetrenie ľudských orgánov