Aplet zobrazuje tri paralelne bežiace scény, kde každá zdieľa model, polohu a orientáciu kamery ako aj prijímané parametre z web stránky.
Názorne sú tým ilustrované rozdiely v reálnom čase a za rovnakých podmienok.
Prvým z ľava ilustrované konštantné tieňovanie, druhé je tieňovanie Gouradovo a tretím je Phongovo tieňovanie.
Nastavením parametrov resp. ich pomerom je možné modelovať rôzne svetelné podmienky a zároveň materiál, shodne s apletom ilustrujúcim lokálny osvětlovací model.
V rámci nastavenia prostredia sa dajú upraviť parametre:
* Ambientné svetlo: farba a intenzita.
* Bodové svetlo: farba, intenzita a pozícia.
* Vlastnosti materiálu sú určené parametrami:
Ka: určuje akú vlastnú farbu má daný zobrazený predmet, tým sa určuje aké
zložky svetla odráža a aké pohlcuje.
Kd: určuje difúznu farbu pri odraze náhodným smerom (neriadi sa pravidlom že uhol dopadu
sa rovná uhlu odrazu).
Ks: určuje spekulárnu (zrkadlovú) farbu pri odraze (riadi sa pravidlom, že uhol dopadu
sa rovná uhlu odrazu).
Lesklosť: lesklosť materiálu, vo výpočte spekulárneho odlesku sa umocňuje na túto
hodnotu.
Pomerom týchto parametrov je možné modelovať rôzne svetelné podmienky prostredia, modelovať vlastnosti
materiálov a
polohovaním kamery meniť pozorovacie uhly a vplyv jednotlivých parametrov a zložiek svetla na výsledný
efekt.
Konštantné tieňovanie známe aj ako flat shading, je veľmi rýchla, jednoduchá metoda.
Predpokladá, že každý segment povrchu má len jednu normálu.
Ak neexistuje žiadna normála implicitne obsiahnutá v údajoch priestorového modelu, možno ju použiť pre konvexné rovinné povrchy určiť ako výsledok, ktorý je správne orientovaný tak, aby smeroval do vonkajšieho polpriestoru.
Z normály sa vypočíta jedna farba a pri rastrizácií povrchu sa priradí všetkým jeho pixlom. Konštantné tieňovanie sa používa tam, kde je potrebné dosiahnuť vysokú rýchlosť vykreslenia.
Nech je tvar trojuholníka definovaný jeho 3 vrcholmi V0, V1 a V2 a normálami n⃗0, n⃗1, n⃗2.
Nech je zdroj svetla smerový s vektorom svetla l⃗. Svetlo má okolitú a smerovú časť s farbami [R, G, B].
Vypočítať je možné ktorúkoľvek normálu, keďže normálový vektor reprezentuje smer ktorým trojuholník leží.
Výpočtu normály plochy sa použije vektorový súčin vektoru u⃗ s vektorom v⃗, čoho výsledkom je vektor n⃗0 kolmý na obidva pôvodné vektory.
Farba samotného polygónu sa určí napríklad použitím Phongového výpočtu zložiek svetla v danom bode podľa Phongovej rovnice.
Farbu vo fragment shaderi následne priradí všetkým pixlom plochy po rasterizácii.
Gouraudovo tieňovanie
Metódu navrhol Henri Gouraud a je vhodná na tieňovanie telies, ktorých povrch je aproximovaný množinou rovinných plôch. Pre fungovanie algoritmu je dôležitá znalosť farieb všetkých vrcholov spracovávaného povrchu. Farbu vrcholov určíme vyhodnotením modelu osvetlenia.
Vzhľadom na metódu výpočtu, ktorá interpoluje farby, nemá zmysel zohľadňovať zrkadlovú zložku svetla. Preto sa počítajú len ambientná a difúzna zložka svetla. Potom sa bilineárnou interpoláciou vypočítajú farebné odtiene percepčných bodov danej oblasti. Preto sa Gouraudovo tieňovanie nazýva aj farebná interpolácia.
Najprv sa pre každý vertex vypočíta jeho normálový vektor.
Normála povrchu sa používa na určenie uhla medzi zdrojom svetla a povrchom, ktorý sa používa na výpočet farby vrcholu podľa Phongovej rovnice.
Najprv sa vypočítajú normálové vektory vo vrcholoch V0, V1 a V2 čím dostaneme n⃗0, n⃗1, n⃗2.
Následne sa určí intenzita a farba svetla na základe uhlu medzi dopadajúcim svetlom l⃗ a príslušnou normálou.
Interpolujú sa farby vrcholov na povrchu polygónu pomocou barycentrických súradníc.
Barycentrické súradnice určujú, ako veľmi prispieva každá farba vrcholu k interpolovanej farbe v bode P vnútri trojuholníka, pričom súčet váh je 1.
C je výsledná interpolovaná farba v bode P.
Počas rasterizácie sa farba každého pixlu v polygóne určí interpolovanou farbou v príslušných barycentrických súradniciach. Keďže interpolácia sa vykonáva pomocou lineárnej kombinácie farieb vrcholov a váhy tejto kombinácie sú dané barycentrickými súradnicami, môžeme interpolovanú farbu pre každý pixel efektívne vypočítať.
Gouraudovo tieňovanie vypočíta farby vrcholov polygónu na základe uhla medzi zdrojom svetla a normálou povrchu a potom interpoluje farby na povrchu polygónu pomocou barycentrických súradníc.