Grafička protočna obrada
Grafička protočna obrada ili rendering cevovod predstavlja niz koraka koje je potrebno izvesti da bi kreirali 2D reprezentaciju određene 3D scene. Drugim rečima, kada smo kreirali 3D model, grafička protočna obrada je proces u kome se 3D model pretvara u sliku koja se prikazuje na računaru. U početku razvoja računarske grafike, koristila se fiksna protočna obrada, ali kako je tehnologija napredovala, grafička karta je postajala sve fleksibilnija i opštenamenska.
Ovo je omogućilo da se grafička karta koristi i za ograničene oblike generalnog programiranja. Kako je grafički hardver napredovao, napredovali su i API setovi za rad sa grafikom. Danas se najviše koriste OpenGL i DirectX, dok se za generalno programiranje GPGPU (eng. General-purpose computing on graphics processing units) koriste CUDA i OpenCL.
Koncept grafičke protočne obrade
[уреди | уреди извор]3D protočna obrada definiše način na koji se 3D scene prikazuju na računaru. Dva osnovna pojma kod 3D prikaza su Ray casting i 3D Polygon rendering. Ray casting je metod za utvrđivanje vidljivih površina sa pozicije svakog piksela na monitoru. Kod ove metode, zrak potiče iz tačke u kojoj se nalazi kamera i širi se u svim pravcima. Ako bilo koji zrak pogodi neku površinu, tada se računa boja i osvetljenje za tačku koju zrak pogađa. Drugim rečima, pomoću ove metode biramo piksel i određujemo njegovu boju i osvetljenost na osnovu pogođenog objekta.
Zrak se najčešće predstavlja kao vektor ili kao parametarska linija. Osim za utvrđivanje vidljivosti, ova metoda se koristi i kod izračunavanja senki, refleksije, radiometrije i detekcije kolizije između objekata. Kod renderovanja 3D poligona, dešava se suprotno. Uzimamo poligon i na osnovu izabranog poligona određujemo za koje piksele se računaju svetlost i boja. Umesto da se zraci šalju iz kamere u scenu, oni se zapravo šalju iz scene u kameru. Grafička protočna obrada se sastoji iz više faza.[1]
Faze protočne obrade
[уреди | уреди извор]3D Geometrija
[уреди | уреди извор]U ovoj fazi se kreiraju prosti geometrijski oblici. Ovo se obično radi tako što se model predstavlja pomoću trouglova koji su pogodni za matematička izračunavanja. Metoda koja se često koristi u video igrama za postizanje veće preciznosti modela je metoda mozaika (eng. "tessellation") koju podržavaju OpenGL 4.x i DirectX 11.x API-ji tako što su uvedeni novi tipovi shader programa, tessellation shader i geometry shader.
Transformacija modela
[уреди | уреди извор]Svaki model se na početku nalazi u lokalnom koordinatnom sistemu, tako da se najpre transformiše u globalni koordinatni sistem u kome se nalaze svi modeli na sceni.[2]
Transformacije kamere
[уреди | уреди извор]U ovoj fazi, globalni koordinatni sistem se transformiše u sistem kamere, gde se kamera nalazi u centru koordinatnog sistema. Ovaj koordinatni sistem se drugačije naziva i sistem pogleda (eng. "View Space").[2]
Osvetljenje
[уреди | уреди извор]U ovoj fazi se računa nivo osvetljenosti za svaki poligon na osnovu pozicije svetla kao i drugih svojstava ,radiometrije i refleksije.[3]
Projekcija
[уреди | уреди извор]Projekcija je u stvari linearno preslikavanje iz n-dimenzionalnog prostora u m-dimenzionalni prostor, pri čemu važi m<n. U računarskoj grafici, to je obično preslikavanje iz 3D prostora u 2D prostor, tj. iz 3D prostora kamere u 2D koordinatni sistem koji koristi monitor.[2] Na primer, ako je kamera centrirana prema nekom objektu, taj objekat će se nalaziti na sredini 2D prikaza. Postoji više vrsta projekcije, ali za računarsku grafiku dve najbitnije su:
- Perspektivna projekcija
- Ortogonalna projekcija
Kod perspektivne projekcije, objekti se crtaju sve manji sa porastom udaljenosti od kamere. Ovo smanjenje je u stvari deformacija objekta, i postiže se deljenjem X i Y koordinata sa Z koordinatom. Perspektivna projekcija predstavlja način na koji čovek vidi stvari u prirodi. U ortogonalnoj projekciji, objekti zadržavaju originalnu veličinu bez obzira na udaljenost od kamere.
Odbacivanje i odsecanje
[уреди | уреди извор]Ova faza se sastoji iz dve manje faze:
- Odbacivanje objekata koji nisu vidljivi (eng. culling)
- Odsecanje delova objekata (eng. clipping)
Prva faza odbacuje objekte koji uopšte nisu vidljivi, tj. nisu u vidnom područiju kamere. Ovo je veoma važna optimizacija u renderovanju. Druga faza odbacuje skrivene delove onih objekata koji su parcijalno vidljivi. Ovo za rezultat ima jednostavniju rasterizaciju objekata.[4]
Rasterizacija
[уреди | уреди извор]Rasterizacija je proces u kome se grafika u vektorskom formatu (oblici) konvertuje u rasterski format (pikseli) za prikaz na računaru. Drugim rečima, u ovoj fazi se određuju svojstva kao što je boja piksela ili tekstura učitana u memoriju. Ova faza je veoma složena, tako da se i sama sastoji od više koraka koji se nazivaju piksel cevovod.
Reference
[уреди | уреди извор]- ^ [„Computer Graphics | Electrical Engineering and Computer Science | MIT OpenCourseWare[[Категорија:Ботовски наслови]]” (PDF). Архивирано из оригинала (PDF) 07. 09. 2012. г. Приступљено 05. 01. 2014. Сукоб URL—викивеза (помоћ) Computer Graphics | Electrical Engineering and Computer Science | MIT OpenCourseWare]
- ^ а б в http://www.cs.virginia.edu/~gfx/Courses/2012/IntroGraphics/lectures/13-Pipeline.pdf
- ^ [„Computer Graphics | Electrical Engineering and Computer Science | MIT OpenCourseWare[[Категорија:Ботовски наслови]]” (PDF). Архивирано из оригинала (PDF) 17. 06. 2012. г. Приступљено 05. 01. 2014. Сукоб URL—викивеза (помоћ) Computer Graphics | Electrical Engineering and Computer Science | MIT OpenCourseWare]
- ^ http://sglab.kaist.ac.kr/~sungeui/CG/Slides/Lecture07.pdf