《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,即: