1. 程式人生 > 其它 >paper - 2015 - Evaluation of Visual Parameters in Volumetric Path Tracing(1)

paper - 2015 - Evaluation of Visual Parameters in Volumetric Path Tracing(1)

paper - 2015 - Evaluation of Visual Parameters in Volumetric Path Tracing(1)

Skånberg, R., utfört, E., Jönsson, H.D., & Ropinski, E.T. (2015). Evaluation of Visual Parameters in Volumetric Path Tracing.

1. introduction

在互動式體積渲染領域,研究重點是使用巧妙的方法、近似和簡化來解決體積渲染方程,以提供互動式幀速率。為了評估所實施方法的準確性,需要將其與一些參考解決方案進行比較。求解方程的一種方法是使用一種稱為路徑跟蹤的方法,當正確實現時,該方法將提供真實結果的估計。這一估計在給定的計算時間內收斂到真實結果,並且在一般情況下是一個相當緩慢的過程,與任何互動式過程都相去甚遠

3 Physically based rendering

3.1 基本輻射計量學

flux:單位時間通過某個區域的所有能量,單位是W,或J/s

irradiance E & Radiant Exitance M: 單位面積單位時間的能量(面積為垂直於光線方向),\(W/m^2\)

solid angle sr

Intensity I : 表示單位立體角,單位時間通過某個區域的所有能量,然而,該量僅用於指定點光源的光譜分佈;

Radiance L :從某一個單位立體角看過去的單位面積單位時間上接收的能量,\(W/sr\)

3.3 The rendering equation

這個方程是遞迴的,並且描述了光離開點x',到達另一個點x,自發光項,和x''到x'處的光對x‘x方向的貢獻在半球上的積分和,與幾何項g的乘積。(即,x''處發出的光有多少會沿著x'x傳輸,以及x'處發出的光有多少往x’x傳輸)。

但是,通常會使用radiance的表述方式,見方程2:

該模型的一個重要限制是,光在被真空隔開的平坦表面之間傳輸。任何體積效應,例如大氣散射和不透明介質,都不包括在方程中,因為它需要光與穿過的介質相互作用的可能性.

3.4 path tracing

path tracing是用來解渲染方程的。[[games101-4-Ray Tracing]] 一文中有部分描述。文中描述了光線爆炸,以及如何處理的過程。

3.4.1 direct light sampling

[[games101-4-Ray Tracing]] 一文中也介紹了直接對光源進行取樣的實現。

那麼這個時候方程可以寫成:

發射項並沒有完全消除,這是為了處理這樣的情況,即發射表面是第一個被眼睛的路徑擊中的表面,因為這是包括直接可見物體的發射的唯一機會。還有第二個條件是包含發射,即路徑中的前一個取樣來自完美鏡面反射。這要歸功於BRDF中的δ函式,它不可能對來自除完美反射方向以外的任何取樣方向的光做出貢獻。

3.5 surface reflection

光在穿過一個不同介質的表面的時候,會發生折射,和反射。

可以閱讀: 菲涅爾方程(Fresnel Equation)

關鍵公式如下,有:

Fresnel Equations
unpolarized reflection
snell's law
schlick's approx

3.6 bidirectional scattering distribution function, BSDF

\(\rho(x,\omega_o,\omega_i)\) ,這個函式表示的意思是光從\(\omega_i\)方向過來,然後經過散射,進入到\(\omega_o\)方向的比例。

通常有三種類型的雙向分佈函式,即雙向反射分佈函式(BRDF)、雙向透射分佈函式(BTDF)和相位函式。BTDF表示折射或透射到表面的光,但通常被實現為具有翻轉表面法線的BRDF,並被縮放以匹配透射的光量。因此,本文只討論BRDF和相位函式。

3.7 bidirectional reflectance distribution function, BRDF

reflectance描述BRDF是對於反射光的。文中用\(\rho_r(x,\omega_o,\omega_i)\)表示。

3.7.1 diffuse reflection

最簡單的漫反射模型是lambertian模型,見下式:

它假設表面是理想的漫反射。任何碰觸到表面的光都會被均勻的散射到各個方向。

3.7.2 perfect specular reflection

最簡單的鏡面反射模型是完全反射。如圖11中的黑色虛線箭頭。

3.7.3 glossy reflection

微表面模型示意圖見下:

詳細內容可以參見: https://zhuanlan.zhihu.com/p/434964126

4. Volume Rendering

基本概念可以參見: 蒙特卡洛體渲染(一):基本概念

主要由吸收,散射,消光係數,透射

消光係數(吸收和out散射)對光的衰減可以得到radiance的透過率,公式如下:

如果消光係數是常數,那麼,公式15可以簡化為:

4.6 single scattering albedo

這是一個無光譜單位的量,在單位的情況下,它不會導致任何能量因吸收而損失,相反,零的反照率會吸收所有能量

4.7 in scattering

將所有方向進入的光對出射方向的共享積分後如下:

加上自發光項為:

公式裡面的\(\rho_p\)表示的是相函式。

4.9 相函式

相函式可以理解成BRDF針對volume的版本。主要有兩個關鍵的不同點,相函式考慮的是整個單位球,第二點是相函式對球的積分是1. 相位函式有效地定義了特定方向散射的概率分佈。

非常常見的相函式是,Henyey-Greenstein相函式。他通過單個引數,各項異性因子,來控制散射分佈。各項異性因子的範圍是\([-1,1]\)。當g=-1的時候,完全的後向散射,g=1的時候,是完全的前向散射,g=0的時候是各項同性散射。

注意,與BRDF不同,這些相位函式不會改變光的光譜分佈,它們只定義散射方向的概率。

4.10 volume rendering equation

\(x' = x_0 + t' \omega\)

第一個公式的第一部分表示的是x0處光強,經過衰減後有多少到達x處。

第一個公式的第二部分表示的是每個位置x‘ 內散射的能量對x出的貢獻的積分。

4.13 emission absorption model

這個模型僅考慮發射,和吸收,這個時候,公式24中的內散射項用發射項進行替代,變為:

4.14 single scattering model

一種更復雜的方法是單散射模型,它也部分解決了體積渲染方程。這裡它將公式24中的內散射項用直接光源取樣進行替代:

4.14 volumetric path tracing

這個方法是沿著射線方向進行距離取樣。如果取樣得到的距離。如果該距離小於沿射線最近的曲面相交點的距離,則介質中會發生散射,路徑將從該散射點而不是曲面上的點進行評估。為了簡單起見,該方程是假設參與介質是均勻的且不發光。

因此,路徑跟蹤演算法基本上擴充套件了光在介質中散射的概率。這意味著基本演算法保持不變,但在散射的情況下,將使用相位函式而不是表面模型。具體公式如下:

對於非均勻介質的話,透過率一項會進行更改,\(\sigma_t e^{-\sigma_ts}\),更改為:\(\sigma_t(x+s\omega) T_r(x, x+s\omega)\)

5. Monte Carlo Integration

定義的列表:

  • X: 隨機變數;
  • P(x):累積分佈函式,CDF。表示隨機取樣的值,小於等於x的概率;
  • p(x):概率密度函式,PDF。隨機取樣某個值的概率。
  • \(\xi\) : 規範一致隨機變數,它在[0,1]範圍取樣概率相等。

一個函式的期望的公式可以寫為:

一維的情況,使用均勻取樣的Monte Carlo估計fx積分結果,見公式29。

Xi表示在有效區間[a,b]範圍隨機取樣的值。如果 \(f(x) = \int_0^2 (x^2+1) dx\) 。那麼隨著取樣數量的增加,估計誤差逐漸減小。

5.1 improving the Monte Carlo estimator

使用非均勻取樣,需要引入取樣的概率密度函式,如下:

此處需要注意的是p的選擇,對結果的影響比較大。

5.2 the inversion method

為了從任意PDF p(x)中提取樣本Xi,需要執行以下步驟:

  1. 計算累積分佈函式,CDF;\(P(x) = \int_0^xp(x')dx'\)
  2. 計算CDF的倒數,\(P^{-1}(x)\)
  3. 使用均勻分佈的\(\xi\),計算得到X,\(X = P^{-1}(\xi)\)

可以參見:

(24條訊息) 蒙特卡洛方法(Monte-Carlo Simulation)_Hearthougan的部落格-CSDN部落格_monte-carlo

(24條訊息) 逆取樣(Inverse Sampling)和拒絕取樣(Reject Sampling)原理詳解_anshuai_aw1的部落格-CSDN部落格_逆取樣

示例,對於指數函式可以得到如下結果:

6. implementation

TODO