标准光照模型
自发光,高光反射,漫反射,环境光
环境光
- 使用环境光来近似模拟间接光照
- $c_{ambined}=g_{ambient}$
自发光
- 直接由光源发射入摄像机,直接使用材质的自发光颜色
- $c_{emissive}=m_{emissive}$
- 在实时渲染中,自发光的表面不会照亮周围(不会被当做光源)
漫反射
- 视角的位置不重要,在任何反射方向的分布都是一样的
- 入射光的角度很重要
- 符合兰伯特定律:反射光线的强度与表面法线和光源方向的夹角的余弦值成正比。
- $c_{diffise}=(c_{light}*m_{diffuse})·max(0,\hat{n}·\hat{l})$
- n:法线,l:指向光源方向,c:光源颜色,m:物体漫反射颜色,max截取到0,防止被背面的光照亮。
高光反射
Phong模型
用来计算完全镜面反射方向被反射的光线
$c_{specular}=(c_{light}·m_{specular})·max(0,\hat{v}·\hat{r})^{m_{gloss}}$
m
gloss是材质的光泽度,也叫反光度,用来控制高光区域的大小,值越大,点越小。mspecular是高光反射颜色,用来控制高光反射的强度和颜色。同样也要用max截取。$\hat{v}$是视角方向,$\hat{r}$是反射方向。
Blinn-Phong模型
- 使用$\hat{v}$和$\hat{l}$的中间方向$\hat{h}$和法线$\hat{n}$的夹角代替$\hat{v}$和$\hat{r}$的夹角
- $c_{specular}=(c_{light}·m_{specular})·max(0,\hat{h}·\hat{n})^{m_{gloss}}$
- 计算量小,且效果影响不大,被广泛运用。
着色方式
逐像素:在片元着色器当中计算
Phong着色:通过对顶点法线进行插值得到片元的法线的方式
计算量小,有非线性运算(高光),会出问题
片元内部颜色暗于顶点最高颜色,容易出现棱角现象。
逐顶点:在顶点着色器中计算
高洛德着色:在顶点上计算光照,在片元中线性插值得到颜色
计算量大,但不易出错
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 雨夜!