简单点说,光照模型就是用一些数学公式模拟在真实环境下物体表面在光照下的颜色。这些模型包括但不限于之前讲过的Phong,Blinn-Phong(零基础学习OpenGL--光照和高级光照篇中介绍,二者区别主要在于镜面光照,Blinn-Phong测量的是法线与半程向量之间的夹角,而Phong模型测量的是视线与反射向量间的夹角。Blinn-Phong的镜面光分量会比冯氏模型更锐利一些)。
光照模型:
1.Lambert模型:近似的描述某点的反射光强度为入射光和法线点乘再乘以材质颜色和入射光颜色。(这里简单的认为所有的反射光都是从入射点发出的并且不考虑吸收和折射,但实际不是,对塑料、大理石等适用)。
Lambert:反射光的强度与表面法线和入射光线的余弦值成正比。
公式:c(diffuse) = c(light) * m(diffuse) * Max(0, n · l); // c表示颜色,m表示材质颜色,n表示法线向量,l表示入射光线单位向量。取max是防止物体被从后面来的光照亮。
2.Phong模型:环境光+所有光照的lambert反射+反射光和视线点乘后的alpha次幂。考虑高光让物体能够表现出高光斑,当视线和反射光线重合时高光最强。
公式:c(specular) = (c(light) * m(specular))max(0, v · r)的m(gloss)次幂。//m(gloss)光泽度,光泽度越大,亮点越小。v是视线,r是反射光线。
3.Blinn-Phong模型:将Phong中高光部分的反射光r点乘视线v替换为:法线n和半程向量h的点乘。其