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
-----------------------
上面的理解 ,是錯的