U toku rada shader-a se popunjavaju odrE?eni baferi, strukture u memoriji koje se koriste za kona?no iscrtavanje. U toku aplikacije WebGL kreira i popunjava tri vrste bafera koji zajedno ?ine Drawing Buffer, a to su: color, depth i stencil buffer
Color buffer je bafer u kom su sme?tene RGB ili RGBA vrednosti za svaki piksel na ekranu. Fragment shader ?e obezbediti boju za svaki piksel, ali zbog projekcije 3D objekata ina 2D ravan desi?e se da su neke ta?ke (razli?itih boja) preslikavaju na istu (x, y) koordinatu. Koja ?e boja biti na kraju iscrtana zavisi od depth buffer-a koji je opisan u nastavku.
Kad su se u prvom primeru zadavala temena kvadrata svako temee je bilo odre?eno sa tri vrednosti. Tre?a vrednost u definiciji temena je takozvana Z-vrednost koja je u korelaciji je sa z koordinatom objekta u 3D sistemu. U primeru je iscrtavan 2D objekat pa je z vrednost postavljena na 0. Kod iscrtavanja 3D objekata sve 3D koordinate se preslikavaju na 2D ravan (ekran) i ova vrednost u?estvuje u modeliranju tog preslikavanja i kona?nom rezultatu slike.
Na osnovu ovih vrednosti popunjava se poseban bafer koji se zove depth buffer (nekad je referenciran i kao z-bafer) i koji sadr?i informaciju o udaljenosti ta?aka od kamere.
Preuzeto sa unspecified.wordpress.com
Kada se 3D model preslika na 2D ravan, neke ta?ke ?e se preslikati na isto mesto. U tom slu?aju WebGL koristi vrednosti iz depth bafera kako bi utvrdio koju ta?ku od njih treba iscrtati. Zavisno od na?ina na koji se sprovodi ova provere (ponekad i jo? nekih vrednosti) kona?na boja piksela se upisuje u drawing buffer.
Da bi ova funkcionalnost bila omogu?ena potrebno je dati instrukciju WebGL-u da omogu?i omogu?ava ovakvo testiranje.
gl.enable(this.GL.DEPTH_TEST);
Funkcija kojom se opisuje na?in provere se odre?uje pozivom posebne funkcije.
void depthFunc(GLenum func)
U nastavku je dat kratak opis ovih funkcija tako ?to je navedeno da li se nova vrednost na istoj poziciji upisuje ili ne.
NEVER
LESS
EQUAL
LEQUAL
GREATER
NOTEQUAL
GEQUAL
ALWAYS
Ako je depth test omogu?en, inicijalna vrednost je LESS
,
ali ako depth test nije omogu?en iscrtavanje ?e se izvr?avati kao da je postavljena ALWAYS
vrednost.
U tom slu?aju fragmenti ?e se iscrtavati onim redom kojim se obra?uju ?to uglavnom nije po?eljan na?in u slu?ajevima realisti?nih prikaza 3D objekata.
Tako?e, ove treba napomenuti da se za inicijalizaciju vrednosti i color i depth bafera mo?e koristiti slede?a funkcija.
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
rolex oysterdate precision 6694 review pre owned rolex datejust uk replica watches rolex 6062 for sale ulysse nardin perpetual calendar blue price in india fake watches cartier perfume baiser vole tag heuer bracelet replacement replica watches uk rolex daytona serial numbers tag heuer quartz review rolex replica uk cartier cleaning kit superocean chronograph 42 price replica watch
Moderni hardverski ure?aji omogu?avaju kori??enje stencil bafera koji se koriste kao takozvane maske. U njima su definisani delovi slike nad kojima se vr?i iscrtavanje, a nad kojima ne. Kori??enje ovakvih bafera znatno uti?e na optimizaciju performansi aplikacije.