07 Shading (Illumination, Shading and Graphics Pipeline)
关键点
- Blinn-Phong Reflectance Model(Specular, Diffuse, Ambient)
- Shading Frequencies(Flat Shading, Gouraud Shading, Phong Shading)
1. Blinn-Phong Reflectance Model
对不同的物体应用不同的材质,不同的材质与光线的相互作用存在不同的方法。
1.1 光源
- Specular highlights 高光反射
- Diffuse reflection 漫反射
- Ambient light 环境光照
1.2 Shading Point
- 所有向量都是单位向量。
- 着色是局部操作,只考虑该点与光的关系,不考虑其他点的影响,所以没有阴影。
1.3 Diffusion Reflection
1.3.1 Lambert's Cosine Law
物理表面法线与光线的夹角影响到了入射光线的量,相应的影响了单位面积的入射光的能量,最终出现不同夹角的亮度不同的漫反射现象。接收到的能量与法线方向和光线方向的夹角余弦成正比。
1.3.2 Light Falloff
光源辐射出的能量在离光源越远的地方能量密度越小,与距离的平方成反比。
1.3.3 Lambertian(Diffuse) Shading
- 取max(0,cos(theta))是因为余弦值小于零没有物理意义。
- 不同材质的点对不同波长有不同的吸收率。定义\(k_d\)为反射率,等于1表明完全反射,等于0表明完全吸收。对于RGB三个通道,分别定义一个反射率。
- 对于漫反射,不同方向的反射光一致,即与\(\vec{v}\)无关。
1.4 Specular
高光是入射光线直接反射,并在反射方向附近区域有一种分布。当观察方向与镜面反射方向接近时,可以观察到高光。
1.4.1 Blinn-Phong
观察方向\(\vec{v}\)与反射方向\(\vec{R}\)接近,可以看作半程向量与法线方向接近。
- 使用半程向量与法线方向的余弦作为相近性程度判断
- 同样有高光反射系数,与能量衰减,但是没有接受部分的比例,这是因为是经验公式
- 使用半程向量可以减少计算量
- 余弦有指数,是因为余弦的容忍度太高,对角度偏转不敏感,相当于认为高光区域很分散,下图中p=64就可以限制高光范围不超过30°,一般采用p>=100。
1.5 Ambient
下面将环境光假设为空间分布的常数,实际上并非如此,与全局光照相关。
1.6 Blinn-Phong Reflectance Model
2. Shading Frequencies
2.1 Three types
下图分别为,对平面做shading,对顶点做shading(其他区域插值),对像素做shading。
- Flat Shading
三角形法线可以通过两条边叉积得到。
- Gouraud Shading
三角形较大会导致高光不明显。
- Phong Shading
当面频率很高时,Flat shading也能达到很好的效果,但是由于模型较复杂,Phong shading不一定计算量更大。在面不是很密集的一般情况下,Phong Shading还是效果更好。
2.2 Normal Vectors
2.2.1 Per-Vertex Normal Vectors
- 如果知道定点所在的切面,可使用切面法向量,但是过于理想。
- 使用周围面的加权平均。
2.2.2 Per-Pixel Normal Vectors
- 由顶点法线做插值,并归一化。
来源
[1]Games101. 闫令琪
本文来自博客园,作者:ETHERovo,转载请注明原文链接:https://www.cnblogs.com/etherovo/p/17318751.html