U ovom trećem odjeljku, gdje ćemo dublje ući u stvaranje 3D igara, usredotočit ćemo se na ono što se događa u 3D svijetu nakon obrade u kutovima, a scena je rasterizirana. Konfiguracija je jedna od najvažnijih faza prikazivanja, premda se sve što se događa izračunava i zamjenjuje dvodimenzionalnom mrežom obojenih blokova.

Većina vizualnih efekata današnjih igara ovisi o pametnoj upotrebi tekstura - igre bez njih postaju dosadne i beživotne. Pa idemo roniti i vidjeti kako to rade!

Kao i uvijek, ako niste spremni duboko zaroniti u tkivo, nemojte paničariti - možete početi 3D igra Stvaranje 101, No nakon što osnove prođu, pročitajte naš sljedeći pogled na svijet 3D grafike.

Počnimo jednostavno

Odaberite najprodavanije 3D igre u posljednjih 12 mjeseci i sve će dijeliti nešto zajedničko: karte tekstura (ili samo teksture). Ovo je vrlo čest pojam, većina ljudi će stvoriti istu sliku pri razmatranju tekstura: jednostavan, ravan kvadrat ili pravokutnik (trava, kamen, metal, odjeća, lice, itd.) Koji sadrži sliku površine.

Međutim, ako se koristi u više slojeva i kombinira pomoću složene aritmetike, korištenje ovih osnovnih slika na 3D sceni može stvoriti iznenađujuće realne slike. Da bismo vidjeli kako je to moguće, hajde da ih u potpunosti preskočimo i vidimo kako predmeti u 3D svijetu mogu izgledati bez njih.




Kao što smo vidjeli u prethodnim člancima, 3D svijet čine uglovi - jednostavni oblici koji se kasnije mogu pomicati i obojati. Zatim se koriste za izradu primitiva, koji su također komprimirani u 2D pikselsku mrežu. Budući da nećemo koristiti teksture, trebamo obojati te piksele.




Zove se metoda koja se može koristiti ravno sjenčanjeuključuje uzimanje boje prve verzije primitivne tvari i zatim upotrebu te boje za sve piksele koji spadaju u opseg oblika u rasteru. To izgleda ovako:




Očito to nije realan čajnik, barem je boja površine pogrešna. Boje skaču s jedne razine na drugu, bez glatkog prijelaza. Rješenje ovog problema moglo bi biti korištenje nečega što se naziva Gouraud sjenčanje.




To je postupak koji uzima boje uglova i izračunava kako se boja mijenja po cijeloj površini trokuta. Korištena matematika linearna interpolacijaTo znači da, iako izgleda maštovito, u stvarnosti, ako je boja jedne primitivne strane 0,2 crvene, a druge strane 0,8 crvene, oblik ima boju između 0,2 i 0,8 (tj. 0,5).

To je relativno jednostavno napraviti, a njegova glavna prednost je brzina. Mnoge rane 3D igre koristile su ovu tehniku ​​jer je hardver koji je izračunavao bio ograničen na ono što su mogli raditi.




Ali čak i to ima svojih problema, jer ako svjetlo pokazuje ravno u sredini trokuta, njegovi uglovi (uglovi) ga možda neće pravilno uhvatiti. To znači da se naglasci koje uzrokuje svjetlost mogu u potpunosti previdjeti.




Iako su ravna i Gouraudova sjenčanja uključena u arsenal rendera, gornji su primjeri otvoreni kandidati za upotrebu tekstura radi njihovog liječenja. A da bismo bolje razumjeli što se događa kad se tekstura nanese na površinu, vratit ćemo se u vrijeme ... do 1996.

Kratka igra i povijest GPU-a

Quake je znamenita igra objavljena prije 23 godine id Softver, Iako to nije prva igra koja je za stvaranje okoliša koristila 3D poligone i teksture, bila je jedna od prvih koja ih je sve tako učinkovito koristila.

Druga stvar koju je učinio je pokazao što se može učiniti s OpenGL-om (grafički API još je bio u svojoj prvoj reviziji), a također je otišao dug put kako bi pomogao u prodaji prvog proizvoda s grafičkom karticom. Vjeran komentar ve 3Dfx Vudu.

U usporedbi s današnjim standardima, Voodoo je bio krajnje jednostavan: bez 2D grafičke podrške, bez obrade u kutovima i samo osnove obrade piksela. Bila je to ljepota:

Imao je čitav čip (TMU) da bi dobio teksturu piksela, a zatim još jedan čip (FBI) za miješanje s pikselom iz rastera. Može učiniti nekoliko dodatnih stvari poput stvaranja efekta magle ili prozirnosti, ali to je bilo gotovo to.

Ako damo pregled arhitekture koja stoji iza dizajna i rada grafičke kartice, možemo vidjeti kako ovi procesi funkcioniraju.

FBI čip uzima dvije vrijednosti boje i kombinira ih; jedan od njih može biti vrijednost iz tkiva. Postupak miješanja je matematički prilično jednostavan, ali malo se razlikuje od onoga što se točno miješa i onoga što API koristi za izvršavanje uputa.

Što gledamo Direct3D nudi Što se tiče funkcija miješanja i operacija miješanja, možemo vidjeti da se svaki piksel prvo množi s brojem između 0,0 i 1,0. Ovo određuje koliko će boja piksela utjecati na konačni izgled. Postavljene dvije boje piksela dodaju se, oduzimaju ili dupliciraju; U nekim funkcijama operacija je uvijek logički izraz u kojem je odabrano nešto poput najsvjetlijeg piksela.

Slika iznad je primjer kako to funkcionira u praksi; faktora koji se koristi za lijevi piksel alfa vrijednost. Ovaj broj, transparentan piksela.

Ostali koraci uključuju primjenu vrijednosti magle (preuzeto iz programske tablice koju je stvorio programer, zatim obavlja istu matematičku mješavinu); izvršiti neke provjere i prilagodbe vidljivosti i transparentnosti; prije nego što konačno upišete boju piksela u memoriju na grafičkoj kartici.

Zašto lekcija povijesti? Unatoč relativnoj jednostavnosti dizajna (posebno u usporedbi s modernim divovima), postupak objašnjava osnovne osnove teksture: nabavite neke vrijednosti boje i pomiješajte ih tako da modeli i okruženja gledaju kako treba biti u određenoj situaciji.

Današnje igre i dalje to rade, jedina je razlika u količini korištene teksture i složenosti izračunavanja miješanja. Zajedno simuliraju vizualne efekte koji se vide u filmovima ili kako svjetlost interaktivno djeluje na različite materijale i površine.

Osnove teksturiranja

Za nas je tekstura ravna, 2D slika primijenjena na poligone koji u prikazanom okviru čine 3D strukture. Za računalo to je samo mali blok memorije u obliku 2D matrice. Svaki unos u nizu predstavlja vrijednost boje za jedan od piksela na slici teksture (poznatija) punjenje teksta - piksela teksture).

Svaka vrhova poligona ima 2 koordinate (obično sen, v) govori koji je piksel u teksturi povezan s njim. Sam ugao ima 3 skupa koordinata (X ve Z) i kucanje teksta u uglovima. preslikavanje tekstura.

Da bismo to vidjeli u djelovanju, okrenimo se alatu koji koristimo nekoliko puta u ovoj seriji članaka: Stvaranje u stvarnom vremenu WebGL alat. Zasad, z koordinirajte iz uglova i držite sve u ravnoj ravnini.

Teksturu imamo s lijeva na desno sen, v koordinate preslikane izravno u kutove kutova x, y koordinate. Zatim gornji kutovi y njegove koordinate su se povećavale, ali budući da je tekstura još uvijek izravno preslikana na njih, tekstura je ispružena prema gore. Na slici krajnje desno, ovaj put promjena teksture: u vrijednosti su porasle, ali to uzrokuje drobljenje i potom ponavljanje.

Jer je tekstura sada efektivno duža, veća u Njegova vrijednost trebala bi se uklopiti u primitivne - u osnovi se tekstura djelomično ponavljala. Ovo je način da se napravi nešto što se vidi u mnogim 3D igrama: tponoviti, Uobičajeni primjeri toga mogu se pronaći u scenama sa stjenovitim ili travnatim krajolicima ili zidovima od opeke.

Sada postavimo da scena bude primitivnija, a mi ćemo vratiti dubinu u igru. Ono što imamo u nastavku je klasični krajolik, ali tekstura sanduka kopirana je i ponavljana među primitivima.

Ova tekstura sanduka iznosi 66 kilograma u izvornom gif formatu i rezolucije je 256 x 256 piksela. Izvorna razlučivost dijela okvira prekrivenog teksturama sanduka je 1900 x 680, tako da bi ovo područje moglo biti u mogućnosti prikazati samo 20 tekstura sanduka u smislu „površine“ piksela.

Očito vodimo više od 20 staza, toliko tekstura prsa u pozadini vrlo Manji od 256 x 256 piksela. Uistinu jesu i prošli su kroz proces smanjenje tkiva (da, ovo je riječ!). Pokušajmo još jednom, ali ovaj put nam se približila jedna od škrinja.

Imajte na umu da je tekstura veličine samo 256 x 256 piksela, ali ovdje možemo vidjeti da je tekstura veća od polovice širine slike širine 1900 piksela. Ta je tekstura prošla kroz nešto zvano povećanje tkiva.

Ova dva postupka teksture uvijek se događaju u 3D igrama, jer se sve teksture primijenjene na primitivima moraju skalirati zajedno s poligonima dok se kamera kreće po pozornici ili kako se modeli približavaju i odmiču. Matematički to nije velika stvar, u stvari čak i najjednostavniji integrirani grafički čipovi trepere u takvom poslu. Međutim, smanjenje i proširenje tkiva stvaraju nove probleme koje je potrebno riješiti na neki način.

Unesite mini teksture

Prvo pitanje koje treba popraviti je udaljena tkiva. Ako ponovo pogledamo prvu sliku krajolika sanduka, prave na horizontu imaju samo nekoliko piksela. Iz dva razloga besmisleno je pokušati komprimirati sliku od 256 x 256 piksela na tako malo područje.

Prvo, manja tekstura zauzima manje memorijskog prostora na grafičkoj kartici, što je korisno za pokušaj postavljanja male količine predmemorije. To znači da je manje vjerojatno da će biti uklonjen iz predmemorije, a opetovana upotreba ove teksture u potpunosti će iskoristiti podatke u obližnjoj memoriji. Drugi razlog dolazimo na trenutak jer ovisi o istom problemu za zumirane teksture.

Uobičajeno rješenje za upotrebu velikih tkiva drobljenih od strane malih primitivaca, spojke, To su svedene verzije izvorne teksture; sam pokretač igre može se stvoriti (pomoću odgovarajuće naredbe API za to) ili to mogu učiniti unaprijed dizajneri igara. Svaka razina tkiva mipmapa ima polovinu linearnih dimenzija prethodne.

Za teksturu sanduka događa se ovako nešto: 256 x 256 → 128 x 128 → 64 x 64 → 32 x 32 → 16 x 16 → 8 x 8 → 4 x 4 → 2 x 2 → 1 x 1.

Mipmapovi su sve u paketu, tako da je tekstura i dalje ista, ali je sada veća. Tkivo se pakuje na takav način da sen, v njegove koordinate ne samo da određuju koji texel treba primijeniti na piksel u okviru, već i iz kojeg mipmapa. Programeri zatim kodiraju program za određivanje mipmapa koji će se koristiti na temelju vrijednosti dubine kvadratnog piksela, pa ako je previsoka, piksel je na udaljenosti, tako da se može koristiti mali mipmap.

Čitatelji oštrih očiju možda su vidjeli nedostatak karata i doći na štetu većih tekstura. Izvorna tekstura sanduka je veličine 256 x 256 piksela, ali kao što možete vidjeti na gornjoj slici, mipmapped tekstura sada je 384 x 256. Da, ima puno slobodnog prostora, ali bez obzira na to kako ga pakirate u manje teksture, ukupno povećanje na barem jednoj dimenziji tkiva je 50%.

Međutim, to se odnosi samo na unaprijed pripremljene mape; Ako je pokretački program programiran da ih ispravno proizvodi, povećanje nikada ne može prelaziti 33% izvorne teksture. Na taj način dobivate prednosti performansi i vizualna poboljšanja za relativno malo povećanje memorije u mipmap tkivima.

Ispod je zatvorena / otvorena usporedba mipmapa tkiva:

Na lijevoj strani slike tekstura sanduka koristi se "onako kako jest", što rezultira zrnastim izgledom i navodno moire obrasci daleko. Međutim, s desne strane, uporaba mipmapova uzrokuje znatno mekši prijelaz pejzaža, pri čemu se tekstura sanduka pretvara u jednoličnu boju na horizontu.

Međutim, želi li netko nerazumljive teksture koje narušavaju pozadinu njihove omiljene igre?

Bilineer, trostruke pruge, anizotropne - za mene su svi grčki

Proces odabira piksela iz teksture koja će se primijeniti na piksel u okviru uzorkovanje tkivaa u savršenom svijetu njegova veličina, položaj, smjer itd. bez obzira na njegovu teksturu, to bi bila tekstura koja točno odgovara njegovom principu. Drugim riječima, uzorkovanje tekstura nije ništa drugo do postupak mapiranja 1 do 1 ravnog piksela u piksele.

Kako to nije slučaj, uzorkovanje tkiva mora uzeti u obzir niz čimbenika:

  • Je li tekstura povećana ili smanjena?
  • Je li tekstura originalna ili mipmap?
  • Pod kojim se uglom prikazuje tekstura?

Analizirajmo ih jednu po jednu. Prvo je dovoljno jasno: ako se tekstura poveća, bit će više teksta koji pokriva primitivni piksel više nego što je potrebno; S smanjivanjem će biti suprotno, svaki bi teksel trebao pokriti više od jednog piksela. Ovo je pomalo problem.

Drugo, mipmapovi ostavljaju tkiva pod kutom, jer se koriste da bi se zaobišao problem uzorkovanja tkiva s udaljenim primitivima. I da, i to je problem. Zašto? Budući da su sve teksture stvorene "otvorenim licem" za prikaz, ili su sve matematičke: normalna površina teksture jednaka je površini prikazanoj na tkivu.

Stoga, imati premalo ili previše tekstura i teksture pod kutom, filtriranje tkiva, Ako ne koristite ovaj postupak, dobivate sljedeće:

Ovdje smo zamijenili teksturu sanduka slovom R tekstura kako bismo jasnije pokazali koliku će zbrku imati bez filtriranja teksture!

Grafički API-ji poput Direct3D, OpenGL i Vulkan nude iste vrste filtriranja istog raspona, ali za njih koriste različita imena. U stvari, sve ide ovako:

  • Najbliža točka uzorkovanja
  • Linearno filtriranje teksture
  • Anizotropno filtriranje tkiva

Za sve namjere i svrhe, uzorkovanje najbliže točke ako ne filtrira - to je zato što je pikselu najbliži piksel koji zahtijeva uzorkovanje (tj. kopiranje iz memorije), a zatim miješanje piksela s izvornom bojom.

Ovdje dolazi do linearnog filtriranja. Potreban sen, v koordinate texel-a šalju se na hardver za uzorkovanje, ali umjesto da se najbliži texel dobije do tih koordinata, uzorkovač četiri texels. To su izravno iznad, dolje, s lijeve i desne strane odabrane, koristeći najbližu točku uzorkovanja.

Ta se 4 tekstila miješaju pomoću ponderirane formule. Na primjer, formula u Vulkanu:

T "Boja", f Četiri uzorkovana tekstila za drenirani i 1 do 4. vrijednosti alfa ve beta Koliko daleko od točke definirane sen, v koordinate dolaze od sredine slavine.

Srećom, svatko tko se bavi 3D igrama, bilo da se igra ili igra, automatski se događa u ovom čipu za grafičku obradu. U stvari, TMU čip u 3dfx Voodoo je to učinio: uzorkovao je 4 singla, a zatim ih pomiješao. Direct3D ovo čudno zove bilinearno filtriranje, međutim, od vremena Quake-a i Voodoo-ovog TMU čipa, grafičke kartice su se mogle filtrirati samo u jednom satnom ciklusu (ako tekstura ugodno sjedi u bliskoj memoriji), naravno.

Linearno filtriranje može se upotrijebiti uz mipmape i ako zaista želite biti simpatični s vašim filtriranjem, možete uzeti 4 teksta iz jedne teksture, zatim još 4 s sljedeće razine mipmapa i zatim ih kombinirati. I ime Direct3D za ovo? prostorni filtracije. Što tri o ovom procesu? Vaša pretpostavka je dobra kao i naša ...

Naziva se posljednja spomenuta metoda filtriranja anizotrop. Ovo je u stvari prilagodba u skladu s postupkom za biliarno ili trilinearno filtriranje. U početku stupanj anizotropije primitivna površina (i iznenađujuće komplicirano) - ova vrijednost mijenja omjer slike primitiva zbog njegove orijentacije:

Slika iznad pokazuje isti kvadratni princip s rubovima jednake duljine; ali kako se odmičemo od naše perspektive, kvadrat izgleda kao pravokutnik i njegova širina ide iznad njegove visine. Dakle, primitivac s desne strane ima veću anizotropiju nego na lijevoj strani (a u slučaju kvadrata, stupanj je točno nula).

Većina današnjih 3D igara omogućuje vam aktiviranje anizotropnog filtriranja i podešavanje njegove razine (1x do 16x), ali što se to zapravo mijenja? Postavka kontrolira maksimalni broj dodatnih uzoraka tekstila uzetih po originalnom linearnom uzorkovanju. Na primjer, recimo da je igra postavljena za korištenje 8x anizotropnog bilinearnog filtriranja. To znači da će umjesto 4 tekstualne vrijednosti donijeti 32 vrijednosti.

Jasno je da se primjenom anizotropnog filtriranja mogu primijetiti:

Samo prelazite prstom prema gore i usporedite najbliže uzorkovanje za maksimalno 16x anizotropno trilinearno filtriranje. Tako glatko, gotovo ukusno!

Ali mora postojati cijena da se isplati sav ovaj prekrasan okus teksture maslaca i definitivno performanse: sve maksimalno, anizotropno trilinearno filtriranje donijet će 128 uzoraka iz jedne teksture za svaki obrađeni piksel. Čak i za najbolje najnovije grafičke procese, to se ne može učiniti u jednom satnom ciklusu.

Ako dobijemo nešto poput AMD-a Radeon RX 5700 XToznačite da svaka jedinica tkiva unutar procesora može zatvoriti 32 adrese texel-a u jednoj petlji sata, a zatim umetnuti 32 teksta iz memorije (svaka 32-bitna veličina) u drugi ciklus sata, a zatim ih sastaviti 4 kasnije. Stoga je miješano za 128 uzoraka tekstila koji zahtijevaju ciklus od najmanje 16 sati.

Sada osnovna brzina takta 5700 XT iznosi 1605MHz, tako da šesnaest ciklusa traje samo 10 nanosaniye, Učinite to za svaki piksel u 4K okviru. jedan tkivna jedinica i dalje bi trajala samo 70 milisekundi. Ok, možda performanse nisu bitne!

Čak i 1996. godine, primjerice 3Dfx Voodoo bio je prilično moderan u rukovanju teksturama. Maksimum se može dati u 1 bilinear filtriranom tekelu u satnom ciklusu, a dok je TMU čip njihao na 50 MHz, to je značilo da se 50 sekundi tekstila može rezati svake sekunde. U igri koja radi na 800 x 600 i 30 fps, potrebno je samo 14 milijuna u sekundi teksta.

Međutim, sve to pretpostavlja da su teksture u obližnjoj memoriji i da se na svaki piksel preslikava samo jedan texin. Prije dvadeset godina ideja da se na princip mora primijeniti više tekstura bila je gotovo potpuno nepoznata, ali sada je to uobičajena. Pogledajmo zašto se ta promjena dogodila.

Osvjetljavanje puta do spektakularnih slika

Pogledajte ovaj prizor iz Quakea kako biste lakše shvatili kako je tkanina postala tako važna:

Ova tamna slika bila je priroda ove igre, ali možete vidjeti da mrak nije svugdje isti - mrlje zidova i poda su svjetlije od drugih kako bi se dobio opći osjećaj osvjetljenja u tom prostoru.

Primiti koji tvore stranice i pod imaju istu teksturu nanesenu na njih, ali postoji i druga tekstura koja se naziva. karta svjetlamiješa se s vrijednostima texela prije nego što se podudaraju s kvadratnim pikselima. Tijekom Quake-ovih dana, svjetlosne karte unaprijed su izračunale i napravile igračke igre i koristile se za stvaranje statičke i dinamičke razine svjetlosti.

Prednost njihove upotrebe bila je u tome što su složeni proračuni osvjetljenja rađeni na teksturama a ne na uglovima, posebno poboljšavajući izgled scene i vrlo male troškove izvođenja. Očito nije savršeno: kao što možete vidjeti na terenu, granica između osvijetljenih područja i onih u sjeni je vrlo obična.

Na mnogo načina, lagana karta je samo još jedna tekstura (imajte na umu da su sve samo 2D nizovi podataka), tako da ono što ovdje gledamo je rana upotreba onoga što je poznato. višestruka tekstura, Kao što naziv govori, to je proces u kojem se na princip primjenjuju dva ili više dodira. Korištenje svjetlosnih karata u Quakeu bilo je rješenje za prevladavanje ograničenja sjenčenja Gourauda, ​​ali kako su mogućnosti grafičkih kartica rasle, tako su rasle i aplikacije s više pogona.

3Dfx Voodoo, poput ostalih karata njegove ere, bio je ograničen na to koliko može učiniti u renderu proći, To je u osnovi potpuni slijed prikazivanja: od obrade uglova do rastriranja okvira, a zatim promjene piksela u konačni međuspremnik okvira. Prije 20 godina igre su gotovo uvijek imale samo jedan prolaz.

Razlog za to je bio što je skupo u pogledu performansi, jer želite dva puta obraditi uglove kako biste nanijeli više teksture. Nekoliko godina nakon Voodoo-a, morali smo čekati dok grafičke kartice ATI Radeon i Nvidia GeForce 2 postanu dostupne kako bismo mogli napraviti više izvlačenja u jednom prijelazu rendera.

Ti su GPU-ovi imali više teksturnih jedinica po odjeljku za obradu piksela (tj. cjevovodBio je cinch donijeti filtrirani tekel iz dvije odvojene teksture. To je učinilo mapiranje svjetla još popularnijim i promijenilo vrijednosti svjetlosti zbog promjena u okruženju igara, čime su igre postale potpuno dinamične.

Ali postoji mnogo više što se može učiniti s više tekstura, pa pogledajmo.

Normalno je umnožavati visinu

U ovom nizu članaka o 3D prikazivanju nismo se pozabavili kako uloga GPU-a doista odgovara cijelom problemu (to ćemo još učiniti, još ne!). Ali ako se vratiš Epizoda 1a pogledajte sav komplicirani rad u kutnoj obradi, možda mislite da je ovo najteži dio čitavog niza za prikaz grafičkog procesora.

To traje već duže vrijeme, a programeri igara dali su sve od sebe kako bi smanjili ovo radno opterećenje. To je značilo da dohvatite torbu za vizualne trikove i uklonite što je moguće više prečaca i trikova, dajući isti vizualni izgled korištenjem više kutova svuda, ali zapravo ne koristeći mnoge da biste ih pokrenuli.

I većina ovih trikova, karte visina ve normalne karte, Njih dvoje odnose se na činjenicu da se drugi može stvoriti od prvog, ali za sada pogledajmo samo tehniku ​​pod nazivom: bump mapiranje.

Mapiranje gomolja uključuje upotrebu 2D sekvence koja se zove elevacijska karta, a koja izgleda kao jedna inačica izvornog tkiva. Na primjer, na slici iznad nalazi se realistična tekstura opeke nanesena na 2 ravne površine. Karta teksture i visine izgleda ovako:

Boje karte visine predstavljaju norme površine opeke (pokrili smo ono što je normalno Epizoda 1 ovaj članak serija). Kada slijed rendera dosegne točku nanošenja teksture opeke na površinu, vrši se niz izračuna kako bi se boja teksture opeke prilagodila normalnoj.

Kao rezultat, iako su cigle i dalje potpuno ravne, izgledaju više 3D. Osobito ako pažljivo pogledate rubove cigle, možete vidjeti granice tehnike: tekstura izgleda malo iskrivljeno. Međutim, za brzi broj dodavanja više detalja na površinu, mapiranje gomolja vrlo je popularno.

Normalna karta je poput mape visine, ali boje te teksture su i same po sebi normalne. Drugim riječima, za normalizaciju karte visine nije potreban izračun. Možda se pitate kako se boje mogu koristiti za prikaz strelice u prostoru. Odgovor je jednostavan: svaki teksel je specifičan R, G, B vrijednosti (crvena, zelena, plava) i ovi brojevi su izravno X ve Z vrijednosti za normalan vektor.

U gornjem primjeru, lijevi dijagram prikazuje kako se smjer normale mijenja na neravnoj površini. Da bi iste normale prikazali u ravnoj teksturi (srednji dijagram), dodijelimo im boju. U našem slučaju R, G, B Povećanje vrijednosti (0,255,0) za ravnu, a zatim crvena količina za lijevu i plavu za desnu.

Imajte na umu da se ova boja ne kombinira s izvornim pikselom - to govori procesoru u kojem je pravcu okrenut normalni da bi kamera mogla točno izračunati kutove između svjetla i teksture površine.

Kad se na pozornici koristi dinamično osvjetljenje, koristi od udarca i normalnog podudaranja stvarno sjaju, a postupak prikazivanja izračunava efekte promjene svjetlosti po pikselu, a ne za svaki kutak. Moderne igre sada koriste puno teksture za poboljšanje kvalitete magije.

Ovaj realističan izgled nevjerojatno je samo ravna površina - detalji o cigli i malteru nisu izrađeni na milijunima poligona. Umjesto toga, radi samo 5 tekstura i puno pametnih matematičkih poslova.

Karta nadmorske visine korištena je za izradu normalne karte za simulaciju putanja zasjenjenja cigle do sebe i svih manjih promjena na površini. Tekstura hrapavosti korištena je za promjenu načina na koji svjetlost odražava različite elemente zida (npr. Spljoštena opeka se odražava dosljedno od grubog maltera).

Posljednja karta, na gornjoj slici označena kao AO, dio je procesa koji se naziva medijski zagušenje: ovo je tehnika koju ćemo pogledati u kasnijem članku, ali za sada su to samo sjene.

Usklađivanje tkiva je vrlo važno

Apsolutno je presudan za teksturirani dizajn igara. Nabavite verziju Warhorse Studio za 2019. godinu Kraljevstvo dolazi: spasenje RPG za prvu osobu osnovan je u Bohemiji iz 15. stoljeća, drevnoj zemlji na Bliskom Istoku Europe. Dizajneri su željno stvorili što realniji svijet za predmetno razdoblje. A najbolji način da se glumac oživi prije stotina godina jest taj da svaki pogled na krajolik, zgrada, set odjeće, kose, svakodnevni proizvodi itd. Bilo je to ispravno tražiti.

Svaku jedinstvenu teksturu ove jedinstvene slike u igri stvorili su umjetnici, a njihovu uporabu prikazivao je programer upravljani motor. Neke su male, osnovne i zahtijevaju vrlo malo filtriranja ili obrade drugih tkiva (poput pilećih krilca).

Ostale su visoke razlučivosti i pokazuju puno sitnih detalja; filtrirano anizotropno i pomiješano s normalnim kartama i drugim teksturama - samo pogledajte lice čovjeka u prvom planu. Programeri objašnjavaju različite zahtjeve teksture svake stavke na pozornici.

Sve se to sada događa u mnogim igrama jer igrače čeka više detalja i realizma. Teksture će rasti i sve će se više koristiti na površini, ali postupak uzorkovanja teksta i njegova primjena na piksele bit će u osnovi isti kao i u Quake danima. Najbolja tehnologija nikad ne umire, bez obzira koliko godina!