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 |
---|