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