10.10.2019

Anisotrooppinen suodatus: mihin se on tarkoitettu, mihin se vaikuttaa, käytännön käyttö


SISÄÄN moderneja pelejä yhä enemmän graafisia tehosteita ja tekniikoita käytetään kuvan parantamiseen. Samaan aikaan kehittäjät eivät yleensä vaivaudu selittämään, mitä he tarkalleen tekevät. Kun tuottavin tietokone ei ole saatavilla, osa ominaisuuksista on uhrattava. Yritetään pohtia, mitä yleisimmät grafiikkavaihtoehdot tarkoittavat, jotta ymmärrämme paremmin kuinka vapauttaa PC-resurssit minimaalisilla seurauksilla grafiikkaan.

Anisotrooppinen suodatus
Kun näytöllä näkyy jokin tekstuuri, joka ei ole sen alkuperäisessä koossa, siihen on lisättävä lisäpikseleitä tai päinvastoin poistettava ylimääräiset pikselit. Tämä tehdään käyttämällä suodatustekniikkaa.


kolmilinjainen

anisotrooppinen

Bilineaarinen suodatus on yksinkertaisin algoritmi ja vaatii vähemmän laskentatehoa, mutta se antaa myös huonoimman tuloksen. Trilinear lisää selkeyttä, mutta tuottaa silti artefakteja. Anisotrooppista suodatusta pidetään edistyneimpana menetelmänä, joka poistaa havaittavat vääristymät kohteissa, jotka ovat voimakkaasti kallistuneet kameraan nähden. Toisin kuin kaksi edellistä menetelmää, se taistelee menestyksekkäästi alias-vaikutusta vastaan ​​(kun jotkut tekstuurin osat ovat epäselviä kuin toiset ja niiden välinen raja tulee selvästi näkyviin). Kun käytetään bilineaarista tai trilineaarista suodatusta, etäisyyden kasvaessa tekstuuri muuttuu yhä epäselvemmäksi, kun taas anisotrooppisella suodatuksella ei ole tätä haittaa.

Kun otetaan huomioon käsiteltävän tiedon määrä (ja kohtauksessa voi olla monia korkearesoluutioisia 32-bittisiä tekstuureja), anisotrooppinen suodatus on erityisen vaativaa kaistanleveys muisti. Voit vähentää liikennettä ensisijaisesti tekstuuripakkauksen ansiosta, jota käytetään nyt kaikkialla. Aikaisemmin, kun sitä harjoitettiin harvemmin ja videomuistin kaistanleveys oli paljon pienempi, anisotrooppinen suodatus vähensi kehysten määrää merkittävästi. Nykyaikaisissa näytönohjaimissa sillä ei ole juuri mitään vaikutusta fps: hen.

Anisotrooppisessa suodatuksessa on vain yksi suodatinkerroinasetus (2x, 4x, 8x, 16x). Mitä korkeampi se on, sitä selkeämmiltä ja luonnollisemmilta tekstuurit näyttävät. Tyypillisesti suurella arvolla pienet artefaktit näkyvät vain kallistettujen pintakuvioiden uloimmissa pikseleissä. Arvot 4x ja 8x ovat yleensä riittävät päästämään eroon leijonanosasta visuaalisista vääristymistä. Mielenkiintoista on, että siirryttäessä 8x:sta 16x: iin, suorituskyky osuma on melko pieni, jopa teoriassa, koska vain pieni määrä aiemmin suodattamattomia pikseleitä tarvitsee lisäkäsittelyä.

Varjostimet
Varjostimet ovat pieniä ohjelmia, jotka voivat tuottaa tiettyjä manipulaatioita 3D-kohtauksella esimerkiksi muuta valaistusta, lisää tekstuuria, lisää jälkikäsittelyä ja muita tehosteita.

Shaderit on jaettu kolmeen tyyppiin: vertex (Vertex Shader) toimii koordinaateilla, geometrinen (Geometry Shader) pystyy käsittelemään yksittäisten pisteiden lisäksi kokonaisia ​​geometrisia muotoja, jotka koostuvat enintään 6 pisteestä, pikseli (Pixel Shader) työskentelee yksittäisten pikselien ja niiden parametrien kanssa.

Varjostimia käytetään pääasiassa uusien tehosteiden luomiseen. Ilman niitä toimintojen joukko, jota kehittäjät voisivat käyttää peleissä, on hyvin rajallinen. Toisin sanoen varjostajien lisääminen mahdollisti uusien tehosteiden hankkimisen, joita ei oletuksena ollut näytönohjaimessa.

Shaderit toimivat erittäin tuottavasti rinnakkain, minkä vuoksi nykyaikaisissa näytönohjainsovittimissa on niin paljon stream-prosessoreita, joita kutsutaan myös varjostimiksi.

Parallaksikartoitus
Parallax-kartoitus on muunneltu versio tunnetusta bumpmapping-tekniikasta, jota käytetään pintakuvioiden kohokuviointiin. Parallaksikartoitus ei luo 3D-objekteja sanan tavallisessa merkityksessä. Esimerkiksi lattia tai seinä pelikohtauksessa näyttää karkealta, vaikka se itse asiassa pysyy täysin tasaisena. Helpotusvaikutus saavutetaan tässä vain pintakuvioiden käsittelyllä.

Alkuperäisen esineen ei tarvitse olla tasainen. Menetelmä toimii erilaisilla peliesineillä, mutta sen käyttö on toivottavaa vain tapauksissa, joissa pinnan korkeus muuttuu tasaisesti. Teräviä pisaroita käsitellään väärin, ja esineeseen ilmestyy esineitä.

Parallaksikartoitus säästää merkittävästi tietokoneen laskentaresursseja, koska käytettäessä analogisia objekteja niin yksityiskohtaisella 3D-rakenteella videosovitinten suorituskyky ei riittäisi hahmottamaan kohtauksia reaaliajassa.

Vaikutusta käytetään useimmiten kivijalkakäytävissä, seinissä, tiileissä ja laatoissa.

Anti-aliasing
Ennen DirectX 8:n tuloa antialiasing peleissä tehtiin SuperSampling Anti-Aliasingilla (SSAA), joka tunnetaan myös nimellä Full-Scene Anti-Aliasing (FSAA). Sen käyttö heikensi merkittävästi suorituskykyä, joten DX8:n julkaisun myötä se hylättiin välittömästi ja korvattiin Multisample Anti-Aliasingilla (MSAA). Siitä huolimatta tätä menetelmää antoi huonompia tuloksia, se oli paljon tuottavampi kuin edeltäjänsä. Sen jälkeen on ilmestynyt kehittyneempiä algoritmeja, kuten CSAA.

AA pois päältä AA päällä

Koska näyttökorttien suorituskyky on parantunut huomattavasti viime vuosien aikana, sekä AMD että NVIDIA ovat palauttaneet tuen SSAA-teknologialle kiihdyttimilleen. Sitä ei kuitenkaan voida käyttää edes nyt nykyaikaisissa peleissä, koska kehysten määrä / s on hyvin pieni. SSAA tulee voimaan vain aikaisempien vuosien projekteissa tai nykyisissä projekteissa, mutta muiden graafisten parametrien asetuksilla on maltillinen. AMD on ottanut käyttöön SSAA-tuen vain DX9-peleissä, mutta NVIDIAssa SSAA toimii myös DX10- ja DX11-tiloissa.

Tasoitusperiaate on hyvin yksinkertainen. Ennen kuin kehys näytetään näytöllä, tiettyjä tietoja ei lasketa alkuperäisellä tarkkuudella, vaan korotettuna ja kahden kerrannaisena. Sitten tulos pienennetään vaadittuun kokoon, ja sitten "tikkaat" esineen reunoilla muuttuvat vähemmän havaittavissa. Mitä korkeampi alkuperäinen kuva ja tasoituskerroin (2x, 4x, 8x, 16x, 32x), sitä vähemmän vaiheita malleissa on. MSAA, toisin kuin FSAA, tasoittaa vain objektien reunat, mikä säästää merkittävästi näytönohjaimen resursseja, mutta tämä tekniikka voi jättää artefakteja polygonien sisään.

Aiemmin Anti-Aliasing on aina vähentänyt merkittävästi fps:ää peleissä, mutta nyt se vaikuttaa hieman kehysten määrään, joskus ei vaikuta ollenkaan.

tessellaatio
Käyttämällä tessellaatiota tietokonemallissa polygonien määrää lisätään mielivaltaisen määrän kertoja. Tätä varten jokainen polygoni jaetaan useisiin uusiin, jotka sijaitsevat suunnilleen samalla tasolla kuin alkuperäinen pinta. Tällä menetelmällä on helppo lisätä yksinkertaisten 3D-objektien yksityiskohtia. Tällöin kuitenkin myös tietokoneen kuormitus kasvaa, eikä joissain tapauksissa voida sulkea pois pieniäkään esineitä.

Ensi silmäyksellä tessellaatio voidaan sekoittaa parallaksikartoitukseen. Vaikka nämä ovat täysin erilaisia ​​​​tehosteita, koska tessellaatio itse asiassa muuttaa kohteen geometrista muotoa, ei vain simuloi helpotusta. Lisäksi sitä voidaan käyttää lähes mihin tahansa esineeseen, kun taas Parallax-kartoituksen käyttö on hyvin rajallista.

Tessellation-tekniikka on tunnettu elokuvissa 80-luvulta lähtien, mutta sitä on tuettu peleissä vasta äskettäin, tarkemmin sanottuna sen jälkeen, kun grafiikkakiihdyttimiä vihdoin saavutettiin tarvittava suorituskyky, jolla se voidaan suorittaa reaaliajassa.

Jotta peli voisi käyttää tessellaatiota, se vaatii näytönohjaimen, joka tukee DirectX 11:tä.

Pystytahdistus

V-Sync on pelikehysten synkronointi näytön pystysuoran virkistystaajuuden kanssa. Sen ydin on siinä, että täysin laskettu pelikehys näkyy näytöllä sillä hetkellä, kun kuva päivitetään siihen. On tärkeää, että myös seuraava kehys (jos se on jo valmis) ilmestyy viimeistään ja aikaisintaan kun edellisen tuloste loppuu ja seuraava alkaa.

Jos näytön virkistystaajuus on 60 Hz ja näytönohjain ehtii renderöidä 3D-näkymän, jossa on vähintään sama määrä kehyksiä, jokainen näytön päivitys näyttää uuden kehyksen. Toisin sanoen 16,66 ms:n välein käyttäjä näkee ruudulla täydellisen pelitilanteen päivityksen.

On ymmärrettävä, että kun pystysynkronointi on käytössä, pelin fps ei voi ylittää näytön pystysuoraa virkistystaajuutta. Jos kehysten määrä on pienempi kuin tämä arvo (tapauksessamme alle 60 Hz), suorituskykyhäviöiden välttämiseksi on aktivoitava kolminkertainen puskurointi, jossa kehykset lasketaan etukäteen ja tallennetaan kolmeen erilliseen puskuriin, mikä mahdollistaa niiden lähettämisen näytölle useammin.

Pystysynkronoinnin päätehtävänä on eliminoida siirretyn kehyksen vaikutus, joka syntyy, kun näytön alaosa täytetään yhdellä kehyksellä ja yläosa täytetään toisella, siirrettynä edelliseen verrattuna.

jälkikäsittelyä
Tämä on yleisnimi kaikille tehosteille, joita käytetään täysin renderoidun 3D-kohtauksen jo valmiiseen kehykseen (toisin sanoen kaksiulotteiseen kuvaan) lopullisen kuvan laadun parantamiseksi. Jälkikäsittely käyttää pikselivarjostimia, ja sitä käytetään tapauksissa, joissa lisätehosteet edellyttävät täydelliset tiedot koko kohtauksesta. Erillään yksittäisistä 3D-objekteista tällaisia ​​tekniikoita ei voida soveltaa ilman artefaktien ilmestymistä kehyksessä.

Korkea dynaaminen alue (HDR)
Efekti, jota käytetään usein pelikohtauksissa kontrastivalaistuksella. Jos näytön yksi alue on erittäin kirkas ja toinen erittäin tumma, monet kunkin alueen yksityiskohdat menetetään ja se näyttää yksitoikkoiselta. HDR lisää kehykseen sävyjä ja antaa sinun tarkentaa kohtausta. Käyttääksesi sitä, sinun on yleensä työskenneltävä laajemman sävyvalikoiman kanssa kuin tavallinen 24-bittinen tarkkuus pystyy tarjoamaan. Esilaskutoimitukset tapahtuvat suuremmalla tarkkuudella (64 tai 96 bittiä), ja vasta loppuvaiheessa kuva säädetään 24-bittiseksi.

HDR:ää käytetään usein näön mukauttamisen toteuttamiseen, kun pelien sankari jättää tumman tunnelin hyvin valaistulle pinnalle.

kukinta
Bloomia käytetään usein yhdessä HDR:n kanssa, ja sillä on myös melko läheinen sukulainen Glow:lle, minkä vuoksi nämä kolme tekniikkaa sekoitetaan usein.

Bloom simuloi tehostetta, joka voidaan nähdä kuvattaessa erittäin kirkkaita kohtauksia perinteisillä kameroilla. Tuloksena olevassa kuvassa voimakas valo näyttää vievän enemmän tilaa kuin sen pitäisi, ja "kiipeää" esineiden päälle, vaikka se on niiden takana. Bloomia käytettäessä objektien reunoihin voi ilmestyä värillisiä viivoja muita esineitä.

Filmin rakeisuus
Grain on artefakti, joka esiintyy analogisessa televisiossa huonolla signaalilla, vanhoissa magneettisissa videokasetteissa tai valokuvissa (erityisesti hämärässä otetuissa digitaalisissa kuvissa). Pelaajat usein poistavat tämän tehosteen käytöstä, koska se pilaa kuvan jossain määrin, eikä paranna sitä. Tämän ymmärtämiseksi voit suorittaa Mass Effectin jokaisessa tilassa. Joissakin kauhuelokuvissa, kuten Silent Hill, ruudun melu päinvastoin lisää tunnelmaa.

liike-epäterävyyttä
Motion Blur Vaikutus, joka sumentaa kuvaa, kun kameraa liikutetaan nopeasti. Sitä voidaan käyttää onnistuneesti silloin, kun kohtaukseen on annettava lisää dynamiikkaa ja nopeutta, joten se on erityisen kysytty kilpapeleissä. Ampujissa sumennuksen käyttöä ei aina havaita yksiselitteisesti. Oikea sovellus Motion Blur voi lisätä elokuvamaista tunnelmaa ruudulla tapahtuvaan.

Tehoste auttaa myös tarvittaessa peittämään alhaiset kuvanopeudet ja lisäämään pelin sujuvuutta.

SSAO
Ambient okkluusio on tekniikka, jolla lisätään näkymään fotorealismia luomalla siinä oleville kohteille realistisempi valaistus, joka ottaa huomioon muiden lähellä olevien kohteiden läsnäolon, joilla on omat valon absorbointi- ja heijastusominaisuudet.

Screen Space Ambient Occlusion on muokattu versio Ambient Occlusionista ja simuloi myös epäsuoraa valaistusta ja varjostusta. SSAO:n ilmestyminen johtui siitä, että nykyisellä GPU-suorituskyvyn tasolla Ambient Occlusionia ei voitu käyttää kohtausten renderöimiseen reaaliajassa. Paremmasta suorituskyvystä SSAO:ssa joudut maksamaan huonommalla laadulla, mutta sekin riittää parantamaan kuvan realistisuutta.

SSAO toimii yksinkertaistetun kaavan mukaan, mutta sillä on monia etuja: menetelmä ei riipu kohtauksen monimutkaisuudesta, ei käytä RAM-muistia, voi toimia dynaamisissa kohtauksissa, ei vaadi kehyksen esikäsittelyä ja lataa vain näytönohjaimen kuluttamatta CPU-resursseja.

Cel varjostus
Cel shading -vaikutteisia pelejä on tehty vuodesta 2000 lähtien, ja ennen kaikkea ne ilmestyivät konsoleille. PC:llä tämä tekniikka tuli todella suosituksi vasta muutaman vuoden kuluttua. Cel-varjostuksen avulla jokainen kehys muuttuu melkein käsin piirretyksi piirrokseksi tai katkelmaksi sarjakuvasta.

Sarjakuvat luodaan samalla tyylillä, joten tekniikkaa käytetään usein niihin liittyvissä peleissä. Viimeisimmistä tunnetuista julkaisuista voimme mainita Borderlands-räiskintäpelin, jossa Cel-varjostus näkyy paljaalla silmällä.

Tekniikan ominaisuuksia ovat rajoitetun värisarjan käyttö sekä tasaisten liukuvärien puuttuminen. Tehosteen nimi tulee sanasta Cel (Selluloidi), eli läpinäkyvästä materiaalista (filmistä), jolle piirretään animaatiofilmejä.

Syvyysterävyys
Syvyysterävyys on tilan lähi- ja kaukoreunojen välinen etäisyys, jonka sisällä kaikki kohteet ovat tarkennettuina, kun taas muu kohtaus on epäselvä.

Tietyssä määrin syväterävyys voidaan havaita yksinkertaisesti keskittymällä kohteeseen, joka on lähellä silmiä. Kaikki sen takana hämärtyy. Päinvastoin on myös totta: jos keskityt kaukaisiin esineisiin, kaikki niiden edessä on sumeaa.

Voit nähdä syväterävyyden vaikutuksen hypertrofoituneessa muodossa joissakin valokuvissa. Juuri tätä epäterävyyden astetta yritetään usein simuloida 3D-kohtauksissa.

Syvyysterävyyttä käyttävissä peleissä pelaajalla on yleensä vahvempi läsnäolon tunne. Esimerkiksi katsoessaan jonnekin ruohon tai pensaiden läpi, hän näkee vain pieniä fragmentteja kohtauksesta tarkennettavana, mikä luo illuusion läsnäolosta.

Suorituskykyvaikutus

Saadaksemme selville, kuinka tiettyjen vaihtoehtojen sisällyttäminen vaikuttaa suorituskykyyn, käytimme Heaven DX11 Benchmark 2.5 -pelien vertailuarvoa. Kaikki testit suoritettiin järjestelmälle Intel Core 2 Duo e6300, GeForce GTX460 1280×800 pikselillä (paitsi pystysynkronointi, jossa resoluutio oli 1680×1050).

Kuten jo mainittiin, anisotrooppisella suodatuksella ei ole juuri mitään vaikutusta kehysten määrään. Ero käytöstä poistetun anisotropian ja 16x:n välillä on vain 2 kuvaa, joten suosittelemme, että asetat sen aina maksimiarvoon.

Heaven Benchmarkin anti-aliasing alensi fps enemmän kuin odotimme, etenkin vaikeimmassa 8x-tilassa. Kuitenkin, koska 2x riittää huomattavaan kuvan parantumiseen, suosittelemme valitsemaan tämän vaihtoehdon, jos on epämukavaa pelata korkeammilla.

Tesselaatio voi, toisin kuin edelliset parametrit, saada mielivaltaisen arvon jokaisessa erillinen peli. Heaven Benchmarkissa kuva huononee merkittävästi ilman sitä, ja maksimitasolla päinvastoin siitä tulee hieman epärealistinen. Siksi väliarvot tulee asettaa kohtalaisiin tai normaaleihin.

Pystysynkronointiin valittiin korkeampi resoluutio, jotta näytön pystysuora virkistystaajuus ei rajoita fps:ää. Kuten odotettiin, kehysten määrä lähes koko testin ajan synkronoinnin ollessa päällä oli selvästi noin 20 tai 30 kuvaa/s. Tämä johtuu siitä, että ne lähetetään samanaikaisesti näytön päivityksen kanssa ja 60 Hz:n virkistystaajuudella tätä ei voida tehdä joka pulssilla, vaan vain joka sekunti (60/2 = 30 fps) tai joka kolmas (60/3 = 20 fps). Kun V-Sync poistettiin käytöstä, kehysten määrä kasvoi, mutta tyypillisiä esineitä ilmestyi näytölle. Kolminkertaisella puskuroinnilla ei ollut positiivista vaikutusta kohtauksen sujuvuuteen. Ehkä tämä johtuu siitä, että näytönohjaimen ajurin asetuksissa ei ole mahdollista pakottaa puskurointia pois päältä, ja vertailuarvo jättää huomioimatta normaalin deaktivoinnin, ja se käyttää edelleen tätä toimintoa.

Jos Heaven Benchmark olisi peli, niin maksimiasetuksilla (1280×800; AA 8x; AF 16x; Tessellation Extreme) sen pelaaminen olisi epämukavaa, sillä 24 kuvaa ei selvästikään riitä tähän. Pienellä laadun heikkenemisellä (1280 × 800; AA 2x; AF 16x, Tesselation Normal) voidaan saavuttaa hyväksyttävämpi 45 fps.



Suorituskykytestit:

Ja nyt, kun olemme tutustuneet suodatuksen ja tekstuurin tasoittamisen peruskäsitteisiin, voimme siirtyä harjoittelemaan.

Tietokoneen kokoonpano:
Prosessori: Intel Core 2 Quad Q6600 @ 3200MHz (400x8, 1,3125V)
Näytönohjain: Palit Nvidia GeForce 8800GT
Emolevy: Asus P5Q PRO TURBO
Muisti: 2x2048MB DDR2 Corsair XMS2 @ 1066MHz, 5-5-5-15
Virtalähde: Corsair CMPSU-850HXEU 850W
CPU-jäähdytin: Zalman CNPS9700 LED
Käyttöjärjestelmä: Windows 7 Ultimate x64
Näytönohjainversio: Nvidia 195.62 x64

Tämän päivän testauksen pääkohteena oli hyvin vanha, mutta yhtä kuuluisa Counter-Strike: Source, koska tämä on yksi harvoista todella laajalle levinneistä peleistä, joka tarjoaa valtavan valikoiman erilaisia ​​anti-aliasointi- ja suodatusasetuksia. Huolimatta moottorin antiikista (2004), tämä peli voi silti ladata hyvin jopa nykyaikaisimman alustan. Tässä on niin runsas valikoima asetuksia, jotka esitetään käyttäjälle:

Anti-aliasing- ja suodatustestit suoritettiin sisäänrakennetulla benchmarkilla, resoluutiolla 1280x1024. Kaikki muut asetukset otettiin maksimiarvoiksi, kuten yllä olevassa kuvakaappauksessa. Jotta tulos saataisiin mahdollisimman lähelle totuutta, jokainen parametri testattiin kolme kertaa, minkä jälkeen saatiin saatujen arvojen aritmeettinen keskiarvo.

Ja niin, mitä saimme:

Tulokset olivat melko odottamattomia. Coveragesampling-tekniikka (CSAA), jonka pitäisi määritelmän mukaan kuluttaa vähemmän resursseja kuin MSAA, näyttää tässä täysin päinvastaisen kuvan. syyt Tämä ilmiö niitä voi olla paljon. Ensinnäkin on otettava huomioon, että suorituskyky, kun anti-aliasing on käytössä, riippuu suurelta osin GPU-arkkitehtuurista. Kyllä, ja itse pelin ja ohjainversion eri teknologioiden optimointi on yhtä tärkeä rooli. Siksi tulokset muita näytönohjaimia tai jopa erilaista ohjainversiota käytettäessä voivat olla täysin erilaisia.

Testit, joissa anti-aliasing poistettiin käytöstä (merkitty sinisellä havaitsemisen helpottamiseksi), osoittivat suunnilleen yhtäläisen kuvan, mikä osoittaa pientä eroa näytönohjaimen kuormituksissa.

Lisäksi FPS-ilmaisimien välillä on selvä vastaavuus, kun käytetään samaa anti-aliasing-menetelmää, AF 8x ja AF 16x. Samaan aikaan ero on 1-4 fps (poikkeuksena MSAA 8x, jossa ero on 11 fps). Tämä viittaa siihen, että 16-kertaisen suodatuksen käyttäminen voi olla erittäin hyödyllistä, jos haluat parantaa kuvanlaatua ilman merkittävää suorituskykyä.

Ja silti on tarpeen tehdä varaus, että on yksinkertaisesti epärealistista saada samat FPS-arvot suoraan pelissä, koska monet kohtaukset osoittautuvat paljon vaikeammiksi, etenkin monien pelaajien kanssa.

Kuvien testit:

Ja niin, mitä meillä on? Olemme oppineet eri asetuskokoonpanojen vaikutuksista suorituskykyyn. "Mutta miksi tämä kaikki on välttämätöntä?" - kysyt. Vastaan ​​näytettävän kuvan laadun parantamiseksi. Onko nousua ollenkaan? Vastataksesi tähän kysymykseen, suosittelen katsomaan seuraavat kuvakaappaukset:

Billinear / MSAA 2xTrilineaarinen / 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

Kuten näet, "korkeamman" AF 8x / MSAA 8x (CSAA 8x) -yhdistelmissä ei yksinkertaisesti ole erityistä eroa. Mutta samaan aikaan on havaittavissa suorituskyvyn hitti, etenkin käytettäessä Coverage Sampling AntiAliasingia.

Johtopäätökset:

Luultavasti lukijoiden joukossa Tämä artikkeli Mukana on Cs:s:n, HL2:n ja muiden Source-moottoriin perustuvien pelien pelaajia. He pitävät tätä artikkelia kiinnostavampana ja informatiivisempana kuin muut. Tämän kirjoituksen tarkoitus oli kuitenkin vain puhua nykyaikaiset tekniikat jotka auttavat parantamaan pelien visuaalista käsitystä. Ja testit - keinona näyttää käytännössä esitetty teoria.

Tietenkin todistuksen luotettavuuden vuoksi oli tarpeen suorittaa suorituskykytestejä sekä muille videosiruille että lisäpeleille.

Oli miten oli, palatakseen tämän artikkelin aiheeseen, jokainen valitsee, millä asetuksilla pelataan. Ja en anna neuvoja tai suosituksia, koska ne on tuomittu epäonnistumaan etukäteen. Toivon, että yllä oleva teoria testeillä auttaa sinua tutustumaan kuvattuihin teknologioihin.

Kirjailija: Stormcss


Potkii vihaisesti jaloillaan

Foorumeilla ja Internetissä olevista artikkeleista päätellen ATi on hankala trilineaarisen tekstuurisuodatuksen kanssa uudessa X800-grafiikkaprosessorissa. On kuitenkin myös kiivaasti puolustavia ATi:ita. Yleensä tällaiset keskustelut tuovat mieleen vuoden vanhan nVidia-skandaalin.

Syy kiivaaseen keskusteluun oli artikkeli saksalaisella Computerbase-sivustolla. Se osoitti, kuinka ATi käyttää optimoitua trilineaarista tekstuurisuodatusta, jota usein kutsutaan "brilineaariseksi" (brilineaariseksi) bilineaarisen ja trilineaarisen suodatuksen sekoituksesta johtuen Radeon 9600- ja X800 -grafiikkasuorittimissa. Uutinen oli todella hätkähdyttävä, sillä ATi on aina puhunut todellisen trilineaarisen suodatuksen käyttämisestä.

Mutta miltä tilanne oikeasti näyttää? Onko tämä optimointia, temppua vai vain järkevä päätös? Arvostellaksemme meidän on perehdyttävä tekniikkaan eri tavoilla suodatus. Ja artikkelin ensimmäinen osa on omistettu juuri tälle, lisäksi esittelemme joitain tekniikoita hyvin yksinkertaistetulla tavalla, jotta ne mahtuvat muutamalle sivulle. Joten katsotaanpa perus- ja perussuodatustoimintoja.

Tuleeko jatkoa? Ehkä siksi, että kiista Radeon 9600- ja X800-korttien äskettäin löydetystä briline-suodatuksesta ei väisty. ATi:lle tulee antaa kiitosta siitä, että korttien kuvanlaatu ei visuaalisesti kärsi tästä suodatuksesta. Meillä ei ainakaan ole päinvastaisia ​​esimerkkejä. Vaikka briline-suodatus ilmenee keinotekoisesti luodussa laboratorioolosuhteet. Samaan aikaan ATi ei salli täyttä trilineaarista suodatusta mainituille korteille, oli se sitten adaptiivinen tai ei. Uuden suodatuksen vuoksi testien suorituskykyarvot eivät näytä X800:n koko potentiaalia, koska FPS-arvot saadaan optimoinnin jälkeen, jonka vaikutusta nopeuteen on vaikea arvioida. Ja sana "sopeutuva" jättää katkeran jälkimaun. ATi ei antanut meille tietoja ajurin mekanismista ja on useaan otteeseen todennut, että kortti tarjoaa täyden trilineaarisen suodatuksen. Vasta edellä mainitussa julkistamisessa ATi myönsi, että suodatus oli optimoitu. Toivotaan, että muissa paikoissa ei ole sellaista "sopeutuvuuden" kuljettajaa.

Valmistajat ovat kuitenkin hitaasti mutta varmasti siirtymässä kohti hetkeä, jolloin toleranssitaso voitetaan. "Sopeutumiskyky" tai käynnistettävän sovelluksen määritelmä ei salli testiohjelmien näyttää kortin todellista suorituskykyä peleissä. Pelin kuvan laatu voi vaihdella kuljettajittain. Valmistajat voivat vapaasti leikkiä kuljettajan kanssa sen mukaan, kuinka paljon suorituskykyä markkinointiosasto tällä hetkellä tarvitsee. No, kuluttajan oikeus tietää, mitä hän todella ostaa, ei enää kiinnosta ketään täällä. Kaikki tämä jätetään medialle - antakaa heidän täyttää koulutustehtävänsä. Ja suodatustemppuja, joista keskustelimme artikkelissamme, ovat vain tunnetuimmat näistä tapauksista. Voimme vain arvailla, mitä muuta huomiomme on piilossa.

Jokainen valmistaja päättää itse, minkä tason kuvanlaatu se tarjoaa vakiona. Valmistajien tulee kuitenkin dokumentoida käyttämänsä optimoinnit, varsinkin jos ne ovat piilossa tunnetuilta vertailuarvoilta, kuten tuoreessa ATi-esimerkissä. Ratkaisu on ilmeinen: ota optimointi pois päältä! Sitten kuluttaja voi itse päättää, mikä on hänelle tärkeämpää - enemmän FPS vai parempi laatu. Et myöskään voi luottaa Microsoftiin välimiehenä. WHQL-testit eivät määrittele monia asioita, ja ne voidaan helposti ohittaa: tiedätkö sanan "adaptiivinen" merkityksen?

Tällä hetkellä tunnetut suodatusoptimoinnit
ATi nVidia
Trilineaarinen
optimointi
9600 ruplaa
X800
GF FX5xxx
(GF 6xxx)*
Kulman optimointi
anisotrooppinen suodatus
R9xxx
X800
GF 6xxx
Mukautuva
anisotrooppinen suodatus
R9xxx
X800
GF FX5xxx
GF 6xxx
Vaiheen optimointi R9xxx
X800
GF FX5xxx
LOD-optimointi R9xxx
X800(?)

Yleisesti ottaen tällaisilla keskusteluilla on etunsa: ostajat ja mahdollisesti OEM-asiakkaat alkavat kuunnella ongelmaa. Meillä ei ole epäilystäkään siitä, että hillittömän optimoinnin mania jatkuu. Pimeässä valtakunnassa ilmestyi kuitenkin valonsäde, jonka nVidia osoitti selvästi kolmilinjaisella optimoinnilla. Toivotaan seuraavia askeleita!

Tekniikat 3D-objektien näyttämiseksi henkilökohtaisten tietokoneiden näyttöjen näytöllä kehittyvät nykyaikaisten grafiikkasovittimien julkaisun myötä. Täydellisen kuvan saaminen kolmiulotteisissa sovelluksissa mahdollisimman lähelle todellista videota on laitteistokehittäjien päätehtävä ja tietokonepelien ystävien päätavoite. Tässä avuksi kutsutaan uusimman sukupolven näytönohjainkortteihin toteutettu tekniikka - anisotrooppinen suodatus peleissä.

Mikä se on?

Jokainen tietokonepelaaja haluaa värikkään kuvan avautuvan näytölle virtuaali maailma, jotta vuoren huipulle kiipeämisen jälkeen voisi tutkia maalauksellista ympäristöä; Näytön näytöllä näkyvät kohteet ovat vain mieluiten suoraan käyttäjän edessä sopivimmassa mittakaavassa, itse asiassa suurin osa kolmiulotteisista kohteista on kulmassa näkölinjaan nähden. Lisäksi erilaiset virtuaaliset tekstuurin etäisyydet näkökulmasta myös muokkaavat kohteen kokoa ja sen tekstuureja. Laskelmia kolmiulotteisen maailman näyttämisestä kaksiulotteisella näytöllä käyttävät erilaiset 3D-tekniikat, jotka on suunniteltu parantamaan visuaalista havaintoa, joista pintakuviosuodatus (anisotrooppinen tai trilineaarinen) ei ole viimeinen. Tällaisen suunnitelman suodattaminen on yksi parhaista kehityksestä tällä alueella.

Sormissa

Ymmärtääksesi, mitä anisotrooppinen suodatus antaa, sinun on ymmärrettävä teksturointialgoritmien perusperiaatteet. Kaikki kolmiulotteisen maailman esineet koostuvat "kehyksestä" (objektin kolmiulotteinen kolmiulotteinen malli) ja pinnasta (tekstuurista) - kaksiulotteisesta kuvasta, joka "venyttyy" kehyksen päälle. pienin osa tekstuurit ovat värillisiä tekselejä, se on kuin pikseleitä näytöllä, tekstuurin "tiheydestä" riippuen tekselit voivat olla erikokoisia. Koostuu värikkäistä tekseleistä koko kuva mikä tahansa esine kolmiulotteisessa maailmassa.

Näytöllä tekselit ovat vastakohtana pikseleille, joiden määrää rajoittaa käytettävissä oleva resoluutio. Vaikka virtuaalisella näkyvyysalueella voi olla lähes ääretön määrä tekselejä, käyttäjälle kuvan näyttävillä pikseleillä on kiinteä määrä. Joten näkyvien tekselien muuntaminen värillisiksi pikseleiksi hoidetaan kolmiulotteisten mallien käsittelyalgoritmilla - suodatuksella (anisotrooppinen, bilineaarinen tai trilineaarinen). Lisää kaikista tyypeistä - alla järjestyksessä, koska ne tulevat toisistaan.

keskiväri

Yksinkertaisin suodatusalgoritmi on näyttää kunkin pikselin näkökulmaa lähinnä oleva väri (Point Sampling). Se on yksinkertaista: näytön tietyn pisteen näkölinja putoaa kolmiulotteisen kohteen pinnalle, ja kuvan tekstuuri palauttaa iskupistettä lähinnä olevan tekselin värin suodattaen pois kaikki muut. Ihanteellinen yhtenäisille väripinnoille. Pienillä värieroilla se antaa myös varsin laadukkaan kuvan, mutta melko tylsän, mistä lähtien olet nähnyt samanvärisiä kolmiulotteisia esineitä? Valaistuksen varjostimet, varjot, heijastukset ja muut yksinään ovat valmiita värittämään minkä tahansa kohteen esimerkiksi peleissä joulukuusi, mitä sanoa itse tekstuureista, jotka joskus ovat taideteoksia. Jopa harmaa sieluton betoniseinä nykyaikaisissa peleissä ei ole sinulle pelkkä yksivärinen suorakulmio, se on pinta, jossa on karheutta, joskus halkeamia ja naarmuja ja muita taiteellisia elementtejä, joka tuo virtuaaliseinän näkymän mahdollisimman lähelle todellisia tai kehittäjien mielikuvituksen keksimiä seiniä. Yleisesti ottaen lähiväriä voitiin käyttää ensimmäisissä kolmiulotteisissa peleissä, mutta nyt pelaajista on tullut paljon vaativampia grafiikan suhteen. Mikä tärkeintä, värinläheinen suodatus ei vaadi lähes lainkaan laskelmia, mikä tarkoittaa, että se on erittäin taloudellinen tietokoneresurssien kannalta.

Lineaarinen suodatus

Lineaarisen algoritmin erot eivät ole kovin merkittäviä, lähimmän tekselipisteen sijasta lineaarinen suodatus käyttää 4:ää kerralla ja laskee niiden välisen keskimääräisen värin. Ainoa ongelma on, että pinnoilla, jotka ovat kulmassa näyttöön nähden, näköviiva muodostaa tekstuuriin ellipsin, kun taas lineaarinen suodatus käyttää täydellistä ympyrää valitakseen lähimmät tekselit katselukulmasta riippumatta. Neljän texelin käyttäminen yhden sijasta voi merkittävästi parantaa pintakuvioiden renderöintiä kaukana näkökulmasta, mutta ei silti tarpeeksi heijastamaan kuvaa oikein.

mip-kartoitus

Tämän tekniikan avulla voit hieman optimoida tietokonegrafiikkaa. Jokaista pintakuviota varten luodaan tietty määrä kopioita vaihtelevassa määrin yksityiskohta, kullekin yksityiskohtatasolle valitaan eri kuva, esimerkiksi pitkälle käytävälle tai suurelle salille, lähellä oleva lattia ja seinät vaativat mahdollisimman yksityiskohtaista yksityiskohtaa, kun taas kaukaisimmat kulmat peittävät vain muutaman pikselin eivätkä vaadi merkittäviä yksityiskohtia. Tämä 3D-grafiikkaominaisuus auttaa välttämään etäisten tekstuurien hämärtymistä sekä kuvan vääristymistä ja häviämistä ja toimii yhdessä suodatuksen kanssa, koska videosovitin ei suodatusta laskeessaan pysty itse päättämään mitkä tekselit ovat tärkeitä kuvan täydellisyyden kannalta ja mitkä eivät.

Bilineaarinen suodatus

Käyttämällä lineaarista suodatusta ja MIP-teksturointia yhdessä, saamme bilineaarisen algoritmin, jonka avulla voit näyttää etäällä olevat kohteet ja pinnat entistä paremmin. Samat 4 tekseliä eivät kuitenkaan anna teknologialle riittävää joustavuutta, lisäksi bilineaarinen suodatus ei peitä siirtymiä seuraavalle zoomaustasolle, joka työstää pintakuvioinnin jokaisen osan kanssa erikseen ja niiden rajat voivat olla näkyvissä. Siten päälle kaukana tai suuressa kulmassa tekstuurit ovat voimakkaasti epäselviä, mikä tekee kuvasta epäluonnollisen, ikään kuin ihmisille, joilla on likinäköisyys, ja monimutkaisia ​​kuvioita sisältävissä tekstuureissa eri resoluutioiden pintakuvioiden risteyslinjat ovat havaittavissa. Mutta olemme näytön takana, emme tarvitse likinäköisyyttä ja erilaisia ​​käsittämättömiä linjoja!

Trilineaarinen suodatus

Tämä tekniikka on suunniteltu korjaamaan kuvioiden skaalausviivojen piirustusta. Vaikka bilineaarinen algoritmi toimii jokaisen mip-kartoitustason kanssa erikseen, trilineaarinen suodatus laskee lisäksi yksityiskohtatasojen rajat. Kaiken tämän myötä RAM-muistin vaatimukset kasvavat, eikä kuvan paraneminen etäobjekteissa ole kovin havaittavissa. Tietenkin lähellä zoomaustasojen väliset rajat saavat paremman käsittelyn kuin bilineaarissa ja näyttävät harmonisemmilta ilman teräviä siirtymiä, mikä vaikuttaa kokonaisvaikutelmaan.

Anisotrooppinen suodatus

Jos lasket jokaisen näytön pikselin näkölinjan projektion tekstuuriin katselukulman mukaan, saat epäsäännöllisiä muotoja - puolisuunnikkaita. Yhdessä enemmän tekselien käyttämisen kanssa lopullisen värin laskemiseen tämä voi antaa paljon paremman tuloksen. Mitä anisotrooppinen suodatus tekee? Ottaen huomioon, että teoriassa ei ole rajoituksia käytettävien tekselien määrälle, tällainen algoritmi pystyy näyttämään rajoittamattoman laadukkaan tietokonegrafiikan millä tahansa etäisyydellä näkökulmasta ja missä tahansa kulmassa, ihanteellisesti verrattavissa todelliseen videoon. Anisotrooppinen suodatus perustuu vain henkilökohtaisten tietokonegrafiikkasovittimien teknisiin ominaisuuksiin, joita varten nykyaikaiset videopelit on suunniteltu.

Sopivat näytönohjaimet

Anisotrooppinen suodatustila on ollut mahdollista mukautetuissa videosovittimissa vuodesta 1999 lähtien tunnetuista Riva TNT- ja Voodoo-korteista. Näiden korttien huippukonfiguraatiot selviytyivät hyvin trilineaarisen grafiikan toistosta ja antoivat jopa siedettävät FPS-indikaattorit x2-anisotrooppisella suodatuksella. Viimeinen numero ilmaisee suodatuslaadun, joka puolestaan ​​​​riippuu näytön pikselin lopullisen värin laskennassa käytettyjen tekselien lukumäärästä, tässä tapauksessa käytetään jopa 8. Lisäksi laskennassa käytetään näiden tekselien kaappausaluetta, joka vastaa katselukulmaa, eikä ympyrää, kuten aiemmin lineaarisissa algoritmeissa. Nykyaikaiset näytönohjaimet pystyvät käsittelemään anisotrooppista suodatusta x16-tasolla, mikä tarkoittaa 128 texelin käyttämistä lopullisen pikselin värin laskemiseen. Tämä lupaa merkittävää parannusta pintakuvioiden renderöinnissa kaukana näkökulmasta, sekä vakavaa kuormitusta, mutta uusimman sukupolven näytönohjaimet on varustettu tarpeeksi RAM-muistilla ja moniytimisillä prosessoreilla selviytyäkseen tästä tehtävästä.

Vaikutus FPS:ään

Edut ovat selvät, mutta kuinka paljon anisotrooppinen suodatus maksaa pelaajille? Vaikutus vuoden 2010 jälkeen julkaistujen, vakavalla täytteellä varustettujen pelivideosovittimien suorituskykyyn on hyvin pieni, minkä vahvistavat riippumattomien asiantuntijoiden useissa suosittuja pelejä. Tekstuurisuodatus anisotrooppinen x16:ssa budjettikorteissa osoittaa laskua yleisindikaattori FPS 5-10%, ja sitten näytönohjaimen vähemmän tehokkaiden komponenttien takia. Tällainen nykyaikaisen laitteiston uskollisuus resurssiintensiivistä tietojenkäsittelyä kohtaan kertoo valmistajien lakkaamattomasta huolesta meitä, nöyriä pelaajia kohtaan. On täysin mahdollista, että siirtyminen anisotropian laadun seuraaville tasoille ei ole kaukana, jos vain pelinkehittäjät eivät petä meitä.

Tietenkin ei vain anisotrooppinen suodatus ole mukana kuvan laadun parantamisessa. Soittimesta päättää ottaako se käyttöön vai ei, mutta uusimpien Nvidian tai AMD:n (ATI) mallien onnellisten omistajien ei pitäisi edes ajatella tätä ongelmaa - anisotrooppisen suodatuksen asettaminen maksimitasolle ei vaikuta suorituskykyyn ja lisää todenmukaisuutta maisemiin ja laajoihin paikkoihin. muutama tilanne on vaikeampi Intelin integroitujen grafiikkaratkaisujen omistajat, koska tässä tapauksessa paljon riippuu tietokoneen RAM-muistin ominaisuuksista, sen kellotaajuudesta ja äänenvoimakkuudesta.

Vaihtoehdot ja optimointi

Suodatustyypin ja laadunvalvonta on saatavilla näytönohjaimen ohjaimia säätelevän erikoisohjelmiston ansiosta. Myös edistynyt anisotrooppinen suodatusasetus on saatavilla pelin valikoissa. Korkean resoluution käyttöönotto ja useiden näyttöjen käyttö peleissä sai valmistajat miettimään tuotteidensa nopeuttamista, muun muassa optimoimalla anisotrooppisia algoritmeja. Korttivalmistajat sisään uusimmat versiot kuljettajat toimitettu uusi teknologia kutsutaan mukautuvaksi anisotrooppiseksi suodatukseksi. Mitä se tarkoittaa? AMD:n esittelemä ja osittain viimeaikaisissa Nvidia-tuotteissa toteutettu ominaisuus mahdollistaa suodatinkertoimen pienentämisen mahdollisuuksien mukaan. Siten x2-anisotrooppinen suodatus voi käsitellä lähellä olevia tekstuureja, kun taas kaukana olevat kohteet renderöidään käyttämällä monimutkaisempia algoritmeja maksimi x16-kertoimeen saakka. Kuten tavallista, optimointi parantaa merkittävästi laadun kustannuksella, paikoin mukautuva tekniikka on altis virheille, mikä näkyy joidenkin viimeaikaisten 3D-videopelien ultra-asetuksissa.

Mitä anisotrooppinen suodatus tekee? Videosovittimien laskentatehon käyttö muihin suodatustekniikoihin verrattuna on paljon suurempi, mikä vaikuttaa suorituskykyyn. Nopeusongelma tätä algoritmia käytettäessä on kuitenkin jo pitkään ratkaistu nykyaikaisissa grafiikkasiruissa. Yhdessä muiden 3D-tekniikoiden kanssa anisotrooppinen suodatus peleissä (jotka jo esittelemme) vaikuttaa kokonaisvaikutelmaan kuvan eheydestä, varsinkin kun näytetään etäällä olevia kohteita ja pintakuvioita, jotka sijaitsevat kulmassa näyttöön nähden. Tämä on tietysti tärkein asia, jota pelaajat tarvitsevat.

Katse tulevaisuuteen

Nykyaikaiset laitteistot, joiden suorituskyky on keskimäärin ja sitä korkeampi, pystyvät melko hyvin selviytymään pelaajien vaatimuksista, joten sana kolmiulotteisten tietokonemaailmojen laadusta kuuluu nyt videopelien kehittäjille. Uusimman sukupolven näytönohjaimet eivät tue vain korkeita resoluutioita ja resurssiintensiivisiä kuvantamistekniikoita, kuten anisotrooppista tekstuurisuodatusta, vaan myös VR-tekniikoita tai usean näytön tukea.

Tekstuurit ovat olennainen osa nykypäivän 3D-sovelluksia, ilman sitä monet 3D-mallit menettävät suuren osan visuaalisuudestaan. Kuitenkaan pintakuvioiden levittäminen pinnoille ei ole täydellinen ilman artefakteja ja asianmukaisia ​​menetelmiä niiden tukahduttamiseksi. 3D-pelien maailmassa on silloin tällöin erikoistermejä, kuten "mip-mapping", "trilinear filtering" jne., jotka viittaavat vain näihin menetelmiin.

Aiemmin käsitelty aliasing-efektin erikoistapaus on teksturoitujen pintojen aliasointivaikutus, jota ei valitettavasti voida poistaa yllä kuvatuilla multi- tai supersampling-menetelmillä.

Kuvittele mustavalkoinen shakkilauta suuri, lähes ääretön koko. Oletetaan, että piirrämme tämän taulun näytölle ja katsomme sitä pienestä kulmasta. Levyn riittävän syrjäisillä alueilla solujen koko alkaa väistämättä pienentyä yhden pikselin tai pienempään kokoon. Tämä on niin kutsuttu optinen tekstuurin vähennys (pienennys). Tekstuuripikseleiden välillä alkaa "taistelu" näytön pikselien hallussapidosta, mikä johtaa epämiellyttävään välkkymiseen, joka on yksi alias-efektin lajikkeista. Näytön resoluution (todellinen tai tehollinen) lisääminen auttaa vain vähän, koska tekstuurin yksityiskohdat jäävät silti pikselit pienemmiksi riittävän kaukana olevissa kohteissa.

Toisaalta meitä lähimpänä olevat taulun osat vievät suuren näyttöalueen ja näet valtavia tekstuuripikseleitä. Tätä kutsutaan optiseksi tekstuurin suurennukseksi. Vaikka tämä ongelma ei olekaan niin akuutti, siihen on myös puututtava kielteisten vaikutusten vähentämiseksi.

Tekstuuriongelmien ratkaisemiseksi käytetään ns. tekstuurisuodatusta. Jos ymmärrät kolmiulotteisen objektin piirtämisprosessin päällekkäisellä tekstuurilla, voit nähdä, että pikselin värin laskenta menee ikään kuin "päinvastoin" - ensin löydetään näytön pikseli, johon objektin jokin kohta heijastetaan, ja sitten tähän kohtaan löydetään kaikki siihen putoavat pintakuviopikselit. Tekstuuripikseleiden valintaa ja niiden yhdistämistä (keskiarvoista) näytön pikselin lopullisen värin saamiseksi kutsutaan pintakuviosuodatukseksi.

Tekstuuriprosessin aikana jokaiselle ruudun pikselille määrätään koordinaatti tekstuurin sisällä, eikä tämä koordinaatti välttämättä ole kokonaisluku. Lisäksi pikseli vastaa pintakuviointikuvassa jotakin aluetta, joka voi sisältää useita pikseleitä tekstuurista. Kutsumme tätä aluetta tekstuurissa olevan pikselin kuvaksi. Levymme läheisillä osilla näytön pikselistä tulee paljon pienempi kuin pintakuviopikseli ja se on ikään kuin sen sisällä (kuva on pintakuviopikselin sisällä). Etäisillä päinvastoin jokainen pikseli saa suuri määrä pintakuviopisteet (kuva sisältää useita pintakuviopisteitä). Pikselikuvassa voi olla eri muotoinen ja yleisessä tapauksessa on mielivaltainen nelikulmio.

Harkitse erilaisia ​​menetelmiä tekstuurisuodatus ja niiden muunnelmat.

Lähin naapuri

Tässä yksinkertaisimmassa menetelmässä lähimmän vastaavan pintakuviopikselin väri valitaan yksinkertaisesti pikselin väriksi. Tämä menetelmä on nopein, mutta myös vähiten laadukas. Itse asiassa tämä ei ole edes erityinen suodatusmenetelmä, vaan yksinkertaisesti tapa valita ainakin jokin pintakuviopikseli, joka vastaa näytön pikseliä. Sitä käytettiin laajalti ennen laitteistokiihdyttimien tuloa, ja niiden laajan käytön myötä tuli mahdolliseksi käyttää parempia menetelmiä.

Bilineaarinen suodatus (bilineaarinen)

Bilineaarinen suodatus löytää neljä pintakuviopikseliä, jotka ovat lähinnä nykyistä näyttöpistettä, ja tuloksena oleva väri määräytyy näiden pikselien värien sekoittamisen tuloksena jossain suhteessa.

Lähin naapurin suodatus ja bilineaarinen suodatus toimivat varsin hyvin, kun ensinnäkin tekstuurin pienennysaste on pieni, ja toiseksi, kun näemme tekstuurin suorassa kulmassa, ts. edestä. Mihin se liittyy?

Jos otamme huomioon, kuten yllä on kuvattu, pintakuviossa olevan näytön pikselin "kuvaa", niin voimakkaan pienennyksen tapauksessa se sisältää paljon pintakuviopikseleitä (jopa kaikkiin pikseleihin!). Lisäksi, jos katsomme tekstuuria kulmasta, tämä kuva on huomattavasti pitkänomainen. Molemmissa tapauksissa kuvatut menetelmät toimivat huonosti, koska suodatin ei "kaappaa" vastaavia pintakuviopikseleitä.

Näiden ongelmien ratkaisemiseksi käytetään niin kutsuttua mip-kartoitusta ja anisotrooppista suodatusta.

mip-kartoitus

Merkittävällä optisella vähennyksellä näyttöpiste voi vastata melko paljon pintakuviopikseleitä. Tämä tarkoittaa, että jopa parhaan suodattimen käyttöönotto vaatii paljon aikaa kaikkien pisteiden keskiarvon laskemiseen. Ongelma voidaan kuitenkin ratkaista, jos luomme ja tallennamme tekstuurista versioita, joissa arvot keskiarvoistetaan etukäteen. Ja pikselin renderöintivaiheessa etsi haluamasi versio alkuperäisestä tekstuurista ja ota arvo siitä.

Termi mipmap tulee latinan sanasta multum in parvo, mikä tarkoittaa paljon vähässä. Tätä tekniikkaa käytettäessä grafiikkakiihdytin muistiin tallennetaan pintakuvion lisäksi sarja pienennettyjä kopioita tekstuurista, jolloin jokainen uusi kopio on tasan puolet edellisestä. Nuo. 256 x 256 pintakuviolle tallennetaan lisäksi 128 x 128, 64 x 64 jne., enintään 1 x 1 kokoisia kuvia.

Seuraavaksi kullekin pikselille valitaan sopiva mipmap-taso (mitä suurempi pikselin "kuva" on tekstuurissa, sitä pienempi mipmap otetaan). Lisäksi mipmapin arvoista voidaan laskea keskiarvo bilineaarisesti tai lähimmän naapurin menetelmällä (kuten yllä on kuvattu) ja lisäksi suoritetaan suodatus mipmapin vierekkäisten tasojen välillä. Tällaista suodatusta kutsutaan trilineaariseksi. Se antaa erittäin laadukkaita tuloksia ja sitä käytetään laajasti käytännössä.


Kuva 9 mipmap-tasot

Ongelma pikselin "venyneessä" kuviossa on kuitenkin edelleen olemassa. Tästä syystä lautamme näyttää suurelta etäisyydeltä erittäin sumealta.

Anisotrooppinen suodatus

Anisotrooppinen suodatus on tekstuurin suodatusprosessi, joka ottaa erityisesti huomioon pintakuvion venyneen pikselikuvan tapauksen. Itse asiassa nelikulmaisen suodattimen (kuten bilineaarisessa suodatuksessa) sijasta käytetään pitkänomaista, mikä mahdollistaa halutun värin valitsemisen näytön pikselille tehokkaammin. Tällaista suodatusta käytetään yhdessä mipmappingin kanssa ja se antaa erittäin laadukkaita tuloksia. On kuitenkin myös haittoja: anisotrooppisen suodatuksen toteutus on melko monimutkaista, ja kun se otetaan käyttöön, vetonopeus laskee merkittävästi. Anisotrooppista suodatusta tukevat uusimman sukupolven NVidia- ja ATI-grafiikkasuorittimet. Lisäksi erilaisella anisotropiatasolla - mitä korkeampi tämä taso, sitä enemmän "pidennettyjä" pikselikuvia voidaan käsitellä oikein ja sitä parempi on niiden laatu.

Suodattimen vertailu

Tulos on seuraava: pintakuvioalias-artefaktien estämiseksi laitteisto tukee useita suodatusmenetelmiä, jotka eroavat laadultaan ja nopeudeltaan. Yksinkertaisin suodatusmenetelmä on lähin naapuri -menetelmä (joka ei itse asiassa käsittele artefakteja, vaan yksinkertaisesti täyttää pikselit). Tällä hetkellä bilineaarista suodatusta käytetään useimmiten yhdessä mip-kartoituksen tai trilineaarisen suodatuksen kanssa. SISÄÄN Viime aikoina GPU:t alkoivat tukea korkealaatuista suodatustilaa - anisotrooppista suodatusta.

Puskurikartoitus

Bump mapping on eräänlainen graafinen erikoistehoste, joka on suunniteltu antamaan vaikutelma "karkeista" tai kuoppaisista pinnoista. Viime aikoina bump-kartoituksen käytöstä on tullut melkein standardi pelisovelluksissa.

Bump-kartoituksen perusideana on käyttää tekstuureja hallitsemaan valon vuorovaikutusta kohteen pinnan kanssa. Näin voit lisätä pieniä yksityiskohtia lisäämättä kolmioiden määrää. Luonnossa erottelemme pienet pinnan epäsäännöllisyydet varjoista: mikä tahansa tuberkkeli on toiselta puolelta vaalea ja toisaalta tumma. Itse asiassa silmä ei ehkä pysty erottamaan pinnan muodon muutoksia. Tätä tehostetta käytetään bump-kartoitustekniikassa. Yksi tai useampi lisätekstuuri levitetään objektin pintaan ja niitä käytetään laskemaan objektin pisteiden valaistus. Nuo. esineen pinta ei muutu ollenkaan, syntyy vain illuusio epäsäännöllisyydestä.

On olemassa useita menetelmiä töyssykartoittamiseen, mutta ennen kuin pääsemme niihin, meidän on selvitettävä, kuinka määritellään pinnan kuoppia. Kuten edellä mainittiin, tähän käytetään ylimääräisiä tekstuureja, ja ne voivat olla erilaisia:

Normaali kartta. Tässä tapauksessa jokainen lisätekstuurin pikseli tallentaa vektorin, joka on kohtisuorassa pintaan nähden (normaali), joka on koodattu väriksi. Valaistuksen laskemiseen käytetään normaaleja.

Siirtymä kartta. Siirtymäkartta on harmaasävytekstuuri, jonka jokainen pikseli tallentaa poikkeaman alkuperäisestä pinnasta.

3D-mallisuunnittelijat valmistelevat nämä pintakuviot yhdessä geometrian ja pohjakuvioiden kanssa. On myös ohjelmia, joiden avulla voit saada normaali- tai siirtymäkartat automaattisesti.

Ennalta laskettu törmäyskartoitus

Tekstuurit, jotka tallentavat tietoa kohteen pinnasta, luodaan etukäteen, ennen renderöintivaihetta, tummentamalla joitain kohteen tekstuurin (ja siten itse pinnan) kohtia ja kirkastamalla muita. Lisäksi piirtämisen aikana käytetään säännöllistä tekstuuria.

Tämä menetelmä ei vaadi algoritmisia temppuja piirtämisen aikana, mutta valitettavasti pintojen valaistuksessa ei tapahdu muutoksia valonlähteiden asentoja tai kohteen liikkeessä. Ja ilman tätä ei voida luoda todella onnistunutta epätasaisen pinnan simulaatiota. Samanlaisia ​​menetelmiä käytetään kohtauksen staattisissa osissa, usein tasoarkkitehtuurissa jne.

Kohokuvioinen kuoppakartoitus

Tätä tekniikkaa käytettiin ensimmäisissä näytönohjainprosessoreissa (NVidia TNT, TNT2, GeForce). Objektille luodaan siirtymäkartta. Piirustus tapahtuu kahdessa vaiheessa. Ensimmäisessä vaiheessa siirtymäkartta lisätään pikseli pikseliltä itseensä. Tämä siirtää toista kopiota pienen matkan valonlähteen suuntaan. Tässä tapauksessa saadaan seuraava vaikutus: positiiviset eroarvot määrittävät valaistut pikselit, negatiiviset arvot määrittävät varjossa olevat pikselit. Näitä tietoja käytetään muuttamaan päätekstuuripikseleiden väriä vastaavasti.

Kohokuvioitu töyhtymäkartoitus ei vaadi laitteistoa, joka tukee pikselien varjostimia, mutta se ei toimi hyvin suhteellisen suurille pinnan epäsäännöllisyyksille. Myöskään esineet eivät aina näytä vakuuttavilta, se riippuu paljon kulmasta, josta katsot pintaa.

Pikselivirhekartoitus

Pixel Bump Mapping on tällä hetkellä tällaisten teknologioiden kehityksen huippu. Tässä tekniikassa kaikki lasketaan mahdollisimman rehellisesti. Pikselivarjostimelle annetaan syötteenä normaali kartta, josta otetaan normaaliarvot kullekin kohteen pisteelle. Sitten normaaliarvoa verrataan valonlähteen suuntaan ja lasketaan väriarvo.

Tätä tekniikkaa tuetaan laitteistoissa alkaen GeForce2-tason näytönohjaimista.

Olemme siis nähneet, kuinka voit käyttää ihmisen maailmankuvan ominaisuuksia parantaaksesi 3D-pelien luomien kuvien laatua. Onnelliset uusimman sukupolven NVidia GeForce, ATI Radeon -näytönohjainkorttien omistajat (kuitenkin, eikä vain uusin) voivat pelata itsenäisesti joillakin kuvatuista tehosteista, koska jakamis- ja anisotrooppiset suodatusasetukset ovat saatavilla ohjainvaihtoehdoista. Pelien kehittäjät ottavat onnistuneesti käyttöön nämä ja muut menetelmät, jotka eivät kuulu tämän artikkelin soveltamisalaan. Kaiken kaikkiaan elämä paranee. Jotain muuta tulee olemaan!