总结一些自己目前用到的相关光照模型
1.环境光模型
2.漫反射光模型
3.冯氏镜面反射光模型(冯氏光照的镜面部分)
float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32);
vec3 specular = specularStrength * spec * lightColor;
4.Blinn-Phong镜面反射光模型(Blinn-Phong的镜面部分)
找不到原图了,Blinn-Phong的光照计算在点乘处采用了特殊的计算方式,使高光点的效果看起来更好
5.各向异性镜面反射模型(Kajiya-Kay模型)
Blinn-Phong的光照模型可划分为:光照 = 环境光 + 漫反射光 + 镜面反射高光
各向异性光照模型 : 光照 = 环境光 + 漫反射光 + 各向异性高光
此内容出自地址
各向异性高光的计算方式与镜面光的方式一样,区别是各项异性的法线计算方式,如下为法线分布:
如下为计算时的法线分布方向(由L和T所在平面计算出的法线方向):
光照计算模型:
6.Marschner毛发渲染模型
1.单根毛发微表面模型
2.毛发横截面光照模型图:
该模型将光照在毛发的作用分成3部位:
反射(R):表面的反射,产生主高光,受毛发切线和各向异性影响。
传输-传输(TT):传输-传输路线,光线照射并穿透毛囊,然后从另一边照射出去。这是光线在一定发量中的散射过程。
传输-反射-传输(TRT):光线进入毛囊,从内表面边界反射出来,然后再照射出来。产生的是次高光。
3 毛发的间接光照:
UE4采用的是Dual Scattering(双向散射)的多散射近似光照模型。和离线光线跟踪毛发间接采样方法相比,双向散射会节省大量时间,质量几乎接近。
双向散射主要用于估计毛发的多散射函数,这个函数有两个部分组成:
全局散射函数。全局散射函数用于计算由于光穿过周边的毛发对当前毛发的散射贡献,
局部散射函数。局部散射用于计算由于光多次在周边头发折射对当前毛发的散射贡献。
7.pbr光照模型(基于Cook-Torrance BRDF模型)
1.基于微表面模型
2.能量守恒
3.基于物理的brdf(折射光 + 反射光 = 1);
其中 D:法线分布函数, F:菲尼尔反射 G:几何遮蔽函数