Methods to compute VR

First we must compute V, which is the vector from the surface point to the View Reference Point. Next we must compute the reflection vector R. From the law of reflection: L, N, and R are in the same plane, and in this plane the angle of incidence equals the angle of reflection. We will look at two methods to compute R.

Phong Method

Geometric Method

There is also an approximation by James Blinn that is frequently used.

Blinn Approximation

Phong Method

In the Phong method we assume the light source is along the Z-axis, i.e., L = K. So may have "2" light sources: 1 for diffuse (mobile) and 1 for specular which is stationary.

Since L, N, and R are co-planar, then N is a linear combination of L and R, i.e. N= aL + bR Since L has no X or Y component, the X, Y component of N is proportional to the X,Y components of R. Thus it is co-linear in the X, Y plane.

Therefore Rx = Nx Ry Ny angle between N, Z = q ==> Nz= Cos q


0 q  p/2 (else light behind surface) NL ="Cos" q="nxlx" + nyly + nzlz="nx0" + ny0 +nz1="nz" 

angle between R, Z = 2q ==> Rz = Cos2q = 2 Cos2q - 1 = 2 nz2 - 1

Assume unit vectors


rx2 + ry2 + rz2 = 1
rx2 + ry2 = 1 - rz2 = 1 - Cos2 2q
ry2 (rx2 / ry2 + 1) = 1 - Cos2 2q
ry2[(nx2/ny2) + 1] = (ry2/ny2)(nx2 + ny2)     since rx2/ry2=nx2/ny2                
= (ry2/ny2)(1 - nz2) = 1 - Cos2 2q        since nx2+ny2+nz2=1
= 1 - (2 Cos 2 q - 1)2 = 1 - (2 nz2 - 1)2
(ry2/ny2)(1 - nz2) = 1 - 4 nz4 + 4 nz2 - 1 = 4 n z2(1 - nz2)
ry = 2 nzny
(rx/ry) = [rx/(2nzny)] = (nx/ny) 	==> r x = 2 nznx
Thus for a single light source along Z-axis:
	rz = 2nz2 - 1	
	ry = 2nzny
	rx = 2nznx

 Top of document.

Geometric Method

Look at the geometry of reflection

The projection of L onto N is N cos (q) so

R = N cos(q) + S 
L + S = N cos(q)
S = N cos(q) - L    R = 2Ncos(q) - L = 2N(N  L) - L

 Top of document.

Blinn Approximation

There is also a method to approximate VR, developed by Jim Blinn. Blinn introduced H = (L + V) / 2 and replaced RV = cosq by NH = cos (q /2). H is the normal to a perfect specular reflector oriented such that the incident light is reflected to the viewer (V).

Since, for small q, cos (q /2) raised to a power falls off slower than cos (q) raised to the same power, the net effect is that using the Blinn approximation "spreads" the specular highlight, as shown below.

The difference between using (a) RV and (b) NH for a fixed value of n. Note the difference in the intensity in the direction V.

We can compensate for this spreading by using a larger Phong n value to narrow the specular highlight back down. If we can use the approximation that the light source and the View Reference Point are far away, so they don't vary over the scene, then we can compute L, V, and H once then the intensity at any point, I = f(N).

 Top of document.

Phong specular reflection page.
HyperGraph home page.

Last changed September 06, 1999, G. Scott Owen,