为了让绘制出的物体更接近真实世界,此章引入光照,光照章节不少都是概念论述以及少量的计算方式
和光照有关几个小概念,1,光照:方向,强度,衰弱 2.物体材质:光滑度,折射率,反射率和发光度等;3.顶点法线:我们处理物体被光照是按顶点处理的(绘制物体是按顶点绘制的)顶点法线求法:取所有共享此顶点的面的法线的平均值
在directx中我们需要知道顶点的法线,法线决定了光照射平面的角度。光线会被应用到每个顶点,并且根据面法线和光照方向的点积去调,光线颜色的强度。那么怎么计算顶点法线呢?下面的图介绍的很清楚了:
第一部分:
物体受到光照时要考虑的三种现象,
1.环境光(ambient)
现实中在有光情况下就会产生颜色,物体对每种颜色的吸收程度不同,所以产生不同的颜色,环境光公式:
Cambient =Iambient *Mambient(I为照射到物体的光照,M是物体对每种光的吸收率)
2.漫反射光(diffuse)
物体对光照产生的漫反射效果,实际情况中由于物体见面的不光滑,漫反射效果是不一样的,我们这里假设漫反射效果一样:
Cdiffuse = Idiffuse *Mdiffuse * cosθ(I为光照,M是漫反射率,θ是光源方向和顶线法向量夹角)当θ小于0时,没有漫反射
3.镜面反射(specular)
物体对光照产生的镜面反射效果
Cspecular =Ispecular *Mspecular * cosθ(I为光照,M是镜面反射率,θ是反射后光方向和观察点方向夹角) 当θ小于0时,没有镜面反射
第二部分:
光源类型:
1.平行光:模拟太阳光照效果,光只有方向,而且方向不变,没有衰减。
因为平行光没有衰减,计算平行光效果只需要将环境光,漫反射和镜面反射相加即可
Idir =Cambient+