冯氏光照

冯氏光照

冯氏光照主要结构由三个元素组成:环境(ambient),漫反射(Diffuse)和镜面光照。
image

  • 环境光照:就是即使在非常黑暗的环境下,也有一丝的光(比如月光),这样使得物体表面也有一点颜色。
  • 漫反射光照:模拟一个发光物对于物体的方向性影响。就是比如太阳光射过来,阳面肯定比阴面亮。
  • 镜面反射:给物体表面打一个亮点,相比于物体的颜色,更倾向于光的颜色。

环境光照

利用code,把环境光照添加到场景中比较简单。首先给光的颜色乘以一个数值非常小的常量,之后在乘以物体的颜色,然后使用它作为片段的颜色。

void mian(){
 float alpha = 0.1f;
 vec3 ambient = alpha * lightColor;
 vec3 result = ambient * objectColor;
 color = vec4(result, 1.0f);
}

image

漫反射光照

漫反射使物体上与光线排布越近的片段,越能从光源处获得更多的亮度。这就使得漫反射光照会对物体产生更加显著的视觉影响。

  • 1、需要什么来计算漫反射光照?
    主要使用法向量和定向的法线去计算漫反射光照。
  • 2、这里说的法向量是什么?
    它是垂直于片段表面的一种向量(这里以黄色箭头表示)。
    image

镜面光照

同样依据光的方向向量和物体的法向量,其次,它会依据观察方向。
imag
我们计算反射向量R和视线方向的角度 &\theta&,如果之间的角度越小,那么镜面光的作用就会越大。它的作用效果就是,当我们去看光被物体所反射的那个方向的时候,我们会看到一个高光。

观察向量是镜面光照的一个附加变量,我们可以使用观察者世界空间位置和片段的位置来计算。之后,我们计算镜面光亮度,用它乘以光的颜色,在用它加上作为之前计算的光照颜色。

posted @ 2023-08-03 09:17  九叶草  阅读(30)  评论(0编辑  收藏  举报