我最近在OpenGL 4.3中通過在光照方向上追蹤錐體並累積不透明度值,實現了使用體素錐跟蹤的軟陰影。 Voxel Cone Traced Soft Shadows
,我試圖解決或隱藏的關鍵是非常素化的陰影效果遮擋面逐漸接近封堵器,以及隱藏在陰影中,由於表面體素化的斑點清晰。我正在使用低分辨率體素64x64x64;然而,即使我使用更高分辨率的體素,一些較高mip-map級別的低分辨率體素仍然會被追蹤到。
因此,我的第一個想法是:我希望能夠保持最遠距離的陰影中最柔軟的部分,並用陰影貼圖替換更靠近遮擋物的陰影部分。陰影貼圖會逐漸消失,因爲它離每個封閉器更遠,我會以某種方式將它與錐形跟蹤陰影混合。
任何人都可以想辦法消逝基於距離的每個對象的陰影貼圖陰影,然後有它順利融入錐追蹤的影子呢?
我的另一個想法是以某種方式將光線追蹤陰影到更接近遮光板的表面上,但這可能會太昂貴。
另外,我會歡迎任何其他想法來幫助改進我的軟陰影算法。
我也提出了一個視頻顯示它在運動中:
https://www.youtube.com/watch?v=SUiUlRojBpM
還沒有找到一種方法來解決這個問題的陰影。
+1 - 最後再次提出一個問題,這不是一個新手級別,讓我的腦子發癢:)讓我看看我能想到的... – datenwolf 2013-02-16 11:48:57
在錐體跟蹤算法中,你使用體素的alpha值來指示體素是否被佔用?如果是這樣,opengl中的默認mipmapping算法可能不會給你正確的結果。你也使用稀疏體素八叉樹表示? – Slicedpan 2013-02-16 14:24:22
對於間接漫反射和鏡面反射,我通過在所有6個方向上偏移1個體素來對3D紋理進行採樣 - 對於每個mip級別。如果我已經正確理解了這個理論,我想這給了我2x2x2的「磚塊」。我追蹤錐體,直到不透明度值變爲1,並達到我定義的最大距離。我已經注意到,默認的mipmapping不是很流暢,所以我想如果我使用3x3x3磚塊的話,我的結果應該會有所改善 - 性能會更高一點?我沒有使用八叉樹結構,但是這是要實現的東西的列表。 – gboxentertainment 2013-02-17 03:34:37