Gouraud Shading
Gouraud shading, or a modified form of it, is the primary shading type used in today's games. Why is that? Well, it is not so advanced that current hardware can't handle it, and it is certainly more advanced than simple flat shading. What Gouraud shading does is take a set of points of a polygon, like a triangle, and then interpolates the lighting intensity for the rest of the points.
To do this, it uses the intensity of each vertex of the triangle, and interpolates linearly along the edges. The intensity of the vertex is taken by using the illumination of the vertex's normal. (The normal of a point is a vector that is at a right angle to that point.) The normals for the vertex are not always given, so a common method used it to take the average of all of the surfaces that come in contact with the specific vertex. Note that interpolation translates roughly to estimation, so this model of shading is not perfectly accurate. However, Gouraud shading is able to almost completely eliminate the "Mach effect" that flat shading is victim to.
![FS 3D Guide: Filtering and Lighting [ Gouraud shading @ 640 x 480 ] > View Full-Size in another window.](images/gouraud-s.jpg) Gouraud shading
|
What is the problem with Gouraud shading?
The problem with Gouraud shading, though, is that you are interpolating light intensity from the vertices of the polygon to approximate the data for the rest of the points of the polygon's face. While this does allow for smooth color gradients and shading, this is not as accurate as you could get, especially if you are trying to realistically represent reflections and specular lights. For example, if a light is meant to reflect off of the center of a polygon's face, Gouraud shading would not be able to accurately represent this because the values for light intensity for the center of the polygon's face are actually determined by the values taken from the vertices. Additionally, because Gouraud shading uses a linear interpolation of the vertices, this can cause problems with surfaces that have a good amount of curvature.