I denne tredje delen, hvor vi ser dypere på å lage 3D-spill, vil vi fokusere på hva som skjer med 3D-verdenen etter hjørnebehandling og scenen er rasterisert. Konfigurasjon er et av de viktigste stadiene i gjengivelsen, selv om alt som skjer blir beregnet og erstattet av et todimensjonalt rutenett med fargede blokker.

De fleste av de visuelle effektene man ser i spill i dag, avhenger av smart bruk av teksturer - spill uten at de blir kjedelige og livløse. Så la oss gå dykk og se hvordan disse fungerer!

Som alltid, hvis du ikke er klar til å ta et dypt dykk i vevet, ikke få panikk - du kan begynne 3D Game Creation 101. Men når det grunnleggende har gått, kan du lese videre for neste blikk på 3D-grafikkverdenen.

La oss begynne enkelt

Velg det mest solgte 3D-spillet de siste 12 månedene, og de vil alle dele noe vanlig: tekstur kart (eller bare teksturer). Dette er et veldig vanlig begrep, de fleste vil lage det samme bildet når de vurderer strukturer: et enkelt, flatt firkant eller rektangel (gress, stein, metall, klær, ansikt, etc.) som inneholder et bilde av en overflate.

Når de brukes i flere lag og kombinert med kompleks aritmetikk, kan bruk av disse grunnleggende bildene på 3D-scenen imidlertid produsere overraskende realistiske bilder. For å se hvordan dette er mulig, la oss hoppe over dem fullstendig og se hvordan objekter i 3D-verden kan se ut uten dem.




Som vi har sett i tidligere artikler, består 3D-verdenen av hjørner - enkle former som kan flyttes og deretter farges. Disse brukes deretter til å lage primitiver, som også komprimeres til et 2D-pikselnett. Siden vi ikke vil bruke teksturer, må vi fargelegge disse pikslene.




Det kalles en metode som kan brukes rett skyggelegginginnebærer å ta fargen på det første toppunktet til det primitive stoffet og deretter bruke den fargen for alle piksler som faller innenfor rammen av formen i rasteren. Det ser slik ut:




Det er klart dette ikke er en realistisk tekanne, i det minste er overflatefargen feil. Farger hopper fra et nivå til et annet, uten jevn overgang. En løsning på dette problemet kan være å bruke noe som heter Gouraud skyggelegging.




Dette er en prosess som tar fargene på hjørnene og beregner hvordan fargen endres over overflaten av trekanten. Matematikk brukt Lineær interpoleringDette betyr at selv om det ser fancy ut, i virkeligheten, hvis fargen på den ene primitive siden er 0,2 rød og den andre siden er 0,8 rød, har formen en farge mellom 0,2 og 0,8 (dvs. 0,5).

Det er relativt enkelt å gjøre, og den viktigste fordelen er hastighet. Mange tidlige 3D-spill brukte denne teknikken fordi maskinvaren som foretok beregningene var begrenset til hva de kunne gjøre.




Men selv dette har sine problemer, for hvis et lys peker rett i midten av en trekant, kan det hende at hjørnene (hjørnene) ikke fanger det ordentlig. Dette betyr at høydepunkter forårsaket av lys kan overses fullstendig.




Mens flat og Gouraud-skygge er inkludert i render-arsenalet, er eksemplene ovenfor åpne kandidater for bruk av teksturer for å helbrede dem. Og for å få en god forståelse av hva som skjer når en tekstur påføres en overflate, vil vi være tilbake i tid ... til 1996.

Et kort spill og GPU-historie

Quake er et landemerke spill utgitt for 23 år siden ID-programvare. Selv om det ikke var det første spillet som brukte 3D-polygoner og teksturer for å skape miljøet, var det en av de første som brukte dem alle så effektivt.

En annen ting han gjorde var å vise hva som kan gjøres med OpenGL (grafikk-API-en var fremdeles i sin første revisjon), og det gikk også langt for å hjelpe til med å selge det første grafikkortproduktet. Bekreft kommentar ve 3Dfx Vudu.

Sammenlignet med dagens standarder, var Voodoo ekstremt enkel: ingen 2D-grafikkstøtte, ingen hjørnebehandling og bare det grunnleggende om pikselbehandling. Det var fremdeles en skjønnhet:

Den hadde en hel brikke (TMU) for å få en piksel fra en tekstur, og deretter en annen brikke (FBI) for å blande den med en piksel fra rasteren. Det kan gjøre noen flere ting som å lage tåke- eller gjennomsiktighetseffekter, men det var nesten det.

Hvis vi gir en oversikt over arkitekturen bak design og drift av grafikkortet, kan vi se hvordan disse prosessene fungerer.

FBI-brikken tar to fargeverdier og kombinerer dem; en av dem kan være en verdi fra et vev. Blandingsprosessen er matematisk ganske enkel, men den skiller seg litt mellom hva som blir blandet nøyaktig og hvilket API som brukes til å utføre instruksjoner.

Hva vi ser ut Direct3D tilbyr Når det gjelder blandingsfunksjoner og blandingsoperasjoner, kan vi se at hver piksel først multipliseres med et tall mellom 0,0 og 1,0. Dette avgjør hvor mye av pikselens farge som vil påvirke det endelige utseendet. De angitte to pikselfargene legges deretter til, trekkes fra eller dupliseres; I noen funksjoner er betjening alltid et logisk uttrykk der noe som den lyseste piksel er valgt.

Bildet over er et eksempel på hvordan dette fungerer i praksis; av faktoren som ble brukt for venstre piksel alfa verdi. Dette tallet, gjennomsiktig piksler.

Resten av trinnene innebærer å bruke en tåkeverdi (hentet fra en programtabel opprettet av programmereren, og gjør deretter den samme blandingsmatematikken); å gjøre noen synlighets- og åpenhetskontroller og justeringer; før du til slutt skriver fargen på pikslen i minnet på grafikkortet.

Hvorfor historietime? Til tross for designets relative enkelhet (spesielt sammenlignet med moderne giganter), forklarer prosessen de grunnleggende grunnleggende om teksturering: få noen fargeverdier og bland dem slik at modeller og miljøer ser på hvordan det skal være i en spesiell situasjon.

Dagens spill gjør fortsatt alt dette, den eneste forskjellen er mengden tekstur som brukes og kompleksiteten i blandingsberegningene. Sammen simulerer de visuelle effekter sett i filmer eller hvordan lys interagerer med forskjellige materialer og overflater.

Grunnleggende om teksturering

For oss er en tekstur et flatt, 2D-bilde brukt på polygoner som utgjør 3D-strukturer i den viste rammen. For en datamaskin er det ikke annet enn en liten hukommelsesblokk i form av en 2D-matrise. Hver oppføring i matrisen representerer en fargeverdi for en av pikslene i teksturbildet (bedre kjent) tekstfiller - teksturpiksler).

Hvert toppunkt i en polygon har 2 koordinater (vanligvis sen, v) forteller hvilken piksel i tekstur som er assosiert med den. Hjørnet i seg selv har 3 sett med koordinater (X ve Z) og skrive tekst til hjørnene. tekstur kartlegging.

For å se dette i aksjon, la oss henvende oss til et verktøy som vi bruker flere ganger i denne artikkelserien: Real Time Creating WebGL verktøy. For nå, z koordinat fra hjørnene og hold alt i et flatt plan.

Vi har tekstur fra venstre mot høyre sen, v koordinater kartlagt direkte i hjørnehjørner x, y koordinater. Så de øverste hjørnene y koordinatene økte, men siden tekstur fremdeles er direkte kartlagt til dem, blir strukturen strukket oppover. På bildet helt til høyre endret denne gangen tekstur: u verdiene har økt, men dette fører til at vevet knuses og deretter gjentas.

Fordi teksturen nå er effektiv lenger, høyere u Verdien skulle passe inn i den primitive - i hovedsak ble teksturene delvis gjentatt. Dette er en måte å gjøre noe sett på i mange 3D-spill: tgjenta. Vanlige eksempler på dette finnes i scener med steinete eller gresskledde landskap eller murvegger.

La oss nå stille scenen til å være mer primitiv, og vi setter dybden tilbake i spillet. Det vi har nedenfor er et klassisk landskapssyn, men kistetexturen er kopiert og gjentatt blant primitiver.

Nå er denne kasseteksturen 66 kilo i sitt originale gif-format og har en oppløsning på 256 x 256 piksler. Den opprinnelige oppløsningen av delen av rammen som er dekket av kasseteksturer er 1900 x 680, så dette området bør bare være i stand til å vise bare 20 kasseteksturer når det gjelder "område" for piksler.

Vi tar tydeligvis mer enn 20 stier, så mange brystteksturer i bakgrunnen veldig Mindre enn 256 x 256 piksler. De er og har gjennomgått en prosess vevsreduksjon (ja, dette er et ord!). La oss prøve igjen, men denne gangen kom det nærmere et av kistene.

Legg merke til at tekstur er bare 256 x 256 piksler i størrelse, men her kan vi se at en tekstur er mer enn halvparten av bredden på et 1900 piksler bredt bilde. Denne tekstur gikk gjennom noe som heter vevforstørrelse.

Disse to teksturprosessene forekommer alltid i 3D-spill, fordi alle teksturer som brukes på primitiver må skaleres sammen med polygoner når kameraet beveger seg rundt scenen eller når modeller nærmer seg og beveger seg bort. Matematisk sett er dette ikke noe særlig, selv de enkleste integrerte grafikkbrikkene blinker i en slik jobb. Vevsreduksjon og utvidelse gir imidlertid nye problemer som må løses på noen måte.

Legg inn miniteksturer

Den første problemet å fikse er for fjernt vev. Hvis vi ser på det første kasselandskapet igjen, er de rette i horisonten bare noen få piksler i størrelse. Det er meningsløst av to grunner å prøve å komprimere et 256 x 256 pikselbilde til et så lite område.

For det første tar en mindre tekstur mindre minne på grafikkortet, noe som er nyttig for å prøve å få plass til en liten cache. Dette betyr at det er mindre sannsynlig at det blir fjernet fra cachen, og gjentatt bruk av denne tekstur vil dra full nytte av data i minnet i nærheten. Den andre grunnen til at vi kommer et øyeblikk fordi det avhenger av det samme problemet for zoomede teksturer.

En vanlig løsning for bruk av store vev knust av små primitiver, kopling. Dette er minimerte versjoner av den originale tekstur. selve spillmotoren kan opprettes (ved å bruke den korresponderende API-kommandoen for å gjøre disse) eller kan gjøres på forhånd av spilldesignere. Hvert mipmap vevsnivå har halvparten av de lineære dimensjonene til det forrige.

For kasseteksturen skjer noe slikt: 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.

Mipmaps er alle pakket sammen, så tekstur er fremdeles det samme filnavnet, men er nå større. Vevet er pakket på en slik måte sen, v dens koordinater bestemmer ikke bare hvilken tekst som skal brukes på en piksel i rammen, men også fra hvilken mipmap. Programmerere koder deretter gjengiveren for å bestemme mipmapet som skal brukes basert på dybdeverdien til kvadratpikselen, så hvis den er for høy, er pixelen på avstand, slik at en liten mipmap kan brukes.

Skarpøyde lesere kan ha sett ulempen med mipmaps og kommet på bekostning av større teksturer. Den originale kasseteksturen er 256 x 256 piksler i størrelse, men som du kan se på bildet over, er den mipmappede tekstur nå 384 x 256. Ja, det er mye ledig plass, men uansett hvordan du pakker det i mindre teksturer, er den totale økningen til minst en av dimensjonene til vevet 50%.

Dette gjelder imidlertid bare forberedte mipmaps; Hvis spillmotoren er programmert til å produsere dem ordentlig, kan økningen aldri overstige 33% av den opprinnelige teksturstørrelsen. Så du får ytelsesfordeler og visuelle forbedringer for en relativt liten økning i minne i vevsmipmapper.

Nedenfor er en lukket / åpen sammenligning av vevsmipmapper:

På venstre side av bildet brukes kasseteksturene 'som den er', noe som resulterer i et kornete utseende og visstnok moire mønstre borte. På høyresiden forårsaker imidlertid bruk av mipmaps en mye mykere overgang over landskapet, der kassetexturen blir til en jevn farge i horisonten.

Imidlertid er det noen som ønsker uklare strukturer som forstyrrer bakgrunnen til favorittspillet deres?

Bilineer, trippel striper, anisotropisk - alt gresk for meg

Prosessen med å velge piksler fra en tekstur som skal brukes på en piksel i en ramme vevsprøvetakingog i en perfekt verden, dens størrelse, posisjon, retning osv. uavhengig av strukturen, vil det være en tekstur som nøyaktig samsvarer med prinsippet. Tekstprøvetaking er med andre ord ikke annet enn en kartleggingsprosess på 1 til 1 flat pixel til piksel.

Siden dette ikke er tilfelle, må prøvetaking av vev ta hensyn til en rekke faktorer:

  • Forstørres eller reduseres teksturen?
  • Er teksturene originale eller et mipmap?
  • I hvilken vinkel vises tekstur?

La oss analysere dem en etter en. Den første er tydelig nok: hvis tekstur er forstørret, vil det være mer tekst som dekker den primitive piksel mer enn nødvendig; Med krymping vil det være motsatt, hver tekst skal nå dekke mer enn en piksel. Dette er litt av et problem.

For det andre lar mipmaps vevene stå i vinkel, ettersom de brukes til å omgå problemet med prøvetaking av vev med fjerne primitiver. Og ja, dette er også et problem. Hvorfor? Siden alle teksturer er opprettet 'ansikt-åpne' for en visning, eller alle er matelignende: teksturens normale overflate er den samme som overflaten som vises på vevet.

For å ha for lite eller for mange teksturer og å ha teksturer i vinkel, vevsfiltrering. Hvis du ikke bruker denne prosessen, er det dette du får:

Her har vi byttet ut kasseteksturen med en bokstav R-tekstur for å vise tydeligere hvor mye forvirring det vil ha uten å filtrere tekstur!

Grafiske API-er som Direct3D, OpenGL og Vulkan tilbyr alle de samme filtreringsområdene, men bruker forskjellige navn for dem. Det hele går faktisk slik:

  • Prøvetaking nærmeste punkt
  • Lineær teksturfiltrering
  • Anisotropisk vevsfiltrering

For alle formål, nærmeste punktprøver hvis den ikke filtrerer - skyldes det at det er den nærmeste piksel til pikselet som krever sampling (dvs. å kopiere den fra minnet) og deretter blande pikslen med den opprinnelige fargen.

Her kommer lineær filtrering til unnsetning. Må sen, v texel koordinater blir sendt til maskinvaren for prøvetaking, men i stedet for å få nærmeste texel til disse koordinatene, vil prøvetakeren fire tekslene. Disse er rett over, under, til venstre og til høyre for den som er valgt ved hjelp av nærmeste punktprøver.

Disse 4 tekstilene blir deretter blandet ved å bruke en vektet formel. For eksempel formelen i Vulkan:

T "Farge", f Fire prøvetekstede tekstiler for det drenerte og 1 til 4. verdier alfa ve beta Hvor langt fra punktet definert av sen, v koordinater kommer fra midten av springen.

Heldigvis skjer alle som er involvert i 3D-spill, enten de spiller eller spiller, automatisk i denne grafikkbehandlingsbrikken. Faktisk gjorde TMU-brikken i 3dfx Voodoo dette: den samplet 4 singler og blandet dem deretter. Direct3D kaller dette underlig bilinær filtrering, Imidlertid, siden tiden for Quake og Voodoos TMU-brikke, har grafikkort bare vært i stand til å filtrere etter en times syklus (hvis teksturene sitter godt i nært minne), selvfølgelig.

Lineær filtrering kan brukes ved siden av mipmaps, og hvis du virkelig vil være fancy med filtreringen din, kan du ta 4 tekster fra en tekstur, deretter en annen 4 fra neste mipmap-nivå og deretter kombinere dem. Og navnet på Direct3D for dette? trelineær filtrering. Hva tri om denne prosessen? Gjetningen din er like god som vår ...

Den siste nevnte filtreringsmetoden heter anizotrop. Dette er faktisk en justering i henhold til prosessen for bilirær eller trilinær filtrering. I utgangspunktet grad av anisotropi primitiv overflate (og overraskende komplisert) - denne verdien endrer størrelsesforholdet til den primitive på grunn av dens orientering:

Bildet over viser samme firkantede prinsipp med like lengder kanter; men når vi beveger oss bort fra perspektivet vårt, ser plassen ut som et rektangel og bredden går over høyden. Så den primitive til høyre har en større anisotropi enn til venstre (og for et kvadrat er graden nøyaktig null).

De fleste av dagens 3D-spill lar deg aktivere anisotropisk filtrering og deretter justere nivået (1x til 16x), men hva endrer dette egentlig? Innstillingen kontrollerer det maksimale antallet ekstra teksteksempler som er tatt per original lineær prøvetaking. La oss for eksempel si at spillet er satt til å bruke 8x anisotropisk bilinær filtrering. Dette betyr at i stedet for å ta bare 4 tekstverdier, vil det bringe 32 verdier.

Det er tydelig at bruk av anisotropisk filtrering kan merke:

Bare sveip litt opp og sammenlign det nærmeste punktprøvetaket for maksimal 16x anisotropisk trilinær filtrering. Så glatt, nesten deilig!

Men det må være en pris å betale for all denne vakre smørstruktursmaken, og absolutt ytelse: hele den maksimale, anisotrope, trilineære filtreringen vil gi 128 prøver fra en tekstur for hver behandlede piksel. Selv for de beste av de nyeste GPU-ene, kan dette ikke gjøres i en enkelt klokkesyklus.

Hvis vi får noe sånt som AMD Radeon RX 5700 XTmerke hver vevsenhet inne i prosessoren kan lukke 32 texel-adresser i en klokke loop, og deretter laste 32 texler fra minnet (hver 32 bit størrelse) i en annen klokke syklus, og deretter sette sammen 4 senere. Derfor ble det blandet for 128 texaprøver som krever en syklus på minst 16 timer.

Nå er basisklokkehastigheten til 5700 XT 1605 MHz, så seksten sykluser tar bare 10 nanosaniye. Bare gjør dette for hver piksel i 4K-rammen. en vevsenheten vil fortsatt ta bare 70 millisekunder. Ok, kanskje gjør ytelse ikke noe!

Selv i 1996 var slike ting som 3Dfx Voodoo ganske stilige når det gjaldt å håndtere teksturer. Maksimumet kan gis i en bilinær filtrert texel per times syklus, og mens TMU-brikken svingte ved 50 MHz, betydde det at 50 millioner texins kunne kuttes hvert sekund. I et spill som går på 800 x 600 og 30 fps, kreves det bare 14 millioner per sekund tekst.

Alt dette forutsetter imidlertid at teksturene er i minnet i nærheten, og at bare en texin er kartlagt til hver piksel. For tjue år siden var ideen om å måtte bruke mer enn en tekstur på et prinsipp nesten helt ukjent, men nå er den vanlig. La oss se på hvorfor denne endringen skjedde.

Tenner banen til spektakulære bilder

Ta en titt på denne scenen fra Quake for å forstå hvordan stoffet har blitt så viktig:

Dette mørke bildet var arten av dette spillet, men du kan se at mørket ikke er det samme overalt - veggene og gulvets lapper er lysere enn andre for å gi en generell følelse av belysning i det området.

Primitivene som danner sidene og gulvet har samme tekstur som de påføres, men det er en andre tekstur som heter. lys kartblandes med texelverdier før de blir matchet med firkantede piksler. I løpet av Quake-dager ble lyskart forhåndsberegnet og laget av spillmotoren og brukt til å lage statiske og dynamiske lysnivåer.

Fordelen med å bruke dem var at det ble foretatt komplekse belysningsberegninger på teksturer i stedet for hjørner, noe som spesielt forbedret utseendet til en scene og svært lite ytelseskostnader. Åpenbart ikke perfekt: som du ser på bakken, er grensen mellom de opplyste områdene og de i skyggen veldig ren.

På mange måter er et lett kart bare en annen tekstur (husk at de alle er bortsett fra 2D-dataarrayer), så det vi ser på her er tidlig bruk av det som er kjent. flere tekstur. Som navnet tilsier, er det en prosess der to eller flere berøringer brukes på et prinsipp. Å bruke lyskart i Quake var en løsning for å få bukt med begrensningene i Gouraud-skyggelegging, men etter hvert som mulighetene til grafikkort vokste, vokste også applikasjoner med flere stasjoner.

3Dfx Voodoo, som andre kort fra sin tid, var begrenset til hvor mye det kunne gjøre i en gjengivelse sende. Dette er egentlig en fullstendig gjengivelsessekvens: fra å behandle hjørner til rastering av rammen og deretter endre pikslene til en endelig rammebuffer. For tjue år siden gjorde spill nesten alltid et enkelt pass.

Årsaken til dette var at det var veldig kostbart med tanke på ytelse, siden du vil behandle hjørnene to ganger bare for å bruke mer tekstur. Noen år etter Voodoo, måtte vi vente til ATI Radeon og Nvidia GeForce 2-grafikkort ble tilgjengelige slik at vi kunne gjøre flere tegninger i en enkelt gjengivelsesovergang.

Disse GPU-ene hadde flere teksturenheter per behandlingsdel for piksler (dvs. rørledningDet var en kløkt å ta med en filtrert tekstel fra to separate strukturer. Dette gjorde lyskartleggingen enda mer populær og endret lysverdiene på grunn av endringer i spillmiljøet, noe som gjorde spillene fullt dynamiske.

Men det er mye mer som kan gjøres med flere teksturer, så la oss ta en titt.

Det er normalt å multiplisere høyden

I denne serien med artikler om 3D-gjengivelse har vi ikke tatt for oss hvordan rollen til GPU egentlig passer til hele saken (vi skal gjøre det ennå, ikke ennå!). Men hvis du kommer tilbake Episode 1og se på det kompliserte arbeidet med hjørnebehandling, kanskje du tror dette er den vanskeligste delen av hele arrayen for grafikkprosessoren å gjengi.

Det har vært i lang tid, og spillprogrammerere har gjort sitt beste for å redusere denne arbeidsmengden. Dette innebar å nå den visuelle trikseposen og fjerne så mange snarveier og triks som mulig, og gi det samme visuelle utseendet som å bruke flere hjørner overalt, men faktisk ikke bruke mange for å starte den.

Og de fleste av disse triksene, høydekart ve vanlige kart. De to forholder seg til det faktum at den andre kan opprettes fra den første, men foreløpig, la oss bare se på en teknikk som heter: humpekartlegging.

Knollkartlegging innebærer å bruke en 2D-sekvens kalt elevasjonskartet, som ser ut som en enkelt versjon av det originale vevet. På bildet ovenfor er det for eksempel en realistisk teglstextur påført på to flate overflater. Konsistensen og høydekartet ser slik ut:

Fargene på høydekartet representerer normene til muroverflaten (vi dekket det som er normalt Episode 1 denne artikkelserien). Når gjengivelsessekvensen når poenget med påføring av teglstextur på overflaten, blir det gjort en serie beregninger for å justere fargen på teglstexturen til normal.

Som et resultat, selv om mursteinene fremdeles er helt flate, ser de mer 3D ut. Spesielt hvis du nøye ser på kantene på mursteinene, kan du se grensene for teknikken: tekstur ser litt kronglete ut. Imidlertid er knollkartlegging veldig populært for et raskt antall å legge til flere detaljer til en overflate.

Et normalt kart er som et høydekart, men fargene på strukturen er normale i seg selv. Med andre ord er det ikke nødvendig med en beregning for å normalisere høydekartet. Du lurer kanskje på hvordan farger kan brukes til å representere en pil i rommet. Svaret er enkelt: hver tekst er en spesifikk R, G, B verdier (rød, grønn, blå) og disse tallene er direkte X ve Z verdier for normalvektoren.

I eksemplet over viser venstre diagram hvordan retningen til den normale endres på en humpete overflate. For å representere de samme normalene i en flat tekstur (midtdiagram) tildeler vi dem en farge. I vårt tilfelle R, G, B Å øke verdiene (0.255.0) for den rette og deretter mengden rød for venstre og blå for høyre.

Legg merke til at denne fargen ikke er blandet med den originale pikslen - den forteller prosessoren i hvilken retning normalen vender slik at kameraet nøyaktig kan beregne vinklene mellom lysene og den strukturerte overflaten.

Når du bruker dynamisk belysning på scenen, skinner fordelene med støt og normal matching virkelig, og gjengivelsesprosessen beregner effekten av lysendringer per piksel, ikke for hvert hjørne. Moderne spill bruker mye tekstur for å forbedre kvaliteten på magien nå.

Denne realistiske utseende veggen er utrolig bare en flat overflate - detaljene om murstein og mørtel er ikke laget ved å bruke millioner av polygoner. I stedet gjør det bare 5 teksturer og mange smarte mattejobber.

Høydekartet ble brukt til å produsere det normale kartet for å simulere banen til skyggelegging av teglstein til seg selv og alle mindre endringer på overflaten. Grovhetstekstur ble brukt for å endre hvordan lys reflekterer forskjellige elementer i veggen (f.eks. En flat overflate reflekteres mer konsekvent enn grov mørtel).

Det siste kartet, merket AO på bildet over, utgjør en del av en prosess som kalles medieopphopning: dette er en teknikk som vi vil se på i en senere artikkel, men foreløpig er det bare skygger.

Vevsmatching er veldig viktig

Det er helt avgjørende for strukturert spilldesign. Få 2019-versjonen av Warhorse Studio Riket kommer: frelse En førstepersons RPG grunnlagt på 1400-tallet Böhmen, et eldgammelt land i Midt-Østeuropa. Designerne var ivrige etter å skape en realistisk verden som mulig for den aktuelle perioden. Og den beste måten å bringe skuespilleren til liv for hundrevis av år siden er at enhver landskapsvisning, bygning, klesett, hår, daglige produkter, etc. Det var for å se det rette.

Hver unike tekstur i dette ene bildet i spillet ble laget av kunstnerne og deres bruk av den programmeringsstyrte render-motoren. Noen er små, enkle, og tar veldig lite for å filtrere eller behandle andre vev (for eksempel kyllingvinger).

Andre har høy oppløsning og viser mange fine detaljer; filtrert anisotropisk og blandet med vanlige kart og andre teksturer - bare se på ansiktet til mannen i forgrunnen. De forskjellige kravene til å teksturere hvert element på scenen blir forklart av programmerere.

Alt dette skjer nå i mange spill fordi spillerne venter på mer detaljering og realisme. Teksturer vil vokse og vil bli brukt mer på en overflate, men prosessen med å ta tekst og bruke den på piksler vil i det vesentlige være den samme som på Quake-dager. Den beste teknologien dør aldri, uansett hvor gammel!