Uvod
Normal mapping
Recimo kako imamo površinu sastavljenu od trokuta. Kada bi htjeli dodati više detalja na tu površinu, trebali bi dodati još normala kako bi svjetlost dala više detalja. S obzirom da svaki trokud daje jednu normalu, potrebno je dodati još trokuta i tada dolazi do gubitka performansi. Kako bi dobili što više detalja i zadržali dobre performanse koristimo normalne mape. Korištenjem originalnog broja trokuta i normalne mape dobivamo normalu za svaki piksel na površini. Korištenjem normalnih mapa znatno poboljšavamo model dok performanse ostaju slične originalnima.
Dobivanje normalne mape
Ukoliko pogledamo normalnu mapu možemo uočiti kako kako su ljubičaste. S obzirom da svaki piksel poprima tri vrijednosti: Crvenu, Plavu i Zelenu. Možemo primjetiti kako piksel poprima tri vrijednosti, isto kao i vektor unutar tri dimenzije. Crvena boja predstavlja vektorX, Zelena boja predstavlja vektorY dok Plava boja predstavlja vektorZ. Možemo zaključiti da svaki piksel predstavlja koordinate X, Y i Z. S obzirom da Plava boja predstavlja os Z koja je okomita na površinu vrijednosti plave boje dominiraju te je slika uglavnom ljubičasta. RGB poprim vrijednosti od 0 do 255, dok normale poprimaju vrijednost od -1 do 1. Iz tog razloga potrebno ih je transformirati.
Kod transformacije iz RBG u vrijednosti XYZ koristimo formulu XYZ = 2 * RGB - 1
Na sljedećoj slici ožemo vidjeti prikaz zida koji nema teksture, a nakon toga prikaz normalne mape iste slike korištenjem navedene formule.
+
Primjenom programskog rješenja možemo vidjeti kako je zid dobio teksture.
