Kas yra tekstūrų filtravimas žaidimuose? Filtravimas yra anizotropinis. Praktinis plėtinių panaudojimas: anizotropinis filtravimas

Šiuolaikiniai žaidimai naudoja vis daugiau grafinių efektų ir vaizdą gerinančių technologijų. Tačiau kūrėjai paprastai nesivargina paaiškinti, ką tiksliai jie daro. Kai neturite galingiausio kompiuterio, turite paaukoti kai kurias galimybes. Pabandykime pažvelgti į tai, ką reiškia dažniausiai pasitaikančios grafikos parinktys, kad geriau suprastume, kaip atlaisvinti kompiuterio išteklius su minimaliu poveikiu grafikai.

Anizotropinis filtravimas

Kai monitoriuje bet kokia tekstūra rodoma ne originalaus dydžio, reikia į jį įterpti papildomų pikselių arba, atvirkščiai, pašalinti papildomus. Tam naudojama technika, vadinama filtravimu.

Dvilinijinis filtravimas yra paprasčiausias algoritmas, kuriam reikia mažesnės skaičiavimo galios, tačiau taip pat gaunami prasčiausi rezultatai. Trilinear suteikia aiškumo, bet vis tiek sukuria artefaktus. Pažangiausias metodas, pašalinantis pastebimus iškraipymus objektuose, kurie yra stipriai pasvirę fotoaparato atžvilgiu, yra anizotropinis filtravimas. Skirtingai nuo dviejų ankstesnių metodų, jis sėkmingai kovoja su gradacijos efektu (kai kai kurios tekstūros dalys yra neryškesnės nei kitos, o riba tarp jų tampa aiškiai matoma). Naudojant bilinear arba trilinear filtravimą, didėjant atstumui tekstūra tampa vis labiau neryški, tačiau anizotropinis filtravimas neturi šio trūkumo.

Atsižvelgiant į apdorojamų duomenų kiekį (ir scenoje gali būti daug didelės raiškos 32 bitų tekstūrų), anizotropinis filtravimas ypač reikalauja atminties pralaidumo. Eismą pirmiausia galima sumažinti naudojant tekstūros suspaudimą, kuris dabar naudojamas visur. Anksčiau, kai tai nebuvo taip dažnai praktikuojama, o vaizdo atminties pralaidumas buvo daug mažesnis, anizotropinis filtravimas žymiai sumažino kadrų skaičių. Šiuolaikinėse vaizdo plokštėse tai beveik neturi įtakos fps.

Anizotropinis filtravimas turi tik vieną nustatymą – filtro koeficientą (2x, 4x, 8x, 16x). Kuo jis aukštesnis, tuo aiškesnės ir natūralesnės tekstūros atrodo. Paprastai didelės vertės maži artefaktai matomi tik atokiausiuose pakreiptų tekstūrų taškuose. 4x ir 8x reikšmių paprastai visiškai pakanka, kad atsikratytumėte liūto dalies vaizdo iškraipymo. Įdomu tai, kad perėjus nuo 8x iki 16x, net teoriškai našumo bauda bus gana maža, nes papildomo apdorojimo reikės tik nedaugeliui anksčiau nefiltruotų pikselių.

Shaders

Shaders yra mažos programos, kurios gali atlikti tam tikras manipuliacijas su 3D scena, pavyzdžiui, pakeisti apšvietimą, pritaikyti tekstūrą, pridėti papildomo apdorojimo ir kitus efektus.

Shaders skirstomas į tris tipus: viršūnių šešėliuotojai veikia su koordinatėmis, geometrijos šešėliuotojai gali apdoroti ne tik atskiras viršūnes, bet ir ištisas geometrines figūras, susidedančias iš daugiausiai iš 6 viršūnių, pikselių šešėliuotojai dirba su atskirais pikseliais ir jų parametrais.

Shaders dažniausiai naudojami naujiems efektams kurti. Be jų operacijų, kurias kūrėjai galėtų naudoti žaidimuose, rinkinys yra labai ribotas. Kitaip tariant, pridėjus šešėlių buvo galima gauti naujų efektų, kurie pagal numatytuosius nustatymus nebuvo įtraukti į vaizdo plokštę.

Shaderiai veikia labai produktyviai lygiagrečiu režimu, todėl šiuolaikiniai grafikos adapteriai turi tiek daug srauto procesorių, kurie dar vadinami šešėliais. Pavyzdžiui, GeForce GTX 580 jų turi net 512.

Paralakso kartografavimas

Paralakso žemėlapių sudarymas yra modifikuota gerai žinomo taškinio atvaizdavimo technikos versija, naudojama tekstūroms suteikti reljefo. Paralakso žemėlapių sudarymas nesukuria 3D objektų įprasta to žodžio prasme. Pavyzdžiui, žaidimo scenoje grindys arba siena atrodys grubios, o iš tikrųjų yra visiškai plokščios. Reljefo efektas čia pasiekiamas tik manipuliuojant tekstūromis.

Šaltinio objektas nebūtinai turi būti plokščias. Metodas veikia su įvairiais žaidimo objektais, tačiau jį naudoti pageidautina tik tais atvejais, kai sklandžiai keičiasi paviršiaus aukštis. Staigūs pakeitimai apdorojami neteisingai ir ant objekto atsiranda artefaktų.

Paralakso žemėlapių sudarymas žymiai sutaupo kompiuterio skaičiavimo išteklius, nes naudojant analoginius objektus su vienodai detalia 3D struktūra, vaizdo adapterių našumo nepakaktų scenoms atvaizduoti realiuoju laiku.

Poveikis dažniausiai naudojamas akmens grindims, sienoms, plytoms ir plytelėms.

Anti-aliasing

Prieš „DirectX 8“ slapyvardžio panaikinimas žaidimuose buvo atliktas naudojant „SuperSampling Anti-Aliasing“ (SSAA), taip pat žinomą kaip „Full-Scene Anti-Aliasing“ (FSAA). Dėl jo naudojimo labai sumažėjo našumas, todėl išleidus DX8 jis buvo nedelsiant atsisakytas ir pakeistas Multisample Anti-Aliasing (MSAA). Nepaisant to, kad šis metodas davė prastesnių rezultatų, jis buvo daug produktyvesnis nei jo pirmtakas. Nuo tada atsirado pažangesnių algoritmų, tokių kaip CSAA.

Atsižvelgiant į tai, kad per pastaruosius kelerius metus vaizdo plokščių našumas pastebimai išaugo, tiek AMD, tiek NVIDIA vėl grąžino SSAA technologijos palaikymą savo greitintuvams. Tačiau šiuolaikiniuose žaidimuose jo naudoti nebus galima ir dabar, nes kadrų/s skaičius bus labai mažas. SSAA veiks tik ankstesnių metų projektuose arba dabartiniuose, tačiau su kukliais kitų grafinių parametrų nustatymais. AMD įdiegė SSAA palaikymą tik DX9 žaidimams, tačiau NVIDIA SSAA veikia ir DX10 bei DX11 režimais.

Lyginimo principas labai paprastas. Prieš rodant kadrą ekrane, tam tikra informacija apskaičiuojama ne pagal savo gimtąją skiriamąją gebą, o padidinta viena ir dviejų kartotiniu. Tada rezultatas sumažinamas iki reikiamo dydžio, o tada „kopėčios“ išilgai objekto kraštų tampa mažiau pastebimos. Kuo didesnis originalus vaizdas ir išlyginimo koeficientas (2x, 4x, 8x, 16x, 32x), tuo mažiau bus modelių nelygybių. MSAA, skirtingai nei FSAA, išlygina tik objektų kraštus, o tai žymiai sutaupo vaizdo plokštės resursus, tačiau ši technika gali palikti artefaktus daugiakampių viduje.

Anksčiau „Anti-Aliasing“ žaidimuose visada žymiai sumažindavo kadrų skaičių, o dabar tai daro tik nežymiai įtakos kadrų skaičiui, o kartais neturi jokio poveikio.

Teseliacija

Naudojant teseliaciją kompiuteriniame modelyje, daugiakampių skaičius padidėja neribotu skaičiumi kartų. Norėdami tai padaryti, kiekvienas daugiakampis yra padalintas į kelis naujus, kurie yra maždaug taip pat, kaip ir pradinis paviršius. Šis metodas leidžia lengvai padidinti paprastų 3D objektų detalumą. Tačiau tuo pačiu padidės ir kompiuterio apkrova, o kai kuriais atvejais negalima atmesti ir nedidelių artefaktų.

Iš pirmo žvilgsnio teseliaciją galima supainioti su paralakso kartografavimu. Nors tai yra visiškai skirtingi efektai, nes teseliacija iš tikrųjų keičia geometrinę objekto formą, o ne tik imituoja reljefą. Be to, jis gali būti naudojamas beveik bet kokiam objektui, o paralakso žemėlapių naudojimas yra labai ribotas.

„Tesselation“ technologija kine žinoma nuo devintojo dešimtmečio, tačiau žaidimuose ji pradėta palaikyti visai neseniai, o tiksliau po to, kai grafikos greitintuvai pagaliau pasiekė reikiamą našumo lygį, kuriuo ją galima atlikti realiuoju laiku.

Kad žaidimas galėtų naudoti teseliaciją, jam reikia vaizdo plokštės, palaikančios DirectX 11.

Vertikali sinchronizacija

V-Sync yra žaidimo kadrų sinchronizavimas su monitoriaus vertikalaus nuskaitymo dažniu. Jo esmė slypi tame, kad tuo metu, kai atnaujinamas vaizdas jame, ekrane rodomas pilnai apskaičiuotas žaidimo kadras. Svarbu, kad kitas kadras (jei jis jau paruoštas) taip pat atsirastų ne vėliau ir ne anksčiau, nei pasibaigs ankstesnio išvestis ir prasidės kitas.

Jei monitoriaus atnaujinimo dažnis yra 60 Hz, o vaizdo plokštė turi laiko atvaizduoti 3D siužetą su bent tokiu pat kadrų skaičiumi, kiekvieną kartą atnaujinant monitorių bus rodomas naujas kadras. Kitaip tariant, 16,66 ms intervalu vartotojas ekrane matys visą žaidimo scenos atnaujinimą.

Reikėtų suprasti, kad įjungus vertikalią sinchronizaciją, žaidimo fps negali viršyti monitoriaus vertikalaus nuskaitymo dažnio. Jei kadrų skaičius yra mažesnis už šią reikšmę (mūsų atveju, mažesnis nei 60 Hz), tai, norint išvengti našumo nuostolių, būtina aktyvuoti trigubą buferį, kuriame kadrai apskaičiuojami iš anksto ir saugomi trijuose atskiruose buferiuose, kuri leidžia juos dažniau siųsti į ekraną.

Pagrindinė vertikalaus sinchronizavimo užduotis yra pašalinti pasislinkusio kadro efektą, kuris atsiranda, kai apatinė ekrano dalis užpildoma vienu kadru, o viršutinė dalis – kitu, pasislinkusiu ankstesnio atžvilgiu.

Po apdorojimo

Tai yra bendras visų efektų, kurie dedami ant paruošto visiškai atvaizduotos 3D scenos kadro (kitaip tariant, dvimačio vaizdo), kad pagerintų galutinio vaizdo kokybę, pavadinimas. Papildomas apdorojimas naudoja pikselių šešėliuotojus ir naudojamas tais atvejais, kai papildomiems efektams reikia išsamios informacijos apie visą sceną. Tokie metodai negali būti taikomi atskirai atskiriems 3D objektams, kad kadre neatsirastų artefaktų.

Didelis dinaminis diapazonas (HDR)

Efektas, dažnai naudojamas žaidimų scenose su kontrastingu apšvietimu. Jei viena ekrano sritis yra labai šviesi, o kita labai tamsi, kiekvienoje srityje prarandama daug detalių ir jie atrodo monotoniškai. HDR suteikia daugiau gradacijos kadrui ir suteikia daugiau detalių scenoje. Norėdami jį naudoti, paprastai turite dirbti su didesniu spalvų asortimentu, nei gali suteikti standartinis 24 bitų tikslumas. Preliminarūs skaičiavimai atliekami labai tiksliai (64 arba 96 bitai), ir tik paskutiniame etape vaizdas pakoreguojamas iki 24 bitų.

HDR dažnai naudojamas regėjimo adaptacijos efektui suvokti, kai žaidimų herojus iš tamsaus tunelio iškyla ant gerai apšviesto paviršiaus.

Bloom

„Bloom“ dažnai naudojamas kartu su HDR, be to, jis turi gana artimą giminaitį – „Glow“, todėl šios trys technikos dažnai painiojamos.

„Bloom“ imituoja efektą, kuris matomas fotografuojant labai ryškias scenas įprastais fotoaparatais. Gautame vaizde atrodo, kad intensyvi šviesa užima daugiau tūrio nei turėtų ir „užlipa“ ant objektų, nors yra už jų. Naudojant Bloom, ant objektų kraštų gali atsirasti papildomų artefaktų spalvotų linijų pavidalu.

Filmas Grūdas

Grūdai yra artefaktas, atsirandantis analoginėje televizijoje su prastu signalu, senose magnetinėse vaizdo juostose arba nuotraukose (ypač skaitmeniniuose vaizduose, darytose esant silpnam apšvietimui). Žaidėjai dažnai išjungia šį efektą, nes jis šiek tiek gadina vaizdą, o ne jį pagerina. Norėdami tai suprasti, kiekviename režime galite paleisti Mass Effect. Kai kuriuose siaubo filmuose, pavyzdžiui, Silent Hill, triukšmas ekrane, priešingai, prideda atmosferos.

Judesio suliejimas

Motion Blur – vaizdo suliejimo efektas, kai fotoaparatas greitai juda. Jis gali būti sėkmingai naudojamas, kai scenai reikia suteikti daugiau dinamikos ir greičio, todėl jis ypač paklausus lenktynių žaidimuose. Šauliuose suliejimo naudojimas ne visada suvokiamas vienareikšmiškai. Tinkamai naudojant „Motion Blur“ galima suteikti kinematografiškumo tam, kas vyksta ekrane.

Šis efektas taip pat padės, jei reikia, užmaskuoti mažą kadrų dažnį ir suteikti žaidimo sklandumo.

SSAO

Aplinkos okliuzija – tai technika, naudojama siekiant paversti sceną fotorealistiška sukuriant patikimesnį joje esančių objektų apšvietimą, atsižvelgiant į kitus netoliese esančius objektus, turinčius savo šviesos sugerties ir atspindžio ypatybes.

„Screen Space Ambient Occlusion“ yra modifikuota „Ambient Occlusion“ versija, kuri taip pat imituoja netiesioginį apšvietimą ir šešėlį. SSAO atsirado dėl to, kad esant dabartiniam GPU našumo lygiui, Ambient Occlusion negalėjo būti naudojamas scenoms pateikti realiuoju laiku. Padidėjęs SSAO našumas kainuoja prastesnę kokybę, tačiau net ir to pakanka, kad vaizdas būtų tikroviškesnis.

SSAO veikia pagal supaprastintą schemą, tačiau turi daug privalumų: metodas nepriklauso nuo scenos sudėtingumo, nenaudoja RAM, gali veikti dinamiškose scenose, nereikalauja išankstinio kadrų apdorojimo ir įkelia tik grafikos adapterį. nenaudodami procesoriaus resursų.

Cel šešėlis

Žaidimai su Cel šešėliavimo efektu pradėti kurti 2000 m., o pirmiausia jie pasirodė konsolėse. Kompiuteriuose ši technika išties išpopuliarėjo tik po poros metų, išleidus pripažintą šaudyklę XIII. Cel shading pagalba kiekvienas kadras praktiškai virsta ranka pieštu piešiniu ar fragmentu iš vaikiško animacinio filmuko.

Komiksai kuriami panašiu stiliumi, todėl technika dažnai naudojama su jais susijusiuose žaidimuose. Tarp naujausių gerai žinomų leidimų yra šaudyklė „Borderlands“, kurioje „Cel“ šešėliai matomi plika akimi.

Technologijos ypatybės yra riboto spalvų rinkinio naudojimas, taip pat sklandžių gradientų nebuvimas. Efekto pavadinimas kilęs iš žodžio Cel (Celluloid), t.y. skaidrios medžiagos (plėvelės), ant kurios piešiami animaciniai filmai.

Lauko gylis

Lauko gylis yra atstumas tarp artimųjų ir tolimųjų erdvės kraštų, kuriuose visi objektai bus sufokusuoti, o likusi scenos dalis bus neryški.

Tam tikru mastu lauko gylį galima stebėti tiesiog sufokusavus objektą arti prieš akis. Viskas, kas yra už jo, bus neryški. Taip pat yra priešingai: jei sutelksite dėmesį į tolimus objektus, viskas priešais juos bus neryški.

Kai kuriose nuotraukose galite pamatyti perdėtą lauko gylio poveikį. Tai suliejimo laipsnis, kurį dažnai bandoma imituoti 3D scenose.

Žaidimuose, kuriuose naudojamas lauko gylis, žaidėjas paprastai jaučia stipresnį buvimo jausmą. Pavyzdžiui, žvelgdamas kur nors per žolę ar krūmus, jis mato tik mažus fokuso scenos fragmentus, o tai sukuria buvimo iliuziją.

Našumo poveikis

Norėdami sužinoti, kaip tam tikrų parinkčių įjungimas veikia našumą, naudojome žaidimų etaloną Heaven DX11 Benchmark 2.5. Visi bandymai buvo atlikti naudojant Intel Core2 Duo e6300, GeForce GTX460 sistemą 1280x800 pikselių raiška (išskyrus vertikalią sinchronizaciją, kur skiriamoji geba buvo 1680x1050).

Kaip jau minėta, anizotropinis filtravimas praktiškai neturi įtakos kadrų skaičiui. Skirtumas tarp išjungtos anizotropijos ir 16x yra tik 2 kadrai, todėl visada rekomenduojame jį nustatyti maksimaliai.

Anti-alias „Heaven Benchmark“ sumažino kadrų per sekundę skaičių žymiai daugiau, nei tikėjomės, ypač sunkiausiu 8 kartų režimu. Tačiau kadangi pakanka 2x, kad vaizdas būtų pastebimai pagerintas, rekomenduojame pasirinkti šią parinktį, jei žaisti aukštesniais lygiais yra nepatogu.

Tesellation, skirtingai nei ankstesni parametrai, kiekviename žaidime gali įgyti savavališką reikšmę. „Heaven Benchmark“ vaizdas be jo gerokai pablogėja, o maksimaliu lygiu, atvirkščiai, tampa šiek tiek nerealus. Todėl turėtumėte nustatyti tarpines vertes - vidutines arba normalias.

Vertikaliam sinchronizavimui pasirinkta didesnė skiriamoji geba, kad kadrų per sekundę neribotų vertikalus ekrano atnaujinimo dažnis. Kaip ir tikėtasi, kadrų skaičius beveik per visą bandymą su įjungtu sinchronizavimu išliko maždaug 20 arba 30 kadrų per sekundę. Taip yra dėl to, kad jie rodomi vienu metu atnaujinant ekraną, o esant 60 Hz skenavimo dažniui, tai galima padaryti ne su kiekvienu impulsu, o tik kas sekundę (60/2 = 30 kadrų/s) ar trečią. (60/3 = 20 kadrų/s). Išjungus „V-Sync“, kadrų skaičius padidėjo, tačiau ekrane pasirodė būdingi artefaktai. Trigubas buferis neturėjo jokios teigiamos įtakos scenos sklandumui. Taip gali būti dėl to, kad vaizdo plokštės tvarkyklės nustatymuose nėra parinkties priverstinai išjungti buferį, o įprastą išjungimą etalonas ignoruoja ir vis tiek naudoja šią funkciją.

Jei „Heaven Benchmark“ būtų žaidimas, tada esant maksimaliems nustatymams (1280x800; AA - 8x; AF - 16x; Tessellation Extreme) būtų nepatogu žaisti, nes 24 kadrų tam tikrai neužtenka. Su minimaliu kokybės praradimu (1280 × 800; AA - 2x; AF - 16x, Tesselation Normal) galite pasiekti priimtinesnį 45 kadrų per sekundę greitį.

Tekstūravimo algoritmų aprašymas: tekstūros filtravimas

Tekstūros filtravimas

Pastaruoju metu įmonės, užsiimančios 3D kompiuterinės grafikos kūrimu, nuolat siekia didinti kompiuterinio atvaizdavimo detales ir vaizdo kokybę. Nuolat kuriamos naujos technologijos ir 3D atvaizdavimo architektūros, tobulinami ir atnaujinami glaudinimo algoritmai, siekiant padidinti atminties pralaidumą, taip pat keičiasi atminties architektūra. Deja, atotrūkis tarp pažangių 3D grafikos idėjų ir įprastų kompiuterių yra gana didelis: realizmas šiuolaikiniuose žaidimuose ir kt. pagamintas naudojant prieš 1-2 metus sukurtas technologijas. Be to, paprastų kompiuterių galingumas yra labai ribotas, todėl žaidimams naudojami gana paprasti algoritmai, kuriuos ir aptarsime šiame straipsnyje: tai yra tekstūravimas, o plačiau – tekstūrų filtravimas.

Turėdami idealų kompiuterį, kurio našumas yra daug geresnis už dabartinį, galėtume rodyti vaizdą realiuoju laiku su labai tikrovišku atvaizdavimu. Būtų galima suskaičiuoti milijonus, net milijardus pikselių ir kiekvienam iš jų nustatyti savo spalvą – tokiu atveju nuotraukos tiesiog negalima atskirti nuo tikro vaizdo įrašo. Deja, kol kas tai tik svajonės: esamiems kompiuteriams vis dar per sunku vienu metu apdoroti objektų piešinį judant ir pan. Be to, vis dar katastrofiškai trūksta atminties pralaidumo. Siekiant užtikrinti gerą 3D programų kokybę, kuriamos technologijos, supaprastinančios vaizdų atvaizdavimo procesą.

Viena iš dažniausiai naudojamų technologijų, kurios gana kokybiškai supaprastina vaizdo skaičiavimus, yra tekstūravimas. Tekstūra yra 2D vaizdas, pritaikytas 3D objektui arba bet kuriam paviršiui. Paimkime šią situaciją kaip pavyzdį: esate kūrėjas ir norite, kad vartotojas matytų plytų sieną. Sukuriamas 3D sienos karkasas, o plytas galite pasirinkti atskirai. Dabar nufotografuojame 2D plytą ir dedame ant plytos 3D rėmelyje ir taip toliau – visą sieną. Rezultatas yra įprasta 3D siena, o grafiniam lustui nereikia piešti ir skaičiuoti kiekvieno pikselio – jis apskaičiuoja 3D kadro, prie kurio yra pritvirtintas 2D vaizdas, koordinates.

Yra dar viena tekstūravimo koncepcija, kurią reikėtų aptarti. Perdengiant 2D vaizdą, jis yra padalintas į daugybę spalvotų fragmentų. Tai daroma siekiant padidinti objekto mastelį – tekstūra yra 2 matė, o 3 matas objektas turi pasikeisti artėjant ar tolstant. Tekstūra taip pat turi keistis, kad išlaikytų tikroviškumą ir kokybę. Taigi, tekstūra yra padalinta į daugybę spalvotų fragmentų, kurie vadinami tekseliais (tekstūros elementais). Ateityje, pavyzdžiui, artėjant prie objekto, nereikia perkrauti naujos tekstūros: tekseliai paimami iš pradinės tekstūros ir padidinami. Žinoma, kokybė prarandama, tačiau ji išlieka gana aukšto lygio, be to, taikant šį metodą grafikos procesorius ir atmintis yra gerokai apkraunami.

MIP žemėlapių sudarymas

Judėjimas yra visų rodomų objektų savybė; Net jei pats objektas yra nejudantis, jis vis tiek keičiasi, kai dėl jo judėjimo keičiasi veikėjo matymo kampas. Todėl ant objekto esanti tekstūra taip pat turi judėti - tai sukelia tam tikrų komplikacijų ir papildomo apdorojimo. Bet ką daryti, jei į objektą pažvelgtume tam tikru kampu, pavyzdžiui, į grindis? Grindys gali užimti didelį plotą, o norint išlaikyti tikroviškumą, kuo toliau nuo mūsų, tuo mažesni jų komponentai (pavyzdžiui, plytelės). Norėdami tai užtikrinti, tekstūra turi būti tam tikru būdu sumažinta. Deja, tiesiog pakeitus tekstūrų skiriamąją gebą, gali atsirasti gana nemalonus efektas, kai viena tekstūra vizualiai susilieja su kita. Kitas nemalonus efektas gali atsirasti, jei tekselis yra didesnis nei reikiamas pikselių skaičius. Taip atsitinka, kai žiūrite į tekstūrą, kuri yra labai toli. Abi situacijos atsiranda naudojant tradicinį anti-aliasing. Ir štai tikri šių atvejų pavyzdžiai: nėra

Siekiant sušvelninti tokias situacijas, buvo sukurtas mip-mapping. Ši technologija veikia labai paprastai: originali tekstūra generuojama įvairiose situacijose taip, kad būtų teisingai atvaizduota tekstūra skirtingais atstumais ir skirtingais žiūrėjimo kampais. Artėjant prie objekto tekstūra rodoma su didesne raiška, o tolstant – su mažesne. Taigi, mip-mapping pagerina vaizdo kokybę ir sumažina nelygumus. Žemiau yra tos pačios nuotraukos, tik su įjungtu mip-mapping: šioje santraukoje nėra nuotraukų.

Ar pastebėjote kokybės pagerėjimą? Tai ypač pastebima antroje nuotraukoje su geltonu ir raudonu raštu. Atkreipkite dėmesį: pagerėjo ne tik nutolusių tekstūrų kokybė: daug geriau atrodo ir šalia esančios. Apskritai vaizdas su mip-mapping atrodo daug geriau nei be jo: įprasto rodymo metu nėra pastebimų daugybės iškraipymų ir kreivių.

Filtravimas

Taškinė tekstūra tikriausiai yra pagrindinė tekstūravimo rūšis. Naudojant taškinę tekstūrą, pasirenkamas atskiras tekstūros fragmentas (tekselis) ir naudojamas kaip pikselių spalvos reikšmė. Faktas yra tas, kad šis metodas yra aplaidumas ir dėl to pablogėja vaizdo kokybė. Toks vaizdas pagal esamus standartus yra tiesiog nepriimtinas. Žemiau yra tekstūra, apdorota taškiniu tekstūravimu (paveikslo apačioje). Paveikslėlyje parodytas teorinis kokybės pablogėjimas, kai pasirenkamas per didelis tekselio dydis.

Bilineat filtravimas

Kitas tekstūravimo būdas yra bilinijinis filtravimas. Šio tekstūravimo metodo veikimo principas labai panašus į taškinį, tačiau skirtingai nei jis, pikselių spalvai parinkti naudojamas ne visas vaizdas, o 4 tekselių blokas. Taip pagerinamas tikslumas renkantis pikselių spalvas ir pasiekiamas geresnis atskirų smulkių vaizdo detalių atvaizdavimas.

Šiame paveikslėlyje parodytas vaizdo piešimo, naudojant dvilinijinį filtravimą ir mip atvaizdavimą, pavyzdys.

Trilinijinis filtravimas

Dvilinijinis filtravimas antrą kartą gimė trilinijinio filtravimo pavidalu, kurio veikimo principas yra visiškai toks pat, tačiau naudojamas patobulintas skaičiavimo algoritmas, kuris padidina atvaizdavimo tikslumą. Trilinijiniam filtravimui, kaip ir bilinijiniam filtravimui, naudojami 4 tekselių blokai, kaip ir bilinijiniame filtravime, vaizdas normalizuojamas, tada vaizdas iš 4 tekselių ribinio bloko normalizuojamas. Paskutinis žingsnis – išanalizuoti abiejų blokų ribas, dėl kurių ištaisomos galimos klaidos ir neatitikimai šių 2 blokų ribose. Dvilinijiniame filtravime gana dažnai blokų ribose atsiranda linijų, kurios išnyksta naudojant trilinijinį filtravimą. Be to, naudojant trilinijinį filtravimą, geriau pašalinami iškraipymai ir nelygumai judant ir keičiant žiūrėjimo kampą. Žemiau pateikiama trilinijinio filtravimo naudojimo ir veikimo schema.

Reikėtų pažymėti, kad kai kurie defektai atsiranda dideliu atstumu net ir naudojant trilinijinį filtravimą. Taip yra todėl, kad jis iš pradžių buvo sukurtas siekiant sumažinti iškraipymus tarp mip-map lygių.

Labai kokybiškas vaizdas gaunamas tik tiesesniais žiūrėjimo kampais, realiai piešiant, objekto geometrinės formos gali būti sutrikdytos. Pažiūrėkite SGI nuotrauką:

Anizotropinis filtravimas

Tekstūruotų objektų forma tiek dvilinijinio, tiek trilinijinio filtravimo metu gali būti iškraipyta, nes Abu šie filtrai yra izotropiniai – vaizdas filtruojamas tam tikros formos – kvadrato formos. Dauguma sugeneruotų objektų neatitinka šios specifinės ir nekintančios formos: norint juos apdoroti kokybiškai, būtina naudoti kitą filtravimo tipą – anizotropinį. Anizotropija susideda iš kelių lotyniškų žodžių ir pažodžiui reiškia „Ani“ – ne, „iso“ – tam tikra forma ir „tropija“ – modelis – t.y. neapibrėžtos formos modeliai. Šios technologijos pavadinimas atspindi jos techninį įgyvendinimą. Anizotropinis filtravimas paprastai veikia mažiausiai 8 tekseliais, mip-map lygiais visomis kryptimis ir naudoja iš anksto nustatytos formos modelį. Dėl to pašalinamas objektų triukšmas ir iškraipymai, o vaizdas kaip visuma yra kokybiškesnis.

Palyginkite dvi nuotraukas: vienoje buvo naudojamas 16 tekselių anizotropinis filtravimas, kuris pašalino iškraipymus tarp mip žemėlapio lygių ir vaizdo triukšmo; antroje nuotraukoje anizotropinis filtravimas buvo išjungtas.

Atkreipkite dėmesį į didelius vaizdo atstumus: anizotropinio ir izotropinio filtravimo skirtumai yra akivaizdūs. Tekstūros kokybė su anizotropiniu filtravimu išlieka panaši į originalią net ir dideliais atstumais; Naudojant izotropinį filtravimą, vaizdas „išlyginamas“, todėl prarandama kokybė. Anizotropinis filtravimas, kaip ir trilinijinis filtravimas, sumažina tekstūros netolygumus. Bet naudojant anizotropinį filtravimą, kokybė vis tiek geresnė, nes jame palyginimui naudojamas daug didesnis blokų skaičius. Štai dar vienas pavyzdys, rodantis, kaip veikia anizotropinis filtravimas:

Ilgą laiką vartotojams skirtos vaizdo plokštės neužtikrino vaizdo kokybės, kuri įmanoma naudojant anizotropinį filtravimą. Atsiradus grafikos lustams, tokiems kaip NVIDIA GeForce2 ir ATI Radeon, atsirado galimybė naudoti anizotropinį filtravimą, kuris analizuoja 16 tekselių blokus aparatinėje įrangoje. GeForce3 ir Radeon 8500 vaizdo plokštėse jau naudojamas 32 tekselių anizotropinis filtravimas. Žemiau esančiame paveikslėlyje parodytas vaizdas, panašus į tai, kas būtų sukurta naudojant profesionalų 64 tekselių anizotropinį filtravimą:

Ateities…

Artimiausiu metu anizotropinis filtravimas bus naudojamas vis dažniau. Naujos technologijos, skirtos pašalinti objektų nelygumus ir kampus, jau kuriamos naujos kartos grafiniams lustams. Artimiausiu metu pamatysime vaizdus, ​​apdorotus naudojant multitekselių blokus. Bus vaizdo plokštės, galinčios palaikyti anizotropinį filtravimą naudojant 128 tekselių blokus. Tuo pačiu metu vaizdo kokybė žymiai pagerės, o produktyvumas padidės.

Papildomai:

Antialiasing ir anizotropinis filtravimas šiandien: kas, kur ir kiek? Pirma dalis

Tiesą sakant, straipsnis tokiu pavadinimu galėtų prasidėti banalybe, pavyzdžiui, „kiekvienas kompiuterio vartotojas tam tikru momentu matė, kaip veikia 3D vaizdo gerinimo metodai, tokie kaip anti-aliasing arba anizotropinis filtravimas“. Arba štai ką: „Kol mūsų erdvėlaiviai skrieja erdvėje, NVIDIA ir ATI programuotojai ieško būdų, kaip pagerinti gerai žinomų vaizdo gerinimo metodų veikimą“. Antroji banalybė turi daug geresnių šansų gyventi ta prasme, kad ji jau intriguoja tam tikra išvaizda, kad mes tirsime klausimą, kas ir kaip „optimizavo“ savo vairuotojus.

Tačiau tikriausiai apsieisime visai be banalybių. Nes daug įdomiau spėlioti, kaip dabar tapo prieinami vaizdo gerinimo būdai paprastam vartotojui arba, tiksliau, paprastam žaidėjui. Žaidėjai šiandien yra aktyviausi visų naujų 3D technologijų ir naujovių vartotojai. Apskritai, galingas 3D greitintuvas šiandien reikalingas tik norint žaisti naujausius kompiuterinius žaidimus su galingais 3D varikliais, veikiančiais su sudėtingais įvairių versijų šešėliais. Šiais laikais nieko nenustebinsi žaidimu su pixel shaders 2.0 versija – žaidimų pasaulyje tokios linksmybės pamažu tampa kasdienybe. Dauguma žaidimų vis dar išleidžiami naudojant 1.1 Shader modelį, nes žaidimų kūrėjams svarbiausia užtikrinti, kad jų žaidimas pakankamai gerai veiktų aparatinėje įrangoje, kurią turi didžioji dauguma žaidėjų. Sukurti itin sudėtingą variklį dabar yra didelis švaistymas ir netgi rizika. Spręskite patys: „Doom 3“ arba „Half-Life 2“ klasės variklio kūrimas (na, čia pridėkime visoje šlovėje „shader 2.0“ pradininką, „Crytek“ sumanymą – „FarCry“, kad gautumėte tikroji visur esanti trejybė) užima daug laiko, o tai sukelia papildomų sunkumų kuriant - būtina sukurti variklį per tokį laikotarpį, kad kuriant variklį naujovės ir originalūs patobulinimai nepasentų.

Jei abejojate, kad taip gali nutikti, tai visiškai veltui - „Half-Life 2“ atveju viskas buvo būtent taip (o „Doom 3“ buvo sukurtas atsižvelgiant į „GeForce 3“ ir buvo išleistas, kai „GeForce“ FX). Taip pat šios klasės variklių kūrimas siejamas su didelėmis plėtros sąnaudomis: talentingi programuotojai šiandien nėra pigūs. O pastaruoju metu daug dėmesio (net daugiau nei reikia) buvo skirta, galima sakyti, „politikai“, susijusiai su žaidimų varikliais.

Taip, taip, teisingai, girdėjote teisingai, 3D laukas jau seniai turi savo politiką, pagrįsta, žinoma, dviejų milžinų interesais kuriant grafikos procesorius: ATI ir NVIDIA. Atšiaurioji Kanada jau seniai kovoja su saulėtąją Kaliforniją, ir kol kas šiai konfrontacijai galo nematyti, o tai, žinoma, naudinga tik mums, eiliniams vartotojams. Dabar neužtenka sukurti šaunų variklį – kad būtumėte sėkmingi, turite pasitelkti Kalifornijos divos NVIDIA arba Kanados ATI palaikymą, laimei, dabar ir pirmasis, ir antrasis turi savo partnerystės programas žaidimų kūrėjams. NVIDIA tokią programą vadina „taip, kaip ji skirta žaisti“, o ATI – „Get it in the game“. Viskas gana iškalbinga ir aišku: NVIDIA sako, kad „reikia žaisti taip“, o ne išvis taip, o ATI tikina, kad pačiame žaidime tikrai gausime viską, ko norėsime. Gana viliojanti, ar ne?Varikliai yra „Doom 3“ ir „Half-Life 2“ klasės (dėkle) Pastarųjų variklis vadinamas Source, tačiau kad būtų lengviau suprasti, pavadinsime jį „Half-Life 2“, kad išlaikytume teisingą ryšį) ir iš pradžių buvo kuriami glaudžiai bendradarbiaujant su grafikos lustų gamintojų inžinieriais, kad žaidimai geriau veiktų vieno gamintojo GPU.

Todėl, kaip matome, revoliucijos naujų 3D grafikos variklių srityje yra labai problemiškos, todėl tokios revoliucijos žaidimų variklių pasaulyje neįvyksta labai dažnai. Tačiau vaizdo kokybę reikia kažkaip pagerinti. Jei tiesiog padidinsime daugiakampių skaičių kadre ir taip gausime vizualiai gražesnį vaizdą, galų gale pasieksime tiek, kad greitintuvas negalės apdoroti scenos priimtinu kadrų dažnio lygiu. , bet nuotraukoje vis tiek kažko trūks. Pikselių kopėčios vis tiek išliks, o tekstūrų kokybė nepagerės. Yra mažiau akivaizdžių būdų, kaip pagerinti trimačio vaizdo kokybę monitoriuje – anizotropinis filtravimas ir antialiasing. Šie vaizdo gerinimo būdai neturi tiesioginio ryšio su pačiu 3D varikliu ir, žinoma, negali padaryti paties variklio gražesnio, tačiau jie gali dirbti su tekstūromis ir vaizdais taip, kad išvestyje, ty monitoriaus, matome vizualiai gražesnį ir švelnesnį vaizdą.

Būtent anizotropinio filtravimo ir antialiasing srityje tiek NVIDIA, tiek ATI atlieka didžiulį tvarkyklės optimizavimą. Įmonės taiko skirtingus požiūrius ir politiką dėl tų pačių optimizacijų, kartais ne visai sąžiningos vartotojų atžvilgiu. Tačiau mūsų straipsnis yra skirtas suprasti, kas yra gerai, o kas blogai abiejų GPU gamybos įmonių požiūriu ir kas šiandien gali pagerinti vaizdo kokybę 3D žaidimuose.

Kas yra anti-aliasing ir kam jis naudojamas?

Prieš pradedant detalizuoti tokią aktualią temą kaip anti-aliasing optimizavimas ir įvairių tipų tekstūrų filtravimas, nepakenks (ir netgi sakyti, kad tai būtina) įgyti šiek tiek teorinių žinių mūsų pokalbio tema.

Taigi, antialiasing – kas tai yra ir kam to reikia? Pirmiausia žodyje „antialiasing“ būtina išryškinti jo dalį – „anti“. Labai aišku, kad ši žodžio dalis reiškia, kad pats „anti-aliasing“ reiškinys yra skirtas kovoti su kažkuo. Kaip jau galima spėti, mūsų atveju – su „aliasing“. Todėl šiuo metu mums svarbu aiškiai suprasti, kas yra liūdnai pagarsėjęs „slapyvardis“.

Pirmiausia turite aiškiai suprasti, kad vaizdas, kurį jūs ir aš galime matyti kiekvieną dieną savo monitorių ekranuose, susideda iš vadinamųjų mažų dalelių, kurios paprastai vadinamos pikseliais. Šia prasme gera analogija yra languoto popieriaus pavyzdys. Vaizdas monitoriuje yra toks pat languotas popierius, tik šiuo atveju jie labai labai maži. Jei sakoma, kad ekrano skiriamoji geba yra 1024x768 su 32 bitų spalvomis, tai reiškia, kad monitoriuje horizontaliai telpa 1024 pikseliai, o vertikaliai – 768. Be to, kiekvienas pikselis gali būti nudažytas viena spalva iš tų, kurios yra 32 bitų paletėje. Šiuo metu 32 bitų spalvos yra riba, ką galime pasiekti kompiuterio ekrane. Geriausi žmonijos protai (tas pats Carmack) jau kalba apie būtinybę pereiti prie 64 bitų spalvų ir nurodo akivaizdžius 32 bitų paletės trūkumus. Vienu metu, pereinant nuo 16 bitų prie 32 bitų spalvos, šis poreikis buvo gana aiškiai pagrįstas ir buvo realių priežasčių, kodėl vertėtų pereiti prie 32 bitų. Šiandien perėjimas prie 64 bitų spalvų yra gana perdėtas. Kaip ir 16 ir 32 bitų atveju, reikiamu laiku teks laukti gana ilgai, kol visų lygių greitintuvai galės priimtinu greičiu apdoroti 64 bitų spalvas.

Didžioji dauguma straipsnių, kuriuose vienaip ar kitaip liečia vaizdų kūrimo 3D principus ir kuriuose kalbama apie antialiasing, gausu paprasto, bet tuo pačiu ir efektyviausio pavyzdžio, kurį pasitelkus galima gana gerai suprasti. kas yra antialiasing. Pažiūrėkite į padidintą užrašą „Upgrade“, padarytą „Word“, o tada tiesiog padidintą „Photoshop“. Nelabai gerai atrodo, ar ne? Raidžių šonuose matosi vadinamosios šukos arba, kaip dar vadinama, „kopėčios“. Iš esmės šios „šukos“ arba „kopėčios“ yra slapyvardis. Kitas pavyzdys gali būti geometrinis objektas, pavyzdžiui, piramidė. Tos pačios „šukos“ taip pat aiškiai matomos išilgai jos kraštų. Dabar pažiūrėkite į kitą tos pačios piramidės vaizdą, bet su dvigubai didesne raiška. Jau atrodo daug geriau, o "šukos" beveik nesimato. Kaip minėta aukščiau, šis efektas, išlyginant „šukas“, buvo pasiektas dėl to, kad padidinome skiriamąją gebą 2 kartus.

Ką tai reiškia? Tarkime, kad mes sukūrėme piramidę, kurios skiriamoji geba yra 200x200 pikselių (aukščiau jau išsamiai išsiaiškinome klausimą, kas yra pikseliai ir kam jie reikalingi). Taškų skaičių vertikaliai ir horizontaliai padidinome lygiai 2 kartus, tai yra, gavome vaizdą, kurio skiriamoji geba yra 400 pikselių vertikaliai ir 400 pikselių horizontaliai. Tai taip pat reiškia, kad mūsų objekto, kuris buvo įvykio vietoje, taškų skaičius padvigubėjo. Ką tai padarė mūsų slapyvardžio efektui? Akivaizdu, kad jis tapo minimalus, tai yra išlygintas - juk taškų skaičius išilgai objekto kraštų taip pat padvigubėjo. Čia svarbiausias žodis „išlygintas“. Galų gale, anti-aliasing kitaip vadinamas anti-aliasing, kuris atspindi pačią technologijos esmę, kuri išlygina tas pačias „kopėčias“ trimačių objektų kraštais.

Tiesą sakant, padidinus skiriamąją gebą, „kopėčios“ nuo piramidės krašto niekur nedingo - jos išlieka kaip anksčiau. Tačiau dėl to, kad padidinome raišką (tai reiškia, kad padidėjo pikselių, kurie išleidžiami piramidės atvaizdavimui), „kopėčių“ efektas buvo išlygintas dėl žmogaus regėjimo ypatumų, kurie nebemato aiškiai pikselių. objekto krašte. Visiškai aišku, kad jei vis labiau padidinsite skiriamąją gebą, slapyvardžio efektas bus stebimas vis mažiau ir mažesniu mastu. Tiksliau, žmogaus akis pradės tai pastebėti vis mažiau, nes pats slapyvardžio efektas neišnyks. Bet visiškai aišku ir tai, kad be galo didinti raiškos nepavyks, nes monitoriai, net ir patys moderniausi, turi baigtinę skiriamąją gebą, o ne tokias dideles, kurios neleis nuolat didinti taškų skaičiaus. Paprasčiau tariant, paprasčiausią antialiasing efektą galima pasiekti tiesiog padidinus ekrano skiriamąją gebą, tačiau raiška negali didėti be galo. Atrodytų, išeities nėra? Tačiau iš tikrųjų jis buvo rastas ir pagrįstas ta pačia žmogaus regėjimo savybe.

Tai buvo pasiekta dėl sklandžių vaizdo spalvų perėjimų. Tiesą sakant, vizualinis vaizdo patobulinimas atliekamas ne dėl fizinio raiškos padidėjimo, o dėl, taip sakant, spalvų padidinimo. Šiame straipsnyje neaprašysime šių taškų skaičiavimo algoritmų ir nesigilinsime į matematinių skaičiavimų gelmes, o tik kalbėsime apie tokio antialiasing veikimo principą. Kopėčios ties objektų ribomis matomos tik todėl, kad dažniausiai trimačių objektų kraštai gana stipriai išsiskiria spalvomis iš likusio paveikslo ir atrodo kaip plonos vieno pikselio linijos. Tai galima kompensuoti įdėjus daugybę taškų su spalvomis, apskaičiuotomis pagal paties krašto ir šalia to krašto esančius taškus. Tai yra, jei objekto kraštas yra juodas, o fonas baltas, papildomas taškas šalia juodos krašto linijos taps pilkas. Kuo daugiau šių papildomų taškų prie bet kurio 3D objekto krašto, tuo lygesni atrodys jo kraštai ir tuo mažiau pastebimos kopėčios. Šis metodas vadinamas krašto antialiasing. Vaizdo plokštės tvarkyklėje nustatyta antialiasing kokybė, tokia kaip: 2x, 4x, 6x, 8x, reiškia papildomų pikselių, esančių aplink liniją, kuriai reikia panaikinti slapyvardžius, skaičių.

Anizotropinis filtravimas: mini edukacinė programa pradedantiesiems

Norėdami suprasti, kas yra filtravimas, turite turėti tam tikrų pagrindinių žinių. Jau išsiaiškinome, kad vaizdas ekrane susideda iš daugybės pikselių, kurių skaičių lemia raiška. Norint išvesti spalvotą vaizdą, grafikos plokštė turi aptikti kiekvieno pikselio spalvą. Jo spalva nustatoma perdengiant tekstūros vaizdus daugiakampiuose, kurie yra trimatėje erdvėje. Tekstūros vaizdai susideda iš pikselių, tiksliau, tekselių, tai yra, tekselis yra dvimačio vaizdo pikselis, uždėtas ant 3D paviršiaus. Pagrindinė dilema yra tokia: kuris tekselis ar tekseliai lemia pikselio spalvą ekrane. Norėdami įsivaizduoti filtravimo problemą, įsivaizduokime vieną paveikslėlį. Tarkime, jūsų ekranas yra plokštė su daugybe apvalių skylių, kurių kiekviena yra taškas. Norint nustatyti, kokią spalvą turi pikselis, palyginti su trimačiu vaizdu, esančiu už plokštės, tereikia pažvelgti per vieną iš skylių.

Dabar įsivaizduokite šviesos spindulį, kuris praeina per vieną iš skylių ir patenka į mūsų tekstūruotą daugiakampį. Jei pastarasis yra lygiagrečiai skylei, per kurią praeina šviesos spindulys, tada šviesos taškas bus apskritimo formos. Priešingu atveju, jei daugiakampis nėra lygiagretus skylei, šviesos taškas yra iškraipytas ir yra elipsės formos. Manome, kad šiuo metu daugelis skaitytojų užduoda vieną klausimą: „kaip visos šios plokštės, skylė, šviesos spindulys yra susiję su pikselio spalvos nustatymo problema? Dėmesio! Pagrindinė frazė: visi šviesos taške esantys daugiakampiai nustato pikselio spalvą. Visa tai yra būtinos pagrindinės žinios, kurių reikia norint suprasti įvairius filtravimo algoritmus.

O dabar, kad geriau suprastumėte, kodėl reikalingas filtravimas, pažvelkime į vykstančius procesus legendinės „Quake 3 Arena“ pavyzdžiu. Įsivaizduokite kažkokį koridorių su daugybe aikščių ir įvairių ornamentų (laimei, Quake 3 Arena to užtenka). Ornamentas koridoriaus pradžioje yra itin detalus, o arčiau koridoriaus pabaigos (horizonto) ornamento elementai tampa vis mažesni, t.y. jie rodomi su mažiau pikselių. Dėl to prarandamos tokios detalės kaip siūlės tarp ornamento elementų, o tai atitinkamai lemia vaizdo kokybės pablogėjimą.

Problema ta, kad vaizdo plokštės tvarkyklė nežino, kurios tekstūros detalės yra svarbios.

Taškų atranka

Taškų atranka yra paprasčiausias būdas nustatyti pikselio spalvą. Šis algoritmas pagrįstas tekstūriniu vaizdu: pasirenkamas tik vienas tekselis, kuris yra arčiausiai šviesos taško centro, ir pagal jį nustatoma pikselio spalva. Nesunku atspėti, kad tai visiškai neteisinga. Pirma, pikselio spalvą lemia keli tekseliai, o mes pasirinkome tik vieną. Antra, šviesos taško forma gali pasikeisti, o algoritmas į tai neatsižvelgia. Bet veltui!

Pagrindinis in-line atrankos trūkumas yra tai, kad kai daugiakampis yra arti ekrano, pikselių skaičius bus žymiai didesnis nei tekselių, dėl to labai nukentės vaizdo kokybė. Vadinamąjį blokavimo efektą, kaip manome, daugelis galėjo pastebėti senuose kompiuteriniuose žaidimuose, pavyzdžiui, tame pačiame legendiniame „Doom“.

Taškų atranka turi pranašumą. Dėl to, kad pikselio spalva nustatoma naudojant tik vieną tekselį, šis metodas nėra labai svarbus atminties pralaidumui, o tai automatiškai suteikia šiam filtravimo metodui didžiulę naudą ta prasme, kad 3D greitintuvo resursai yra labai maži. išleidžiami filtravimui naudojant šią schemą .

Dvitiesinis filtravimas

Bi-Linear Filtering – dvilinijinis filtravimas, pagrįstas interpoliacijos technologijos panaudojimo metodu. Norint nustatyti reikiamus tekselius, naudojama pagrindinė šviesos taško forma, tai yra apskritimas. Mūsų apskritimo pavyzdyje pastarasis yra apytikslis 4 tekseliais. Kaip matote, čia viskas yra šiek tiek geriau nei naudojant taškinę atranką. Dvilinijiniam filtravimui jau naudojami 4 tekseliai.

Vaizdas kokybiškesnis, nėra blokuotumo, tačiau daugiakampiai arti ekrano atrodo neryškūs, o taip yra dėl to, kad interpoliacijai reikia didesnio tekselių skaičiaus nei turimi keturi.

Neaiškumas jokiu būdu nėra pagrindinė bilinijinio filtravimo problema. Faktas yra tas, kad aproksimacija teisingai atliekama tik objektams, esantiems lygiagrečiai ekranui ar stebėjimo taškui, tuo tarpu 99% objektų bet kuriame kompiuteriniame žaidime yra nelygiagrečiai stebėjimo taškui. Iš to galime daryti išvadą, kad 99% objektų bus aproksimuoti neteisingai. Paimkime, pavyzdžiui, mūsų apskritimą – daugiakampis yra nelygiagretus stebėjimo taško atžvilgiu, todėl turėtume aproksimuoti elipsę, bet aproksimuoti apskritimą, o tai yra labai neteisinga. Be to, dvilinijinis filtravimas reikalauja daug daugiau atminties pralaidumo, o tai apskritai yra daugiau nei logiška, atsižvelgiant į tai, kad bilinijiniam filtravimui pikselio spalvai nustatyti jau naudojami 4 taškai.

Tekstūravimas yra esminis šių dienų 3D programų elementas, o be jos daugelis 3D modelių praranda savo vizualinį patrauklumą. Tačiau tekstūrų padengimo paviršiams procesas neapsieina be artefaktų ir tinkamų metodų jiems slopinti. Trimačių žaidimų pasaulyje retkarčiais atsiranda specializuotų terminų, tokių kaip „mip mapping“, „trilinear filtering“ ir kt., kurie konkrečiai nurodo šiuos metodus.

Ypatingas anksčiau aptartas slapyvardžio efekto atvejis yra tekstūruotų paviršių slapyvardžio efektas, kurio, deja, negalima pašalinti taikant aukščiau aprašytus kelių ar supersampling metodus.

Įsivaizduokite juodai baltą didelę, beveik begalinio dydžio šachmatų lentą. Tarkime, nupiešime šią lentą ant ekrano ir žiūrime į ją nedideliu kampu. Pakankamai nutolusiose lentos vietose langelių dydis neišvengiamai pradės mažėti iki vieno pikselio ar mažiau. Tai yra vadinamasis optinis tekstūros sumažinimas (sumažinimas). Prasidės „kova“ tarp tekstūros pikselių dėl ekrano pikselių, o tai sukels nemalonų mirgėjimą, kuris yra viena iš slapyvardžio efekto atmainų. Ekrano raiškos (realios ar efektyvios) padidinimas padeda tik šiek tiek, nes pakankamai toli esantiems objektams tekstūros detalės vis tiek tampa mažesnės nei pikseliai.

Kita vertus, arčiausiai mūsų esančios lentos dalys užima didelį ekrano plotą, matosi didžiuliai tekstūros pikseliai. Tai vadinama optiniu tekstūros padidinimu (padidinimu). Nors ši problema nėra tokia opi, ją taip pat reikia spręsti siekiant sumažinti neigiamą poveikį.

Tekstūros problemoms spręsti naudojamas vadinamasis tekstūros filtravimas. Jei pažvelgsite į trimačio objekto su dengta tekstūra piešimo procesą, pamatysite, kad pikselio spalvos apskaičiavimas vyksta „atvirkščiai“ - pirmiausia randamas ekrano pikselis, kuriame bus tam tikras objekto taškas. projektuojama, o tada šiuo tašku visi tekstūros pikseliai patenka į ją. Tekstūros pikselių pasirinkimas ir jų derinimas (vidurkinis), kad būtų gauta galutinė ekrano pikselių spalva, vadinamas tekstūros filtravimu.

Tekstūravimo proceso metu kiekvienam ekrano pikseliui tekstūroje priskiriama koordinatė, ir ši koordinatė nebūtinai yra sveikasis skaičius. Be to, pikselis atitinka tam tikrą tekstūros vaizdo sritį, kurioje gali būti keli tekstūros pikseliai. Šią sritį vadinsime pikselio atvaizdu tekstūroje. Netoliese esančiose plokštės dalyse ekrano pikselis tampa žymiai mažesnis už tekstūros pikselį ir tarsi yra jo viduje (vaizdas yra tekstūros pikselio viduje). Nutolusiems, atvirkščiai, kiekviename pikselyje yra daug tekstūros taškų (vaizde yra keli tekstūros taškai). Pikselių vaizdas gali būti įvairių formų ir apskritai yra savavališkas keturkampis.

Pažvelkime į įvairius tekstūrų filtravimo būdus ir jų variacijas.

Artimiausias kaimynas

Taikant šį, paprasčiausią metodą, pikselio spalva tiesiog parenkama taip, kad ji būtų artimiausio atitinkamo tekstūros pikselio spalva. Šis metodas yra greičiausias, bet ir nekokybiškiausias. Tiesą sakant, tai net nėra specialus filtravimo būdas, o tiesiog būdas pasirinkti bent šiek tiek tekstūros pikselio, atitinkančio ekrano pikselį. Jis buvo plačiai naudojamas prieš aparatūros greitintuvų atsiradimą, kurių platus naudojimas leido naudoti geresnius metodus.

Blinearinis filtravimas

Dvilinijinis filtravimas suranda keturis tekstūros pikselius, esančius arčiausiai esamo ekrano taško, o gauta spalva nustatoma sumaišius šių pikselių spalvas tam tikra proporcija.

Artimiausio kaimyno filtravimas ir bilinijinis filtravimas visai neblogai veikia, kai, pirma, tekstūros sumažinimo laipsnis mažas, o antra, kai tekstūrą matome stačiu kampu, t.y. priekyje. Su kuo tai susiję?

Jei, kaip aprašyta aukščiau, atsižvelgsime į ekrano pikselio „vaizdą“ tekstūroje, tada, esant stipriam sumažinimui, jis apims daug tekstūros pikselių (iki visų pikselių!). Be to, jei pažvelgsime į tekstūrą kampu, šis vaizdas bus labai pailgintas. Abiem atvejais aprašyti metodai neveiks gerai, nes filtras „neužfiksuos“ atitinkamų tekstūros taškų.

Šioms problemoms išspręsti naudojamas vadinamasis mip kartografavimas ir anizotropinis filtravimas.

MIP kartografavimas

Esant dideliam optiniam sumažinimui, ekrano taškas gali atitikti gana daug tekstūros pikselių. Tai reiškia, kad net ir geriausio filtro įdiegimas užtruks gana daug laiko, kad būtų galima suvidurkinti visus taškus. Tačiau problemą galima išspręsti sukuriant ir išsaugant tekstūros versijas, kuriose vertės iš anksto suvidurkinamos. O atvaizdavimo etape ieškokite norimos pikselio originalios tekstūros versijos ir paimkite iš jos vertę.

Terminas mipmap kilęs iš lotyniško žodžio multum in parvo – daug mažai. Naudojant šią technologiją, be tekstūrinio vaizdo, grafikos greitintuvo atmintis išsaugo ir sumažintų jo kopijų rinkinį, kurių kiekviena nauja yra lygiai perpus mažesnė už ankstesnę. Tie. 256x256 dydžio tekstūrai papildomai išsaugomi 128x128, 64x64 ir tt vaizdai iki 1x1.

Toliau kiekvienam pikseliui parenkamas atitinkamas mipmap lygis (kuo didesnis pikselio "vaizdo" ​​dydis tekstūroje, tuo mažesnis paimamas mipmap). Be to, mipmap reikšmės gali būti apskaičiuojamos dvejopai arba naudojant artimiausio kaimyno metodą (kaip aprašyta aukščiau), o papildomai filtruojama tarp gretimų mipmap lygių. Šis filtravimo tipas vadinamas trilinijiniu. Jis duoda labai kokybiškus rezultatus ir yra plačiai naudojamas praktikoje.


9 pav. Mipmap lygiai

Tačiau problema dėl „pailgėjusio“ pikselio atvaizdo tekstūroje išlieka. Būtent todėl mūsų lenta iš tolo atrodo labai neryški.

Anizotropinis filtravimas

Anizotropinis filtravimas yra tekstūros filtravimo procesas, kurio metu ypač atsižvelgiama į pailgo pikselio atvaizdą tekstūroje. Tiesą sakant, vietoj kvadratinio filtro (kaip bilinijinio filtravimo atveju) naudojamas pailgas, kuris leidžia geriau pasirinkti norimą ekrano pikselio spalvą. Šis filtravimas naudojamas kartu su mipmapping ir duoda labai aukštos kokybės rezultatus. Tačiau yra ir trūkumų: anizotropinio filtravimo įgyvendinimas yra gana sudėtingas, o įjungus piešimo greitis žymiai sumažėja. Anizotropinį filtravimą palaiko naujausios kartos NVidia ir ATI GPU. Be to, esant skirtingiems anizotropijos lygiams - kuo aukštesnis šis lygis, tuo daugiau „pailgų“ pikselių vaizdų gali būti tinkamai apdoroti ir tuo geresnė kokybė.

Filtrų palyginimas

Rezultatas yra toks: norint nuslopinti tekstūros slapyvardžio artefaktus, aparatinėje įrangoje palaikomi keli filtravimo metodai, kurie skiriasi savo kokybe ir greičiu. Paprasčiausias filtravimo metodas yra artimiausio kaimyno metodas (kuris iš tikrųjų ne kovoja su artefaktais, o tiesiog užpildo pikselius). Šiuo metu dažniausiai naudojamas bilinijinis filtravimas kartu su mip mapping arba trilinear filtravimu. Pastaruoju metu GPU pradėjo palaikyti aukščiausios kokybės filtravimo režimą – anizotropinį filtravimą.

Bump kartografavimas

Bump Mapping yra specialiųjų grafinių efektų tipas, skirtas sukurti „šiurkščių“ ar nelygių paviršių įspūdį. Pastaruoju metu bumblių žemėlapių naudojimas tapo beveik žaidimų programų standartu.

Pagrindinė iškilimų kartografavimo idėja yra naudoti tekstūras, kad būtų galima kontroliuoti, kaip šviesa sąveikauja su objekto paviršiumi. Tai leidžia pridėti smulkių detalių nedidinant trikampių skaičiaus. Gamtoje nedidelius nelygius paviršius išskiriame pagal šešėlius: bet koks nelygumas iš vienos pusės bus šviesus, o iš kitos tamsus. Tiesą sakant, akis gali nepastebėti paviršiaus formos pokyčių. Šis efektas naudojamas smūgių kartografavimo technologijoje. Objekto paviršiui pritaikoma viena ar kelios papildomos tekstūros ir naudojamos objekto taškų apšvietimui apskaičiuoti. Tie. objekto paviršius visiškai nesikeičia, tik sukuriama nelygybių iliuzija.

Yra keletas iškilimų atvaizdavimo būdų, tačiau prieš juos apžvelgdami turime išsiaiškinti, kaip iš tikrųjų apibrėžti nelygumus ant paviršiaus. Kaip minėta aukščiau, tam naudojamos papildomos tekstūros, kurios gali būti įvairių tipų:

Normalus žemėlapis. Šiuo atveju kiekvienas papildomos tekstūros pikselis išsaugo paviršiui statmeną vektorių (normalų), užkoduotą kaip spalva. Apšvietimui apskaičiuoti naudojami normalūs dydžiai.

Poslinkio žemėlapis. Poslinkio žemėlapis yra pilkos spalvos tekstūra, kurioje kiekvienas pikselis išsaugo poslinkį nuo pradinio paviršiaus.

Šias tekstūras parengia 3D modelių dizaineriai kartu su geometrija ir pagrindinėmis tekstūromis. Taip pat yra programų, kurios leidžia automatiškai gauti normalius arba poslinkio žemėlapius

Iš anksto apskaičiuotas iškilimų žemėlapis

Tekstūros, kuriose bus saugoma informacija apie objekto paviršių, sukuriamos iš anksto, prieš atvaizdavimo etapą, kai kuriuos objekto tekstūros taškus (taigi ir patį paviršių) patamsinant, kitus paryškinant. Toliau piešiant naudojama įprasta tekstūra.

Šis metodas nereikalauja jokių algoritminių gudrybių braižant, bet, deja, paviršių apšvietimo pakitimai neįvyksta, kai keičiasi šviesos šaltinių padėtys ar objekto judėjimas. Ir be to neįmanoma sukurti tikrai sėkmingo nelygaus paviršiaus modeliavimo. Panašūs metodai naudojami statinėms scenos dalims, dažnai lygiai architektūrai ir pan.

Taškų atvaizdavimas naudojant reljefinį įspaudą (reljefinis atvaizdavimas)

Ši technologija buvo naudojama pirmuosiuose grafikos procesoriuose (NVidia TNT, TNT2, GeForce). Objektui sukuriamas poslinkio žemėlapis. Piešimas vyksta dviem etapais. Pirmajame etape poslinkio žemėlapis pridedamas prie pikselio po pikselio. Tokiu atveju antroji kopija pasislenka nedideliu atstumu šviesos šaltinio kryptimi. Tai sukuria tokį efektą: teigiamų skirtumų reikšmės nustatomos apšviestais pikseliais, neigiamas – šešėlyje esančiais pikseliais. Ši informacija naudojama atitinkamai pakeisti pagrindinių tekstūros taškų spalvą.

Taškų atvaizdavimui naudojant įspaudimą nereikia aparatinės įrangos, palaikančios pikselių šešėliuotojus, tačiau jis neveikia esant santykinai dideliems paviršiaus nelygumams. Be to, objektai ne visada atrodo įtikinamai; tai labai priklauso nuo kampo, kuriuo žiūrite į paviršių.

Pikselių nelygumų atvaizdavimas

„Pixel Bump Mapping“ šiuo metu yra tokių technologijų kūrimo viršūnė. Šioje technologijoje viskas apskaičiuojama kuo sąžiningiau. Pikselių šešėliuotojui kaip įvestis pateikiamas įprastas žemėlapis, iš kurio paimamos normalios kiekvieno objekto taško reikšmės. Tada normalioji vertė lyginama su šviesos šaltinio kryptimi ir apskaičiuojama spalvos vertė.

Ši technologija palaikoma įrangoje, pradedant nuo GeForce2 lygio vaizdo plokštėmis.

Taigi, pamatėme, kaip galime panaudoti žmogaus pasaulio suvokimo ypatumus, kad pagerintume 3D žaidimų sukuriamų vaizdų kokybę. Laimingi naujausios kartos vaizdo plokščių NVidia GeForce, ATI Radeon (tačiau ir ne tik naujausių) savininkai gali savarankiškai žaisti su kai kuriais aprašytais efektais, nes slapyvardžio panaikinimo ir anizotropinio filtravimo nustatymus galima rasti tvarkyklės parinktyse. Šiuos ir kitus metodus, kurie nepatenka į šio straipsnio taikymo sritį, žaidimų kūrėjai sėkmingai diegia naujuose produktuose. Apskritai gyvenimas gerėja. Atsitiks dar kažkas!

Tekstūros filtravimas.

Filtravimas išsprendžia pikselio spalvos nustatymo problemą pagal esamus tekstūros vaizdo taškelius.

Paprasčiausias tekstūrų taikymo būdas vadinamas taško mėginių ėmimas(vieno taško atranka). Jo esmė ta, kad kiekvienam pikseliui, kuris sudaro daugiakampį, iš tekstūros vaizdo parenkamas vienas tekselis, esantis arčiausiai šviesos taško centro. Įvyksta klaida, nes pikselio spalvą nustato keli taškai, tačiau pasirinktas tik vienas.

Šis metodas yra labai netikslus, o jo naudojimo rezultatas yra pažeidimų atsiradimas. Būtent, kai pikseliai yra didesni už tekselius, pastebimas mirgėjimo efektas. Šis efektas atsiranda, jei dalis daugiakampio yra pakankamai toli nuo stebėjimo taško, kad daug tekselių būtų uždengta erdvėje, kurią užima vienas pikselis. Atkreipkite dėmesį, kad jei daugiakampis yra labai arti stebėjimo taško, o taškai yra didesni nei pikseliai, pastebimas kitoks vaizdo kokybės pablogėjimas. Tokiu atveju vaizdas pradeda atrodyti blokuotas. Šis efektas atsiranda, kai tekstūra gali būti pakankamai didelė, tačiau turimos ekrano skiriamosios gebos apribojimas neleidžia tinkamai atvaizduoti pradinio vaizdo.

Antrasis metodas - bilinijinis filtravimas(Bi-Linear Filtering) susideda iš interpoliacijos technologijos naudojimo. Norint nustatyti tekselius, kurie turėtų būti naudojami interpoliacijai, naudojama pagrindinė šviesos taško forma - apskritimas. Iš esmės apskritimas yra apytikslis 4 tekseliais. Dvilinijinis filtravimas yra būdas pašalinti vaizdo iškraipymus (filtravimą), pvz., tekstūrų „blokavimą“, kai jos padidinamos. Lėtai sukant ar judant objektą (artėjant/tolstant), gali būti pastebimas pikselių „šokimas“ iš vienos vietos į kitą, t.y. atsiranda blokavimas. Siekiant išvengti šio efekto, naudojamas dvilinijinis filtravimas, kurio metu kiekvieno pikselio spalvai nustatyti naudojamas keturių gretimų tekselių spalvos vertės svertinis vidurkis ir dėl to nustatoma perdangos tekstūros spalva. Gauta pikselių spalva nustatoma atlikus tris maišymo operacijas: pirmiausia sumaišomos dviejų porų tekselių spalvos, o po to sumaišomos dvi gautos spalvos.

Pagrindinis bilinijinio filtravimo trūkumas yra tas, kad aproksimacija teisingai atliekama tik daugiakampiams, kurie yra lygiagrečiai ekranui ar stebėjimo taškui. Jei daugiakampis pasukamas kampu (ir taip yra 99% atvejų), naudojamas neteisingas aproksimavimas, nes reikia aproksimuoti elipsę.

„Gylio slapyvardžio“ klaidos atsiranda dėl to, kad toliau nuo požiūrio taško esantys objektai ekrane atrodo mažesni. Jei objektas juda ir tolsta nuo žiūrėjimo taško, tekstūros vaizdas, esantis ant besitraukiančio objekto, tampa vis labiau suspaustas. Galiausiai objektui pritaikytas tekstūros vaizdas taip suspaustas, kad atsiranda atvaizdavimo klaidų. Šios atvaizdavimo klaidos yra ypač problemiškos animacijoje, kur tokie judesio artefaktai sukelia mirgėjimą ir sulėtintus efektus tose vaizdo dalyse, kurios turėtų būti nejudančios ir stabilios.

Šie stačiakampiai su bilinijine tekstūra gali būti aprašyto efekto iliustracija:

Ryžiai. 13.29 val. Objekto šešėliavimas naudojant dvilinijinį filtravimo metodą. Atsiranda "gylio slapyvardžio" artefaktai, dėl kurių keli kvadratai susilieja į vieną.

Siekiant išvengti klaidų ir imituoti faktą, kad objektai, esantys per atstumą, atrodo mažiau detalūs nei esantys arčiau žiūrėjimo taško, naudojama technika, vadinama mip kartografavimas. Trumpai tariant, mip-mapping – tai skirtingų detalumo laipsnių ar lygių tekstūrų perdengimas, kai, priklausomai nuo atstumo iki stebėjimo taško, parenkama tekstūra su reikiama detale.

Mip tekstūra (mip-map) susideda iš iš anksto filtruotų ir pakeistų vaizdų rinkinio. Vaizde, susietame su mip-map sluoksniu, pikselis vaizduojamas kaip keturių pikselių vidurkis iš ankstesnio sluoksnio esant didesnei skyrai. Taigi su kiekvienu mip tekstūros lygiu susietas vaizdas yra keturis kartus mažesnis nei ankstesnis mip-map lygis.

Ryžiai. 13.30 val. Vaizdai, susieti su kiekvienu banguotos tekstūros mip-map lygiu.

Iš kairės į dešinę turime mip-map lygius 0, 1, 2 ir tt. Kuo mažesnis vaizdas, tuo daugiau detalių prarandama iki pabaigos, kai nieko nematyti, išskyrus neryškų pilkų pikselių susiliejimą.

Detalumo lygis arba tiesiog LOD naudojamas nustatyti, kuris mip-map lygis (arba detalumo lygis) turi būti pasirinktas, kad objektui būtų pritaikyta tekstūra. LOD turi atitikti tekselių, uždengtų viename pikselyje, skaičių. Pavyzdžiui, jei tekstūravimas vyksta santykiu, artimu 1:1, tada LOD bus 0, o tai reiškia, kad bus naudojamas didžiausios skiriamosios gebos mip-map lygis. Jei 4 tekseliai sutampa su vienu pikseliu, tada LOD bus 1 ir bus naudojamas kitas mažesnio skyros mip lygis. Paprastai, tolstant nuo stebėjimo taško, objektas, kuris nusipelno daugiausiai dėmesio, turi didesnę LOD reikšmę.

Nors mip tekstūravimas išsprendžia gylio keitimo klaidų problemą, ją naudojant gali atsirasti kitų artefaktų. Objektui judant vis toliau nuo stebėjimo taško, įvyksta perėjimas nuo žemo mip-žemėlapio lygio prie aukšto. Kai objektas yra pereinamojoje būsenoje iš vieno mip-map lygio į kitą, atsiranda speciali vizualizacijos klaida, žinoma kaip „mip-banding“ – juostavimas arba laminavimas, t.y. aiškiai matomos perėjimo iš vieno mip-map lygio į kitą ribos.

Ryžiai. 13.31 val. Stačiakampę juostą sudaro du trikampiai, kurių tekstūra yra panašus į bangą, kur „mip-banding“ artefaktai pažymėti raudonomis rodyklėmis.

„Mip-banding“ klaidų problema ypač aktuali animacijoje dėl to, kad žmogaus akis labai jautriai reaguoja į poslinkius ir judant aplink objektą gali lengvai pastebėti staigų perėjimą tarp filtravimo lygių.

Trilinijinis filtravimas(trilinijinis filtravimas) yra trečiasis metodas, pašalinantis mip juostos artefaktus, atsirandančius naudojant mip tekstūrą. Naudojant trilinijinį filtravimą, norint nustatyti pikselio spalvą, imama vidutinė aštuonių tekselių spalvos reikšmė, paimamos keturios iš dviejų gretimų tekstūrų ir, atlikus septynias maišymo operacijas, nustatoma pikselio spalva. Naudojant trilinijinį filtravimą, galima atvaizduoti tekstūruotą objektą su sklandžiais perėjimais iš vieno mip lygio į kitą, o tai pasiekiama nustatant LOD interpoliuojant du gretimus mip-map lygius. Taip išsprendžiama dauguma problemų, susijusių su mip tekstūra ir klaidomis dėl neteisingo scenos gylio skaičiavimo ("gylio slapyvardžio").

Ryžiai. 13.32 val. Piramidės MIP žemėlapis

Toliau pateikiamas trilinijinio filtravimo naudojimo pavyzdys. Čia vėl naudojamas tas pats stačiakampis, kurio tekstūra yra panašus į bangą, bet su sklandžiais perėjimais iš vieno mip lygio į kitą dėl trilinijinio filtravimo. Atminkite, kad nėra pastebimų atvaizdavimo klaidų.

Ryžiai. 13.33 val. Stačiakampis, kurio tekstūra yra bangos pavidalo vaizdas, atvaizduojamas ekrane naudojant mip tekstūrą ir trilinijinį filtravimą.

Yra keletas būdų, kaip generuoti MIP tekstūras. Vienas iš būdų yra tiesiog juos paruošti iš anksto naudojant grafikos paketus, pvz., „Adobe PhotoShop“. Kitas būdas – MIP tekstūras generuoti skrendant, t.y. programos vykdymo metu. Iš anksto paruoštos MIP tekstūros reiškia papildomus 30% disko vietos tekstūroms bazinėje žaidimo instaliacijoje, tačiau leidžia naudoti lankstesnius jų kūrimo valdymo būdus ir leidžia pridėti skirtingus efektus bei papildomas detales į skirtingus MIP lygius.

Pasirodo, trilinijinis mipmapping yra geriausias, koks tik gali būti?

Žinoma ne. Matyti, kad problema yra ne tik pikselių ir tekselių dydžių santykyje, bet ir kiekvieno iš jų formoje (o tiksliau – formų santykyje).

Mip tekstūravimo metodas geriausiai tinka daugiakampiams, kurie yra tiesiai akis į akį su vaizdo tašku. Tačiau daugiakampiai, esantys įstrižai stebėjimo taško atžvilgiu, sulenkia uždėtą tekstūrą taip, kad skirtingų tipų ir kvadrato formos tekstūros vaizdo sritys gali būti uždėtos ant pikselių. Taikant mip tekstūravimo metodą į tai neatsižvelgiama, todėl tekstūros vaizdas yra per neryškus, tarsi būtų panaudoti netinkami tekseliai. Kad išspręstumėte šią problemą, turite atrinkti daugiau tekstūrą sudarančių elementų ir pasirinkti šiuos elementus atsižvelgdami į tekstūros erdvėje susietą pikselio formą. Šis metodas vadinamas anizotropinis filtravimas(„anizotropinis filtravimas“). Įprasta mip tekstūra vadinama "izotropine" (izotropine arba vienoda), nes mes visada kartu filtruojame kvadratines tekselių sritis. Anizotropinis filtravimas reiškia, kad mūsų naudojamos tekselio srities forma keičiasi priklausomai nuo aplinkybių.

Sprendžiant iš informacijos forumuose ir straipsnių internete, ATI gudrauja su trilinijiniu tekstūros filtravimu naujajame X800 GPU. Tačiau yra ir tokių, kurie įnirtingai gina ATi. Apskritai tokios diskusijos primena prieš metus įvykusį skandalą, susijusį su „nVidia“.

Tokios karštos diskusijos priežastis buvo straipsnis Vokietijos svetainėje Computerbase. Tai parodė, kaip Radeon 9600 ir X800 GPU ATI naudoja optimizuotą trilinijinį tekstūros filtravimą, dažnai vadinamą „brilinear“ dėl dvilinijinio ir trilinijinio filtravimo mišinio. Naujienos buvo tikrai stulbinančios, nes ATI visada kalbėjo apie tikro trilinijinio filtravimo naudojimą.

Tačiau kaip iš tikrųjų atrodo situacija? Ar tai optimizavimas, triukas ar tiesiog protingas sprendimas? Norėdami nuspręsti, turime įsigilinti į įvairių filtravimo metodų technologiją. Ir pirmoji straipsnio dalis bus skirta būtent tam, o kai kurias technologijas pateiksime labai supaprastintai, kad tilptų į kelis puslapius. Taigi pažvelkime į pagrindines ir pagrindines filtravimo funkcijas.

Ar bus tęsinys? Galbūt, nes ginčai dėl neseniai atrasto brilinearinio filtravimo Radeon 9600 ir X800 kortelėse tęsiasi. ATi reikia pripažinti, kad dėl šio filtravimo kortelių vaizdo kokybė vizualiai nenukenčia. Bent jau neturime pavyzdžių, rodančių kitaip. Kol kas brilinearinis filtravimas pasireiškia dirbtinai sukurtomis laboratorinėmis sąlygomis. Tuo pačiu metu ATi neleidžia įjungti pilno trilinijinio filtravimo minėtoms kortelėms, nesvarbu, ar tai būtų adaptyvi, ar ne. Dėl naujo filtravimo našumo reikšmės testuose neparodo viso X800 potencialo, nes FPS reikšmės gaunamos po optimizavimo, kurio poveikį greičiui įvertinti sunku. O žodis „prisitaikantis“ palieka kartaus poskonio. ATI nepateikė mums jokios informacijos apie tai, kaip veikia tvarkyklė, ir daug kartų teigė, kad kortelė siūlo pilną trilinijinį filtravimą. Tik po minėto apreiškimo ATi pripažino, kad filtravimas buvo optimizuotas. Tikėkimės, kad kitose vairuotojo vietose tokio „prisitaikymo“ nėra.

Tačiau gamintojai lėtai, bet užtikrintai juda link taško, kai tolerancijos lygis bus įveiktas. „Adaptyvumas“ arba paleidžiamos programos apibrėžimas neleidžia etaloninėms programoms parodyti tikrojo kortelės našumo žaidimuose. Žaidimo vaizdo kokybė gali skirtis priklausomai nuo tvarkyklės. Gamintojai gali laisvai linksmintis su vairuotoju, priklausomai nuo to, kokių veiklos rezultatų tuo metu reikia rinkodaros skyriui. Na, o vartotojo teisė žinoti, ką iš tikrųjų perka, čia jau niekam neįdomi. Visa tai palikta žiniasklaidai – tegul atlieka savo švietėjišką misiją. O filtravimo gudrybės, kurias aptarėme savo straipsnyje, yra tik garsiausi tokie atvejai. Kas dar paslėpta nuo mūsų dėmesio, galima tik spėlioti.

Kiekvienas gamintojas pats nusprendžia, kokio lygio vaizdo kokybę jis suteiks standartiškai. Tačiau gamintojai turėtų dokumentuoti savo naudojamus optimizavimus, ypač jei jie yra paslėpti nuo žinomų etalonų, kaip neseniai pateiktame ATI pavyzdyje. Sprendimas akivaizdus: suteikite galimybę išjungti optimizavimą! Tada vartotojas galės pats nuspręsti, kas jam svarbiau – daugiau FPS ar geresnė kokybė. Jūs taip pat negalite pasikliauti „Microsoft“ kaip arbitru. WHQL testai neišmatuoja daugelio dalykų ir juos galima lengvai apeiti: ar žinote žodžio „reaguojantis“ reikšmę?

Šiuo metu žinomos filtravimo optimizacijos
ATi nVidia
Trilinear
optimizavimas
9600 RUB
X800
GF FX5xxx
(GF 6xxx)*
Kampinis optimizavimas
anizotropinis filtravimas
R9xxx
X800
GF 6xxx
Prisitaikantis
anizotropinis filtravimas
R9xxx
X800
GF FX5xxx
GF 6xxx
Scenos optimizavimas R9xxx
X800
GF FX5xxx
LOD optimizavimas R9xxx
X800(?)

Apskritai tokios diskusijos turi savo privalumų: pirkėjai ir, galbūt, OĮG klientai pradeda klausytis problemos. Neabejojame, kad nežaboto optimizavimo manija tęsis. Tačiau tamsos karalystėje pasirodė šviesos spindulys, kurį aiškiai parodė „nVidia“ su savo trilinijine optimizacija. Tikėkimės kitų panašių žingsnių!



Atsitiktiniai straipsniai

Aukštyn