《Physically-Based Shading Models in Film and Game Production》中說:「D()的值不侷限於0到1,能夠任意大」,這句話使我比較好奇D()的確切含義。blog
如下引自《Physically-Based Shading Models in Film and Game Production》:io
(http://renderwonk.com/publications/s2010-shading-course/hoffman/s2010_physically_based_shading_hoffman_a_notes.pdf)pdf
而後在pbrt中找到了關於D的一些描述:sed
如下摘自pbrt p537~538:im
根據call
能夠領會出D的確切含義。統計
能夠把D看做是一個畫在半球上的分佈表,它是這樣製做作出來的:db
取單位面積宏表面,統計其上的微表面面積分布狀況,img
將單位半球面分割成無限多個面積無限小的球面元,di
設中心方向爲w的球面元爲s(w),其面積爲ds,
s(w)覆蓋包含w在內的一簇方向,
設以這簇方向爲法向的全部微表面面積之和爲A(w),
則A(w)在s(w)上的密度爲A(w)/ds。
將此密度值填寫到球面元s(w)上,半球面表格D就製做成功了。
普通表格都是畫在平面紙上,而此表格畫面半球面上。
根據上面表格D的製做過程,即可很清楚地看出分佈D的確切含義:
D(w)表示:單位宏表面上,法線落在方向爲w的微分立體角dw內的微表面總面積與dw的商。
所以D(w)*dw表示單位宏表面上法線落在微分立體角dw內的微表面總面積。
設theta爲w與宏表面法線的夾角,根據幾何關係易知法向爲w的微表面與宏表面之間的夾角也爲theta。
因而D(w)*dw*cos(theta)表示:單位宏表面上法線落在微分立體角dw內的微表面總面積在宏表面上的投影。
因爲各方向的微表面在宏表面上投影總和剛好覆蓋宏表面,因此
D(w)*dw*cos(theta)在半球上的積分應等於宏表面的面積,因爲這裏咱們取的是單位宏表面,因此面積爲1,即: