In Phong shading model (and other shading models as well), the light color is multiplied together with the surface color component-wise. I want to know the justification for this. Is this some what related to the physics of light?
-
$\begingroup$ As noted in that wikipedia article, the term "Phong shading" refers specifically to interpolating normals across a surface and using them in lighting computations. There is no multiplying of colors in "Phong shading"; that would be a part of "Phong lighting." $\endgroup$– Nicol BolasCommented Oct 2, 2019 at 0:35
-
3$\begingroup$ Multiplying the material colour by the light is an approximation of light absorption $\endgroup$– PaulHKCommented Oct 2, 2019 at 2:30
-
$\begingroup$ It is, consider the rendering equation: $$L_o = L_e + \int_{\Omega}fL_i\cos\theta\,d\omega$$ For Phong $f= k_d + k_s\frac{\cos\theta_r}{\cos\theta}$. $\endgroup$– lightxbulbCommented Oct 2, 2019 at 7:27
1 Answer
When you multiply colors together the surface color acts as a filter. Remember that colors are scaled from 0 to 1.
That way with white incoming light a green object will remain looking green.
This does bring a few issues because physical light isn't as orthogonal (where the 3 primary colors are actually overlapping frequency response functions) but for the vast majority of cases you can tweak the values enough for it to stay looking realistic.
-
$\begingroup$ You might want to add that the problems are not a major concern as a) phong isnt really well motivated from a measurement perspective b) If you need to account for real light then RGB is an approximation anyway. $\endgroup$– joojaaCommented Oct 3, 2019 at 5:18