Phong Shading
Phong shading is based on a linear interpolation of the normal vectors from
each vertex of the polygon. Just as with Gouraud shading, the normal is
calculated at each vertex and used to produce an intensity. The intensity
calculation will contain a term for a specular highlight. To fill the polygon,
the normal vectors rather than intensities are interpolated from point to
point. Using these interpolated normals, the intensities with a specular
highlight are calculated at each pixel.
Computing the intensities is not as easy as it sounds since the pixel values
are in image space and the normal values are from object space!

Phong Shading and Gouraud Shading Java Applet