SSDO AO 图像空间的动态全局光照
本文僅記述SSDO學習筆記!
概述
SSDO Screen-space Direction Occlusion 是對AO的擴充,在AO的基礎上,假設沒有遮蔽的方向有直接入射光,有遮蔽的方向,可能有間接光的反射。
SSAO理論分析
AO:在計算點的周圍進行采樣,如果采樣點的深度大于采樣點所對應的屏幕空間的深度,則認為是沒有光照進入,否則我們則認為有間接光照,這樣我們就可以對所有采樣方向進行積分,計算這一點的光照。
讓我們來看一下如何進行計算的:
一切起源于渲染方程,在渲染方程中我們有三項值得注意,入射光,BRDF以及可見度。
然而在實時渲染中,我們有一個偉大的近似公式:
那么我們可以依據這個公式將可見度分離出來,并進行積分,注意在AO里面是間接光照,并且是個常數。
對cosθidωicos\theta_{i}\mathrmozvdkddzhkzd\omega_{i}cosθi?dωi?的積分是什么呢? 對,其實就是算一個投影立體角,即π\piπ。
由此,我們的渲染方程就轉變為:
實則,在這里我們就可以看出來,這還是求解渲染方程,那么就可以理解為屏幕空間的光線追蹤。
在object space進行光線追蹤是非常慢的,并且依賴于屏幕的分辨率以及難以理解和計算麻煩。
在屏幕空間計算則非常簡單,不依賴于屏幕分辨率,但不符合物理。
結果呢:
但總之增加了圖像的細節,效果還不錯。左邊AO,右邊 no AO。
感謝閆老師的課程。
那么我們在此基礎上來看一看DO吧!
SSDO理論分析
如何重建世界坐標.
一切來源于渲染方程,討論過AO之后,我們知道了AO假設未被遮擋的方向有間接光照,那么DO則進行大膽假設:
很重要的一副圖,其中CCC點是直接光照,A,B,DA,B,DA,B,D點都表示會有間接光照,B,DB,DB,D點會有間接光照。
直接光照
是不是很眼熟,對,這時對AO方程的離散化形式,并用作直接光照的計算,讓我們分析一下:
因為是離散化形式,那么我們所需的積分變量就不再是單位立體角,而是一個具體的立體角,這里假設我們是均勻采樣,并且我們不能在離散的計算機中表達出連續量。
間接光照
我們要知道一點的光照強度來源于直接光照和間接光照。
那么對于被遮擋住的間接光照我們怎么計算呢?
對,一切起源于渲染方程,對于間接光,我們則做了一個更大的假設,假設每一點都是一個VPL(虛擬點光源)。
讓我們來分析一下不同:
LpixelL_{pixel}Lpixel?:來源于采樣點所映射到的屏幕點的Radiance,簡單來說就是屏幕像素顏色。
ρ\rhoρ與直接光相同,是albeoalbeoalbeo。
AsA_{s}As? 是一塊 sender patch,即發送光線的虛擬點所占的面積的投影,投影是因為接收點所接收的能量是從來自發射方的投影,即這是對VPL的修正,因為假設是均勻采樣故這時一個常數,即πr2/N\pi r^{2}/Nπr2/N。可以從下圖理解一下,即從發射光線的角度去思考。
di2d_{i}^{2}di2? 的理解從下圖理解:即點光源沿著某個方向傳播有著r2r^{2}r2的衰減。
cosθsicos\theta_{si}cosθsi?與cosθricos\theta_{ri}cosθri? 則是發送方的法線和接收方的法線與采樣方向的coscoscos值,即光線不可能從采樣點的背面發送到著色點,也可能與 3. 中的意圖一樣,即著色點會接收垂直于它的所有光線的能量。
至此SSDO的理論全部結束,通過LdirL_{dir}Ldir?可以算出遮蔽光,LindirL_{indir}Lindir?則可以增加反射光。
注意點
結語
SSAO與SSDO都是很不錯的方法對于提升畫面質量,很值得我們學習!
對那充滿不安的日子說再見吧,對那充滿不安的日子說再見吧,對那充滿不安的日子說再見吧,
向著未知的夢境之地前行,向著未知的夢境之地前行,向著未知的夢境之地前行,
我想總有一日我會變得更加堅強!我想總有一日我會變得更加堅強!我想總有一日我會變得更加堅強!
總結
以上是生活随笔為你收集整理的SSDO AO 图像空间的动态全局光照的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《海岛大亨》厂商新作开售 回顾铁路上的美
- 下一篇: Polygonal-Light Shad