全局照明算法基础——从辐射亮度到渲染方程
全局照明(Global Illumination)問題上已經(jīng)有很多著名的算法,如路徑追蹤(Path Tracing),輻照度(Radiosity)等。絕大部分書籍/教材都直接介紹了做法,在理論方面有所欠缺(比如算法的正確性)。這段時間在看《Advanced Global Illumination》,大呼爽快,所以做了這些筆記。
一、方向和立體角
立體角(Solid Angle)是平面角的推廣。如上圖,考慮一塊不規(guī)則的曲面,其在單位球體(球心在原點,半徑)上的投影為曲面,則的面積為該曲面對應(yīng)的立體角。根據(jù)定義易知,任何包含原點的球體對應(yīng)的立體角都為。如果用球坐標來刻畫立體角,那么其微分可以被表示為
此外,根據(jù)立體角的定義,可以給出任何曲面元對應(yīng)立體角的計算公式——
其示意圖如下:
二、Radiance的定義
考慮密度函數(shù),它給出在時空坐標處單位體積內(nèi)沿方向、波長為的光子的數(shù)量。那么給定位置、時間、方向以及波長,容易知道單位時間內(nèi)沿方向通過面元的、波長在間的光子的能量為
其中是這些光子的速度。在波長范圍、全體立體角、曲面上對積分得
這就是曲面上的輻射通量(Flux)的定義。
類似地,定義輻射照度(Irradiance)為
輻射強度(Intensity)為
以及輻射亮度(Radiance)——
這幾個量間有以下關(guān)系:
三、Radiance的守恒性質(zhì)
從的定義可知,Radiance是空間位置和方向的函數(shù)可以寫作,表示從空間位置出發(fā)、朝向的Radiance。(類似地,表示空間位置處朝方向的Radiance)若與間沒有遮擋,則有以下重要性質(zhì)成立:
證明:
如上圖,由Radiance的定義有
其中是從出發(fā)向發(fā)射的能量。根據(jù)能量守恒,它們必定都被接收,即
又由立體角的性質(zhì)
代入得
整理即得。
四、以Radiance來量度傳感設(shè)備響應(yīng)
攝像機、人眼等感光設(shè)備所得到的光的量度可以用Radiance來衡量,而非Flux等。由此可以得出一些結(jié)論,比如一個明亮的物體隨著觀察者距離的增加不會顯得更暗,這是因為在光的傳播過程中Radiance不隨距離改變。?
五、BRDF
一束光照射到某個表面上,反射的效果隨著表面的材質(zhì)有所不同。譬如,理想的鏡子會把所有的入射光反射到某個特定的方向,而在其他方向上的反射光為0;理想的Lambertian表面會把入射光往所有的方向均勻地反射。反射光在不同方向上的多少分布,再結(jié)合入射光的方向所構(gòu)成的函數(shù),稱為bidirectional reflectance distribution function(BRDF),記作,表示沿方向照射到處的光在方向上的分布。準確地說:
并非所有的物體表面的反射都能用BRDF來建模,譬如通透的玉石(入射光可以從某一處進入玉石內(nèi)部,然后從另一處穿出)等。一個把透明物體的表面納入考慮的函數(shù)叫做bidirectional scattering distribution function(BSDF),它描述了所有方向的入射光和出射光的分布;Bidirectional surface scattering reflectance distribution function(BSSRDF)則更加強大(使用起來也更為困難),它可以描述前面提到的通透的玉石對光的作用。在這里,為了簡化問題,假設(shè)所有的物體表面都使用BRDF描述。
六、BRDF的幾個性質(zhì)
由BRDF的性質(zhì)可知,某不透明的、不發(fā)光的表面上某一點處朝的Radiance是此點反射外來光的結(jié)果,可表示為
其中是從方向來的光在方向上反射的結(jié)果。根據(jù)BRDF的定義有
于是,
該式在之后會介紹的渲染方程中扮演了重要的角色。
Reciprocity:規(guī)定任意BRDF滿足,由此,不妨將BRDF記作。
能量守恒:單位面積的入射能量為
而單位面積反射的總能量為
于是由能量守恒:
七、渲染方程(The Rendering Equation)
可以被分為兩部分:處自身向方向發(fā)出的光和點反射外來光產(chǎn)生的光。即
其中是自發(fā)光項,是反射項。根據(jù)6中的推導,反射項可以被表示為
代入得
這就是所謂的渲染方程。可以看到該方程是遞歸的,且包含了一個不易計算的積分(只有在某些極簡單的場景下才能求出解析解)。幾乎所有的全局照明算法都是在求解渲染方程,因此稱其為圖形學的理論基石之一也不為過。
轉(zhuǎn)載于:https://www.cnblogs.com/AirGuanZ/p/6389628.html
總結(jié)
以上是生活随笔為你收集整理的全局照明算法基础——从辐射亮度到渲染方程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这周,我们作前端,实现统一的过滤搜索
- 下一篇: webpake-node-sass 报错