跳转至

光照与材质

光照现象

私以为,光照现象可分为:散射(scattering)、吸收(absorption)和衍射(diffraction)。其他光与物质的相互作用都可拆解成这三种。

而衍射在图形学中接触甚少,因此可认为,光与物质相互作用都是吸收与散射两种现象所作用的结果。

吸收

吸收发生在物体的内部,吸收会导致一些光转变为另一种形式的能量并消失。因此,吸收会减少光的能量,但不会影响光的方向。

散射

当光线遇到 光学不连续性(optical discontinuity) 时,就会发生散射。

光学不连续性可能存在于

  1. 具有不同光学性质的两种物质分界处
  2. 晶体结构破裂处
  3. 密度变化处
  4. 等等

散射并不会改变光的能量,它只会改变光的方向

光的散射一般又分为反射(reflection)和折射(refraction)

  • 折射与反射都发生在两种介质的交界处,只是反射光返回原介质当中,而折射光线则进入另一种介质当中

反射

光在传播到不同物质时,在分界面上改变传播方向,由返回到原来物质中的现象,叫光的反射(reflection)

反射定律
  1. 三线共面:反射光线与入射光线、法线,在同一平面上
  2. 两线分居:反射光线和入射光线分居在法线两侧
  3. 两角相等:反射角等于入射角
  4. 光具有可逆性:光的反射现象中,光路是可逆的
反射分类

反射又分为三种,图形学中主要考虑镜面反射与漫反射。

分类 说明 对比
镜面反射
又称,正反射
呈镜面状反射的波,入射、反射光线与表面呈一样的角度 在表面反射的光
漫反射
又称,朗伯反射
平行光线射到凹凸不平的表面上,被反射到各个方向上 光经历透射、吸收和散射出去的光线
方向反射
又称,非朗伯反射
介于镜面反射与漫反射之间,其表现为各项都有反射,且强度不均匀,没有规律可寻

光的折射

光从一种介质斜射入另一种介质时,传播方向发生改变

附:衍射

衍射 (Diffraction),又称绕射,是指波遇到障碍物时偏离原来直线传播的物理现象。

其他光照现象

光照还有其他现象,但都可以解释成上述现象。

光的透射

当光线照射物体表面时,会发生散射和吸收的现象

  1. 【吸收】一部分光被物体表面吸收
  2. 【散射】一部分光线反射出去(包括漫反射与镜面反射);另一部分光线折射进物体当中

折射进物体内部的光线,在物体内部弹来弹去

  1. 在弹来弹去的过程中,有部分被物体吸收
  2. 有一部分光在内部弹来弹去,又触碰到光学边界,又发生了散射

入射光经过折射穿过物体后,再次折射出物体的现象,就是光的透射。

被透射的物体为透明体或半透明体,如玻璃、滤色片等等。

光源类型

光源有三种不同的类型:平行光源、点光源和聚光灯。

材质

在渲染中,通过材质来描述模型的外观。每个材质都和一系列Shader代码、纹理和其他属性联系在一起,用来模拟光与材质的相互作用。

着色

着色,计算某像素颜色的过程。计算需考虑光照、物体的材质等因素。

常见的着色处理方法 简介 说明
平滑着色(Flat shading) 一个三角面一个颜色 若三角面的代表顶点是白色,则整个面都是白色
高洛德着色(Gouraud shading) 根据三个顶点颜色,线性插值出三角面每个像素的颜色 高洛德着色可以为无光泽表面产生合理的结果,但对于强高光反射的表面,可能会失真(artifacts)
冯氏着色(Phong shading) 用着色方程单独求解每个像素的颜色 Phong Shading是考虑如何由三个顶点生成面的颜色。而Phong Lighting Model是考虑物体被光照产生的效果

冯氏着色可以说是三者中最接近真实的着色效果,当然开销也是最大的

  • 因为高洛德着色是每个顶点(vertex)计算一次光照
  • 冯氏着色是每个片元(fragment)或者说每像素计算一次光照,点的法向量是通过顶点的法向量插值得到的
  • 所以说不会出现高洛德着色也许会遇到的失真问题。

问题:是否可以说Phong、Blin-Phong、PBR光照模型的着色处理方法都是Phong Shading

参考资料

  1. 光的反射&折射&透射&衍射 - 简书 (jianshu.com)
  2. 《Real-Time Rendering 3rd》 提炼总结