UnityShader9:光照基础回顾

一、需要提前了解的

基于经验的基础光照,相比于后面物理光照的学习,简单不少:

  1. 光照基础:https://blog.csdn.net/Jaihk662/article/details/106624451
  2. 漫反射:https://blog.csdn.net/Jaihk662/article/details/106640285(里面也有法向量的讲解)
  3. 镜面光照:https://blog.csdn.net/Jaihk662/article/details/106660744
  4. 两种基于经验的光照模型:https://blog.csdn.net/Jaihk662/article/details/107856884(第二节 Blinn-Phong 光照)

其实这4篇文章了解完,基本上这章就算没问题了,这章主要还是总结性质

二、BRDF 光照模型

光线射到物体表面后,只有两种结果:散射(scattering)吸收(absorption),散射到物体内部的即是折射(refraction)投射(transmission),散射到物体外部的叫反射(reflection),其中漫反射(diffuse)镜面反射(specular)就是需要重点被考虑的,对于不透明物体,折射进入物体内部的光线还会继续与内部的颗粒进行相交,并有部分会重新发射出去,当然这部分的模拟计算要困难得多,可以暂时不用考虑

镜面反射的一个例子

根据材质信息、光源信息,用特定的等式去计算某个沿某个观察方向的出射度的过程叫做着色(shading),这个“特定的等式”就是光照模型(Lighting Model)

BRDF 就是光照模型中,用于描述计算当光线从某个方向照射到一个表面时,反射的光强和方向的,其中 BRDF 全称为双向反射分布函数(Bidirectional Reflectance Distribution Function),在图形学中大多使用一个数学公式来表示,并且提供了一些参数来调整材质属性,之前提到的 Phong 光照和 Blinn-Phong 光照就是两个最基础的 BRDF

  • 经验模型:前面了解到的所有光照模型都是基于经验的光照模型,它不符合真实世界的光照现象,只不过它的易用性、计算速度和得到的效果都比较好,很多重要的物理现象(例如菲涅耳反射)无法用经验模型表示
  • 物理模型:基于物理的光照(PBR),算出来的光照效果非常真实,质量非常高

各向同性(isotropic)各向异性(anisotropic):在固定光源方向和视角仅旋转物体的表面的情况下,反射是否会发生改变,很显然前面的光照模型都是各向同性的:也就是不会发生改变

直接光照(DirectLight)间接光照(IndirectLight):直接光照是光源直接照射上去的光,间接光照是一次或者多次反射后的光,例如阳光就是直接光照,月光是间接光照

三、公式汇总

1):兰伯特漫反射:

扫描二维码关注公众号,回复: 12476342 查看本文章

\boldsymbol{c}_{\text {diffuse}}=\left(\boldsymbol{c}_{\text {light}} \cdot\boldsymbol{m}_{\text {diffise}}\right) \max (0, \mathbf{n} \cdot L),对应第二章的图,其中 \boldsymbol{c}_{\text {light}} 是光照颜色,\boldsymbol{m}_{\text {diffise}} 是材质漫反射颜色

2):半兰伯特漫反射

\mathbf{c}_{\text {difiuse}}=\left(\mathbf{c}_{\text {light}} \cdot\mathbf{m}_{\text {diffuse}}\right)(\alpha({\mathbf{n}} \cdot \mathbf{L})+\beta),其中 \alpha 和 \beta 为缩放和偏移参数,一般情况下它们都是 0.5,这时刚好可以将 {\mathbf{n}} \cdot \mathbf{L} 的范围由 [-1, 1] 映射到 [0, 1] 当中

3):镜面光照反射方向计算:

\mathbf{r}=2({\mathbf{n}} \cdot \mathbf{L}) {\mathbf{n}}-\mathbf{L}

4):Phong 模型镜面光照:

\mathbf{c}_{\text {spscular}}=\left(\boldsymbol{c}_{\text {light}}\cdot \boldsymbol{m}_{\text {specular}}\right) \max (0, {\mathbf{v}} \cdot \mathbf{r})^{m_{\text {gloss }}},对应第二章的图,其中 \boldsymbol{m}_{\text {specular}} 是材质镜面反射颜色

5):Blinn - Phong 模型镜面光照:

\mathbf{c}_{\text {specular}}=\left(\mathbf{c}_{\text {light}}\cdot \boldsymbol{m}_{\text {specular}}\right) \max (0, {\mathbf{n}} \cdot {\mathbf{h}})^{m_{\text {gloss }}},其中 {\mathbf{h}}=\frac{​{\mathbf{v}}+\mathbf{L}}{|{\mathbf{v}}+\mathbf{L}|}

猜你喜欢

转载自blog.csdn.net/Jaihk662/article/details/110245043