From Ohm

# Blinn-Phong Lighting

Standard algorithm for the lighting of vertices tailored for the GPU

• Phong in 1975, modified by Jim Blinn in 1977
• strictly local
• empirical not physically motivated

Locally reflected light consists of 4 terms:

$I = I_{emissive} + I_{diffuse} + I_{specular} + I_{ambient}$

Constant ambient light (no emission):

Diffuse reflected light (gradual intensity change):

• The light intensity $I$ is proportional to $N \cdot L$:
• $I = (N \cdot L) I_{L}$
• $L$ light vector to light source (normalized with unit length)
• $N$ normal vector of the surface (normalized with unit length)
• $I_{L}$ intensity of the light source (RGB components).

Specular reflected light (high-lights):

• $I = (R \cdot V)^n I_{L}$
• $R$ reflected light vector (normalized with unit length)
• $V$ view vector (normalized with unit length)
• $n$ specular exponent
• $I_{L}$ intensity of the light source (RGB components).

All 4 terms combined:

More details in chapter #5 of the OpenGL Programming Guide [1]