GPU Gems1 - 14 透视阴影贴图(Perspective Shadow Maps: Care and Feeding)
開篇先說,這文章好難懂啊,到現在也沒完全弄明白,有大佬的話歡迎指點。這篇大體意思是對Perspective Shadow Maps進行部分優化。GEMS這書這點是真挺蛋疼,很多文章都是對某項技術的優化,那先介紹介紹原來技術嘛,我都不知道原來技術為啥有毛病(當然是咱自己菜雞)上來就給我整優化,完全看不懂。先貼上Perspective Shadow Maps技術的最原始論文鏈接
?http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.449.9505&rep=rep1&type=pdf
一個關于shadow map技術非常好的鏈接,之后有時間得詳細寫一篇關于這個文章的積累
http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping
本文開篇上來又來介紹陰影渲染的兩大流派。
- 陰影體(shadow volumes)/模板陰影(stencil shadows)
- 陰影貼圖(Shadow Maps)
之前文章已經介紹過這倆技術流派了,這里就略過了。透視陰影貼圖(Perspective Shadow Maps, PSMs)是由Stamminger和Drettakis 在SIGGRAPH 2002上提出的一種陰影貼圖(Shadow Maps)流派的方法,通過使用在投射后空間(post-projective space)中的陰影貼圖來去除其中的走樣。
The most significant problems of the presented PSM algorithm are these three(PSM算法三個問題):
- To hold all potential shadow casters inside the virtual camera frustum, "virtual cameras" are used when the light source is behind the camera. This results in poor shadow quality.(虛擬相機技術帶來陰影質量降低)
- The shadow quality depends heavily on the light position in camera space.(陰影質量很依賴于光源對相機的位置)
- Biasing problems weren't discussed in the original paper. Bias is a problem with PSMs because the texel area is distributed in a nonuniform way, which means that bias cannot be a constant anymore and should depend on the texel position.(bias問題)
虛擬相機
如以下兩個圖所示,這玩意粗俗來講,意思就是樹木1不在攝像機范圍內,但是光照到這個樹木1投射出來的陰影投到地面后確在攝像機范圍內,這可咋整呢,那就像圖2似的,把攝像機虛擬的往后挪點,把樹木1囊括在攝像機范圍內來解決這個問題。虛擬攝像機這種技術帶來的問題就是陰影質量會降低,因為本來貼近攝像機的物體,比如樹木2,會因為相機向后挪動后在視野中變小,自然會影響其陰影質量。
解決虛擬攝像機的問題可以采用以下辦法:對光源矩陣使用特別的投射變換。如下圖所示,它由一個原始的(非后移過的虛擬相機)攝像機,一個“”逆向“”光源和攝像機后面的物體組成。
?我個人非常粗俗的理解是,該方法構造了一個很特別的矩陣,使得光源經過點1向負無窮發射,之后又轉回來經過234點直至正無窮大。(這塊理解不太好,望大佬指導)
?對虛擬攝像機技術還可以改進的一點是,當后移時,同時使得camera 近平面一同后移。如下圖所示。
?
當光源離unit cube非常近的時候,如果我們僅使用一個shadow map texture,陰影質量會非常低。因為為了保證光源視域要囊括整個unit cube,光源視域的角度會非常大,如下圖所示。因此離光源很近的區域采樣值就會非常少,陰影質量就會降低。有兩個辦法,每個辦法僅解決問題的一部分:單位立方體裁剪法,把光源攝像機對準單位立方體的必要部分;立方體映射法,使用多個紋理來存儲深度信息。
最初的文章沒有討論過偏置(bias)問題。偏置是隨透視陰影貼圖而帶來的問題,因為紋素的面積以不均勻方式分布,這意味著偏置不再是常量,而是與紋素的位置有關。
解決方案:使用在世界空間中的偏置(而且不再分析雙投射矩陣的結果),然后把這個世界空間偏置轉換到投射后空間。(這部分沒怎么理解,望大佬指導)
最后,該方案又提到了緊鄰百分比過濾(percentage-closer filtering ,PCF)優化,之前文章已經詳細記錄過,這里就略過了
【關鍵詞提煉】
?
陰影渲染(Shadow Rendering)
陰影貼圖(Shadow Maps)
透視陰影映射(Perspective Shadow Maps,PSMs)
緊鄰百分比過濾(percentage-closer filtering ,PCF)
單位立方體裁剪法(Unit Cube Clipping)
?
?
總結
以上是生活随笔為你收集整理的GPU Gems1 - 14 透视阴影贴图(Perspective Shadow Maps: Care and Feeding)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: readLine
- 下一篇: bndtools教程