Blinn-Phong Lighting

OpenGL Lighting | | OpenGL Texturing

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

OpenGL Lighting | | OpenGL Texturing