探究軟陰影實現方式1

目前主流的軟陰影的實現方式主要有以下幾種,我們來分別的探究一下他們的實現方式並且對他們進行簡單的分析。

  • 通過過濾陰影貼圖(PCF、PCSS)
  • 預處理陰影貼圖(VSM、ESM)
  • 屏幕空間模糊(SSSS)

1.PCF(Percentage-Closer Filtering)

百分比漸近過濾(PCF)是一個簡單,常見的進行陰影邊緣反走的技術。它通過在片段周圍進行採樣,然後計算樣本比片段的更接近光源的比例,使用這個比例對散射光和鏡面光成分進行縮放,然後對片段進行着色。使用這一技術後,陰影邊緣看上去進行了模糊一樣。

但對於較大物體的內部的採樣是一個較大的浪費,我們並無法只針對物體邊界進行採樣,所以在性能是具有很大的瓶頸。

2.PCSS(percentage-closer Soft Shadow)

pcss是距離相關的。2005年,Fernando發佈了一種名爲百分比接近軟陰影(PCSS)的有影響力的方法。 它通過搜索陰影貼圖上的附近區域來嘗試找到所有可能的遮擋物。這些遮擋物與該位置的平均距離用於確定樣本區域寬度。隨着平均遮擋物越來越遠離接收物並且更靠近光線,樣本的表面區域的寬度增大。

如果找不到遮擋物,則該位置完全點亮,無需進一步處理。類似地,如果位置完全被遮擋,則處理可以結束。否則,繼續對感興趣的區域進行採樣並計算光的近似貢獻。爲了節省處理成本,樣本區域的寬度可用於改變採樣的數量。 可以實現其他技術,例如,使用較低的採樣率來獲得不太重要的遠距離軟陰影。

PCSS的算法分成三個步驟:

  • 首先,把目標點變換到Light space
  • 然後找到周圍點中的遮擋該目標點的點,記錄其與光源的距離。
  • 在搜索了一定的遮擋點之後,我們會根據這些遮擋點計算出一個平均遮擋距離。如果目標點不在陰影中,平均遮擋距離爲0,PCSS算法直接返回1.0。

3.VSM(variance shadow map)

允許過濾生成的陰影貼圖的一種算法是Donnelly和Lauritzen的方差陰影圖.該算法將深度存儲在一個貼圖中,並將深度的平方存儲在另一個貼圖中。 生成映射時可以使用MSAA或其他抗鋸齒方案。 這些貼圖可以模糊,mipmap,放在SAT或使用任何其他方法。可以將這些貼圖視爲可過濾紋理是一個巨大的優勢,因爲從它們檢索數據時可以使用所有采樣和過濾技術。

VSM:分兩遍pass渲染。唯一不同的是,在第一遍pass中,存儲在Shadow Map中的是一個深度值(z-depth),而在Variance Shadow Map中,存儲的是兩個分量(two components): 深度值與深度值的平方。這可以藉助佔用像素的兩個通道來辦到(比如R通道放深度值,G通道放深度值的平方)。接下來,就觸及到該算法的核心:完成第一遍pass後,對VSM進行每單位區域(比如,仍然是2*2爲一個range)的硬件線性濾波。濾波後每像素存儲的兩個分量,其意義就發生了微妙的變化:第一個分量表示該range內所有像素深度值的均值,也可以看作對應的期望,即上面的M1;而第二個分量表示該range內所有像素值的平方的期望,即上面的M2。依據M1和M2我們就可以求出該range的μ和σ。按照切比雪夫不等式,我們就可以估計出這片range內其深度值大於某一值t的概率上限。

第一遍pass中,我們逐一計算M1和M2並存儲到VSM中,然後對這張VSM進行範圍爲range的硬件線性濾波;第二遍pass中,我們依然用視點角度渲染場景,對光柵化的每一像素,計算它在燈光座標系中的深度值,並把這個值設爲t;調取VSM中對應位置的像素,利用M1和M2計算出μ和σ,先判斷t與μ的大小關係:如果t<=μ,則表示當前像素的深度小於等於range的深度均值,則判斷它沒有被遮擋;否則,判斷它被遮擋,這時利用切比雪夫不等式計算出pmax(t),該值表示range內深度值大於等於t的像素個數的概率上限,這個概率可以看作比率。該比率表示光照射到當前像素的光線數量(比t小的像素表示它遮擋住了當前像素,也就是說光線沒有射到該像素上;相反,則就表示射到了t上),因此,這個比率就相當於光照強度,這是一個介於0到1之間的過渡數值。用它乘以黑色,就是最後實際的陰影值。注意,我們的算法是用上限值pmax(t)近似模擬了實際比率p(t),但其實pmax(t) > p(t),只不過二者相差不大。但這個誤差依然會導致一些問題,會放到下面討論。

4.ESM(exponential shadow map)

https://blog.csdn.net/codeboycjy/article/details/6302805

發佈了44 篇原創文章 · 獲贊 10 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章