Implementing Phong Specular Illumination
Spring 1999
Add specular if N · L > 0 and N · H > 0
n_l = (N · L)
if (n_l > =0.0)
da = obj_amb[obj] + obj_kd[obj]*n_l
else
da = obj_amb[obj]
d_a.r = da*obj_color[obj].r
d_a.g = da*obj_color[obj].g
d_a.b = da*obj_color[obj].b
spec.r=spec.g=spec.b=0;
if (n_l > 0)
{
n_h = pow(MAX(0, (N · H)), obj_specexp[obj])
spec.r = obj_ks[obj]*n_h
spec.g = obj_ks[obj]*n_h
spec.b = obj_ks[obj]*n_h
}
final_color.r = MIN(1.0, (d_a.r + (1-d_a.r)*spec.r))
final_color.g = MIN(1.0, (d_a.g + (1-d_a.g)*spec.g))
final_color.b = MIN(1.0, (d_a.b + (1-d_a.b)*spec.b))
![]() |
![]() |
![]() |
| Ambient Illumination | Diffuse plus Ambient Illumination | Specular plus Diffuse plus Ambient Illumination |
|---|