阴影算法小结
PCF (Percentage Closer Filtering)

算法步骤
a. 对每个Fragment, 执行多个(例如7x7)深度比较
b. 对比较的结果求平均
计算公式
卷积公式 (Filter/Convolution)
PCF解决什么问题
a. 本影和半影区非柔和的效果
b. 若直接对Shadow Map图做PCF, 最终仍是非0即1, 是一种对Shadow比较的结果做滤波
PCSS (Percentage-Closer Soft Shadows)3

PCSS解决什么问题
a. 阴影是否柔和
b. 阴影效果什么时候用小Kernel滤波, 什么时候用大Kernel滤波 (实际是否拉近硬, 拉远软而柔和, 近实远虚, 近远是Shading Point相对Blocker而言)
算法步骤
a. Blocker Search, 获取特定区域平均的Blocker深度
b. 半影区估计, 基于Blocker深度决定滤波Kernel大小
c. 执行PCF
其中,
初始特定区域的选择, (锥体)
a. 依赖Light大小, 比如点光大小
b. Receiver至灯光的距离
计算公式
应用的PCF公式
其中,
PCF并不是直接对ShadowMap卷积, 而后比较的

VSSM (Variance Soft Shadow Mapping)4
VSSM解决什么问题
a. 加快Blocker Search (PCSS第一步)
b. 加快Filter (PCSS第三步)
通过期望和方差, 构造一近正态分布函数, 来近似各Fragment的可见性概率
期望的获取
a. Hardware MIPMAPing
b. Summed Area Tables (SAT)
方差的获取
a.
估算可见性的概率, 实际可转换为求
切比雪夫不等式来估计概率
其中,

即可了解
a. Blocker概率
b. 非Blocker概率
平均可见性
其中,
Summed Area Tables (SAT)
范围查询算法
a. 前缀和
b. 树状数据
c. 线段树
Moment Shadow Mapping
定义一系列变量,
VSSM仅使用了前两阶,
![]() | ![]() |
---|
DFSS (Distance Field Soft Shadows)5
距离函数
给定任意一点, 可给出该点到达一个对象表面的最近距离
距离函数相关应用
![]() | ![]() |
---|---|
1.执行Ray-SDF相交 | 2.计算遮蔽概率 (越低的可见性 <=> 越小的”safe”角度) |
距离场软阴影
![]() | ![]() | ![]() |
---|---|---|
k=8 | k=32 | k=128 |
引入系数k, 用于控制过渡带的宽度. k越大, 过渡带越窄; 反之, 过渡带越宽.
距离函数的存储有空间开销, 此外若是动态物体, 需动态更新SDF.
参考
1.Soft Shadows in Raymarched SDFs
2.有向距离场软阴影