首页 > 代码库 > 精确光源(Punctual Light Sources)

精确光源(Punctual Light Sources)

《Physically-Based Shading Models in Film and Game Production》(SIGGRAPH 2010 Course Notes)

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

Punctual Light Sources一段若干注解:

由于物理渲染基于辐射理论,而辐射理论中没有点的概念(只有面元间的能量传输),所以经典光源(point light, directional light, spot light)需要用“面元”的语言来重新定义。

于是就有了精确光源(Punctual Light Source)的概念。

精确光源就是如下图所示的一个球面面元(面光源),其光锥张角技术分享无限小,且光锥内方向为l的光线的光强为Ltiny(l)。先不考虑距离平方衰减,虽然这不科学,那也先不考虑。

技术分享

接下来问题就是,怎么定义此光源的颜色?

让此光源垂直照射一反射率为1的lambert表面,则反射亮度为

技术分享

注:

1,因为lambert表面的BRDF为Albedo/PI,又Albedo=1,所以BRDF为1/PI。

2,dot(n,l)在式中消失是因为:当技术分享->0时l->lc,又由于垂直入射lc=n,所以dot(n,l)->1。

就将技术分享定义为光源的颜色clight,于是得

技术分享

至此方向为lc,颜色为clight的精确光源定义完毕。

定义完,我们就开始用。

于是问题来了:方向为lc,颜色为clight的精确光源产生的效果到底啥样?

即:如果用此光源照射一个BRDF为f(l,v)的表面,反射亮度是多少?

技术分享

计算如下:

技术分享

这样就得到了精确光源的反射亮度公式:技术分享

最后一个问题是如何用精确光源来实现point light, directional light和spot light:

技术分享

 

精确光源(Punctual Light Sources)