1.Shadow Mapping
Shadow mapping是一种two pass的阴影算法,首先从光源的视角渲染出一张深度图depthMap;然后再从camera的角度渲染整个场景,把每一个pixel都投影到depthMap中,然后和depthMap texel中的深度去比较,判断当前pixel是否在阴影中。Shadow mapping的算法是逐像素级的,因此会在边缘留下锯齿的走样痕迹;Shadow mapping算法产生的是一种硬阴影,没有半阴,阴影到非阴影的过渡不真实。Donnelly和Lauritzen就提出了一种阴影软化的方法。
2. Variance Shadow Maps
Variance Shadow Maps算法和标准的Shadow Mapping算法很接近,Variance Shadow Maps算法把depth和depth²存储在depthMap中,然后在特定的区域滤波,获得了深度分布在区域的一阶和二阶矩:
M1=E(x)=∫∞−∞xp(x)dxM2=E(x2)=∫∞−∞x2p(x