1. 程式人生 > >微表面分布函數(Microfacet Distribution Function)確切含義

微表面分布函數(Microfacet Distribution Function)確切含義

fma 含義 無限 ati 技術分享 幾何 log function 技術

《Physically-Based Shading Models in Film and Game Production》中說:“D()的值不局限於0到1,可以任意大”,這句話使我比較好奇D()的確切含義。

以下引自《Physically-Based Shading Models in Film and Game Production》:

(http://renderwonk.com/publications/s2010-shading-course/hoffman/s2010_physically_based_shading_hoffman_a_notes.pdf)

技術分享

然後在pbrt中找到了關於D的一些描述:

以下摘自pbrt p537~538:

技術分享

技術分享

根據

技術分享

可以領會出D的確切含義。

可以把D看作是一個畫在半球上的分布表,它是這樣制作做出來的:

取單位面積宏表面,統計其上的微表面面積分布情況,

將單位半球面分割成無限多個面積無限小的球面元,

設中心方向為w的球面元為s(w),其面積為ds,

s(w)覆蓋包含w在內的一簇方向,

設以這簇方向為法向的所有微表面面積之和為A(w),

則A(w)在s(w)上的密度為A(w)/ds。

將此密度值填寫到球面元s(w)上,半球面表格D就制作成功了。

普通表格都是畫在平面紙上,而此表格畫面半球面上。

技術分享

根據上面表格D的制作過程,便可很清楚地看出分布D的確切含義:

D(w)表示:單位宏表面上,法線落在方向為w的單位立體角內的微表面總面積。

因此D(w)*dw表示單位宏表面上法線落在微分立體角dw內的微表面總面積。

設theta為w與宏表面法線的夾角,根據幾何關系易知法向為w的微表面與宏表面之間的夾角也為theta。

於是D(w)*dw*cos(theta)表示:單位宏表面上法線落在微分立體角dw內的微表面總面積在宏表面上的投影。

由於各方向的微表面在宏表面上投影總和恰好覆蓋宏表面,所以

D(w)*dw*cos(theta)在半球上的積分應等於宏表面的面積,由於這裏我們取的是單位宏表面,所以面積為1,即:

技術分享

微表面分布函數(Microfacet Distribution Function)確切含義