一、颜色
现实世界中看到物体的颜色并不是物体本身的颜色而是,物体将光照颜色(白色)吸收过后反射出来的颜色。所以可以理解为正常情况下(全局白色光照,全局的含义是光是四面八方全方位的光照)物体颜色就是物体的对颜色的反射系数。
由于物体的反射系数是不变的。所以当光照颜色变化时,能被放射的颜色就变了,所以看到的物体颜色变化了。
物体看到颜色 = 光照颜色*物体反射系数
glm::vec3 lightColor(1.0f, 1.0f, 1.0f); //光照颜色
glm::vec3 toyColor(1.0f, 0.5f, 0.31f); //物体反射系数,即物体默认的颜色
glm::vec3 result = lightColor * toyColor; // = (1.0f, 0.5f, 0.31f); //最终看到的物体颜色
二、基础光照
由于现实世界中光是能够反射,折射,这样就会导致光照是很复杂的,由各种光线直接照射到物体,经过N(1~无限)次物体反射间接照射到物体上的。如果要用计算机模拟这个过程是计算量很大也很难的。所以为了简化计算中大部分都是用的是经验模型的方案较多。常见的有 1、Phong Lighting Model 2、Blin Phong Lighting Model 3、Physically Base Rendering (PBR) 。
2.1 Phong Lighting Model (冯氏光照模型)
Phong模型主要由三个部分组成 环境光(Ambient)、漫反射光(Diffuse)、镜面光(Specular)。
环