Real time shadows 2

Deeper Look at PCF

image-20230321183055576

x+ (kai)符号函数,x > 0 ? 1 : 0;

上面写错了,是 In PCF

PCF 是在 ShadowMap 上的对像素点计算后的值的卷积,卷积符号如上

而不是直接对 ShadowMap 卷积完再计算

image-20230321183949266

Revisiting PCSS

image-20230321184154479

PCSS 是一个 filter 区域根据平均遮挡物距离变化的 PCF

第一步第三步比较缓慢,可以进行稀疏采样进行优化,稀疏采样会导致噪声,要在图像空间降噪

Variance Soft Shadow Mapping 方差软阴影

针对 PCSS 速度慢提出的优化方案,Flicker 噪声导致的帧连续播放时的画面抖动

Percentage Closer,如果不加权,一个区域内有多少百分比的像素点比着色点要近

用正态分布 Normal distribution 假设像素点距离分布,需要遮挡物的平均深度期望(mean)和遮挡物方差(variance)

Mean

  • mipmap

  • Summed Area tables (SAT)

Variance

  • Var(X) = E(X^2) - E^2(X)

  • 为了算方差,需要额外记录深度平方

image-20230321185958631
  • PDF : 概率分布函数,Gaussian 是一种 PDF

  • CDF : 概率积分函数,误差函数

但是求 CDF 不好计算,没有解析解只有数值解

切比雪夫不等式

image-20220309190247856

通过 mean 和 variance 快速得到当前点对于所有遮挡物的百分比排名

当遮挡物分布与高斯分布不符合, 容易出现 Light Leaking

t 在均值的右边才比较准,所以是遮挡物的平均深度而不是区域内像素点的平均深度

最终结果非常快,O(1) 时间

image-20230321191503553

Anything else 是求平均,

求平均

image-20230321194347709

需要求 Zocc,遮挡物的平均深度,即期望 E

假设非遮挡物的平均深度等于当前着色点深度

Zavg 通过范围查询平均值取得

范围查询平均值 Range Query

Mipmap 预处理图片平均,但是 Mipmap 通过双线性,三线性插值,可能会不准

image-20220309190414008

SAT for Range Query

前缀和 Sum Area Table

提前保存累加信息到纹理上来支持大范围查找

image-20220309190742728

不足

阴影比较光滑,单一的时候没法看作是正态分布

image-20230321200832320

Moment shadow mapping

使用高阶的矩取描述分布, 使用多项式来近似 CDF

image-20230321202209666

最后更新于

这有帮助吗?