

媒介的反射率 ρ 定义为:
ρ=σs+σaσs=σtσs
在参与介质的影响下,光在传播过程中的辐射度不再保持不变,某点的入射辐射度可以根据以下等式描述为(假设光源是无穷小的点光源):
Li(c,−v)=Tr(c,p)Lo(p,v)+∫t=0∥p−c∥Tr(c,c−vt)Lscat(c−vt,v)σsdt

透射率 Tr 表示有多少比例的光能够穿过一定距离的参与介质,根据 Beer-Lambert 定律可以表示为
Tr(xa,xb)=e−τ,whereτ=∫x=xaxbσt(x)∥dx∥

Lscat(x,v)=πi=1∑np(v,lci)v(x,plighti)clighti(∥x−plighti∥)
其中
p 表示相位函数
v 表示可见性函数
lci 表示到第 i 个点光源的方向
plighti 表示第 i 个点光源的位置
clighti 表示第 i 个点光源的辐射度
可见性函数 v(x,plighti) 表示有多少光可以从点光源 plighti 到达点 x 处,可以表示为
v(x,plighti)=shadowMap(x,plighti)⋅volShad(x,plighti)
其中
shadowMap 表示来自不透明对象的遮挡,volShad 表示在 volume 中的透射率
提示
考虑 σs=(0.5,1,2) 和 σa=(0,0,0),当在介质中传播距离较短时,透射率 Tr≈1,此时散射事件将占据主导,材质将显示为蓝色;而当光越深入介质越少的光子可以通过,此时透射颜色将占据主导,材质将显示为红色。
如图所示,相位函数在宏观层面上描述了散射方向的概率和分布,根据能量守恒原则,相位函数在单位球面上的积分必须等于 1;下面是最简单的相位函数,该函数是各向同性的,其在所有方向上均匀散射
p(θ)=4π1
基于物理的相位函数依赖于粒子的相对大小 sp
sp=λ2πr
其中 r 表示粒子半径,λ 表示所考虑的光的波长
提示
当 sp≪1 时,会发生 Rayleigh 散射(例如空气)
Rayleigh 散射的相位函数在极坐标下的图示如下,相对于光的方向有前向散射和后向散射两个部分

具体可以表示为
p(θ)=16π3(1+cos2θ)
Rayleigh 散射具有强烈的波长依赖性,当作为波长 λ 的函数来看时,其散射系数 σs 与波长的四次方倒数成正比
σs(λ)∝λ41
这意味着短波长的蓝光或紫光比长波长的红光散射得更多,其光谱分布可以通过光谱的颜色匹配函数转换为 RGB 值 σs=(0.490,1.017,2.339),该值被归一化为 1 的亮度,应该根据所需要的散射强度进行缩放。
提示
当 sp≈1 时,会发生 Mie 散射
Mie 散射的相位函数通常是一种复杂的分布,对于特定的粒子大小来说,具有强烈而尖锐的方向性;而介质中的粒子尺寸一般具有连续的分布,对这些不同尺寸下的相位函数进行平均可以得到一个更平滑的相位函数,因此相对平滑的相位函数可以被用来表示 Mie 散射。
一种常用的相位函数是 Henyey-Greenstein (HG),该函数可以很好地匹配朝向主要散射方向的部分,可以被用于表示烟、雾、尘埃等介质。这种介质可以表现出强烈的后向或前向散射,从而在光源周围产生较大的视觉光晕,例如雾气中的聚光灯以及太阳方向云层边缘强烈的银边效应。
HG 相位函数表示为
phg(θ,g)=4π(1+g2−2gcosθ)1.51−g2,g∈[−1,1]
g < 0 表示后向散射,g = 0 表示各向同性,g > 0 表示前向散射

Schlick 相位函数是比 HG 更快的一个近似函数,表示为
p(θ,k)=4π(1+kcosθ)21−k2,k≈1.55g−0.55g3
提示
当 sp≫1 时,会发生几何散射
几何散射发生在粒子尺寸明显大于光的波长的情况下,此时,光可以在每个粒子内部发生折射和反射,在宏观层面上需要一个复杂的散射相位函数来模拟;光的偏振也会影响这种类型的散射,例如现实生活中的视觉彩虹效应,这种效应是由空气中水滴内部对光的反射引起的,它将太阳光分散成可见光谱,并在小角度的后向散射范围内形成可见的彩虹。
参考
Display of The Earth Taking into Account Atmospheric Scattering
GPU Gems2 : Accurate Atmospheric Scattering
首先考虑单次散射的情况,假设 I0(λ) 表示入射光的强度,I(λ,θ) 表示经过粒子散射之后,在偏移 θ 角度的方向的出射光的强度,有:
I(λ,θ)K=I0(λ)KρFr(θ)/λ4=3Ns2π2(n2−1)2
相关信息
K 表示标准大气压下的常量(表示在海平面的分子密度),n 表示空气的折射率,Ns 表示标准大气压下的分子数量密度,ρ 表示密度比并且依赖于海拔高度 h(ρ=1 表示在海平面)
ρ=e−H0h
其中 H0 表示大气层的厚度(分子密度不变的情况下), 气溶胶和空气分子的密度都是随着海拔高度而指数减少,但是减少的速度不同。气溶胶的大气层厚度 H0 可以设置成 1.2km,空气分子的大气层厚度 H0 可以设置成 7994m
Fr(θ) 表示相位函数,下面是一种改进后的 HG 函数
F(θ,g)=2(2+g2)3(1−g2)(1+g2−2gcosθ)3/2(1+cos2θ)
当 g=0 时等价于 Rayleigh 散射
衰减系数 β(即单位长度下的消光比)由以下公式给出:
β=3Nsλ48π3(n2−1)2=λ44πK
为了计算波长为 λ 的光在传输 S 距离的过程中由于散射和吸收所导致的衰减,可以使用光学深度来进行,可以由以下公式表示:
t(S,λ)=∫0Sβ(s)ρ(s)ds=λ44πK∫0Sρ(s)ds
假设地面某一处观察点 Pv,观察方向是 v,该视线与大气层的交点分别是 Pa 和 Pb,考虑 Pa 和 Pb 之间任意一点 P,太阳光经过大气层衰减后到达 P 点时的强度等于
Is(λ)e−t(PPc,λ)
经过单次散射后在 v 方向的出射光强度等于
Ip(λ)=Is(λ)e−t(PPc,λ)KρFr(θ)λ41
再经过大气层衰减到达观察点 Pv 时的光强度等于
Ipv(λ)=Ip(λ)e−t(PPv,λ)
太阳光可以视为是平行光,对 Pa 和 Pb 之间进行积分可以得到总的光强度
Iv(λ)=∫PaPbIpv(λ)ds=∫PaPbIs(λ)e−t(PPc,λ)KρFr(θ)λ41e−t(PPv,λ)ds=Is(λ)λ4KFr(θ)∫PaPbρe−t(PPc,λ)−t(PPv,λ)ds