OpenGL 编程指南 (6)

1、冯氏光照模型由三部分组成:环境光、漫反射光、镜面高光。

 1)环境光:在一个存在光源的场景中,几何体不会是完全黑暗,光线总会通过近似无限的反射折射对场景中的几何体表面施加一定影响。环境光在大多数情况下被看作是一个常量参与计算。

 2)漫反射光:光源对几何体表面的方向性影响,均匀散射到几何体表面的光源表现,是冯氏光照模型中最为显著的部分。计算它需要表面法向量与光线的方向,它们标准化后的点成代表漫反射的强度。

 3)镜面高光:光源在几何体表面直接反射的高亮光表现,表现强度与材质有关,因此它有一个光泽度(shininess)的属性,在一定角度才能观察得到。计算它需要表面法线、观察方向、光线方向、光泽度。

2、光源类型

 1)平行光:所有光线平行的光源,当光源距离接受的几何体表面非常远的时候就可以把这个光看成是一个平行光,如太阳光,因此也不需要考虑因距离产生的衰减。

 2)点光源:有光源向四周发散的光,对于几何体表面点光源的光线方向都是不同的,也需要考虑因距离产生的衰减,较为广泛的衰减公式为I = 1.0 / (A + B*Distance + C*Distance*Distance)。

 3)聚灯光:是收到照射范围限制的点光源,如手电筒。

3、经典光照模型的两大缺点:环境光照表现力不足,真实的场景几何体表面的反射对其它几何体表面的影响又是非常明显;光源有可能不上上面阐述的三种光源之一,比如说透光窗户的光线(也就是光照限制并不都是园型的)。

4、阴影映射

  这里讲的是使用深度纹理来实现的阴影映射,简单地渲染一遍场景其它信息可以丢掉保留深度信息即可,接着利用生成的深度贴图在进行正常绘制场景的时候每个片元都与深度贴图进行比较,如果深度值大于深度贴图找那个的说明就是在阴影之中。

猜你喜欢

转载自www.cnblogs.com/haihuahuang/p/12382091.html