Phongskyggelegging

Phongskyggelegging er en interpoleringsteknikk for skyggelegging av overflater i 3D datagrafikk. Det kalles også for Phonginterpolering eller normalvektor interpolering. Helt konkret interpolerer den overflatenormaler over rasteriserte polygoner, og regner ut pikselfarger basert på interpolerte normaler og en refleksjonsmodell. Phongskyggelegging kan også referere til den spesifikke kombinasjonen av Phonginterpolering og Phongs refleksjonsmodell.


== Historie ==
Phongskyggelegging og Phongs refleksjonsmodell ble utviklet ved Universitetet i Utah av Bui Tuong Phong, som publiserte dem i 1973 i sin doktorgradavhandling. Phongs metoder ble sett på som radikale da de ble introdusert, men har siden blitt selve basisen hva gjelder skyggelegging i renderingsapplikasjoner. Phongs metoder har blitt populære på grunn av deres effektive bruk av regnekraft per tegnede piksel.


== Phonginterpolasjon ==

Phongskyggelegging forbedrer Gouraudskyggelegging og gir en bedre approksimasjon av skyggelegging av glatte overflater. Phongskyggelegging baserer seg på å interpolere normalvektorer overen glatt varierende overflate. Phonginterpolering virker bedre enn Gouraudskyggelegging når den brukes med en refleksjonsmodell som har små områder med spekularrefleksjon, som ved bruk av Phongs refleksjonsmodell.
Det største problemet med Gouraudskyggelegging oppstår når spekularrefleksjon finnes midt på et stort polygon. Siden disse refleksjonene ikke fanges opp av polygonets vertekser og Gouraudskyggelegging interpolerer basert på verteksenes farger, vil man ikke se noe til refleksjonen i det hele tatt. Dette problemet blir løst med Phongskyggelegging.
Til forskjell fra Gouraudskyggelegging, som interpolerer farge over polygoner, vil man med Phongskyggelegging lineærinterpolere overflatenormalen over overflaten av polygonet, fra polygonets vertekser. Overflatenormalen blir interpolert og normalisert for hver piksel, og deretter brukt i en refleksjonsmodell, for eksempel Phongs refleksjonsmodell, for å beregne den endelige fargen til pikselen. Phongskyggelegging krever mer regnekraft enn Gouraudskyggelegging siden refleksjonsmodellen må regnes ut for hver piksel isteden for hver verteks.
I moderne grafikkmaskinvare finner man varianter av denne algoritmer implementert som piksel eller fragmentshadere.


== Phongs refleksjonsmodell ==
Phongskyggelegging kan også referere til kombinasjonen av Phonginterpolering og Phongs refleksjonsmodell, som er en modell for lokal belysning. Den beskriver en måte for en overflate å reflektere lys som en kombinasjon av diffus refleksjon man finner på matte overflater, og spekularrefleksjon man finner på blanke overflater. Den er basert på Bui Tuong Phongs uformelle observasjon av at blanke overflater har små, intense, spekulare høylys, mens matte overflater har større lyse områder, som avtar mer gradvis. Refleksjonsmodellen inkluderer også et ledd for ambient (generell bakgrunnsbelysning), for å imitere de små mengder lys som spres jevnt rundt i våre omgivelser.


== Se også ==
Blinn–Phongskyggelegging – Phongs refleksjonsmodell med fokus på med presisjon, heller enn hastighet
Flat skyggelegging – skyggelegging hvor hele polygoner får samme farge
Gouraudskyggelegging – skyggelegging av polygoner ved å interpolere farger som regnes ut ved hver verteks
Phongs refleksjonsmodell – refleksjonsmodell ofte brukt med Phongskyggelegging


== Referanser ==