渲染软阴影的几种方法

渲染软阴影的几种方法

(WIP)

软阴影硬阴影最大的区别是硬阴影是由点光源(注: 实际上应该是Punctual Light,原谅我不知道咋翻译,点光源是Point Light)照射到遮挡物产生的阴影,该类阴影的最大特征是光源只是一点,也即计算光照时考虑通常不考虑面积。软阴影是是由有形状的(计算光照时考虑面积)灯照射到遮挡物产生的阴影。

上篇文章提到,软阴影会有模糊的边缘,而硬阴影没有。

为了模拟这种软阴影的边缘模糊效果,有如下几种渲染软阴影的方法:

方法一

使用多个Punctual Light去覆盖Light area来模拟软阴影的效果。最后再取平均值,计算penumbra(半影)部分。

方法一的优点在于计算得到的阴影效果非常精确,缺点在于在性能上对计算硬件是一大挑战。

方法二

此方法类似于MSAA的思想,在光源区域内多重采样(一般来说需要取16次),投射得到16张不同的阴影贴图,在做混合。虽然该方法性能上比起方法一来说要省一些,但开销仍旧不少。

阴影效果方面,由于采样次数足够(16次),因此该方法产生的阴影效果非常逼近与真实的物理阴影效果。

(未完待续)