Evolucija grafičkih endžina: Od prvih rejkastera do Unreal Engine platforme

Evolucija grafičkih endžina: Od prvih rejkastera do Unreal Engine platforme (16:9 ilustracija)

Vizuelni prikaz video-igara danas uzimamo zdravo za gotovo. Dok posmatramo kako se svetlosni zraci prelamaju kroz kapljice kiše na vetrobranskom staklu u nekom modernom naslovu, retko ko pomisli na matematičke jednačine i hardverske kompromise koji stoje iza tog prizora. Istina je da je put od nekoliko jednobojnih piksela na ekranu do fotorealističnih svetova koje pokreće Unreal Engine 5 bio popločan čistim genijem, inženjerskim tvrdoglavošću i konstantnim ratom protiv tehničkih ograničenja.

Grafički endžin (engl. graphics engine) predstavlja srce svake video-igre. On je softverski okvir zadužen za crtanje svega što vidimo na ekranu. Kroz istoriju, ovi sistemi su evoluirali od prostih algoritama za iscrtavanje linija do kompleksnih platformi koje simuliraju fiziku, akustiku, veštačku inteligenciju i, pre svega, realistično ponašanje svetlosti. Da bismo razumeli gde se nalazimo danas, moramo se vratiti na sam početak – u vreme kada je "treća dimenzija" bila samo iluzija stvorena matematičkim trikovima.


Zora trodimenzionalnosti: Era pseudo-3D grafike i rejkasteri

Početkom devedesetih godina prošlog veka, personalni računari (PC) su bili izuzetno ograničeni. Procesori poput Intel 386 i 486 radili su na taktovima koji se danas mere jednocifrenim megahercima, a grafičke kartice su bile proste VGA karte bez ikakve hardverske akceleracije za 3D grafiku. U takvom okruženju, renderovanje pravih 3D poligona u realnom vremenu sa pristojnim brojem sličica u sekundi (FPS) bilo je praktično nemoguće za komercijalne igre.

Tada na scenu stupa Džon Karmak (John Carmack), legendarni programer i suosnivač studija id Software. Karmak je shvatio da, iako hardver ne može da obradi pravi 3D, ljudski mozak može biti prevaren pažljivo osmišljenom dvodimenzionalnom matematikom. Rezultat ovog saznanja bio je rejkasting (engl. raycasting).

Kako je Wolfenstein 3D prevario naša čula

Objavljen 1992. godine, Wolfenstein 3D se često naziva "prapocetkom" pucačina iz prvog lica (FPS). Njegov pokretački mehanizam, Wolfenstein 3D engine, koristio je rejkasting kako bi stvorio iluziju trodimenzionalnog lavirinta.

Tehnički gledano, mapa u igri je bila potpuno dvodimenzionalna mreža (grid) dimenzija 64x64 kvadrata. Svaki kvadrat je mogao biti prazan prostor ili zid. Kada se igrač kreće kroz mapu, endžin iz njegove pozicije "ispaljuje" nevidljive zrake (radijuse) pod različitim uglovima koji odgovaraju igračevom vidnom polju (FOV). Kada zrak udari u zid, algoritam izračunava udaljenost između igrača i te tačke preseka.

Mehanizam Raycasting-a (3D Projekcija)
Igrač / Kamera
Šalje zrake kroz vidno polje
Zrak (Ray)
Zid / Prepreka
Kalkuliše tačku preseka i rastojanje

Na osnovu te udaljenosti, endžin iscrtava vertikalnu kolonu piksela na ekranu. Što je zid bliži, kolona je viša; što je dalji, kolona je niža. Ponavljanjem ovog procesa za svaku vertikalnu liniju na ekranu (npr. 320 puta za rezoluciju od 320x200 piksela), stvarala se savršena iluzija dubine.

Međutim, ovaj sistem je imao stroga ograničenja:

  • Svi zidovi su morali biti pod pravim uglom (90 stepeni).
  • Plafon i pod su morali biti potpuno ravni i jednobojni (bez tekstura).
  • Igrač nije mogao da gleda gore ili dole, niti da skače i čuči.
  • Nije bilo moguće kreirati spratove ili strukture gde se jedna prostorija nalazi iznad druge.

Doom i id Tech 1: Rušenje ortogonalnih zidova

Samo godinu dana kasnije, 1993. godine, id Software izdaje Doom. Igra je izazvala globalni fenomen, a njen pokretač – danas poznat kao id Tech 1 – podigao je pseudo-3D tehnologiju na viši nivo.

Karmak je želeo da prevaziđe ograničenja Wolfensteina. Da bi to postigao, implementirao je sistem zasnovan na BSP stablima (engl. Binary Space Partitioning)1. Umesto fiksne mreže kvadrata, mapa u Doomu je definisana pomoću dvodimenzionalnih linija (engl. linedefs) koje su mogle biti postavljene pod bilo kojim uglom.

Napomena

Iako je Doom izgledao kao pravi 3D, on je i dalje bio "2.5D" endžin. Sve kalkulacije sudara (kolizije) i kretanja neprijatelja vršene su u dvodimenzionalnoj ravni. Igrač nije mogao da prođe ispod ili iznad drugog neprijatelja, a projektili bi pogađali cilj čak i ako se vizuelno činilo da lete iznad njega, pod uslovom da je horizontalna osa bila poravnata.

BSP stablo je omogućilo endžinu da unapred podeli nivo na manje konveksne podprostore. Tokom igranja, render se kretao kroz ovo stablo kako bi odredio koje zidove treba iscrtati od najbližih ka najudaljenijim, drastično smanjujući broj kalkulacija. To je omogućilo:

  1. Zidove pod bilo kojim uglom.
  2. Varijacije u visini poda i plafona (stepenice, platforme).
  3. Teksturisane podove i plafone.
  4. Dinamičke promene osvetljenja (treperenje svetla, mračne prostorije).

Takođe, implementirano je i delimično vertikalno pomeranje kamere (tzv. look up/down), ali je ono rađeno prostom smicanjem (engl. shearing) slike gore-dole, što je pri ekstremnim uglovima dovodilo do teške distorzije perspektive.


Prava 3D revolucija: Poligoni, hardverska akceleracija i Quake

Sredina devedesetih donela je prekretnicu. CPU procesori su postajali brži (Pentium era), a industrija je neumoljivo težila ka pravom, nesputanom trodimenzionalnom prostoru. Korak od 2.5D ka pravom 3D-u napravljen je 1996. godine sa igrom Quake.

id Tech 2 i prelazak na poligone

Quake je koristio potpuno novi endžin – id Tech 2 (prvobitno nazvan Quake engine). Za razliku od svojih prethodnika, ovaj pokretač je renderovao svet u prave tri dimenzije koristeći poligone (trouglove i četvorouglove) definisane u X, Y i Z koordinatnom sistemu. Neprijatelji više nisu bili dvodimenzionalni crteži (spritovi) koji se rotiraju prema igraču, već trodimenzionalni modeli sa sopstvenim skeletnim animacijama.

3D Poligon definisan u koordinatnom sistemu
Vrh A (X1, Y1, Z1) Vrh B (X2, Y2, Z2) Vrh C (X3, Y3, Z3)
Trodimenzionalni prostorni poligon definisan pomoću tri tačke i povezujućih vektora.

Renderovanje pravog 3D sveta donelo je ogroman računarski teret. Da bi igra radila fluidno na tadašnjim procesorima, Karmak je uveo dve ključne inovacije:

  • PVS (Potentially Visible Set): Algoritam koji je pre-kalkulisao koje prostorije su vidljive iz bilo koje druge tačke na mapi. Delovi nivoa koji nisu mogli biti viđeni bili su potpuno odbačeni pre procesa renderovanja, štedeći dragoceno vreme procesora.
  • Svetlosne mape (Lightmaps): Umesto da izračunava svetlost i senke u realnom vremenu (što je bilo nemoguće), endžin je unapred izračunavao osvetljenje i te informacije čuvao kao posebne teksture niske rezolucije koje su se lepile preko standardnih tekstura zidova.

Dolazak 3D akceleratora: 3dfx Voodoo i API ratovi

U vreme izlaska Quakea, grafičke kartice su služile samo za prikazivanje 2D slike. Međutim, ubrzo se pojavio hardver koji će zauvek promeniti industriju: 3D akceleratori. Najpoznatiji među njima bio je legendarni 3dfx Voodoo Graphics (1996).

Ove kartice su imale namenske čipove za obradu matematičkih operacija potrebnih za 3D renderovanje (poput rasterizacije i filtriranja tekstura). Iznenada, procesor je bio rasterećen, a igre su mogle da rade u neverovatnim rezolucijama (poput 640x480 ili čak 800x600) sa savršeno glatkim teksturama (zahvaljujući bilinearnom filtriranju) i visokim FPS-om.

Ova hardverska revolucija zahtevala je softverske posrednike – API-je (Application Programming Interface). Nastao je rat između nekoliko standarda:

  • Glide: Vlasnički API kompanije 3dfx, izuzetno brz ali ograničen na njihov hardver.
  • OpenGL: Otvoreni profesionalni standard koji je Karmak favorizovao i uspešno prilagodio za igre kroz GLQuake.
  • Direct3D (deo DirectX-a): Microsoftov rani pokušaj koji je u početku bio kritikovan zbog kompleksnosti i loših performansi, ali je vremenom postao dominantan standard na Windows platformi.

Uspon licenciranja i pojava Unreal Engine platforme

Dok je id Software dominirao tehnološkom scenom, u senci se pripremao izazivač koji će redefinisati poslovni model industrije video-igara. Tim Svini (Tim Sweeney), osnivač kompanije Epic MegaGames (danas Epic Games), proveo je nekoliko godina pišući sopstveni 3D grafički endžin u svojoj garaži.

Rezultat tog rada bila je igra Unreal iz 1998. godine, pokretana prvom verzijom Unreal Engine-a.

UNREAL ENGINE (1998)
Tehničke prednosti
Poslovne inovacije
Volumetrijsko osvetljenje
UnrealEd (editor u realnom
Detaljne teksture (Detail
vremenu)
textures)
Modularna arhitektura
Softverski i hardverski
Pristupačan sistem
render integrisani
licenciranja

Dok je Quake nudio mračne, klaustrofobične hodnike, Unreal je šokirao igrače masivnim, otvorenim prostorima pod vedrim nebom i živopisnim bojama. Tehnički, Unreal Engine 1 je doneo napredno volumetrijsko osvetljenje (magla u boji, svetlosni snopovi) i podršku za "detaljne teksture" koje su sprečavale da površine izgledaju mutno kada im se igrač približi.

UnrealEd: Alat koji je promenio sve

Najveća prednost Unreal Engine-a nije bila samo u njegovom vizuelnom kvalitetu, već u alatima za razvoj. UnrealEd je bio integrisani editor koji je dizajnerima nivoa omogućavao da vide promene u realnom vremenu (ili skoro u realnom vremenu), bez potrebe za dugotrajnim procesima kompajliranja mapa koji su mučili id Tech korisnike.

Tim Svini je shvatio da pravi novac ne leži samo u prodaji igara, već u licenciranju tehnologije drugim programerima. Epic je kreirao modularan endžin koji je bilo lako modifikovati. To je pokrenulo zlatnu eru licenciranja, gde su kultni naslovi poput Deus Ex, Rune i Thief: Deadly Shadows kreirani upravo na Unreal tehnologiji.


Hronološki pregled ključnih prekretnica u razvoju grafičkih endžina

Da bismo lakše vizuelizovali ovaj dramatični razvoj, pogledajmo uporednu tabelu ključnih endžina koji su definisali epohe:

Godina Naziv endžina Ključna igra Glavna tehnička inovacija Tip renderovanja
1992 Wolfenstein 3D Wolfenstein 3D Rejkasting, fiksna 2D mreža Pseudo-3D (2D rejkaster)
1993 id Tech 1 (Doom) Doom BSP stabla, varijacije visine, dinamičko svetlo 2.5D (napredni BSP)
1996 id Tech 2 (Quake) Quake Pravi 3D poligoni, PVS algoritam, svetlosne mape Pravi 3D (softverski/hardverski)
1998 Unreal Engine 1 Unreal Integrisani UnrealEd, volumetrijsko svetlo Pravi 3D (optimizovan za akceleratore)
2004 Source Engine Half-Life 2 Fizika tela (Havok), napredna animacija lica 3D sa šejderima (DirectX 9)
2004 id Tech 4 Doom 3 Potpuno dinamičke senke (stencil shadow volumes) Unifikovano dinamičko osvetljenje
2007 CryEngine 2 Crysis Ambient Occlusion, volumetrijski oblaci, destruktibilnost Napredni DirectX 10 render
2021 Unreal Engine 5 The Matrix Awakens Nanite (virtuelna geometrija), Lumen (globalno svetlo) Real-time Raytracing / Mikropoligoni

Era šejdera i programabilnog pajplajna: Sredina 2000-ih

Početkom 2000-ih, grafička tehnologija je doživela novu revoluciju uvođenjem programabilnih šejdera (engl. programmable shaders). Do tada su grafičke kartice koristile tzv. fixed-function pipeline – skup unapred definisanih operacija koje programeri nisu mogli da menjaju, već su samo mogli da biraju koje će parametre koristiti.

Dolaskom DirectX 8 i 9 standarda, i grafičkih kartica poput Nvidia GeForce 3 i ATI Radeon 9700, rođen je programabilni pajplajn. Programeri su sada mogli da pišu sopstvene mini-programe (šejdere) koji se izvršavaju direktno na grafičkom čipu.

Vertex i Pixel šejderi

Šejderi su podeljeni na dve osnovne kategorije:

  1. Vertex Shaderi: Manipulišu pozicijama tačaka (temena) poligona u prostoru. Omogućili su realistično pomeranje vode, simulaciju vetra na travi i kompleksne animacije karaktera bez opterećenja CPU-a.
  2. Pixel (Fragment) Shaderi: Određuju boju svakog pojedinačnog piksela na ekranu. Otvorili su vrata za tehnike kao što su bump mapping (stvaranje iluzije neravnina na ravnim površinama), specular highlights (odsjaj svetlosti) i realistične refrakcije vode.

CryEngine i krunisanje grafičkog kralja

Ako je postojao jedan endžin koji je definisao ovu eru i postao sinonim za pomeranje granica hardvera, to je bio CryEngine nemačkog studija Crytek. Kada je Crysis izašao 2007. godine, pokretan CryEngine-om 2, postavio je vizuelne standarde koji su godinama ostali nedostižni.

Crysis je uveo tehnologije koje su i danas osnova modernih igara:

  • SSAO (Screen Space Ambient Occlusion): Algoritam koji računa koliko je svetlosti blokirano u uglovima i pukotinama, stvarajući meke, realistične senke na spojevima objekata.
  • Volumetrijski zraci svetlosti (tzv. "God rays"): Svetlost koja se probija kroz krošnje drveća i reaguje sa česticama prašine u vazduhu.
  • Potpuno destruktibilno okruženje: Gde je svako stablo moglo biti presečeno rafalom iz mitraljeza, a fizika je računala pad i interakciju svakog lista.
Koristan savet

Legendarno pitanje "But can it run Crysis?" (Ali može li da pokrene Crysis?) postalo je najpoznatiji gejming mim sa razlogom. Igra je bila dizajnirana za hardver koji u tom trenutku još uvek nije postojao na tržištu, oslanjajući se na pretpostavku da će radni taktovi procesora dostići 8 GHz (što se nikada nije desilo, već se industrija okrenula višejezgarnim procesorima).


Savremeno doba: Fotorealizam, fizika i Unreal Engine 5

Danas se nalazimo u eri gde su grafički endžini postali toliko kompleksni da razvojni timovi retko kada pišu sopstvenu tehnologiju od nule. Umesto toga, većina industrije se oslanja na gotova rešenja, gde Unreal Engine 5 (UE5) drži ubedljivo liderstvo u domenu visoke produkcije (AAA).

Lansiran 2021. godine, Unreal Engine 5 je doneo paradigmu koja je rešila dva najveća problema sa kojima su se 3D umetnici i programeri suočavali decenijama: ograničenje broja poligona i statičko osvetljenje.

Nanite: Kraj ere optimizacije poligona

Tradicionalno, 3D umetnici su morali da kreiraju više verzija istog modela sa različitim nivoima detalja (LOD - Level of Detail). Kada je objekat blizu kamere, iscrtava se model visoke rezolucije; kada je daleko, zamenjuje se modelom niske rezolucije kako bi se uštedele performanse. Ovaj proces je zahtevao stotine sati manuelnog rada.

Nanite2 eliminiše ovaj problem. To je tehnologija virtuelizovane geometrije koja omogućava uvoz modela sa filmskim nivoom detalja (milionima i milijardama poligona, poput direktnih skenova iz stvarnog sveta putem fotogrametrije) direktno u endžin.

Nanite u realnom vremenu analizira scenu i kompresuje geometriju na nivo pojedinačnih piksela na ekranu. Ako model od 10 miliona poligona zauzima samo 100 piksela na ekranu, Nanite će iscrtati samo 100 trouglova. Rezultat je praktično neograničen nivo detalja bez ikakvog opterećenja za dizajnera.

Kako Nanite funkcioniše (Unreal Engine 5)
Izvorni 3D Model
Visoka rezolucija (Milioni poligona)
Klasterizacija
Nanite Analizator
Deli model na klastere trouglova
Render
Real-time Render
Šalje samo onoliko trouglova koliko ima piksela

Lumen: Globalno osvetljenje u realnom vremenu

Osvetljenje je ključ fotorealizma. Decenijama su grafički endžini koristili "bejkovanje" (engl. baking) – proces gde se svetlost i senke unapred izračunaju i "zapeku" u teksture. To je značilo da ako pomerite lampu u igri, svetlost i senke na zidovima se ne bi promenile osim ako ne koristite izuzetno zahtevno dinamičko svetlo koje je gušilo performanse.

Lumen je potpuno dinamički sistem globalnog osvetljenja (engl. Global Illumination). On simulira beskonačne odsjaje svetlosti (engl. diffuse bounces) i refleksije u realnom vremenu, dramatično povećavajući realizam i eliminišući potrebu za statičkim kalkulacijama. Kroz Nanite i Lumen, Epic Games je sa Unreal Engine 5 ponovo dokazao da ne postavlja samo tehničke limite hardvera, već fundamentalno menja način na koji programeri i digitalni umetnici kreiraju svetove, osiguravajući svoju dominantnu poziciju u industriji za godine koje dolaze.