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. 闫令琪

posted @ 2023-04-14 19:43  ETHERovo  阅读(35)  评论(0编辑  收藏  举报