Eine zufriedenstellende Lösung der angesprochenen Probleme
läßt sich durch den Algorithmus
von Phong erzielen.
Basierend auf dem besprochenen Beleuchtungsmodell führt dieser
Algorithmus die Farbwertberechnung für jedes Pixel der Dreiecksfläche
explizit durch (per pixel shading).
Die dazu benötigten Normalenvektoren müssen zunächst aus den
Normalenvektoren in den Eckpunkten berechnet werden.
Für die Fläche in der Abbildung
ergeben sich die Normalenvektoren
in und
durch lineare Interpolation der in
und
bzw.
und
und daraus wiederum die Normalenvektoren entlang der Scanline.
Dabei ist zu beachten, daß für die Beleuchtung die Koordinaten
und Normalen im WC herangezogen werden.
Durch die Interpolation der Normalen ist das Phong-Shading in der Lage, den ursprünglich gekrümmten Verlauf der Oberfläche wiederherzustellen, obwohl das Objekt durch planare Polygone approximiert wird. Dadurch ergibt sich eine fast natürliche spekulare Reflexion mit scharfen Highlights.
Auch mit weniger approximierenden Polygonen ergeben sich bessere Bilder als beim Gouraud-Shading; der Mach-Band-Effekt wird weitgehend unterdrückt. Diese hohe Qualität hat ihren Preis: Statt der Beleuchtung von drei Eckpunkten beim Flat- und Gouraud-Shading müssen beim Phong-Shading alle Pixel des Dreiecks beleuchtet werden,