Stochastic Light Culling 論文解析

隨機光源裁剪

隨機光源採樣這篇文章是在虛擬點光源的基礎上對光源進行裁剪,思路和實現都非常簡單,但是效果卻很好。在這裏插入圖片描述
大家可以看到上面這張圖,這張圖上部分在沒有直接光照射的地方明顯非常暗,而下半部分沒有光直接照射的地方會有一個漸變的效果,這樣看起來就非常逼真,因爲光的衰減不可能是突變的。
在這裏插入圖片描述
計算所有虛擬點光源對着色點X的光照強度的公式如上,其中Ii是虛擬點光源i在-wi方向上的光照強度,f(||xi-x||)虛擬點光源xi到着色點x的衰減函數,V爲可見性函數,p(x,w,wi)爲BRDF函數。一般而言,我們的衰減函數爲與距離平方成反比。
在這裏插入圖片描述
這樣能實現上面的漸變效果,不過有個問題是這個平方衰減是永遠不會等於0的,所以對於着色點和虛擬點光源距離非常遠,這是這個虛擬點光源對着色點的貢獻已經非常小了,但是我們還是的進行計算。這樣就會導致效率非常低。有人可能會想,我們可以加一個判斷,如果距離太大了,就直接不計算了。問題是這個距離是我們無法預設的,如果某個虛擬點光源強度很強,但是我們突然把光截斷了,就會有個很明顯的圓環,效果就會很差。
在這裏插入圖片描述
因此,本文給出了一個思路,即每個光源設定一個隨機數,然後對光源進行一個隨機裁剪即可。思路很簡單,不過如果真的是每個光源被裁剪的概率相等的話,那麼還是會有可能對光照貢獻大的光源被裁剪了。因此作者給出了一個裁剪的公式如下。
在這裏插入圖片描述在這裏插入圖片描述
ai爲虛擬點光源i的參數,l爲半徑,ξi爲第i個虛擬點光源的隨機數。這個公式就是如果pi(l)比這個隨機數大的話就爲max(ai,f(l)),如果小的話就截斷爲0即可。同時每個光源的半徑爲
在這裏插入圖片描述
而根據作者誤差分析計算出ai的取值應該爲:
在這裏插入圖片描述
emax我們可以取一個比較小的數即可,我一般用的是0.0005f,E爲相機的曝光度。
以上就是隨機裁剪的所有公式,我們只需要代入代碼中就可以實現本文的效果,大家還是可以看到,雖然隨機裁剪的思路是非常簡單的,不過真的要在數學上證明,還是要做大量研究。
在這裏插入圖片描述
代碼鏈接 https://github.com/AngelMonica126/GraphicAlgorithm/tree/master/TestCase_003_A

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章