目錄及序言:《高級計算機圖形學——真實感圖像合成》目錄及序言 – 知乎 (zhihu.com)
1 蒙特卡羅方法回顧
蒙特卡羅方法(Monte Carlo method)將求解的問題同某個概率模型聯系到一起,通過隨機模擬獲得問題的近似解。
例如,如果定積分 F = int_{Omega} f(x) ,mathrm{d}x 難以直接求解,則可以選取 Omega 下的隨機變量 X sim mathrm{pdf}(x),生成簡單隨機子樣 x_1,,x_2,,cdots,,x_n,用下式作為其近似估計:
hat{F}_n = frac{1}{N} sum_{i = 1}^{n} frac{fleft(x_iright)}{mathrm{pdf}left(x_iright)} \
另外:
begin{align} &because text{數學期望},Eleft(hat{F}_nright)=Eleft[frac{1}{N}overset{N}{underset{i=1}{sum}}frac{fleft(x_iright)}{mathrm{pdf}left(x_iright)}right] \ &quadquadquadquadquadquadquadquad,, =int_{Omega} left[frac{1}{N}overset{N}{underset{i=1}{sum}}frac{fleft(x_iright)}{mathrm{pdf}left(x_iright)}right] mathrm{pdf}(x),mathrm{d}x \ &quadquadquadquadquadquadquadquad,, =frac{1}{N}overset{N}{underset{i=1}{sum}}int_{Omega}frac{fleft(x_iright)}{mathrm{pdf}left(x_iright)}mathrm{pdf}(x),mathrm{d}x \ &quadquadquadquadquadquadquadquad,, =frac{1}{N}overset{N}{underset{i=1}{sum}}int_{Omega} fleft(xright),mathrm{d}x\ &quadquadquadquadquadquadquadquad,, =F \ &thereforetext{$hat{F}_n$ 是 $F$ 的無偏估計} end{align} \begin{align} &text{方差}, Dleft(hat{F}_nright) = Dleft[frac{1}{N}overset{N}{underset{i=1}{sum}}frac{fleft(x_iright)}{mathrm{pdf}left(x_iright)}right] \ &quadquadquadquadquad,, = frac{1}{N^2}overset{N}{underset{i=1}{sum}} Dleft[frac{fleft(x_iright)}{mathrm{pdf}left(x_iright)}right] \ &quadquadquadquadquad,,= frac{1}{N} Dleft[frac{fleft(xright)}{mathrm{pdf}left(xright)}right] \ &quadquadquadquadquad,,= frac{1}{N} left{ int_{Omega} left[frac{fleft(xright)}{mathrm{pdf}left(xright)}right]^2 mathrm{pdf}(x),mathrm{d}x – left[int_{Omega} frac{fleft(xright)}{mathrm{pdf}left(xright)} mathrm{pdf}(x),mathrm{d}xright]^2 right} \ &quadquadquadquadquad,,= frac{1}{N} left{ int_{Omega} frac{left[fleft(xright)right]^2}{mathrm{pdf}left(xright)} ,mathrm{d}x – left[int_{Omega} fleft(xright),mathrm{d}xright]^2 right} end{align} \
為瞭讓蒙特卡羅方法估計 hat{F}_n 更接近 F,算法需要努力地減小方差 Dleft(hat{F}_nright)。
- 一種簡單直接的方式是增加抽樣次數。 因為 Dleft(hat{F}_nright) 與樣本容量 N 成反比,所以 N 越大,則方差越小,估計的效果越好。
- 另一種方式是讓真實概率更高的樣本更有可能被抽樣到,即采用重要抽樣法。 因為 Dleft(hat{F}_nright) 與樣本的真實概率 mathrm{pdf}(x) 成反比,所以如果隨機變量 X 的概率密度函數 mathrm{pdf}(x) 與被積函數 f(x) 越接近於成正比,那麼算法在 f(x) 數值較高的積分域局部進行抽樣的概率會更高,則 mathrm{pdf}(x) 越能反應 f(x) 的實際特征,於是產生的子樣 x_1,,x_2,,cdots,,x_n 也會更符合 f(x) 的特征,使得蒙特卡羅估計的方差越小,估計的效果也就越好。
- 在光線追蹤中,因為在算法執行前已經知道瞭景物表面的材質(一般是 BRDF)和場景中的光源分佈等信息,所以每當光線與物體表面相交於一點而需要根據光線出射方向推斷入射方向時,可以根據這些先驗信息構造概率分佈,用於生成光線傳播方向的樣本。
不過,樣本容量太大會降低算法的效率,而上述重要抽樣光線方向實際上隻讓光路在局部的概率更高,而對於生成的一整條從光源到視點的光路,抽樣的效果就沒有那麼好瞭,但是直接重要抽樣一整條光路又比較困難。此時,一種更好的方法是進行梅特羅波利斯抽樣(Metropolis sampling)。
2 馬爾可夫鏈蒙特卡羅(Markov Chain Monte Carlo,MCMC)
簡單地說,對於一系列隨機變量 X^{(1)},,X^{(2)},,cdots,如果其中任一變量 X^{(t+1)} 的概率分佈僅由前一個變量 X^{(t)} 決定,而與更早的 X^{(t-1)},,cdots,,X^{(0)} 無關,即 mathrm{pdf}left(X^{(t+1)} = xright) = tleft(x mid X^{(t)}right) ,則它們構成瞭一條馬爾可夫鏈(Markov chain);
- 函數 tleft(x mid X^{(t)}right) 定義瞭馬爾可夫鏈的轉移概率(transition probability);
- 如果 X^{(t)} 和 X^{(t+1)} 均服從概率分佈 pi(x),即 pi(x) 乘以由轉移概率組成的轉移矩陣後仍是它本身,則 pi(x) 是該馬爾可夫鏈的平穩分佈(stationary distribution);
- 如果馬爾可夫鏈是不可約的,它的所有狀態是正常返的、非周期的,則 underset{ttoinfty}{lim} X^{(t)} 的分佈會收斂到一個唯一的平穩分佈;
- 如果一個馬爾可夫鏈的狀態空間僅有一個連通類(對應的有向圖是強連通圖),則稱該馬爾可夫鏈是不可約的(irreducible);
- 如果兩次訪問馬爾可夫鏈某個狀態時間間隔的期望是正無窮,則稱該狀態是零常返的(null recurrent),否則是正常返的(positive recurrent);
- 如果馬爾可夫鏈某個狀態的常返周期(返回該狀態所需的最小步數)大於 1 ,則稱該狀態具有周期性(periodicity),否則具有非周期性(aperiodicity);
- 馬爾可夫鏈的平穩分佈僅由它的轉移概率決定,而與初始狀態無關;
給定非負函數 f:Omega to mathrm{R}^{+},馬爾可夫鏈蒙特卡羅(Markov Chain Monte Carlo,MCMC)的基本思想是首先構造一條馬爾可夫鏈,使其平穩分佈的概率密度函數是 f ,並通過這條馬爾可夫鏈產生樣本,然後使用馬爾可夫鏈達到穩態分佈時的那些有效樣本進行蒙特卡羅積分。
- 一般,MCMC 通過梅特羅波利斯抽樣(Metropolis sampling)構建馬爾可夫鏈。
2.1 Metropolis Sampling(梅特羅波利斯抽樣)
給定狀態空間 Omega、非負函數 f:Omega to mathrm{R}^{+} 和初始樣本 x_1 in Omega,使用梅特羅波利斯抽樣(Metropolis sampling)構建馬爾可夫鏈的核心思想是,從當前狀態 x_i 隨機突變,得到下一個可能的樣本 x^{prime},然後判斷這個突變的嘗試是否被接受,如果被接受瞭,則確定 x_{i+1} = x^{prime},否則 x_{i+1} = x_i,具體流程如下。
begin{align} & text{初始化 $x_1$;} \ &text{for $i = 1$ to $n$, do:}\ &quadquad text{基於 $x_{i}$,根據試驗轉移函數 $Tleft(x_{i} to x^{prime}right)$ 生成突變樣本 $x^{prime}$;} \ &quadquad text{計算接受概率 $aleft(x_{i} to x^{prime}right)$;} \ &quadquad text{抽樣均勻分佈 $r sim Uleft[0,,1right]$;} \ &quadquad text{如果 $r < aleft(x_{i} to x^{prime}right)$,則 }x_{i+1} = x^{prime} text{,否則 $x_{i+1} = x_{i}$;} end{align} \
- 試驗轉移函數(tentative transition function) Tleft(x_{i} to x^{prime} right) 可以是任意函數,隻要能表示從 x_{i} 突變到 x^{prime} 的概率即可;
- 更好的試驗轉移函數能夠讓突變樣本被接受的概率更高;
- 接受概率(acceptance probability) aleft(x_{i} to x^{prime} right) 保證瞭馬爾可夫鏈的穩態分佈是 f,即保證瞭 x_i sim f。
- 不需要滿足條件 int_{Omega} f(x) mathrm{d}x = 1,因為當定積分不為 1 時,可以認為穩態分佈是 f cdot frac{1}{int_{Omega}f,mathrm{d}x},與 f 成正比;
2.2 Metropolis-Hastings Algorithm(梅特羅波利斯-黑斯廷斯算法)
梅特羅波利斯-黑斯廷斯算法(Metropolis-Hastings algorithm)通過精心設計的接受概率,提高瞭抽樣構建馬爾可夫鏈的效率。
begin{align} &because text{對於馬爾可夫鏈的平穩分佈,}\ &quad,,text{在兩個相鄰狀態 $bar{x}$、$bar{y}$ 之間轉移的概率是相等的;} \ &therefore fleft( bar{x} right) Tleft(bar{x} to bar{y}right) aleft(bar{x} to bar{y}right) = fleft( bar{y} right) Tleft(bar{y} to bar{x}right) aleft(bar{y} to bar{x}right) \ \ &text{不妨令 $aleft(bar{y} to bar{x}right)=1$,即基於 $bar{y}$ 的、轉移到 $bar{x}$ 的突變樣本總是會被接受} \ &therefore fleft( bar{x} right) Tleft(bar{x} to bar{y}right) aleft(bar{x} to bar{y}right) = fleft( bar{y} right) Tleft(bar{y} to bar{x}right) \ &therefore aleft(bar{x} to bar{y}right) = frac{ fleft( bar{y} right) Tleft(bar{y} to bar{x}right)}{ fleft( bar{x} right) Tleft(bar{x} to bar{y}right)} \ &text{又 }because text{作為概率,} aleft(bar{x} to bar{y}right) le 1 \ &therefore aleft(bar{x} to bar{y}right) = minleft{1 ,, frac{ fleft( bar{y} right) Tleft(bar{y} to bar{x}right)}{ fleft( bar{x} right) Tleft(bar{x} to bar{y}right)} right} \ \ \ &text{當 } frac{ fleft( bar{y} right) Tleft(bar{y} to bar{x}right)}{ fleft( bar{x} right) Tleft(bar{x} to bar{y}right)} > 1 text{時,} left{begin{array}{}aleft(bar{x} to bar{y}right) = 1 \ aleft(bar{y} to bar{x}right) = frac{ fleft( bar{x} right) Tleft(bar{x} to bar{y}right)}{ fleft( bar{y} right) Tleft(bar{y} to bar{x}right)} end{array}right.text{,} \ &text{此時則是基於 $bar{x}$ 的、轉移到 $bar{y}$ 的突變樣本總是會被接受} end{align} \
於是,梅特羅波利斯-黑斯廷斯抽樣(Metropolis-Hastings sampling)的過程如下:
begin{align} & text{初始化 $x_1$;} \ &text{for $i = 1$ to $n$, do:}\ &quadquad text{基於 $x_{i}$,根據試驗轉移函數 $Tleft(x_{i} to x^{prime}right)$ 生成突變樣本 $x^{prime}$;} \ &quadquad text{計算接受概率 $aleft(x_{i} to x^{prime}right) = minleft{1 ,, frac{ fleft( x^{prime} right) Tleft(x^{prime} to x_{i}right)}{ fleft( x_{i} right) Tleft(x_{i} to x^{prime}right)} right}$;} \ &quadquad text{抽樣均勻分佈 $r sim Uleft[0,,1right]$;} \ &quadquad text{如果 $r < aleft(x_{i} to x^{prime}right)$,則 }x_{i+1} = x^{prime}text{,否則 $x_{i+1} = x_{i}$;} end{align} \
- 隻要可以估計 f 的函數值,就能通過梅特羅波利斯抽樣高效地生成一系列的樣本;
- 不過,抽樣得到的樣本序列中相鄰的樣本通常是相關的,於是當樣本容量較小時,無法保證樣本會均勻地覆蓋樣本空間;
- 另外,雖然平穩分佈與初始狀態無關,但是因為初始樣本 x_o 並不是從 f 的分佈中得到的,所以這會導致啟動偏差(start-up bias)。
- 一種緩解的方法是丟棄那些開始時生成的樣本 x_{0},,cdots,, x_{t-1},隻用後續生成的高質量樣本x^{prime},,x_{t+1},,cdots,但是這樣做提高瞭算法的開銷,而且還需要額外決定當算法運行瞭多久之後,抽樣獲得樣本的質量才比較好。
- 另一種方法是用一種其它的抽樣方法來生成初始樣本 x_0。
3 MLT(Metropolis Light Transport,梅特羅波利斯光傳輸)
3.1 Light Transport Equation(光傳輸方程)
不妨認為光能在場景中的物體表面之間輻射傳輸,而環境背景也可以當作是一個巨大的、包含瞭場景中所有物體的天空球,所有景物表面構成瞭集合 mathcal{M},於是對於景物表面一點 p,它向任一點 p^{primeprime} 傳輸的輻射亮度 Lleft(p to p^{primeprime}right) 可以表示為如下被稱為繪制方程的公式:
Lleft(p to p^{primeprime}right) = L_eleft(p to p^{primeprime} right) + int _{mathcal{M}} L left( p^{prime} to p right) , f_s (p^{prime} to p to p^{primeprime}) , mathrm{G}left(p^{prime} leftrightarrow pright) ,mathrm{d} Aleft(p^{prime}right) \
- Lleft(p^{prime} to p right) 是某個表面上一點 p^{prime} 向 p 傳輸的輻射亮度(radiance);
- f_s (p^{prime} to p to p^{primeprime}) 是雙向散射分佈函數(bidirectional scattering distribution function,BSDF),描述瞭沿空間任一方向入射到表面的光線經過物體表面的散射朝空間其他方向傳輸的輻射亮度分佈;
- Gleft(p^{prime} leftrightarrow pright) = frac{costheta costheta^{prime}}{left|p'-pright|^2}mathrm{v}left(p^{prime} leftrightarrow pright):
- theta 和 theta^{prime} 分別是 p^{prime} 與 p 的連線和 p 所在表面法線及 p^{prime} 所在表面法線的夾角;
- left|p^{prime} – p right|^2 是 p 與 p^{prime} 之間距離的平方;
- mathrm{v}left(p^{prime} leftrightarrow pright)=left{begin{array}{} 1 & ptext{ 與 }p^{prime}text{之間無遮擋,可見}\0 & text{其它}end{array}right.
- mathrm{d}Aleft(p^{prime}right) 是物體表面的點 p^{prime} 處的面元;
設所有景物表面 mathcal{M} 中,發光物體的表面構成瞭集合 mathcal{M}_e,則有:
begin{align} &forall ,p,, p^{prime},,p^{primeprime} in mathcal{M} \ &quadquad Lleft(p to p^{primeprime}right) = L_eleft(p to p^{primeprime} right) + int _{mathcal{M}} L left( p^{prime} to p right) , f_s (p^{prime} to p to p^{primeprime}) , mathrm{G}left(p^{prime} leftrightarrow pright) ,mathrm{d} Aleft(p^{prime}right) \ &quadquadquadquadquadquadquad, = L_eleft(p to p^{prime} right) quadquadquad color{Green}{自身發光} \ &quadquadquadquadquadquadquadquad, + int_{mathcal{M}_e} L left( p_0 to p right) , f_s (p_0 to p to p^{primeprime}) , mathrm{G}left(p_0 leftrightarrow pright) ,mathrm{d} Aleft(p_0right) quadquadquad color{Green}{直接光照} \ &quadquadquadquadquadquadquadquad, + int_{mathcal{M}}int_{mathcal{M}_e} L left( p_0 to p_1 right) , f_s (p_0 to p_1 to p) , mathrm{G}left(p_0 leftrightarrow p_1right), f_s (p_1 to p to p^{primeprime}) , mathrm{G}left(p_1 leftrightarrow pright) ,mathrm{d} Aleft(p_0right) ,mathrm{d} Aleft(p_1right) quadquadquad color{Green}{間接光照,散射一次} \ &quadquadquadquadquadquadquadquad, + cdots quadquadquad color{Green}{間接光照,散射多次} \ end{align} \
於是,繪制圖像中第 i 個像素 m_i 對應的數值:
m_i = int_{Omega} w_i(x) F(x) ,mathrm{d}x \
- x 是一條從光源上一點 p_0 出發、進入視點 p_m 的光路 p_0 tocdots to p_{m-1} to p_m,其中 p_{m-1} to p_{m} 進入視點,對應於從視點出發溯源光線抽樣像素時生成的原初光線(primary ray);
- Omega 是像素 m_j 對應的所有光路構成的集合,它包括直接與光源上一點建立的光路 p_0 to p_m,直接光照對應的光路 p_0 to p_1 to p_m,間接光照對應的光路 p_0 to p_1 to cdots to p_m;
- F(x) 是光路 x 向像素 m_i 貢獻的輻射亮度;
- w_i(x) 是重建像素 m_i 的濾波函數(filter function);
3.2 MLT 算法流程
假設抽樣得到瞭 N 條光路及相應的概率,則可以使用蒙特卡羅方法估計像素 m_j 的數值:
begin{align} m_i approx frac{1}{N}sum_{j = 1}^{N} frac{w_ileft(x_jright) Fleft(x_jright)}{mathrm{pdf}left(x_jright)} end{align} \
其中, F(x) 是光路 x 向相應像素貢獻的輻射亮度,w_i(x) 是重建像素 m_i 的濾波函數(filter function),mathrm{pdf}(x) 是傳播的概率。
一般如果一條光路貢獻的輻射亮度越大,則相應的概率應該越大。不過輻射亮度可能是以紅綠藍三色光分量表示的,此時可以用相應的光亮度(luminance)I(x) 來推導概率。
mathrm{pdf}(x) = frac{I(x)}{int_{Omega} I(x) ,mathrm{d}x} \
- 輻射亮度、光亮度等的介紹可見本系列《真實感繪制中,光的能量與顏色——輻射度量學、光度學和色度學》
由上式可知,為瞭計算某條光路的概率,必須事先瞭解全局的光亮度信息 int_{Omega} I(x) ,mathrm{d}x。一個簡單的做法是在抽樣光路前先執行一次雙向路徑跟蹤,大概地估計一下全局光亮度。
- 此雙向路徑跟蹤中的多重重要采樣可以使用最大啟發式(maximum heuristic)方法來連接子光路,不需要跟蹤每一根 shadow ray,也避免瞭構造過長光路的傾向;
初始的 MLT(Metropolis Light Transport,梅特羅波利斯光傳輸)算法的基本流程如下:
begin{align} &text{生成一批光路 $left{xright}$ 作為種子(seed),生成的方法可以是雙向路徑跟蹤;} \ &text{根據種子光路的光亮度 $I(x)$,大概地估計一下全局光亮度 $int I(x)mathrm{d}x$;} \ &text{根據種子光路的光亮度 $I(x)$,選取馬爾可夫鏈的初始狀態 $x_0$;} \ \ \ &text{for $i = 1$ to $n$, do:}\ &quadquad text{基於 $x_{i}$,根據試驗轉移函數 $Tleft(x_{i} to x^{prime}right)$ 生成突變樣本 $x^{prime}$;} \ &quadquad text{計算接受概率 $aleft(x_{i} to x^{prime}right) = minleft{1 ,, frac{ Ileft( x^{prime} right) Tleft(x^{prime} to x_{i}right)}{ Ileft( x_{i} right) Tleft(x_{i} to x^{prime}right)} right}$;} \ \ &quadquad text{累計估計光路 $x_{i}$ 對相應像素 $m_i$ 貢獻的數學期望,} \ &quadquad m_i mathrel{+}= frac{1}{n}cdot frac{w_ileft(x_iright)F(x_i)}{mathrm{pdf}(x_i)} cdot left[1 – aleft(x_{i} to x^{prime}right)right] \ \ &quadquad text{累計估計光路 $x^{prime}$ 對相應像素 $m^{prime}$ 貢獻的數學期望,} \ &quadquad m^{prime} mathrel{+}= frac{1}{n}cdot frac{w^{prime}left(x^{prime}right)F(x^{prime})}{mathrm{pdf}(x^{prime})} cdot aleft(x_{i} to x^{prime}right) \ \ &quadquad text{抽樣均勻分佈 $r sim Uleft[0,,1right]$;} \ &quadquad text{如果 $r < aleft(x_{i-1} to x^{prime}right)$,則 }x_{i+1} = x^{prime}text{,否則 $x_{i+1} = x_{i}$;} end{align} \
- 之所以生成一批種子光路,而不是直接生成作為初始狀態的光路 x_0,是因為初始生成光路貢獻的光亮度很可能為 0。為瞭讓算法更穩健,MLT 會首先生成一批種子光路,然後從中重新抽樣出作為初始狀態的光路 x_0;
- MLT 算法難以估計收斂率,而且不保證每個像素的收斂率相等,所以算法繪制出的圖像常可能看起來比較“臟”,可能在某些局部有比較多的噪點,而在其它局部噪點較少。
3.3 光路突變策略(Mutation Strategy)
MLT 涉及到對當前光路樣本的突變(mutation),用於生成下一條可能的光路。一個好的突變策略應該滿足如下兩個主要條件:
- 較高的接收概率; 如果突變策略給出候選光路的接受概率較低,則很可能會一直停留在某個狀態 bar{x},得到 bar{x},,bar{x},,cdots,,bar{x} 這樣的、單個狀態不斷重復的序列,於是算法抽樣的光路總是同一條,這會使算法估計的方差較大,生成圖像有較多的噪點;
- 可以大幅度地修改光路,以遍歷光路空間; 即使突變策略給出候選光路的接受概率較高,生成的候選光路也可能因為突變幅度的保守而限制於局部,使得光路樣本之間的關聯性較高。 例如,假設場景中的光源被擋住瞭,隻能通過兩個有一定距離的孔洞來照亮場景,算法成功地構建瞭一條光路,通過瞭其中一個孔洞,那麼如果不允許對光路做大幅度地修改,就很難試探出通過另一個孔洞的光路瞭。
另外,突變的開銷最好不要太大,還有一些其它的標準。
目前,主要的光路突變策略可以粗略地分為兩類:
- 在路徑空間(path space)突變光路樣本,Veach 和 Guibas 提出 MLT 算法時采樣的便是該策略。 Veach 和 Guibas 的方法是以一定的概率直接增刪挪當前光路中的景物表面點,根據頂點之間的可見性判斷是否構成瞭成功一條新的光路。
在光路空間直接修改光路示意 原圖源:[Kelemen et al. 2002]
- 在原初樣本空間(primary sample space)突變光路樣本,最初由 Kelemen 等人提出。 Kelemen 等人的方法的基本思想是,因為初始路徑 x_0 的生成過程是每當光線與景物表面相交時,根據表面材質(一般是 BRDF)或光源分佈進行重要抽樣生成光線方向,並可能根據俄羅斯輪盤賭算法決定是否繼續跟蹤光線,而這些步驟的結果都由隨機數的值來決定,所以每條特定的光路 x_o = p_0 to p_1 tocdotsto p_m,實際上都對應於一條唯一的隨機數序列 left(u_1,,u_2,,cdots,,u_nright),而重要抽樣法構建瞭一個從隨機數序列構成的原初樣本空間到光路空間的映射。於是,可以通過修改隨機數序列,實現對光路的突變操作。
在原初樣本空間間接修改光路示意 圖源:[Kelemen et al. 2002]
3.4 MLT 算法的發展
在 1997 年 Veach 和 Guibas 發表論文《Metropolis light transport》,提出 MLT 算法時,采樣的方法在路徑空間(path space)進行光路樣本突變,後續的研究例如:
- Jakob W, Marschner S. Manifold exploration: A markov chain monte carlo technique for rendering scenes with difficult specular transport[J]. ACM Transactions on Graphics (TOG), 2012, 31(4): 1-13.
在 2002 年,Kelemen 等人發表論文《 A simple and robust mutation strategy for the metropolis light transport algorithm》,提出可以在生成光路所用隨機數構成的原初樣本空間(primary sample space)內擾動隨機數序列,間接實現光路樣本的突變,後續的研究例如:
- Hachisuka T, Kaplanyan A S, Dachsbacher C. Multiplexed metropolis light transport[J]. ACM Transactions on Graphics (TOG), 2014, 33(4): 1-10.
參考資料
- 《高級計算機圖形學——真實感圖像合成》2020 年冬學期,王銳;
- Veach E, Guibas L J. Metropolis light transport[C]//Proceedings of the 24th annual conference on Computer graphics and interactive techniques. 1997: 65-76.
- Kelemen C, Szirmay‐Kalos L, Antal G, et al. A simple and robust mutation strategy for the metropolis light transport algorithm[C]//Computer Graphics Forum. Oxford, UK: Blackwell Publishing, Inc, 2002, 21(3): 531-540.
- 馬爾可夫鏈_百度百科 (baidu.com)
-
扫码下载安卓APP
-
微信扫一扫关注我们微信扫一扫打开小程序手Q扫一扫打开小程序
-
返回顶部