Shading 着色
👆 把前面的步骤串起来,是这样子的过程
经过前面这些步骤后,能这得到这样的结果:
👆 (左)不考虑着色的效果;(右)期望达到的效果。
纯色立方体的每个面每个时刻呈现的颜色有变化。使整体效果更真实。
📌 为什么纯色物体的不同时刻和不同位置,其颜色看不去会不同?
答:颜色是差别是物体的材质与光源作用的结果。同一时刻,不同位置上的像素点,与光源的关系不同,呈现的颜色就会不同。不同时刻,光源发生了变化,同一像素点与光源的关系也变了,导致呈现出的颜色的变化。
根据物体的材质,以及物体与光源的关系,对物体的颜色加以调整,这个过程就是着色。
即:The process of applying a material to an object.
本课程中不包含给object添加投影的过程。
渲染方程
这是著名的Render Equation ,《GAMES 101》中花了大量的篇幅来解释这个公式。我们今天几乎做的所有Rendering 相关的工作都是去满足这个Render Equation 。但是至今为止,没有任何一款游戏引擎能够做到实时的完全按照Render Equation来进行渲染,我们能做到的只是在无限的逼近它。
在具体实践中,这个方程会变得非常复杂:
- 物体会被来自四面八方的光照射
- 物体也会向四面八方的光照射
- MultiBounce:光路上可能会有很多次反射和折射
- 不同材质的物体,会有不同的反射和折射效果
- 次表现反射:透明物体,光射入物体后会在物体内部反射,并另在一个位置射出
- 高光
- color bleeding
- ....
最重要的是,这些都必须在有限的资源、有限的时间、有限的算力下完成。
挑战
- 1a: Visibility to Light。 人眼通常要靠明暗关系、摭挡关系来判断层次结构。但是Shadow很难做。
- 1b: 光源很复杂。
有平行光(无穷远,例如太阳)、点光源、锥形光源(例如路灯)、面光源
光有不同的强度、方向
关于radiance和irradiance看这里
- 2:材质BRDF和光的积分
- 3:物体受到照射后会反射出光,所以场景中会有无穷多个“光源”,使方程变成了无限递归的总是
本文出自CaterpillarStudyGroup,转载请注明出处。
https://caterpillarstudygroup.github.io/GAMES101_mdbook/