在水汽充足、微风及大气稳定的情况下,相对湿度达到100%时,空气中的水汽便会凝结成细微的水滴悬浮于空中,使地面水平的能见度下降,这种天气现象称为雾(Fog)。
雾的渲染增加了真实性。在普通的场景中,无论物体有多远,它都会以清晰的形式渲染出来。但是在现实场景中,越远的物体越模糊,而且在雾霾天气下十分明显。因此,雾的效果变得额外重要。
这篇文章主要实现的是最基础的雾效。
理论部分
光
当空气中的粒子到达一定数量后,雾会变得额外明显。这是因为光线A在射到人眼的途中被粒子所吸收并散射出去了。其他方向上的光也有一定几率聚合并重新定向到光线A上。
当光被水蒸气散射的时候,光的颜色会趋于灰白色。当被其他污染物散射后,光的颜色可能会变成黑色或者其他颜色。
雾的属性
- 雾的颜色(fog color):到达人眼的散射光的聚合的颜色。
- 雾的密度(fog density):雾的密度越大,雾看上去越浓。
- 雾的距离(fog distance):雾的距离越大,物体看上去越模糊。
在我们基础雾运算的时候,我们假设雾的颜色、雾的密度不变。
雾的数学运算
C l e a v e = C e n t e r − C r e d u c t i o n + C i n c r e a s e C_{leave}=C_{enter}-C_{reduction}+C_{increase} Cleave=Center−Creduction+Cincrease
C l e a v e C_{leave} Cleave是沿着一条光线离开一个单位线段的光的颜色亮度。
C e n t e r C_{enter} Center是沿着一条光线进入一个单位线段的光的颜色亮度。
C r e d u c t i o n C_{reduction} Creduction是沿着单位线段所有被吸收或散射的颜色亮度。
C i n c r e a s e C_{increase} Cincrease是沿着光线方向单位线段上被雾重新定向的额外的光的颜色亮度。
其中:
0 ≤ C r e d u c t i o n ≤ C e n t e r 0\le C_{reduction}\le C_{enter}