vsm相对于最原始的sm多了这样一个部分
if(depthcampare <=zInSM)
fPercentLit = 1;//noshadow;
else
{
variance = zzInSM -zInSM *zInSM;
fPercentLit = pow(variance/(variance+(depthcompare-zInSM)^2),4.0f);//这是要讨论的部分
}
这部分是给sm的边缘做模糊的,这样就不用像pcf那样采样那么多次了。
有了这个并不用对全屏shadowmap那个rt进行blur效果就可以接受,因我们最后有些后处理的全屏blur。
--
我认为,vsm有两次blurs
第一次在出了sm之后,对画了这shadowmap的rendertarget进行gussian blur
第二次在采样sm确定是否形成阴影的部分,就是上文讨论的那个v/(v+d*d),对shadow边缘进行blur
-----------------------
上面的理解 ,是错的