GPU Gems1 - 14 透视阴影贴图(Perspective Shadow Maps: Care and Feeding)
開篇先說,這文章好難懂啊,到現(xiàn)在也沒完全弄明白,有大佬的話歡迎指點(diǎn)。這篇大體意思是對Perspective Shadow Maps進(jìn)行部分優(yōu)化。GEMS這書這點(diǎn)是真挺蛋疼,很多文章都是對某項技術(shù)的優(yōu)化,那先介紹介紹原來技術(shù)嘛,我都不知道原來技術(shù)為啥有毛病(當(dāng)然是咱自己菜雞)上來就給我整優(yōu)化,完全看不懂。先貼上Perspective Shadow Maps技術(shù)的最原始論文鏈接
?http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.449.9505&rep=rep1&type=pdf
一個關(guān)于shadow map技術(shù)非常好的鏈接,之后有時間得詳細(xì)寫一篇關(guān)于這個文章的積累
http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping
本文開篇上來又來介紹陰影渲染的兩大流派。
- 陰影體(shadow volumes)/模板陰影(stencil shadows)
- 陰影貼圖(Shadow Maps)
之前文章已經(jīng)介紹過這倆技術(shù)流派了,這里就略過了。透視陰影貼圖(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.(虛擬相機(jī)技術(shù)帶來陰影質(zhì)量降低)
- The shadow quality depends heavily on the light position in camera space.(陰影質(zhì)量很依賴于光源對相機(jī)的位置)
- 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問題)
虛擬相機(jī)
如以下兩個圖所示,這玩意粗俗來講,意思就是樹木1不在攝像機(jī)范圍內(nèi),但是光照到這個樹木1投射出來的陰影投到地面后確在攝像機(jī)范圍內(nèi),這可咋整呢,那就像圖2似的,把攝像機(jī)虛擬的往后挪點(diǎn),把樹木1囊括在攝像機(jī)范圍內(nèi)來解決這個問題。虛擬攝像機(jī)這種技術(shù)帶來的問題就是陰影質(zhì)量會降低,因為本來貼近攝像機(jī)的物體,比如樹木2,會因為相機(jī)向后挪動后在視野中變小,自然會影響其陰影質(zhì)量。
解決虛擬攝像機(jī)的問題可以采用以下辦法:對光源矩陣使用特別的投射變換。如下圖所示,它由一個原始的(非后移過的虛擬相機(jī))攝像機(jī),一個“”逆向“”光源和攝像機(jī)后面的物體組成。
?我個人非常粗俗的理解是,該方法構(gòu)造了一個很特別的矩陣,使得光源經(jīng)過點(diǎn)1向負(fù)無窮發(fā)射,之后又轉(zhuǎn)回來經(jīng)過234點(diǎn)直至正無窮大。(這塊理解不太好,望大佬指導(dǎo))
?對虛擬攝像機(jī)技術(shù)還可以改進(jìn)的一點(diǎn)是,當(dāng)后移時,同時使得camera 近平面一同后移。如下圖所示。
?
當(dāng)光源離unit cube非常近的時候,如果我們僅使用一個shadow map texture,陰影質(zhì)量會非常低。因為為了保證光源視域要囊括整個unit cube,光源視域的角度會非常大,如下圖所示。因此離光源很近的區(qū)域采樣值就會非常少,陰影質(zhì)量就會降低。有兩個辦法,每個辦法僅解決問題的一部分:單位立方體裁剪法,把光源攝像機(jī)對準(zhǔn)單位立方體的必要部分;立方體映射法,使用多個紋理來存儲深度信息。
最初的文章沒有討論過偏置(bias)問題。偏置是隨透視陰影貼圖而帶來的問題,因為紋素的面積以不均勻方式分布,這意味著偏置不再是常量,而是與紋素的位置有關(guān)。
解決方案:使用在世界空間中的偏置(而且不再分析雙投射矩陣的結(jié)果),然后把這個世界空間偏置轉(zhuǎn)換到投射后空間。(這部分沒怎么理解,望大佬指導(dǎo))
最后,該方案又提到了緊鄰百分比過濾(percentage-closer filtering ,PCF)優(yōu)化,之前文章已經(jīng)詳細(xì)記錄過,這里就略過了
【關(guān)鍵詞提煉】
?
陰影渲染(Shadow Rendering)
陰影貼圖(Shadow Maps)
透視陰影映射(Perspective Shadow Maps,PSMs)
緊鄰百分比過濾(percentage-closer filtering ,PCF)
單位立方體裁剪法(Unit Cube Clipping)
?
?
總結(jié)
以上是生活随笔為你收集整理的GPU Gems1 - 14 透视阴影贴图(Perspective Shadow Maps: Care and Feeding)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: readLine
- 下一篇: GPU Gems1 - 15 逐像素光照