光线的反射,实质是光子在传输过程中的能量转换,传统的Blinn-Phong模型仅仅模拟了这个过程,渲染方程则通过数学模型量化这个反射过程,从而获取基于物理正确的渲染结果。要想理解该方程,则需要具备辐射度量学(Radiometry)的基本知识。
这里,我们认为光的传播是瞬时的,忽略时间的作用;仅考虑光线在传输过程中的粒子特性,而忽略其光波的特性;仅考虑弹性散射,光子碰撞时保持各自的能量,不存在能量不同的光子间能量传递。
能量的单位是焦耳,一个光子对应的能量是:
这里,
是普朗克常量,
是光在介质中的速度,
是该光子对应的波长。
在单位体中,会有一定数量
的光子,假设它们的波长相同,累加所有光子的能量总和则为radiant energy,辐射能:
这些光子都会高速运动,我们通常需要衡量在一定时间内有多少光子穿过这个单位体,称为radiant flux,辐射功率,单位是瓦特W:
考虑到空间,这里还有一个solid angle的概念,称为立体角。立体角可以当作三维空间的弧度来理解,定义是表面积和半径平方的比例:
如上图,则对应一个球对应的立体角,这也解释了全景角为何是720°:
有了如上的定义,我们则可以描述这样的一个过程,当光源向四面八方辐射能量(radiant Intensity),然后在任何一个表面,会接收到的能量(irradiance),以及在这个传播过程中光线的能量(radiance)
图1
Radiant intensity
Radiant intensity是描述一个点光源的能量相对于立体角的分布情况:
这样,如下的一个光源,radiant flux是它的能量,单位是瓦,比如我们买灯泡时,都会关注这个灯泡的功率,瓦,而radiant intensity则对应该光源在某个方向ω上的能量,假设在任意方向上能量均匀分布,则有如下结论:
Irradiance
radiant intensity是单位方向上的能量,而irradiance则对应入射到单位表面积下的能量(对应图1中间):
因此,在类似场景下,irradiance对应的变化如下:
可见,随着半径的增加,立体角并没有变化,intensity不变,而irradiance则随着半径平方(面积)而衰减。
Radiance
Radiance对应能量在单位立体角且在单位面积上的分布。Radiance用于描述光线传输中的能量分布,我们确定一个微表面,再确定一个方向,这样可以描述对应的光线携带的能量。:
这样,我们可以通过radiance和intensity,以及irradiance之间建立关联:
Exiting radiance则相当于一个微表面dA下对应的intensity(方向ω上射出的能量):
Incident radiance相当于仅考虑从某一个方向ω射入的irradiance(
上的能量):
同理,不难理解radiance和irradiance之间的关系,当我们考虑从各个方向进来的radiance,对其积分求和,最终得到整个
表面的irradiance:
这里,
是该微表面对应的半球。基于这些概念,下一篇和大家介绍渲染方程的理解、推导过程。
参考资料
P14~P15 Games101
Path tracing in Production Siggraph 2019
light transport, Advanced Graphics, GMT, Utrecht University