實時繪製如何實現丁達爾效應?

遊戲里的丁達爾效應是怎麼實現的?


GPU Gems 3 - Chapter 13. Volumetric Light Scattering as a Post-Process

純post process的方法實現的volumetric light。

一句話來說的話,這個演算法就是把場景渲染得到的depth
texture和color texture根據光源的位置進行radial blur,得到的結果在通過alpha blend疊加回渲染的結果。非常快(因為其實是作弊,沒有真的積分),效果也不錯。因為考慮了depth,這個方法就變成可以處理光源被擋住的情況。


可以參考這篇專欄:遊戲開發相關實時渲染技術之體積光 - Math Eye Candy - 知乎專欄


別的引擎不太清楚,虛幻4對光束有一套專門的解決方案:

https://docs.unrealengine.com/latest/CHN/Engine/Rendering/LightingAndShadows/LightShafts/index.html

遮擋法

遮擋法從屏幕上物體的深度創建遮罩,將其從光線中模糊掉,並將其用於霧氣和大氣的遮罩。它和現實生活中的光束類似 - 光束由霧氣的陰影所生成。請注意:這也意味著光束的強弱度只能和霧氣/大氣相同。它用於遊戲中,旨在獲得更真實的效果。

太陽定向光源可稍微偏離屏幕併產生遮擋光束。然而與太陽之間的角度接近 90 度時,光束將逐漸淡出。

光暈法

光暈法將在世界空間中的光源周圍捕捉場景顏色(包括半透明度和霧氣散射),並從光源進行放射性模糊。此法並非對真實世界中發生的一切進行模擬,但可控性較高(不受霧氣密度限制),視覺效果震撼。太陽周圍存在突出的明亮區域(如明亮的雲朵)時光暈法的使用效果最佳。明亮的太陽過小,因此將形成一定程度的鋸齒,而模糊是一個圖像空間操作。


參見育碧(biao)大法:Volumetric Fog: Unified Compute Shader-Based Solution to Atmospheric Scattering


推薦閱讀:

cytoscape繪製網路圖,導入數據的要求有哪些?
暴雪可能重做魔獸世界的模型嗎?
實現EGE這樣的圖形庫需要什麼技術支持?
計算幾何有何經典書籍?
計算機視覺中video understanding領域有什麼研究方向和比較重要的成果?

TAG:計算機圖形學 |