光源种类
平行光源:如太阳光源,类似于灯源在无穷远处,照射物体的各个地方光照强度相同,光照方向也相同。
点光源:离物体有限距离,且灯光会随着距离衰减,物体表面光照方向不同。
聚光灯:如 手电筒照在一个圆圈上,周围衰减。(这里光照计算暂不介绍)
环境光ambient
上一篇给大家讲了,opengl光照模型得设置 灯源环境光 材质环境光。物体反射的环境光为这两者的乘积, 2种光源计算方法一
vec4 ambientColor=U_LightAmbient*U_AmbientMaterial;
漫反射光diffuse
1、平行光源
由图可见,太阳是平行光源,我们的反光照强度与入射光与法向量的夹角有关,因此可以利用向量AB 和 AN的乘积(绿色箭头向量,入射方向的反方向)来表示反射光大小,当然 最小值为0,即没有反射光。
unitform vec4 U_ligthtPos;
uniform vec4 u_diffuseLightColor;
uniform vec4 UdiffuseMaterial;
varying vec4 V_diffuseColor;
void main(){
vec3 L = U_lightPos.xyz;
L = normalize(L);
vec3 n = normalize(mat3(NM