光照与材质
光照现象¶
私以为,光照现象可分为:散射(scattering)、吸收(absorption)和衍射(diffraction)。其他光与物质的相互作用都可拆解成这三种。
而衍射在图形学中接触甚少,因此可认为,光与物质相互作用都是吸收与散射两种现象所作用的结果。
吸收¶
吸收发生在物体的内部,吸收会导致一些光转变为另一种形式的能量并消失。因此,吸收会减少光的能量,但不会影响光的方向。
散射¶
当光线遇到 光学不连续性(optical discontinuity) 时,就会发生散射。
光学不连续性可能存在于
- 具有不同光学性质的两种物质分界处
- 晶体结构破裂处
- 密度变化处
- 等等
散射并不会改变光的能量,它只会改变光的方向
光的散射一般又分为反射(reflection)和折射(refraction)
- 折射与反射都发生在两种介质的交界处,只是反射光返回原介质当中,而折射光线则进入另一种介质当中
反射¶
光在传播到不同物质时,在分界面上改变传播方向,由返回到原来物质中的现象,叫光的反射(reflection)
反射定律¶
- 三线共面:反射光线与入射光线、法线,在同一平面上
- 两线分居:反射光线和入射光线分居在法线两侧
- 两角相等:反射角等于入射角
- 光具有可逆性:光的反射现象中,光路是可逆的
反射分类¶
反射又分为三种,图形学中主要考虑镜面反射与漫反射。
分类 | 说明 | 对比 |
---|---|---|
镜面反射 又称,正反射 |
呈镜面状反射的波,入射、反射光线与表面呈一样的角度 | 在表面反射的光 |
漫反射 又称,朗伯反射 |
平行光线射到凹凸不平的表面上,被反射到各个方向上 | 光经历透射、吸收和散射出去的光线 |
方向反射 又称,非朗伯反射 |
介于镜面反射与漫反射之间,其表现为各项都有反射,且强度不均匀,没有规律可寻 |
光的折射¶
光从一种介质斜射入另一种介质时,传播方向发生改变
附:衍射¶
衍射 (Diffraction),又称绕射,是指波遇到障碍物时偏离原来直线传播的物理现象。
其他光照现象¶
光照还有其他现象,但都可以解释成上述现象。
光的透射¶
当光线照射物体表面时,会发生散射和吸收的现象
- 【吸收】一部分光被物体表面吸收
- 【散射】一部分光线反射出去(包括漫反射与镜面反射);另一部分光线折射进物体当中
折射进物体内部的光线,在物体内部弹来弹去
- 在弹来弹去的过程中,有部分被物体吸收
- 有一部分光在内部弹来弹去,又触碰到光学边界,又发生了散射
入射光经过折射穿过物体后,再次折射出物体的现象,就是光的透射。
被透射的物体为透明体或半透明体,如玻璃、滤色片等等。
光源类型¶
光源有三种不同的类型:平行光源、点光源和聚光灯。
材质¶
在渲染中,通过材质来描述模型的外观。每个材质都和一系列Shader代码、纹理和其他属性联系在一起,用来模拟光与材质的相互作用。
着色¶
着色,计算某像素颜色的过程。计算需考虑光照、物体的材质等因素。
常见的着色处理方法 | 简介 | 说明 |
---|---|---|
平滑着色(Flat shading) | 一个三角面一个颜色 | 若三角面的代表顶点是白色,则整个面都是白色 |
高洛德着色(Gouraud shading) | 根据三个顶点颜色,线性插值出三角面每个像素的颜色 | 高洛德着色可以为无光泽表面产生合理的结果,但对于强高光反射的表面,可能会失真(artifacts) |
冯氏着色(Phong shading) | 用着色方程单独求解每个像素的颜色 | Phong Shading是考虑如何由三个顶点生成面的颜色。而Phong Lighting Model是考虑物体被光照产生的效果 |
冯氏着色可以说是三者中最接近真实的着色效果,当然开销也是最大的
- 因为高洛德着色是每个顶点(vertex)计算一次光照
- 冯氏着色是每个片元(fragment)或者说每像素计算一次光照,点的法向量是通过顶点的法向量插值得到的
- 所以说不会出现高洛德着色也许会遇到的失真问题。
问题:是否可以说Phong、Blin-Phong、PBR光照模型的着色处理方法都是Phong Shading
参考资料¶
- 光的反射&折射&透射&衍射 - 简书 (jianshu.com)
- 《Real-Time Rendering 3rd》 提炼总结