冯氏光照模型

如题所述

第1个回答  2022-07-18

冯氏光照模型的主要结构由3个分量组成:环境(Ambient)、漫反射 (Diffuse)和镜面(Specular)光照

最终片段颜色:环境颜色+漫反射颜色+镜面反射颜色

R=reflect(L, N)
SpecularFactor = power(max(0, dot(R,V)), shininess)

投光物主要有三种: 定向光 (太阳光)、 点光 (电灯泡)、 聚光 (手电筒)

以下是三种投光物对应的顶点着色器和片段着色器的实现。顶点着色器没有什么差别,它们的不同点体现在片段着色器。

顶点着色器

片段着色器

第一列指定的是光所能覆盖的距离,第二、三、四列分别为 Kc、Kl 、 Kq

三. 聚光

需要模拟聚光有一个内圆锥(Inner Cone)和一个外圆锥(Outer Cone)
计算intensity ,在内圆锥与外圆锥之间平滑插值,内圆锥之内恒为1,外圆锥之外恒为0

多光源指的是多个投光物同时存在于同一场景,这时对片段颜色的计算即是对多个投光物计算结果的累计叠加

参考资料:
https://learnopengl-cn.github.io/02%20Lighting/05%20Light%20casters/
https://learnopengl-cn.github.io/02%20Lighting/06%20Multiple%20lights/

相似回答