PBRT-V3体渲染笔记
一 基本原理整理
影響radiance在參與介質(zhì)分布的三個過程:
Absortion,Emission,Scattering(分為out-scattering和in-scattering)。
Absortion
吸收系數(shù)為σa,入射radiance Li經(jīng)過距離dt,吸收后的出射radiance Lo的關系如下:
? ? ? (1)
對上式解微分方程得到一個值,表示經(jīng)過d距離后的剩余比例:
? ? ?(2)
Emission
這個沒什么好說的,直接上公式:
Out-Scattering
out-scattering也是radiance衰減的一個表現(xiàn),散射系數(shù)為σt,方程如下:
? ? ?(3)
該方程和方程(1)完全一樣,除了系數(shù)σ,因此Absortion和Out-Scattering合并可以得到一個衰減系數(shù)σt。
所以整體的transmittance的微分方程解為:
? ? (4)
其中d = |p - p'|。
Transmittance的意義是:radiance經(jīng)過距離d后,得到的fraction。
公式(4)中的指數(shù)部分的負數(shù),叫兩點之間的optical thickness:
In-scattering
In-scattering能增加出射的radiance,那么在確定一個出射方向時,有多少radiance能散射到出射方向呢?
這里引入一個phase function,描述一個點在某個方向的出射分布,可以理解成是每個出射方向的概率密度函數(shù),假設出射方向是ω,入射方向是ω',那么有如下的公式:
in-scattering得到的radiance是:
? ? ? ? (5)
假設p點上的自發(fā)光是Le,那么p點增加的radiance可以表示如下:
? ? ?(6)
傳輸方程
傳輸方程描述的某個點延某條路徑的radiance。
現(xiàn)在只考慮從一個surface的p0點反射出來的radiance的某一點p的傳輸方程:
公式如下:
? ? ? ? ? ? (7)
公式(7)的第二項表示路徑里所有點的In-Scattering貢獻。
回顧LTE方程,需要把bsdf函數(shù),積分域,幾何函數(shù)全部做一個針對參與介質(zhì)的修改。
二 實現(xiàn)
采樣t
提到采樣,那就要問,到底我們要采樣什么?
和普通的LTE不一樣,LTE采樣的是BSDF的方向,而帶參與介質(zhì)的渲染,還需要采樣路徑方向上的點,用于估計該路徑的radiance貢獻。
這里有個先決條件,就是射線是一定會和surface相交的,即射線的tMax一定不是無窮大,該射線會經(jīng)過參與介質(zhì)medium。
假設surface的點是p,射線方向是-ω,那么射線方向的點的概率是pt(t),改點的位置是p + tω。
那么取得surface上的頂點的概率是:
? ? ? ? ? ? (8)
有了概率,就可以對貢獻做估計,β是估計出來的throughput。
surface上一點的throughput估計:
medium上一點的throughput估計:
這里為什么要加上σs?Out-Scattering的衰減要考慮在內(nèi)。
到目前為止,我們已經(jīng)根據(jù)采樣點和該點的概率密度估計出Throughput,接下來我們還需要估計光照的radiance。
也是分兩種情況:
如果采樣點是surface,直接采樣bsdf進行估計。
如果采樣點是medium,那么我們要估計的是公式(7)的第二項的積分(自發(fā)光忽略):
根據(jù)重要性采樣,取一個pdf形狀接近Tr或Ls的,pbrt中用Tr作為pdf的分布。
反函數(shù)法求t:
當t < tMax的時候,那么pdf函數(shù)是:
當t > tMax時,說明采樣到的點是surface上的交點,這時的pdf是:
由于pdf是一個float值,而σt,Tr都是Spetrum,所以需要隨機采樣一個Spetrum的channel,然后按上述反函數(shù)法求t,
然后在把channel的pdf加取來取平均值。
接下來就是要采樣Li了,類似bsdf,如果是介質(zhì)中一點,通過phase函數(shù)采樣入射光。
采樣Phase function
均勻介質(zhì)的phase函數(shù)用的是Henyey–Greenstein,公式如下:
對phase function做積分:
所以概率密度函數(shù)是:
根據(jù)概率密度函數(shù)的轉(zhuǎn)換:p(θ, φ) = sinθp(ω)
邊際概率密度函數(shù)求p(θ)
條件概率公式:
p(φ | θ) = p(θ, φ) / p(θ) = 1 / 2π
反函數(shù)求φ:φ = 2πξ1。
下面求p(θ)的CDF,過程很復雜,需要借工具來求,https://www.symbolab.com/solver/calculus-calculator
最后可以得到pbrt的結(jié)論(g ≠ 0):
g = 0時,pHG = 1/4π,概率密度按如下算:
θ的CDF如下:
所以這個時候有:
整個采樣過程完畢。
總結(jié)
以上是生活随笔為你收集整理的PBRT-V3体渲染笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用excel做线性规划
- 下一篇: 雷达人体存在感应器方案,智能物联网感知技