Shading Models
Flat Shading
Just one color is computed and used to shade a triangle. That color can
be obtained for example by using the illumination function (e.g. one
combining the ambient, diffuse and specular light as described in
earlier notes) at one point on the triangle's (typically a vertex).
This makes shading calculations extremely fast, but leads to images
with discontinuities along edges of the triangles (faceted look
characteristic to older computer games). Here is a cow rendered
using flat shading. Individual triangles can be seen right away.
Of course, one can reduce the problem by increasing the number of triangles
used to approximate the cow. Here is an example: it uses 16 times
more triangles than before; they are still flat shaded (you still
should be able to see the discontinuities), but the result
is much better. However, be aware that we have a lot more triangles
now, so the rendering is much slower. In particular, it requires sixteen
times more illumination evaluations than the previous image.
Using more triangles is not
a way to go in interactive applications.
Gouraud Shading
The main drawback of the flat shading model are the discontinuities
of color along the boundaries of the triangles. Gouraud shading deals
with this problem by using linear interpolation of color to shade triangles.
This produces continuous color across the boundaries of triangles
but, in general, does not do a good job capturing highlights:
at the picture below (the familiar cow, this time Gouraud shaded)
they appear somewhat blocky and artificial. However, it's better
than the flat shaded cow with the same number of triangles
(the first image) and much cheaper to render than the
cow modelled with small triangles (second image).
Phong shading
Phong shading increases the quality of the images by doing linear
interpolation of normal vectors rather than of the color.
This is better since the illumination heavily depends on the
normal vector (look at the diffuse/specular light formulas),
in a complicated way which is not captured well by
linear interpolation of the intensity. This is a high
quality alternative to flat and Gouraud shading: the highlights
are much better shaped and illumination looks much more natural.
However, the rendering cost is in this case very high:
in particular, the illumination function has to be computed
for each pixel covered by the object, not for each vertex.
The cow images have around 300000 pixels (probably at least 100000
are covered by the cow, the rest is background),
while the number of vertices
of all triangles is only 2900. Nowadays, the graphics hardware makes
it possible to implement phong shading in real time, but it is the most
expensive alternative.
The difference between the Phong-shaded and Gouraud-shaded cow is hardly visible,
since the cow model is quite detailed.
Here is another example: a tetrahedron.
Flat shading

Gouraud shading

Phong shading

Notice the specular highlight on the right face in the Phong-shaded image. Such highlights
are impossible to capture with Gouraud or flad shading. Also, note the smoothness of the image
(the edge in the middle is invisible).