2

我正在学习从头开始编写着色器程序,现在我正在使用漫射照明。目前方程是

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

4

1 回答 1

4

计算机图形学中的光照模型只是对现实的简化/近似。大多数介绍都是从Phong 模型开始的。您的资源仅使用其中的漫反射部分。如果使用镜面光扩展着色器,您可以获得带有镜面高光的黑色对象的效果。

您的真实世界对象反射可能比仅使用 Phong 模型中的漫反射和镜面反射分量表达的要复杂得多。

找到仅反射漫射光的真实世界表面(朗伯反射器)也很重要。

于 2012-11-11T19:01:19.990 回答