光照
点光源¶
现实的点光源都会受光线衰减影响一样,点光源的辐射强度应该根据点\(p\)所在的位置和光源的位置以及他们之间的距离而做一些缩放
//灯光颜色(实际上不是颜色,而是光的辐射通量,用RGB三色编码来表示)
vec3 lightColor = vec3(23.47, 21.31, 20.79);
//光线入射方向(指向光源,世界坐标系)
vec3 L = normalize(lightPositions - WorldPos);
//半程向量
vec3 H = normalize(V + L);
//与光源的距离,其中WorldPos是片元的世界坐标
float distance = length(lightPositions - WorldPos);
//光源衰减因子(距离越远,衰减越严重)
float attenuation = 1.0 / (distance * distance);
//辐射率,光源打在此片元上的总能量
vec3 radiance = lightColor * attenuation;
定向光¶
定向光(directional light)拥有恒定的\(\omega_i\),而不会有衰减因子
聚光灯¶
一个聚光灯光源则没有恒定的辐射强度,其辐射强度是根据聚光灯的方向向量来缩放的