Isječci koda

O sjenama
Algoritmi i metode
Isječci koda
Three.Js
Primjer

Primjer

Ovdje ćemo prikazati primjer na kojem smo pokušali primjeniti shadow mapping algoritam za prikazivanje sjena.




Prvi korak

Kako bi počeli sa radom potrebno je kreirati dva nova shadera za generiranje shadow map-e. Vertex shader sličan je shaderu za iscrtavanje modela, dok fragment shader za shadow map ne treba raditi ništa budući da koristimo WEBGL_depth_texture i depth vrijednost je postavljena automaski u teksturu.


Drugi korak

Potrebno je inicijalizirati novi GL program koji će služiti za iscrtavanje shadow map-e.


Treći korak

Zatim je potrebno postaviti još neke vrijednosti iz shadera u varijable za naknadni rad


Četvrti korak

Ovdje postavljamo stvari koje su potrebne da bismo mogli renderirati shadow map. Prvo, počinjemo dobivanjem ekstenzije, moramo provjeriti vrijednost depthTextureExt jer ako je null ne možemo koristiti ovo proširenje, u ovom slučaju jedino što možemo učiniti je upozoriti korisnika o tome. Ali, ako je uspješna postoje neke stvari koje treba učiniti. Potreban je frame buffer i potrebna je tekstura povezana s njim. Bitno je obratiti pozornost na parametre texImage2D. Kao što možete vidjeti, tekstura se pohranjuje DEPTH_COMPONENT i da je pohranjena u UNSIGNED_SHORT, što znači 16 bita, ovo je važno jer nam daje veću rezoluciju za rad, što omogućava shadow map.


Peti korak

Ova funkcija počinje vezanjem shadowMapFramebuffera kao framerbuffera, što govori programu da se svo naknadno renderiranje mora obaviti na ovom međuspremniku okvira. Okvir za prikaz je postavljen na 1024X1024 piksela kako bi odgovarao razlučivosti teksture. Budući da nam je potrebna samo dubina, briše se samo DEPTH_BUFFER_BIT. Postavljanje programa za korištenje shadowProgram-a. U nastavku je vezanje vertex buffera za korištenje informacija vertexa, model koji će se koristiti određen je vrijednošću modela.


U nastavku nam se javlja greška koju nismo uspjeli razriješiti te nismo mogli nastaviti implementaciju do kraja.