在OpenGL ES2.0的光照开发中,需要知道三种光照的来源:环境光、散射光、镜面光。
环境光:不但入射是各向均匀的,反射也是各向均匀的。ambient
环境光照射结果 = 材质的反射系数 X 环境光强度
散射光:入射是单向的,但反射是各向均匀的,其强度与入射光线和被照射点处的法向量之间的夹角大小相关。diffuse
散射光照射结果 = 材质的反射系数 X 散射光强度 X max(cos(入射角),0)
镜面光:入射光是单向的,反射光也是单向的。最终强度也依赖于观察者的位置。specular
镜面光照射结果 = 材质的反射系数 X 镜面光强度 X max (0,POWER(cos(半向量与法向量的夹角),粗糙度))
其中半向量指的是从被照射点到光源的单位向量与从被照射点到观察点单位向量的平均向量。
定位光光源与定向光光源
主要在镜面光计算的过程中,定向光不需要计算光源到被照射点的单位向量,直接用定光光参数求解即可。