Utmerket spill Du spiller den siste Call of Mario: Deathduty Battleyard på din PC. Du ser på en vakker 4K ultrabred skjerm, og beundrer det fantastiske landskapet og intrikate detaljer. Har du noen gang lurt på hvordan denne grafikken kom dit? Lurer du på hva PC-en din gjør for å gjøre disse?

Velkommen til vår 101 on 3D-spilloppretting: En nybegynnerveiledning om hvordan du lager et grunnleggende rammeverk for spillets godhet.

Hundrevis av nye spill blir gitt ut over hele verden hvert år - noen designet for mobiltelefoner, noen for konsoller, noen for PCer. Formatene og sjangrene som dekkes er like omfattende, men det er en sjanger oppdaget av spillutviklere sannsynligvis mer enn noen annen sjanger: 3D. Den første diskusjonen av den første og en rask skanning av diskusjonene Guinness verdensrekorder databasen genererer forskjellige svar. Vi kunne ha valgt Knight Lore av Ultimate, som ble utgitt i 1984, som en verdig start, men bildene som ble opprettet i dette spillet var strengt 2D-talende - ingen del av informasjonen som brukes er virkelig 3D.

Så hvis vi skal forstå hvordan dagens 3D-spill lager bildene, trenger vi et annet starteksempel: Vinnende løp Å gjøre noe i 3 dimensjoner fra begynnelsen var den første i sitt slag, ved hjelp av teknikker som kanskje ikke er en million miles unna det som skjer nå. Selvfølgelig vil ikke noe spill over 30 år være det samme som Codemaster's F1 2018, for eksempel, men den grunnleggende ordningen for å gjøre dem alle er ikke mye annerledes.







I denne artikkelen vil vi undersøke prosessen et 3D-spill følger for å generere et grunnleggende bilde for en skjerm eller TV å vise. Vi begynner med konklusjonen og spør oss selv: "Hva ser jeg på?"

Derfra vil vi analysere hvert trinn som tas for å få bildet vi ser. Underveis vil vi dekke programvare og instruksjoner som hjørner og piksler, teksturer og overganger, buffere og skyggelegging. Vi vil også se på hvor grafikkortet passer til alle disse og hvorfor det er nødvendig. Med denne 101 vil du se på spill og PC i et nytt lys og sette pris på denne grafikken med litt mer beundring.




Dimensjoner på rammen: piksler og farger

La oss starte et 3D-spill, så vi har noe å begynne med, og vi vil sannsynligvis bruke 2007-versjonen av Crytek uten annen grunn enn det mest verdifulle spillet gjennom tidene. gråter. På bildet nedenfor ser vi etter kamerabildet på skjermen som viser spillet.




Dette bildet vanligvis rammemen hva ser vi egentlig på? Vel, ved å bruke et makroobjektivkamera i stedet for et skjermbilde i spillet, CSI: TECH NYHETER og kreve noen å forbedre det!




Dessverre kommer skjermblending og bakgrunnsbelysning foran bildedetaljene, men hvis vi forbedrer det litt mer ...




Vi kan se at rammen på skjermen består av et rutenett av individuelle fargede elementer, og hvis vi ser veldig nøye ut, består blokkene i seg selv av 3 små biter. En til hver tredje piksler (forkortelse for bildeelement) og de fleste skjermer maler dem i tre farger: rød, grønn og blå (aka RGB). For hver nye ramme som vises på skjermen, må en liste med tusenvis, om ikke millioner, av RGB-verdier utarbeides og lagres i et minne som er tilgjengelig for skjermen. Disse typer minneblokker kalles tamponger, naturlig, til skjermen ramme buffer.

Dette er faktisk det siste punktet vi startet med, så nå må vi gå til begynnelsen og gå gjennom prosessen for å komme dit. Navn gips det brukes ofte for å beskrive det, men sannheten er at det er en lang liste over sammenhengende, men forskjellige stadier som er ganske forskjellige fra hverandre når det gjelder hva de er. Tenk på det som å være kokk og lage et måltid som er verdig en Michelin-stjerne restaurant: resultatet er en tallerken med deilig mat, men det er mye å gjøre før du kommer inn. noen grunnleggende ingredienser.

Nødvendige byggesteiner: modeller og teksturer

De grunnleggende byggesteinene i ethvert 3D-spill er de visuelle ressursene som vil fylle verden som skal skapes. Filmer, TV-serier, teaterproduksjoner og lignende trenger alle skuespillere, kostymer, rekvisitter, bakgrunner, lys - listen er ganske stor. 3D-spill er ikke annerledes, og alt som sees i et opprettet rammeverk vil bli designet av kunstnere og modellere. For å visualisere dette, la oss gå på den gamle skolen og se på en modell fra Software's Quake II identitet:

Utgitt for 20 år siden, var Quake II et teknologisk turkraftverk, som ethvert 3D-spill på tjue år, selv om det er rettferdig å si at modellene så litt blokkerende ut. Dette gjør det imidlertid lettere å se hvorfor denne enheten ble opprettet.

På det første bildet kan vi se at den klumpete vennen danner sammenhengende trekanter - som hver kalles hjørner hjørne eller toppen for en av disse. Hvert toppunkt fungerer som et punkt i rommet, så det har minst 3 tall for å beskrive det, dvs. x, y, z koordinater. Imidlertid trenger et 3D-spill mer enn det, og hvert toppunkt vil ha en viss tilleggsverdi, for eksempel fargen på toppunktet, retningen det vender mot (ja, prikkene kan faktisk ikke se noe sted ... bare rull med det!), Hvor lyst, gjennomsiktig det er. om ikke osv.

Et visst sett med verdier som hjørner alltid har, tekstur kart. Dette er et bilde av 'klærne' modellen skal ha på seg, men siden det er et vanlig bilde, bør kartet inneholde en visning for alle mulige retninger der vi kan se på modellen. I vårt Quake II-eksempel kan vi se at dette er en ganske enkel tilnærming: foran, bak og sider (armer). Et moderne 3D-spill vil faktisk ha flere teksturkart for modeller, hver full av detaljer; Noen av kartene ser ikke ut som materialer eller funksjoner, men gir i stedet informasjon om hvordan lys vil sprette av overflaten. Hvert toppunkt vil inneholde et sett med koordinater i modellens tilknyttede teksturkart, slik at det kan 'sammenføyes' i toppunktet - dette betyr at hvis toppunktet flyttes, beveger teksturen seg med det.

Så i en 3D-gjengitt verden vil alt sett begynne som hjørnepunkter og en samling teksturkart. De er samlet i minnebuffere koblet sammen - a hjørne støtfanger inneholder informasjon om hjørner; en katalogbuffer det viser oss hvordan hjørnene er koblet sammen for å danne former; en sveisebuffer inneholder minnevæv og deler som er reservert for senere bruk i gjengivelsesprosessen; en kommandobuffer Liste over instruksjoner om hva du skal gjøre med dem alle.

Dette skaper den nødvendige rammen som skal brukes til å lage det endelige rutenettet med fargede piksler. Det kan være enorme mengder data for noen spill fordi det ville være veldig sakte å gjenoppbygge bufferne for hver nye ramme. Spillene lagrer all informasjonen som trengs for å skape hele den potensielt synlige verdenen, lagre den i buffere eller dekke et bredt utvalg av visninger og deretter oppdatere den etter behov. For eksempel vil et racerspill som F1 2018 ha alt i en stor støtfangersamling, mens et åpent verdensspill som Bethesdas Skyrim vil flytte data inn og ut av støtfangerne når kameraet beveger seg rundt om i verden.

Redigering av scenen: Toppscene

Med all den visuelle informasjonen tilgjengelig, vil et spill begynne å behandles for visuell visning. Til å begynne med starter scenen i en standardposisjon, alle i utgangspunktet posisjonerte modeller, lys osv. Dette vil være "null" kvadrat - det er utgangspunktet for grafene og vises vanligvis ikke, men bare gjengitt for å holde ting i gang. For å vise hva som skjer i den innledende fasen av byggeprosessen, Nettsted for sanntidsrendering. La oss åpne det med et veldig grunnleggende 'spill': en kuboid på bakken.

Denne spesielle formen inneholder 8 hjørner, hver forklart gjennom en liste med tall, og de danner et mønster med 12 trekanter i mellom. Selv en trekant eller et helt objekt primitiv. Når disse primitivene flyttes, roteres og skaleres, går tall gjennom en serie matteoperasjoner og oppdateres deretter.

Merk at modellens poengnummer ikke endres, bare verdiene som indikerer hvor verden er. Inkludering av relevant matematikk ligger utenfor omfanget av denne 101, men den viktige delen av denne prosessen er å få alt til der det skal være først. Så er det på tide med en fargelegging.

La oss bruke en annen modell med mer enn 10 ganger antall hjørner forrige cuboid hadde. Den mest grunnleggende fargegjengivelsen tar fargen på hvert toppunkt og beregner deretter hvordan overflateoverflaten skifter mellom dem. det er kjent som interpolasyon.

Å ha flere hjørner i en modell har ikke bare en mer realistisk tilstedeværelse, men gir også bedre resultater med fargeinterpolering.

På dette stadiet av gjengivelsessekvensen kan effekten av lys på scenen undersøkes i detalj; For eksempel kan det introduseres hvordan materialene i modellen reflekterer lys. Slike beregninger må ta hensyn til posisjonen og retningen til kameraet som ser på verden, samt lysets posisjon og retning.

Det er en rekke forskjellige matte teknikker som kan brukes her; noen er enkle, andre er veldig komplekse. På bildet ovenfor kan vi se at prosessen til høyre gir bedre og mer realistiske resultater, men ikke overraskende tar det lenger tid å jobbe.

På dette tidspunktet er det verdt å merke seg at vi ser på objekter med få hjørnepunkter sammenlignet med det siste 3D-spillet. Gå litt tilbake i denne artikkelen og se nøye på Crysis bilde: det er mer enn en million trekanter i den scenen alene. Vi kan visuelt forstå hvor mange trekanter som skyves i et moderne spill. Unigine's Valley sammenligning (nedlasting).

Hvert objekt i dette bildet er modellert av tilkoblede hjørner, så de lager primitiver som består av trekanter. Sammenligning lar oss kjøre en trådrammemodus som lar programmet gjengi kantene til hver trekant med en lys hvit linje.

Trær, planter, bergarter, bakke, fjell - de er alle laget av trekanter, hver beregnet for plassering, retning og farge, med tanke på posisjonen til lyskilden og posisjonen og retningen til kameraet. Eventuelle endringer i hjørnene må mates tilbake til spillet slik at den vet hvor alt er for å skape neste ramme; dette gjøres ved å oppdatere toppunktbufferen.

Overraskende nok er dette ikke den vanskelige delen av byggeprosessen, og med riktig maskinvare ender alt på bare en tusendels sekund! Til neste trinn.

Å miste en dimensjon: Rasterisering

Når alle hjørnene er gjennomarbeidet og 3D-scenen vår ferdig hvor alt skal være, går gjengivelsen til et avgjørende stadium. Så langt har spillet virkelig vært tredimensjonalt, men ikke den endelige rammen - det betyr at det må gjøres en rekke endringer for å transformere den viste verden fra et 3D-rom som inneholder tusenvis av tilkoblede punkter til et 2D-lerret med individuelle fargede piksler. . For de fleste spill innebærer denne prosessen minst to trinn: projeksjon av skjermområdet ve pixelasjon.

Ved å bruke webgjengivelsesverktøyet igjen kan vi tvinge det til å vise hvordan verdensvolumet opprinnelig forvandles til et flatt bilde. Plasseringen til kameraet som ser på 3D-scenen er helt til venstre; linjer som strekker seg utover dette punktet, frustum (som en slags pyramide) og alt i frustum kan potensielt vises i den endelige rammen. En liten vei til Frustum Utsikt, - dette er faktisk hva skjermen vil vise, og en hel bunke matematikk brukes til å projisere alt i frustumet inn i synsfeltet fra kameraets perspektiv.

Selv om grafikken i visningsområdet ser ut som 2D, er dataene inni fremdeles 3D, og ​​denne informasjonen blir deretter brukt til å bestemme hvilke primitiver som vil være synlige eller overlappe hverandre. Det kan være overraskende vanskelig å gjøre dette fordi en primitiv kan kaste en skygge som er synlig i spillet selv om den ikke kan være primitiv. Det kalles avskaffelse av primitiver slakting og det kan utgjøre en betydelig forskjell i hvor raskt hele rammen gjengis. Etter alt dette er gjort - sortering av synlige og usynlige primitiver, binning av trekanter utenfor frustumet mitt, etc. - Den siste fasen av 3D lukkes og rammen blir fullstendig 2D gjennom rasterisering.

Bildet over viser et veldig enkelt eksempel på et rammeverk som inneholder en primitiv. Rutenettet av piksler på rammen sammenlignes med kantene på formen under, og der de overlapper hverandre, er en piksel markert for gjengivelse. Resultatet i eksemplet som vises er ikke veldig likt den opprinnelige trekanten, men vi bruker ikke nok piksler. Dette resulterte i følgende utgave: overlapping, selv om det er mange måter å håndtere det på. Derfor løsning Det har stor innvirkning på hvordan et spill (det totale antallet piksler som brukes i rammen) ser ut: pikslene representerer ikke bare formen til primitivene, men reduserer også effekten av det uønskede aliaset.

Når denne delen av gjengivelsessekvensen er fullført, avhenger den av den store: den endelige fargen på alle piksler i rammen.

Ta med lysene: piksel-scenen

Nå kommer vi til det vanskeligste av alle trinnene i gjengivelseskjeden. For mange år siden var det ingenting annet enn at klær i modellen (også kjent som teksturer) ble pakket rundt gjenstander i verden ved hjelp av informasjon i piksler (først fra hjørnene). Problemet her er at mens teksturene og rammen er 2D, blir verden de er festet til bøyd, flyttet og omformet på øverste trinn. Imidlertid brukes mer matematikk for å forklare dette, selv om resultatene kan skape noen rare problemer.

I dette bildet påføres et enkelt rutekartteksturkart på en flat overflate som strekker seg ut i det fjerne. Resultatet er et skurrende rot med kallenavnet som vokser tilbake det stygge hodet. Løsningen inkluderer mindre versjoner av teksturkart ( Matchende), gjentatt bruk av data fra disse vevene ( filtrering), Til og med Mer matematikk, sette alt sammen. Effekten av dette er ganske åpenbar:

Dette pleide å være en veldig vanskelig oppgave for ethvert spill, men det er ikke lenger fordi liberal bruk av andre visuelle effekter som refleksjoner og skygger gjør at gjengivelse av teksturer blir en relativt liten del av pikselet. behandlingsstadium. Å spille spill med høyere oppløsninger skaper høyere arbeidsbelastning i rasteriserings- og pikselfasene i gjengivelsesprosessen, men relativt liten innvirkning i toppfasen. Selv om den første fargingen gjøres i toppfasen på grunn av lysene, kan lysere lyseffekter også brukes her.

På bildet over kan vi ikke lenger lett se fargeendringene mellom trekanter, noe som gir oss inntrykk av at dette er et glatt, sømløst objekt. I dette spesifikke eksemplet består kulen faktisk av det samme antallet trekanter vi ser. grønn jordklode før pikselfargerutinen gir imidlertid inntrykk av at den har mange flere trekanter.

I mange spill må pikselstrinnet kjøres flere ganger. For eksempel må et speil eller innsjøoverflate som reflekterer jorden, sett fra kameraet, ha blitt bearbeidet for at jorden skulle begynne. Navnet på hver overgang sende og en ramme kan lett inneholde 4 eller flere overganger for å produsere det endelige bildet.

Noen ganger må bakkescenen også tegnes på nytt for å tegne verden fra et annet perspektiv og bruke den visningen som en del av scenen som vises av spilleren. For dette sette mål - buffere som fungerer som det endelige depotet til rammen, men som kan brukes som en tekstur i et annet pass.

Les videre for å bedre forstå den potensielle kompleksiteten til pikselstadiet Rammeanalyse av Adrian Courrèges og i dette spillet vil du bli overrasket over de utrolige trinnene som kreves for å lage en enkelt ramme.

Alt dette arbeidet på rammen må lagres i en buffer som et ferdig resultat eller som en midlertidig butikk, og generelt vil et spill ha minst to buffere på farten for den endelige visningen: den ene vil "være jobb" og den andre venter på at skjermen skal få tilgang til skjermen eller i skjermfasen. Det må alltid være en rammebuffer å lage, så når de er fulle, må det gjøres en handling for å flytte ting rundt og starte en ny buffer. Den siste delen i å signere en ramme er en enkel kommando (f.eks. tilgjengelig) og de siste rammebufferne endres, skjermen mottar den siste gjengitte rammen, og neste ramme kan startes.

På dette bildet, fra Ubisoft Assassin's Creed Odysseyvi ser på innholdet i en ferdig rammebuffer. Tenk på det som et regneark med rader og kolonner som ikke inneholder annet enn tall. Disse verdiene sendes til skjermen eller TV-en som et elektrisk signal, og fargen på skjermpikslene endres til de nødvendige verdiene. CSI: TECH NYHETER Fordi vi ikke kan gjøre det med øynene, ser vi et flatt, kontinuerlig bilde, men hjernen vår dybde - så 3D. Det er et rammeverk av spillgodhet, men med så mye som skjer bak kulissene (unnskyld ordspill), er det verdt å se på hvordan programmerere håndterer det hele.

Administrere prosessen: APIer og instruksjoner

Å forstå hvordan et spill vil utføre og administrere alle disse øvelsene (matematikk, hjørner, teksturer, lys, støtfangere, heter det ...) er en enorm oppgave. Heldigvis er det hjelp i form av hva du skal si Applikasjonsprogrammeringsgrensesnitt eller API for kort.

Bygg API-er reduserer den samlede kompleksiteten ved å tilby biblioteker med strukturer, regler og kode som lar programmerere bruke forenklede instruksjoner uavhengig av hvilken som helst maskinvare som er involvert. Velg hvilket som helst 3D-spill som er utgitt de siste tre årene for PC, og det vil bli opprettet ved hjelp av en av tre kjente API-er: Direct3D, OpenGL eller Vulkan. Det er andre, spesielt i mobilscenen, men vi vil holde oss til de for denne artikkelen.

Selv om det er forskjeller når det gjelder instruksjoner og operasjonsuttalelser (f.eks. En blokk med kode for å manipulere piksler i DirectX, pixel skyggelegging; Vulkan del skyggelegging), bør det endelige resultatet av den opprettede rammen ikke være annerledes eller mer annerledes.

Det vil være en forskjell der all maskinvaren som ble brukt til gjengivelsen kommer ned. Dette er fordi instruksjonene som gis ved bruk av API for å utføre maskinvaren må oversettes - dette håndteres av enhetens drivere, og maskinvareprodusenter må bruke mye ressurser og tid på å sikre at driverne gjør konverteringen så raskt og nøyaktig som mulig. mulig.

La oss bruke en tidligere betaversjon av Croteams 2014-spill Talos-prinsippet For å illustrere dette, siden den støtter de 3 API-ene vi nevnte. For å maksimere forskjellene som driver- og grensesnittkombinasjonen noen ganger kan produsere, kjørte vi standard innebygd referanseindeks med 1080p-oppløsning ved maksimale visuelle innstillinger. Datamaskinen som ble brukt ble kjørt ved standard timer og hadde en Intel Core i7-9700K, Nvidia Titan X (Pascal) og 32 GB DDR4 RAM.

  • DirectX 9 = gjennomsnittlig 188,4 bilder per sekund
  • DirectX 11 = gjennomsnittlig 202,3 bilder per sekund
  • OpenGL = gjennomsnittlig 87,9 bilder per sekund
  • Vulkan = gjennomsnittlig 189,4 bilder per sekund

En fullstendig analyse av slutningene bak disse tallene er ikke innenfor rammen av denne artikkelen, og det betyr absolutt ikke at en API er 'bedre' enn en annen (dette er en betaversjon, husk), så 'programmering for forskjellige API-er gir forskjellige utfordringer og er for tiden påpeker at det alltid vil være noen endringer i ytelsen. Generelt vil spillutviklere velge API-en de jobber mest med og optimalisere koden sin på det grunnlaget. Noen ganger ordet motor Den brukes til å beskrive gjengivelseskoden, men teknisk sett er en motor den komplette pakken som håndterer alle aspekter av et spill, ikke bare grafikken.

Å lage et komplett program fra bunnen av for å lage 3D-spill er ikke en enkel ting, så mange spill lisensierer i dag fullsystemer fra andre utviklere (f.eks. Uvirkelig motor); Du kan få en ide om skalaen ved å se motoren med åpen kildekode for. id Programvare Jordskjelv og bla gjennom filen gl_draw.c - dette enkelt elementet inneholder instruksjoner om de forskjellige byggene som utføres i spillet og representerer bare en liten del av hele motoren. Jordskjelvet er over 20 år og hele spillet (inkludert alle elementer, lyder, musikk osv.) er den 55 MB i størrelse; i motsetning til Ubisoft Far Cry 5 beløp kun shaders brukt av spillet på en 62MB fil.

Tiden er alt: å bruke riktig maskinvare

Alt vi har beskrevet hittil kan beregnes og behandles av CPUen i ethvert datasystem; moderne x86-64 prosessorer støtter lett all matematikk som trengs, og det er dedikerte deler for disse tingene. Imidlertid krever å gjøre denne jobben for å bygge et rammeverk mange repetitive beregninger og krever en betydelig mengde parallell behandling. CPUer er ikke designet for dette fordi de er for generiske av design. Spesielle chips for denne typen arbeid kalles selvfølgelig GPU'lar (grafikkbehandlingsenheter) og matematikk som DirectX, OpenGL og Vulkan er bygget for å gjøre den matematikken som trengs på en veldig rask og stort sett parallell måte.

En måte å demonstrere dette på er å bruke en referanse som lar oss lage en ramme ved hjelp av en CPU og deretter bruke tilpasset maskinvare. Vi vil bruke V-beam ADVANCED av Chaos Group; Dette verktøyet gjør faktisk strålesporing i stedet for gjengivelsen vi ser på i denne artikkelen, men de fleste av antall papirstopp krever lignende maskinvareaspekter.

For å forstå forskjellen mellom hva en CPU kan gjøre og hva den riktige, spesialdesignede maskinvaren kan oppnå, kjørte vi V-ray GPU-sammenligningen i 3 moduser: bare CPU, bare GPU og deretter CPU + GPU. Resultatene er ganske forskjellige:

  • Bare CPU-test = 53 matematikk
  • Bare GPU-test = 251 matematikk
  • CPU + GPU testi = 299 mpath

Siden en 5x forskjell i produksjon ikke er triviell, kan vi ignorere måleenhetene i denne sammenligningen. Men dette er ikke en veldig spilllignende test, så la oss prøve noe annet og gå på en gammel skole. 3DMark03 av Futuremark. Ved å bruke den enkle Wings of Fury-testen, kan vi tvinge til å gjøre alle hjørnskyggerne (dvs. alle rutinene for å flytte og lage fargetrekanter) ved hjelp av CPU.

Resultatet skulle egentlig ikke komme som en overraskelse, men det er fortsatt mye mer uttalt enn det vi så i V-ray-testen:

  • CPU peak shaders = gjennomsnittlig 77 fps
  • GPU hjørnehuggere = gjennomsnittlig 1580 bilder per sekund

Mens CPU utførte alle toppunktberegninger, tok det i gjennomsnitt 13 millisekunder å vise og vise hver ramme; Å skyve matematikken til GPUen reduserer denne tiden til 0,6 millisekunder. Det var med andre ord 20 ganger raskere.

Hvis vi prøver den mest komplekse testen i sammenligning, Mother Nature, er forskjellen enda mer uttalt. Med CPU-gjengitte peak shaders var gjennomsnittsresultatet 3,1 fps! Ta med GPU, og den gjennomsnittlige bildefrekvensen stiger til 1388 bilder per sekund: omtrent 450 ganger raskere. Vær oppmerksom på at nå er 3DMark03 16 år gammel, og testen håndterer bare hjørner i CPU - rasterisering og pikselfase gjøres fortsatt gjennom GPU. Hva om det var moderne og alt ble gjort i programvare?

La oss prøve Unigine Valley benchmarking-verktøy igjen - relativt nytt, og gjengir grafikk som ligner på de som er sett i spill som Ubisofts Far Cry 5; I tillegg til standard DirectX 11 GPU-buss, gir den også en full programvarebasert gjengivelse. Resultatene krever ikke mye analyse, men å kjøre den laveste kvalitetsversjonen av DirectX 11-testen på GPU var i gjennomsnitt 196 bilder per sekund. Programvareversjon? Noen få krasj til side, den kraftige testdatamaskinen trekker i gjennomsnitt 0,1 bilder per sekund - nesten to tusen ganger tregere.

Årsaken til en slik forskjell ligger i form av matematikk og data 3D-gjengivelse. I en CPU, flytende punkt enheter (FPUer) gjør beregningene innenfor hver kjerne; Testmodellen i7-9700K har 8 kjerner med to FPUer hver. Selv om enhetene i Titan X er forskjellige i design, kan begge gjøre samme grunnleggende matematikk i samme dataformat. Denne spesielle GPUen har mer enn 3500 enheter for å gjøre en sammenlignbar beregning, og selv om klokken ikke vises hvor som helst i nærheten av samme plassering som CPU (1,5 GHz vs 4,7 GHz), overgår GPU sentralprosessoren med antall gjennomsiktige enheter.

Selv om Titan X ikke er et generisk grafikkort, overgår til og med en budsjettmodell enhver CPU, så alle 3D-spill og API-er er designet for dedikert, dedikert maskinvare. Last ned gjerne V-ray, 3DMark eller hvilken som helst Unigine-referanse, og test ditt eget system - legg resultatene på forumet slik at du kan se hvor gode GPUer er for å gjengi grafikk i spill.

Noen siste ord på vår 101-side

Dette var en kort studie av hvordan en firkant blir gjengitt i et 3D-spill, fra punkter i rommet til en fargepiksel på en skjerm.

På det mest grunnleggende nivået er hele prosessen ikke mer enn å jobbe med tall, fordi all datamaskin gjør det uansett. Imidlertid overlater denne artikkelen mye å fokusere på det grunnleggende (vi vil sannsynligvis fortsette med mer grundige dykk i hvordan datagrafikk blir laget senere). Vi har ikke tatt med noen av de virkelige matematikkene som er brukt, slik som euklidisk lineær algebra, trigonometri og differensialregning utført av rot- og pikselskygger; Vi forklarte hvordan teksturer behandles gjennom statistisk prøvetaking, og vi legger til side store visuelle effekter som omgivelses okklusjon på skjermplass, støyreduksjon av strålespor, høy dynamisk rekkevidde eller midlertidig anti-aliasing.

Men når du skyter ut neste Call of Mario: Deathduty Battleyard, vil du ikke bare se grafikken med en ny følelse av undring, men du vil klø for å lære mer.