目录
前言
大气散射是对现实世界大气现象的描述,其影响包括不限于白天和傍晚天际线的大气颜色不同
丁达尔现象的产生,人眼对于地球大气层的视觉感受。而对于追求“真实”的CG领域来说
大气散射则显得尤为重要,决定了大气层的真实与否
P1
大气散射根据大气散射现象可以分为大致三类:
- 瑞利散射
- 米氏散射
- 拉曼散射
由于米氏散射的实际公式极为晦涩难懂,更不用说让计算机来进行计算模拟。所以在实时渲染领域,对于米氏散射部分的计算都是用的近似公式,最常用的公式就有
HG(Henyey-Greenstein)函数:
大气散射实现主要分为预计算和非预计算
散射的分类
散射分为内散射和外散射
大气散射过程
假设:地球是完全的球形
在物理世界当中,我们会发现太阳的传输大致有两个阶段,一个是宇宙阶段,一个是大气阶段宇宙阶段我们假设是真空条件,并不会减少光的传输量
c到p的过程中是会发生光照衰减的,会减少光照量。定义一个透射率函数:
瑞丽函数
瑞利散射函数是一个经验公式。其中的各个项为:
- λ是光的波长,n是空气折射率,N是海平面处的大气密度
- ρ(h)是高度h处的相对大气密度
- 即相对于海平面的密度,可以理解成h处真正的大气密度与海平面处大气密度的比值
P2
实现方式:
雾效的核心是使用一个新的颜色(雾色)替换(一部分)物体本身计算的颜色。其中主要的复杂计算在于正确的雾效浓度,其次是在有光源的散射产生的颜色混合。
- 在前向渲染中,大多使用顶点雾,即在每个场景物体进行着色的最后一步进行雾效计算,直接将混合结果输出到物体上。
- 而后期雾主要指通过读取buffer中的信息例如深度信息而计算雾的方式,通常用于延迟渲染等渲染管线
雾效实现-后期雾
RendererFeature自定义Pass混合相机纹理