第三十一章 投光物和多光源总结

投光物:将光投射到物体的光源。不同的投光物代表不同种类的光源。

平行光:(也叫做定向光)
光线都是平行的,物体和光源的相对位置不重要。场景中每个物体的光照计算都是类似的。
定义一个光线方向向量,而不是位置向量来模拟一个定向光。着色器计算不变,直接用光的direction向量,而不是通过position计算lightDir向量
struct Light {
// vec3 position; // 使用定向光就不再需要了
vec3 direction;

vec3 ambient;
vec3 diffuse;
vec3 specular;

};

void main()
{
vec3 lightDir = normalize(-light.direction);–光照要求:从片段到光源的光线方向。还需要对光源进行标准化

}
补充:
检测w分量是否等于1.0,来检测它是否是光的位置向量;w分量等于0.0,则它是光的方向向量(执行定向光照计算),这样就能根据这个来调整光照计算。

点光源:
处于世界坐标中某一个位置的光源,会朝着所有方向发光,但光线会随着距离逐渐衰减。
需要加入衰减,也就是:随着光照距离的增长,而线性减少光的强度,让远处的物体更暗。这个有公式,在此处不做研究
下面实现衰减:需要三个额外的常数值,存储在Light结构体中。使用之前计算lightDir的方法,不要和定向光计算混合
struct Light {
vec

你可能感兴趣的:(计算机视觉)