PBR的核心法則是基於物理,在渲染領域最關注的就是光,更具體而言是光的表現以及光和物體的交互。而光也是一種電磁輻射,因此渲染中最主要的理論依據都源自輻射度量學(radiometry),這是專門研究電磁輻射量化的學科。
Domains and measures
在量化電磁輻射之前,需要對場景有一個定義。首先將場景幾何抽象為 \(\R^3\) 中的面(surfaces)的有限集 \(\mathrm{M}\) ,這里的表面是指分段可微的二維流形(Manifold),出於實現考慮,這里的流形默認都是存在邊界 \(\partial M\) 的,否則鄰接面之間可能會存在縫隙(gaps)。而 \(\mathrm{M}\) 作為一個集合,其本身並不一定是流形,如:僅含兩個相切球的場景。
這些表面會把整個空間划分為一個個相連的區域,而為了簡化模型,這里先不考慮體吸收(volume absorption)、自發光(emission)、散射(scattering)等情況,即假設每個區域中都只有非參與介質,這些介質被抽象描述為一個固定的折射率。當然,表面也不一定充當區域划分的邊界,如:一個懸浮的平台。
對於一個域 \(D\subset\mathrm{M}\) ,定義度量 \(A(D)\) 表示該域的面積,則勒貝格(Lebesgue)積分為
其中, \(f:\mathrm{M}\rightarrow \R\) 是關於表面積的函數。
而方向可以被定義為一個單位向量 \(\omega\in \R^3\) ,所有方向構成一個集合 \(S^2\) ,顯然這是空間中的單位球面。設 \(\sigma\) 表示 \(S^2\) 上的面積度量,則對於給定的方向集合 \(D\in S^2\) ,可以定義其對應的立體角(solid angle)為 \(\sigma(D)\) 。類似地,對於一個表面 \(P\) ,將其上的點投影到以點 \(x\) 為球心的單位球面上,這些點所代表的方向的集合的度量,即為 \(P\) 在點 \(x\) 處所對的(subtend,類似平面幾何中線段相對於點的對角)立體角。從定義可以看出,立體角本質上是一種面積度量,可以理解為:我們站在某點觀測某一物體,物體表面上的每一點都對應着一個觀測方向,這些觀測方向單位化后的集合也就是對應的立體角。由此,我們可以把通量等描述在由方向構成的立體角上,這么做有利於簡化之后對光的各種物理量的描述。
由此派生的一個概念就是投影立體角(projected solid angle),這一概念通常用於描述irradiance。對於給定點 \(x\) , \(N(x)\) 表示表面法線,給定一個方向集合 \(D\subset S^2\) ,投影立體角 \(\sigma_x^\perp\) 定義為
其中,點積通常也被寫為 \(\cos\theta\) ,這里的 \(\theta\) 是指 \(\omega\) 的極角,即 \(\omega\) 與法線的夾角。
其名稱源於最初定義時使用了投影這一操作。設 \(T_M(x)\) 為點 \(x\) 的切空間,即由垂直於法線的向量構成的空間
注意:這里所定義的切空間包含了原點,即這是一個線性空間,而非仿射空間。整個切空間將 \(S^2\) 分為了兩個半球,分別為上半球:
和下半球:
對於任一半球上一個給定的方向集合 \(D\) ,其投影立體角就是該集合正交投影到切空間后的面積度量。一個最簡單的例子:對於一點處的整個上半球表面,其對應的投影立體角就是整個單位圓,故
The phase space
普遍的transport理論研究的是抽象環境中的粒子運動,由於光的粒子性,基於該理論可以定義一系列和輻射相關的物理量。
我們可以用若干時變參數(參數是時間的函數)描述一個粒子。最基本地,可以用位置和速度兩個參數描述一個粒子,其包含6個自由度。由此,可以用一個 \(6N\) 維向量描述一個包含 \(N\) 個粒子的系統。而我們可以將系統狀態視為一個在 \(6N\) 維相空間(phase space)中的點,這個空間包含了所有可能的系統狀態。系統狀態隨時間的改變,在相空間上反映為一條一維曲線。
假設光不發生偏振和干涉,則每個光子可由位置 \(x\) ,運動方向 \(\omega\) ,波長 \(\lambda\) 描述。若方向用立體角描述,此模型下,整個相空間也是 \(6N\) 維。對於不發生相互作用的粒子(如:光子),保留這么高維度的相空間意義不大,此時可以讓相空間維度對應於單個粒子的狀態。基於這個約定,相空間 \(\psi\) 可以降至 \(6\) 維,且可表示為
此時可以用該空間中的 \(N\) 個點表示整個系統的狀態,每個點的位置(六個維度的坐標)均為時變參數。
輻射度量學中涉及的物理量都可以在相空間中給出度量,度量值可以經簡單計算給定區域中光子的數量而得出,也可以由一或多個參數的density導出定義。如最基本的,光子數量 \(N_P\) 就是相空間中給定域內的光子數量的度量。
The trajectory space and photon events
在相空間的基礎上顯式引入時間維度,考慮將相空間中的所有光子隨時間的變化以圖的方式描述出來,我們可以得到一組一維曲線,並稱這組曲線所在的空間為軌跡空間(trajectory space)
輻射的各種度量就定義在這些曲線上,沿這些曲線指定一組光子事件(photon events),然后通過多種方式測量事件的分布,即可定義一個度量。
事件:在物理學中,是指時空間和相空間所指定的時空中的一點,即軌跡空間中的一點。
通過指定一個時間面得到該面與光子軌跡的交點,即可定義一個光子事件。如:選取一個時間 \(t_0\) ,在軌跡空間中,超平面 \(t=t_0\) 與光子軌跡的交點就是該時刻的光子狀態,即光子事件。同樣,對於給定的 \(\R^3\) 中的平面 \(P\) ,可以定義光子事件為 \(P\) 在軌跡空間中與超平面 \(\R\times P\times S^2\times \R^+\) 的交集。
一個合理的假設是,軌跡空間包含着數量龐大的事件,因此,事件的密度可以采用連續分布進行建模。也就是說,雖然實際上一個光子的能量是固定的,能量的分布是離散的,但我們可以假設其可以是任意非負實數,能量的取值是連續的。
Radiometric quantities
輻射的度量總是圍繞幾個重要的物理量展開,而以下的定義是經過簡化的,並非完全嚴格的公理化定義。
Power
輻射量(radiant power)是指單位時間內的能量(energy)
其量綱為瓦特 \(\mathrm{watts[W=J\cdot s^{-1}]}\) ,描述的是有限表面 \(S\subset \R^3\) 發出或吸收的能量的速率。
通常並不會直接定義 \(Q\) ,而是定義軌跡空間中的某個區域 \(D(t)\) ,該區域隨時間變化,而區域內的光子能量即為 \(Q(t)\) 。例如:考慮度量區域
中發出的能量,其中, \(S\subset \R^3\) 為有限表面,則 \(Q(t)\) 表示 \(S\) 在時間 \([0,t]\) 所發出的能量,故
表示的就是單位時間發出的能量。這也是更為直觀的形式。但通常我們只關注系統達到穩態時的能量分布,此時相空間並不隨時間改變,可忽略參數 \(t\) ,回到定義的形式。
Irradiance
輻照度(irradiance)是指單位面積的輻射量
其量綱為 \([W\cdot m^{-2}]\) 。其定義總是依賴於點 \(x\) 以及確定的法線 \(N(x)\) 所確定的平面,而ir
詞綴其實也暗示着其通常用於描述接收的輻射,且通常是在一個面上的輻射,即來自指定的半球。
Radiance
輻射(radiance)描述的是點 \(x\) 處,對於給定方向 \(\omega\) ,在微分立體角 \(d\sigma(\omega)\) 內,通過微表面 \(dA_\omega^\perp(x)\) 的能量
其中, \(A_\omega^\perp\) 是垂直於 \(\omega\) 的一個假想平面。其量綱為 \([W\cdot m^{-2}\cdot sr^{-1}]\) ,其中, \(sr\) 是立體角的量綱steradian。在定義中,接收平面是必須垂直於給定方向的,即考量的總是投影面積。
而當度量的是一個實際的平面 \(S\) 上的radiance時,公式可以更直觀地表示為
其中, \(A\) 是 \(S\) 的面積, \(N(x)\) 是表面法線,上式實際上包含了求投影的運算,因為
而根據投影立體角的定義, \(\cos\) 項可以與微分立體角組合構成微分投影立體角,則有
這也是最常使用的式子,因為這里參與運算的是 \(S\) 的實際面積 \(A\) 。
Spectral radiance
將波長納入考慮即可進一步定義光譜輻射(spectral radiance)
即
其量綱為 \([W\cdot m^{-2}\cdot sr^{-1}\cdot nm^{-1}]\) 。同理可定義spectral power等。光譜輻射通常作為最基本的物理量,其他量都可以由其推出,如對波長積分可以得到radiance,對投影角積分可以得到irradiance。
Incident and exitant radiance functions
通常我們研究的函數采用如下形式
即radiance表示為場景中的面和立體角構成的相空間到一維空間的映射,等價於
雖然物理上,radiance不能為負,但為了保證空間的線性性,我們仍保留其中的負數部分。根據 \(\omega\) 的不同,我們把radiance分為incident(入射) radiance和exitant(出射) radiance。incident radiance \(L_i(x,\omega)\) 描述的是從 \(\omega\) 方向到達 \(x\) 點的radiance,exitant radiance \(L_o(x,\omega)\) 描述的是在 \(x\) 點沿 \(\omega\) 方向發出的radiance,顯然有
但實際上,划分為這兩類是因為其具有本質區別,前者表示的是光子到達表面前的狀態,后者表示的是光子離開表面后的狀態。
The bidirectional scattering distribution function
雙向散射分布函數(bidirectional scattering distribution function,BSDF)是對表面光線散射性質的數學描述。設場景中某表面上一固定點為 \(x\in\mathrm{M}\) ,考察在方向 \(\omega\) 上從 \(x\) 發出的radiance \(L_o(\omega_o)\) ,這里暫時忽略位置 \(x\) ,顯然 \(L_o(\omega_o)\) 的值取決於在所有方向上總共有多少radiance到達了 \(x\) 。首先分析來自某個特定的入射方向的貢獻,考慮入射方向 \(\omega_i\) ,以 \(\omega_i\) 為軸構建一個極小椎體,這個椎體可以描述為一個微分立體角 \(d\sigma(\omega_i)\) ,來自該椎體的入射光擊中表面上的點 \(x\) 並產生irradiance \(dE(\omega_i)\)
隨后這部分光線會被表面散射到各個方向,設沿方向 \(\omega_o\) 散射的radiance為 \(dL_o(\omega_o)\) ,由於一般情況下光都是可簡單疊加的,即滿足線性性,因此無論 \(dE(\omega_i)\) 的變化是來自 \(L_i\) 還是 \(d\sigma(\omega_i)\) ,都有
而BSDF \(f_s(\omega_i\rightarrow\omega_o)\) 描述的正是這個比例常數,即
用自然語言描述上式: \(f_s(\omega_i\rightarrow\omega_o)\) 表示來自 \(\omega_i\) 的每一單位irradiance會有多少比例被轉化為 \(\omega_o\) 方向上出射的radiance, \(\omega_i\rightarrow\omega_o\) 形象描述光的傳播方向。
The scattering equation
根據BSDF的定義,我們可以把differential exitant radiance表示為
此時只要對來自所有方向的irradiance對radiance的貢獻求積分,就可以得到 \(\omega_o\) 方向上的exitant radiance了,即
這就是(表面)散射方程(scattering equation)。
在有了散射方程之后,對於給定的入射光照,我們可以計算出表面任一點的radiance,基於幾何光學對光的唯象表達,這個方程實際上就給出了物體表面外觀(即材質)的一個數學表示(盡管它並不能描述所有的光學現象或材質表現)。
The BRDF and BTDF
BSDF並非輻射度量學中的標准概念。通常,散射光會被拆分為反射光(reflected)和透射光(transmitted)兩部分,由此也就有了雙向反射分布函數(bidirectional reflectance distribution function,BRDF) \(f_r\) 和雙向透射分布函數(bidirectional transmittance distribution function,BTDF) \(f_t\) 。
通過限制域即可得到
其中, \(\H_i^2\) 和 \(\H_r^2\) 分別為入射半球和反射半球,但其實兩者表示的是同一個方向集合(上半球 \(\H_+^2\) 或下半球 \(\H_-^2\) )。
同理有
其中, \(\H_i^2=-\H_t^2\) ,即兩者互補(同樣,兩者可分別為上半球 \(\H_+^2\) 和下半球 \(\H_-^2\) ,或相反)。
因此,BSDF其實是由兩個BRDF和兩個BTDF組成的(在兩個半球上都各自需要一個BRDF和一個BSDF)。
由於BRDF描述的是實際表面上的性質,其具有一些天然的性質,其中最主要的是對稱性(symmetric)和能量守恆(energy conservation)。
對稱性即
能量守恆即
Angular parameterizations of the BSDF
采用單位向量描述的立體角在計算上並不方便,因此需要對角度進行參數化。對於 \(\omega\in S^2\) ,其可以表示為一組角向量 \((\theta,\phi)\) ,其中極角(polar angle) \(\theta\) 是指 \(\omega\) 和法線 \(N\) 的夾角,方位角(azimuthal angle) \(\phi\) 是指在切空間內 \(\omega\) 與 \(x\) 處的一個特定方向 \(T\) 的夾角,即有
由於立體角是一種面積度量,這里使用微元法分析面積即可自然得到微分立體角的表示。微分立體角可表示為
微分投影立體角也可以表示為多種形式
即
由此,scattering equation可以改寫為
雖然引入了參數化的角度表示,但向量表示仍有其優勢
- 首先 \((\theta,\phi)\) 是一個局部的方向表示,因為這兩個角度都依賴於表面法線
- 在涉及多個表面點的分析中,采用參數表示並不直觀
- 參數表示引入了三角函數項,而這部分實際上又是由向量點積實現的
- 參數表示還依賴於切向量 \(T\) 以規定一個初始的azimuthal angle,而這並沒有任何物理意義
Reference
Eric, Robust Monte Carlo Methods For Light Transport Simulation