自发光,高光反射,漫反射,环境光

环境光

  • 使用环境光来近似模拟间接光照
  • cambined=gambient

自发光

  • 直接由光源发射入摄像机,直接使用材质的自发光颜色
  • cemissive=memissive
  • 在实时渲染中,自发光的表面不会照亮周围(不会被当做光源)

漫反射

  • 视角的位置不重要,在任何反射方向的分布都是一样的
  • 入射光的角度很重要
  • 符合兰伯特定律:反射光线的强度与表面法线和光源方向的夹角的余弦值成正比。
  • cdiffise=(clightmdiffuse)·max(0,n^·l^)
  • n:法线,l:指向光源方向,c:光源颜色,m:物体漫反射颜色,max截取到0,防止被背面的光照亮。

高光反射

Phong模型

  • 用来计算完全镜面反射方向被反射的光线

  • cspecular=(clight·mspecular)·max(0,v^·r^)mgloss

  • mgloss是材质的光泽度,也叫反光度,用来控制高光区域的大小,值越大,点越小。mspecular是高光反射颜色,用来控制高光反射的强度和颜色。同样也要用max截取。v^是视角方向,r^是反射方向。

Blinn-Phong模型

  • 使用v^l^的中间方向h^和法线n^的夹角代替v^r^的夹角
  • cspecular=(clight·mspecular)·max(0,h^·n^)mgloss
  • 计算量小,且效果影响不大,被广泛运用。

着色方式

  • 逐像素:在片元着色器当中计算

    Phong着色:通过对顶点法线进行插值得到片元的法线的方式

    计算量小,有非线性运算(高光),会出问题

    片元内部颜色暗于顶点最高颜色,容易出现棱角现象。

  • 逐顶点:在顶点着色器中计算

    高洛德着色:在顶点上计算光照,在片元中线性插值得到颜色

    计算量大,但不易出错