# How are normals assigned to vertices in different types of shading?

I'm new to this forum and topic but wanted to figure out specifically how are normals assigned to vertices in flat shading, gouraud shading, and phong shading?

Is there a difference between any?

Flat shading uses the same normal for each vertex of the triangle. In this case the normal is constant, and one color is evaluated for the triangle.

For Gouraud and Phong shading normals are different per vertex and can represent a curved surface (even though the face is flat).

However, for Gouraud shading is evaluated per vertex, and the resulting color is interpolated. For Phong, the normals are interpolated first and the shading is evaluated per pixel.

Also note there's a bit of an overloaded term between the Phong Lighting/Reflection model and Phong Interpolation, Per-pixel shading which is what you're referring to here.

Given these 3 shading types, the next logical step is actually normal maps shading. This is basically where the normal is provided per pixel, and shading is evaluated per pixel.

And so you have the trend of doing more calculation at finer details / higher resolution.

Here's a table!

                 Normal         |   Lighting
Flat:            Per Triangle   |   Per Triangle
Gouraud:         Per Vertex     |   Per Vertex
Phong:           Per Vertex     |   Per Pixel
Normal Mapping:  Per Pixel      |   Per Pixel