我正在学习从头开始编写着色器程序,现在我正处于漫射光照下。目前方程是
Diffuse Intensity = Intensity of light * 'k' diffuse constant of material * (dot product of surface's normal vector and light direction vector)
问题是,我已经读过,对于白色材质,k常数是1,如果材料是黑色则k是0.现实世界不是这样,因为我的黑色物体 当我把它暴露在光源时会变轻。为什么算法是这样的?
我正在从这个链接中学习如何在Unity中编写GLSL。我可以更容易地在Unity中使用着色器设置场景。 http://en.wikibooks.org/wiki/GLSL_Programming/Unity/Diffuse_Reflection
答案 0 :(得分:4)
计算机图形学中的照明模型只是现实的简化/近似。 大多数介绍都以Phong model开头。您的资源仅使用此处的漫反射部分。如果着色器使用镜面反射光延伸,则可以获得具有镜面高光的黑色物体的效果。
现实世界中的物体反射可能比使用Phong模型中的漫反射和镜面反射分量表达要复杂得多。
找到仅反射漫反射光(lambertian reflectors)的真实世界曲面也是非常重要的。