【问题标题】:Diffuse reflection : why black material has 0 in material's 'k diffuse' constant?漫反射:为什么黑色材料的“k 漫反射”常数为 0?
【发布时间】:2012-11-11 16:53:01
【问题描述】:

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

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

【问题讨论】:

    标签: rendering glsl unity3d shader


    【解决方案1】:

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

    现实世界中的物体反射可能比仅使用 Phong 模型中的漫反射和镜面反射组件所能表达的要复杂得多。

    找到仅反射漫射光的真实世界表面也并非易事 (lambertian reflectors)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      • 2023-04-06
      • 2018-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多