SITNA CREVCA<>
062009<><>

Grafički procesori (2)

Iz 3D u 2D

Korišćenje trodimenzionalne grafike u igrama i aplikacijama prilično je stara ideja. Međutim, osnovni problem jeste kako dovoljno brzo obrađivati izuzetno veliku količinu podataka. Kako je izgledao put do današnjih kartica i kako moderne kartice obavljaju ovaj komplikovani zadatak?

Tokom prve polovine devedesetih godina korišćenje 3D grafike kako u igrama tako i u aplikacijama postalo je sve redovnije. Posledica ovog trenda jeste izražena potreba da se posao renderovanja 3D slike u realnom vremenu izmesti sa centralnog procesora računara u neki namenski deo hardvera.

Prirodan izbor, naravno, bila je grafička kartica. Sredinom devedesetih godina gotovo svi popularni proizvođači grafičkih kartica tržištu su nudili nekakvu varijantu kartica sa 3D mogućnostima. Međutim, prvi veći pomak po pitanju performansi napravila je firma 3dfx Interactive 1996. godine legendarnom karticom Voodoo. Ova kartica predstavlja preteču modernih grafičkih 3D akceleratora. Iako nije imala nikakve 2D mogućnosti i oslanjala se na prisustvo postojeće kartice za ove poslove, Voodoo je nudio znatno veće performanse u odnosu na konkurenciju, tako da je brzo stekao veliku popularnost i postao predmet želja mnogih gejmera.

Kasnije verzije ove kartice donele su uspešno sjedinjavanje 2D i 3D kartica, kao i upotrebu tehnologije po imenu Scan-Line Interleave, iz koje su se kasnije razvili nVidijin Scalable Link Interface i ATI-jev Crossfire koji omogućavaju upotrebu dve kartice za renderovanje jedne slike. Pored namenskog hardvera koji je, naravno, glavni razlog uspeha ove familije kartica, 3dfx je uveo i namenski API nazvan Glide koji je zasnovan na OpenGL-u, ali koji koristi redukovani skup funkcija koje su u potpunosti hardverski implementirane, što ga je činilo i krajnje nefleksibilnim.

Popularnost Voodoo kartica počela je da opada krajem devedesetih godina pojavom nVidijine kartice TNT i ustoličenjem Microsoftovog DirectX-a, koji je, nakon prvih verzija koje su završile u ćorsokaku, konačno razvijan zajedno sa proizvođačima hardvera i dizajnerima igara. Konačni kraj Voodooa bila je pojava nVidijine kartice GeForce 256, na koju 3dfx uopšte nije računao. Nekoliko poslovnih promašaja koji su se dogodili u tom periodu izazvali su bankrot firme 3dfx kao i njenu akviziciju od strane nVidije, koja se nije zadovoljila idejom jednostavnog kopiranja tehnoloških dostignuća koja čine ove kartice.

Prvi GPU

Sam termin Graphic Processing Unit izmislila je nVidija da bi opisala svoju karticu GeForce 256. Ova kartica, koja je nVidiji zagarantovala važno mesto u daljem razvoju 3D hardvera, odlikovala se hardverskom implementacijom T&L-a (Transform & Lighting) i drugim mogućnostima koje su garantovale obradu najmanje deset miliona trouglova u sekundi. Takođe, ova kartica je podržavala DirectX 7.0, što joj je osiguralo prednost pored malobrojnih takmaca.

Dalji razvoj serije GeForce u osnovi je predstavljao usavršavanje arhititekture izvorne GeForce 256. Kroz razne generacije ove familije kartica performanse su poboljšavane, pre svega kroz korišćenje metoda za povećanje efikasnosti i brže memorije, što je dovelo do pojave kartice poznate po imenu GeForce4 MX 460 koja je po niskoj ceni nudila odlične performanse, kombinujući najbolje osobine serija GeForce2, GeForce3, kao i Geforce4 Ti. U ovoj verziji, nVidijine kartice su već raspolagale naprednim tehnikama za renderovanje slike kao što su verteks i piksel šejderi, kao i hardverski antialiasing, međutim najbitnija stvar koju su prve generacije GeForce kartica donele jeste dobar grafički pajplajn. U vreme pojave kartice GeForce4 pojavile su se i prve konkurentne ATI-jeve kartice iz serije Radeon. Ostali proizvođači grafičkih kartica do kraja 2002. godine u potpunosti su se povukli iz konkurencije za gejmersko tržište, ostavljajući nVidiju i ATI da se bore za prevlast.

Grafički pajplajn

Grafički pajplajn (graphics pipeline) je, najkraće rečeno, postupak obrade ulaznih podataka u vidu verteksa, tekstura i mapa kako bi se dobio niz piksela (tačaka) poznatijih kao slika. Pajplajn se sastoji od faza koje se mogu izvršavati nezavisno i paralelno, tako da, nakon što jedna faza rezultat svog rada prosledi sledećoj, može odmah započeti obradu novih podataka.

 
Grafički pajplajn pre svega predstavlja logičku podelu posla koji treba obaviti. Međutim, radi efikasnosti, dizajn hardvera grafičke kartice podređen je njegovoj implementaciji. Postupak obrade podataka u pajplajnu najbolje je ilustrovati na pojednostavljenom dijagramu pajplajna koji koristi Direct3D 10 API. U ovom prikazu pajplajn se sastoji iz šest faza.

Prva faza jeste asembler ulaza. U ovoj fazi 3D prostor se popunjava objektima i među njima se definišu prostorne relacije. Ova faza obuhvata i konverziju površina višeg reda kako bi se dobila njihova aproksimacija trouglovima i verteksima (temenima). Na izlazu prve faze dobijaju se trouglovi, prave i tačke koji su osnovni elementi 3D scene (grafičke primitive).

Sledeća faza pajplajna jeste verteks šejder. U ovoj fazi vrše se transformacije pojedinih verteksa kako bi se postigli efekti morfovanja, pravljenja skinova, kao i osvetljenja pojedinačnih verteksa.

Nakon obrade verteks šejderima, podaci se prosleđuju geometrijskom šejderu. U ovoj fazi transformišu se čitave primitive kako bi se postigli efekti dinamičkih sistema čestica, generisanje krzna i peraja, volumetrijskih senki, dodela materijala objektima i sl. Nakon obrade geometrijskim šejderom, scena je „postavljena” onako kako treba da se vidi iz ugla posmatrača.

Nakon geometrijskog šejdera, rezultate obrade moguće je proslediti dalje niz pajplajn i upisati u memoriju kartice. Ova mogućnost naziva se izlaz strima (Stream output) i predstavlja veliku inovaciju u odnosu na ranije verzije DirectX-a. Naime, upis podataka u memoriju, nakon što se obrade verteks i geometrijskim šejderima, omogućava njihovo ponovno učitavanje kroz asembler ulaza. Na ovaj način moguće je potpuno hardverski realizovati mnoge efekte kao što su sistemi čestica, krzno, odeća i drugi efekti koji se računaju iterativno (u više prolaza).

Mali rečnik 3D grafike
Aliasing u 3D grafici predstavlja pojavu grubih ivica na renderovanoj slici. Ova pojava smatra se nepoželjnom i postoji nekoliko načina njenog uklanjanja. Aliasing se javlja i prilikom obrade tekstura.
Anizotropno filtriranje je slično trilinearnom filtriranju, s tim što daje realnije rezultate na zakrivljenim površinama. Takođe je i najsporiji vid filtriranja tekstura.
Antialiasing je proces koji se u 3D grafici koristi da bi se ublažila ili potpuno eliminisala pojava aliasinga.
API (Application Programming Interface) predstavlja standardizovani skup funkcija koji programerima omogućava da pišu programe ne obazirući se na stvarno funkcionisanje hardvera.
Bilinearno filtriranje je proces kojim se eliminiše aliasing koji nastaje promenom veličine teksture i zasniva se na zamagljivanju teksture (blur).
Crossfire je ATI-jeva varijanta sistema za korišćenje dve grafičke kartice radi renderovanja slike.
Direct3D je deo DirectX-a koji se tiče grafike. U poslednjim verzijama u potpunosti obuhvata i funkcije DirectDraw API-ja.
DirectX je skup API-ja koje je razvio Microsoft. Obuhvata upravljanje grafikom, zvukom, prenosom podataka i ulaznim uređajima.
Eliminacija (culling) je postupak odbacivanja iz procesa obrade onih primitiva koje se iz nekog razloga ne vide u sceni. Na ovaj način štedi se procesorsko vreme kartice. Postoji više kriterijuma za eliminaciju.
Kliping (clipping) se događa kada neka od primitiva samo delimično upada u vidljivi frustrum. Ova pojava zahteva posebnu obradu primitive kako bi ona bila ispravno prikazana.
Mapiranje (mapping) je postupak kojim se tekstura lepi na 3D površinu. Ovaj proces podrazumeva skup operacija kako bi se tekstura ispravno nalepila, uzimajući u obzir oblik površine i perspektivu.
MIP-mapping je postupak eliminacije aliasinga u teksturama korišćenjem različitih verzija teksture koje imaju različite dimenzije. Izbor varijante koja se koristi zavisi od blizine objekta.
Multisampling je tehnika obavljanja antialiasinga. Predstavlja poseban slučaj tehnike koju zovemo supersampling, odlikuje se nešto manjim mogućnostima i većom brzinom.
Površinska normala ili samo normala predstavlja jedinični vektor koji ukazuje na orijentaciju posmatrane primitive. Orijentacija primitive koristi se kako pri senčenju tako i pri određivanju da li primitivu treba obrađivati.
Prava je jedna od primitiva u 3D grafici. Definišu je dva verteksa.
Šejderi su posebni programi koji izvršavanjem na grafičkoj kartici menjaju 3D scenu putem pojedinačnih verteksa, primitiva, ili piksela radi postizanja različitih efekata
Šejderska jedinica, vektorski procesor ili striming procesor predstavlja deo GPU-a koji izvršava šejderski program; može ih biti više.
SLI (Scan Line Interleave, Scalable Link Interface) predstavlja tehniku korišćenja dve grafičke kartice za generisanje slike. Prvi termin koristio se kod Voodoo kartica, dok je drugi skovala nVidia za svoj sistem.
Supersampling je tehnika antialiasinga koja zahteva više memorije i procesorskog vremena, ali nudi bolje rezultate.
Tekstura predstavlja bitmap sliku koja se lepi na 3D površinu kako bi joj se dao određen izgled (boja, reljef, odsjaj i sl.) Teksture mogu biti predefinisane i proceduralne.
Transformation & Lighting predstavlja prvu fazu obrade u grafičkom pajplajnu prvih 3D kartica. Ovaj stepen bio je zadužen za izmene same geometerije scene i određivanje osvetljenosti primitiva. Pošto je korisnicima nudio samo ograničen skup mogućnosti implementiranih u hardveru, u novijim generacijama kartica zamenjen je verteks šejderima.
Trilinearno filtriranje kombinuje bilinearno filtriranje sa MIP-mappingom nudeći linearnu interpolaciju između različitih varijanti teksture.
Trougao je najkompleksnija primitiva u 3D grafici. Definisan je sa tri verteksa, bojom, teksturom i površinskom normalom.
Verteks predstavlja tačku u prostoru kojoj su pored koordinata pridruženi i sledeći podaci: boja, parametri refleksije, tekstura i površinska normala. Verteks je osnovna primitiva u 3D grafici.
Vidljivi frustrum određen je vidnim poljem zamišljene kamere, a predstavlja četvorostrani rogalj koji s jedne strane ograničava ravan monitora a s druge ravan kojoj pripada najdalji vidljivi objekat.
Vidno polje u 3D grafici predstavlja oblast 3D scene koja se vidi na monitoru. Vidno polje definisano je četvorostranom zarubljenom piramidom koju nazivamo vidljivi frustrum.
 
Sledeća faza se ukratko naziva rasterizacija. Osnovni zadatak ove faze jeste pretvaranje 3D scene u 2D sliku. Da bi se to efikasno obavilo, potrebno je izabrati koji se delovi scene zaista vide. Kriterijumi koji se ovde koriste jeste da li se deo scene nalazi u vidnom polju posmatrača, kao i to da li je zaklonjen nekim drugim delom scene koji nije providan, a postoje i mnogi drugi. Nakon rasterizacije dobijamo dvodimenzionalni pogled na scenu.

Piksel šejder predstavlja pretposlednju fazu u pajplajnu. U ovoj fazi određuje se boja svakog piksela slike. Neki od zadataka koje piksel šejder obavlja jesu: Phong senčenje, efekti anizotropnog osvetljenja, volumetrijski efekti, lepljenje reljefnih tekstura, kao i generisanje proceduralnih tekstura i mnogi drugi. Piksel šejderi obavljaju najveći deo posla u renderovanju 3D scene.

Formiranje izlaza jeste poslednja faza pajplajna. U ovoj fazi dovršava se isecanje objekata koji pripadaju slici (clipping) na osnovu „dubine” objekta u sceni, kao i na osnovu predefinisanih šablona (stencils). U ovoj fazi primenjuju se tzv. efekti frejmbafera kao što su magla, sjaj i sl. Nakon faze formiranja izlaza, slika je spremna za slanje na monitor.

Kako to izgleda u hardveru

Najbitniji deo savremene grafičke kartice je njen procesor. S obzirom na to da je trodimenzinalna grafika izuzetno pogodna za paralelnu obradu, grafički procesori odavno su počeli da primenjuju višejezgarnu arhitekturu i istovremeno izvršavanje više tredova.

Međutim, od čega se zapravo sastoji savremeni procesor? Da bismo pojasnili ovu oblast, uzećemo kao primer pojednostavljeni dijagram nVidijinog procesora G92 koji se nalazi u najnovijim karticama ovog proizvođača.

Osnovna jedinica koja obrađuje podatke naziva se striming multiprocesor (SM). Svaki od ovih procesora sastoji se od osam procesorskih jezgara, upravljačkog dela i nešto lokalne memorije za keširanje podataka.

Striming multiprocesori organizovani su u teksturne procesorske klastere (texture processing cluster, TPC). Svaki TPC sadrži tri SM-a, osam procesora za filtriranje tekstura i L1 keš memoriju. TPC predstavlja osnovnu organizacionu jedinicu u procesoru. S jedne strane, TPC-ovi razmenjuju podatke sa memorijom kartice i u tu svrhu koriste L2 keš. S druge strane, TPC-ovi komuniciraju sa ostatkom grafičkog procesora od kojeg dobijaju instrukcije. Pored raspoređivanja TPC-ova radi što efikasnijeg izvršavanja kako šejdera tako i ostalih operacija grafičkog pajplajna, grafički procesor obavlja i inicijalnu pripremu scene kroz asembler ulaza, rasterizaciju, kao i komunikaciju sa samim računarom.

Ovakva organizacija grafičkog procesora G92 stavlja mu na raspolaganje čak 240 procesorskih jezgara. Kada se tome dodaju napredni algoritmi za upravljanje radom ovih jezgara, dobija se sistem koji može efikasno paralelno da izvršava nekoliko hiljada tredova, što je neophodno za generisanje dovoljnog broja frejmova u sekundi čak i u vizuelno najkompleksnijim igrama.

• • •

Veliki broj namenskih procesorskih jezgara sposobnih da velikom brzinom obavljaju izuzetno komplikovane matematičke operacije čine prosečnu grafičku karticu neuporedivo jačim procesorom i od najmodernijih Intelovih i AMD-ovih procesora. Primena grafičkih kartica van oblasti grafike još je u povoju, ali u skorijoj budućnosti možemo očekivati veliki napredak u ovom pogledu. Hardver postoji, kao i prve verzije softverskih rešenja koja ga iskorišćavaju.

Nadamo se da smo u ovom i prethodnom tekstu uspeli da opišemo kako sam razvoj grafičkih kartica tako i da razjasnimo neke od najbitnijih koncepata koji stoje iza ovih izuzetno moćnih uređaja, koje samo zbog nekoliko semantičkih začkoljica i definicija ne možemo nazvati punopravnim računarima.

Bojan ŽIVKOVIĆ

 
 AKTUELNOSTI
Zelene tehnologije
Reciklaža (elektronskog) otpada

 NA LICU MESTA
RAF Challenge 2009, finale
Mondrianisator, Noć muzeja
Pakom Networking Roadshow 09, Stanišići, BiH
SoftNET VoIP seminar
OpenOffice.org u Kragujevcu
Ostali događaji, ukratko

 KOMPJUTERI I FILM
„Terminator Salvation”
„Transformers 2”

 SITNA CREVCA
Grafički procesori (2)
Šta mislite o ovom tekstu?

 SERVIS
Vaš desktop na bilo kom PC-u (3)

Šejderi
Šejderi su po definiciji programi pisani u nekom za to namenjenom jeziku (asembler, Cg, GLSL, HLSL, RenderMan). Izvršavaju se u posebnim delovima grafičkog procesora koje nazivamo šejderskim jedinicama, čije pravo ime glasi striming procesori, odnosno vektorski procesori.
Kratka istorija šejdera glasila bi ovako: pre specifikacije DirectX 8.1 grafički pajplajn je nudio ograničen skup mogućnosti, što je umnogome ograničavalo korisnike (čitaj, dizajnere i programere igara). Obrada geometrije scene bila je ograničena mogućnostima hardverske jedinice za transformaciju i osvetljavanje (transform & lighting, skraćeno T&L). Istovremeno, generisanje dvodimenzionalne slike bilo je uslovljeno mogućnostima multiteksturne jedinice GPU-a. Naravno, može se pretpostaviti da ovakva situacija mnoge ljude nije činila srećnim. Jedan od najpopularniji API-ja za rad sa 3D grafikom – OpenGL je nudio alternativno rešenje u vidu pisanja posebnih korisničkih programa koji manipulišu kako samom geometrijom slike tako i postupkom obrade i lepljenja tekstura. Ovi programi nazvani su šejderi.
Pojavom specifikacije DirectX 8.1 šejderi su postali deo samog najpopularnijeg API-ja za pravljenje igara, a sa hardverske strane dobili su i posebne delove GPU u kojima su se izvršavali. Ovi namenski procesori imaju arhitekturu pogodnu za izvršavanje matematičkih operacija sa pokretnim zarezom uz veliku preciznost i obično rade na većem taktu od ostatka GPU.
Prve dve vrste šejdera koje su razvijane jesu verteks šejderi i piksel šejderi. Jedinice na kojima su se izvršavali programi ove dve vrste hardverski su se ili razlikovale ili su bile odvojene, što je za posledicu imalo ograničenja poput pojave da neiskorišćene verteks šejderske jedinice ne mogu da se koriste u druge svrhe.
Rešenje je došlo sa specifikacijom DirectX 10 i nekoliko jednostavnih i (retrospektivno) logičnih rešenja. Sistem šejdera pod nazivom Shader model 4.0, pored toga što obuhvata i postojanje geometrijskih šejdera, nameće i unificirani model šejdera (unified shader model), koji ima hardversku podlogu u unificiranom šejderskom jezgru. Ova inovacija briše hardverske razlike između različitih tipova šejdera i omogućava mnogo efikasnije iskorišćenje raspoloživih vektorskih procesora na kojima se oni izvršavaju. Ovakva arhitektura ima još jednu prednost koja se ogleda u olakšanom korišćenju šejderskih jedinica za proračune opšte namene. Da bi se ova mogućnost što bolje iskoristila, naredna verzija DirectX-a i Shader Model 5.0 obuhvatiće i postojanje računskog šejdera (Computation Shader).
Home / Novi brojArhiva • Opšte temeInternetTest driveTest runPD kutakCeDetekaWWW vodič • Svet igara
Svet kompjutera Copyright © 1984-2018. Politika a.d. • RedakcijaKontaktSaradnjaOglasiPretplata • Help • English
SKWeb 3.22
Opšte teme
Internet
Test Drive
Test Run
PD kutak
CeDeteka
WWW vodič
Svet igara



Naslovna stranaPrethodni brojeviOpšte informacijeKontaktOglašavanjePomoćInfo in English

Svet kompjutera