BRDF表示的是雙向反射分佈函數(Bidirectional Reflectance Distribution Function),它描述了光線如何在物體表面進行反射,能夠用來描述材質屬性。數據庫
BRDF的輸入參數是入射光的的仰角、方位角、出射光的仰角、方位角,還與入射光的波長相關。函數
BRDF的輸出結果是一個數值,表示在給定的入射條件下,出射方向上反射的相對能量,另一種理解方式是用光子的概念來考慮,BRDF給出了入射光子以特定方向離開的機率。spa
BRDF有一些重要的屬性:blog
1.Helmholtz互異性(Helmholtz Reciprocity):入射角和出射角互換,函數值保持不變。ip
2.能量守恆:出射能量不可能大於入射能量,因此BRDF必須進行歸一化處理。ci
BRDF在描述光線與物體相互做用方面是一個很好的抽象,但只是更通常方程的一種近似。it
更通常的方程:雙向表面散反射分佈函數(Bidirectional Surface Scattering Reflectance Distribution)BSSRDF.io
通常的BSSRDF,雖然複雜,仍然忽略了一些很是重要的變量,好比光的偏振。asm
BRDF沒有描述內部光線散射現象。變量
此外,要注意,反射函數,都沒有處理穿過物體表面的光線傳播,只是對反射狀況進行了處理。
SVBRDF: spatially varying BRDF
SBRDF: spatial BRDF
處理透射問題:BTDF
T:Trasmittance
爲了處理光線傳播問題,對物體表面定義了兩個BRDF和兩個BTDF,每側各有一個,這樣就組成了BSDF
S : Scattering
可是太過複雜的公式不多用到,一般BRDF和SVBRDF就能夠描述通常物體表面。
給定一個BRDF和入射光的輻射率分佈,反射方程就能夠肯定在給定觀察方向上的出射輻射率大小,能夠經過對全部方向上的入射光輻射率在物體表面以上的半球內進行積分獲得。
有一種理解BRDF的方法就是在輸入方向保持恆定的狀況下對它進行可視化表示,用圖形表示出各個方向的出射光的能量分佈:
下面是幾種BRDF的圖形表示:
一個想法是使用微小面元對物體表面進行建模,每個小平面都是表面上的一個小平面鏡,具備隨機的大小和角度。
在這些模型中,一般賦予小平面一個高斯分佈的尺寸和角度(高斯分佈比較簡單)。
另一種平面表示技術稱爲「高度相關Height Correlation」,由於小平面具備和光波長近似的尺寸,因此會出現干涉、衍射。
在物理方面須要考慮的一個重要因素是Fresnel反射,一個完整的Fresnel公式依賴於折射係數、消光係數以及入射角等因素。
計算機圖形學經常會忽略偏振,可使用兩個偏振的平均值。
一些BRDF理論模型的侷限性在於沒有考慮各向異性的情形。
若是視點和光源位置不動,當材質的採樣點繞法線方向旋轉時,若是它的顏色發生變化,那麼這個材質就是各向異性的。
像刷洗過的金屬、上過漆的木頭、織布、毛皮以及頭髮這樣的材質都有一個肯定的方向份量。
理論模型在給定材質樣品的表示方面不必定有用。
另外的一種方法就是從實際物體的表面來獲取BRDF數據。
測角儀、圖像雙向反射計,以及基於圖像的方法均可以根據入射角和出射角測量獲得反射信息。
有些數據庫在網上是公開的。
另一種表示BRDF的方法是用基相加(Basis Summation)技術,這些方法主要着眼於BRDF自身的形狀表示。
基相加技術就是努力將BRDF的表面表示成一組函數的加權和。
《實時計算機圖形學》,第二版
《real-time rendering 3rd》