Lighting and Rasterization - Shading
学习目标:
1 分类不同类别的光源
2 理解图像形成过程
3 数学建模三种反射类型并了解其属性
4 了解三种渲染方法,并比较它们的优缺点
5 能够使用 OpenGL 对照明和着色进行编程。
照明和着色模型
1.计算在场景的给定点应该看到的光线的强度和颜色。
2.最终目标是 photorealism
- 照明模型 :模拟光源和环境光
- 着色模型: 模型物体和大气如何处理灯光(反射、吸收、折射等)
光源
- ambient source 环境源
模拟背景灯 · - 点光源 point source
对于附近的小光源 - 分布式源 distributed source
对于附近的大型光源。由一系列点光源的集合模拟。 - 照明方向 lighting direction
(如太阳) 对于遥远的光源
*实际看到的光源更高阶更复杂
着色
- 不透明物体 只反射和吸收光;透明物体 只折射和吸收光
半透明物体 可以折射,反射,和吸收光。 - 反射光的量 只取决于 材质。一般来说 shiny的材质可以反射更多光,dull的材质吸收更多的光。(我们暂时只讨论不透明的物体)
反射的类型:
- 环境反射(ambient reflection):是无方向的,光照是来自背景的平均信号
- 漫反射(diffuse reflection):一般发生在粗糙,暗淡,无光泽的表面。在所有方向均等地散射光
- 镜面反射(specular reflection):一般发生在光滑的表面,朝一个方向反射的光更多
- 下面一张图大家可以比较一下漫反射(diffuse)和镜面(specular)反射的区别
环境反射ambient reflection
ia为入射环境光;
ka为环境反射系数,介于0和1之间。
则我们有 :
- 环境反射 可以解释为背景中来自多个光源的漫反射的平均值。
漫反射diffuse reflection
- 考虑点光源或照明方向
- 朗伯表面(lambertian surfaces):来自表面的反射以相同的强度在所有方向上散射,与观察方向无关
- 表面接收的入射光量与表面在照明方向上的投影面积成比例
kd为漫反射系数,介于0和1 之间;
il(incident light)为入射光强度
N为表面的单位法向量
L 为光照的单位方向向量
- 那么NL就是单位投影区域(nl是cos theta 是个标量!!),如果这一点不太清楚可以看下面这张图:
- 对漫反射,我们有如下公式
镜面反射(specular )
- 考虑点光源或照明方向
- 完美的镜面反射=完美的镜子,如下图,完美的镜面反射中,光照只在R方向反射; 不完美的镜面,总会有光在R周边分散地反射出去。
N 表示L和R等分的方向(入射角=理想镜中的反射角)
R 表示单位镜面反射向量
V 表示单位观察方向向量
- 对镜面反射,我们有公式: