GAMES101课程学习笔记—Lec 14(2)~16:Ray Tracing(2) BRDF、渲染方程、全局光照、路径追踪
0 引入——辐射度量学概述
- 在之前讲Blinn-Phong着色模型时,会设置一个数当做光照强度,但是这个数真实的物理意义我们并不甚清楚,我们只是极大简化成一个数
Whitted风格的光线追踪不是一个真实的结果
所有的这些都会被辐射度量学解决,这也是路径追踪的基础
- 辐射度量学给出了一系列度量方法和单位去定义光照
它定义了光照在空间中的属性,这在物理上是完全正确的
同时闫老师提供了他学习新东西的方法:从探究为什么学,到这东西是什么,它具体是怎么运作的
1 相关概念
1.1 Radiant Energy and Flux (Power)
- Radiant energy:辐射能量,单位焦耳J,
Radiant Flux(Power):单位时间内辐射出的能量,可以表示光的亮度
- Flux也可以理解为单位时间内通过这个平面的光子的数量
- 知道了这两个概念我们可以定义出其他物理量
以下三个概念简述
Radiant Intensity——光源往四面八方都会辐射能量,我们要定义一个方向性的和能量相关的概念
Irradiance——在物体表面接受到的能量
Radiance——光线在传播中的能量
1.2 Radiant Intensity
- Radiant Intensity:在单位时间内,往每个立体角(Solid Angle)上辐射出的能量
- 那什么是立体角呢,我们先从平面角入手
平面角的定义是以弧长除以半径,并且此时圆的放大缩小并不影响这个角度,平面角最大为2π
扩展到三维,立体角的定义是面积除以半径的平方,根据积分可得立体角最大为4π
- 定义完立体角,我们接着定义单位立体角
用一块单位面积除以半径的平方
这块单位面积我们用球面坐标的θ和φ的变化来定义可以得到
单位立体角的积分可以得到是4π,印证之前的结论
- 现在回头看Intensity,我们定义一个均匀发光的点光源,积分全部的单位立体角上的Intensity得到能量,单位立体角上的Intensity也是能量除以4π
- 下面举一下生活中的例子
标着60w的LED灯,其实是功耗为11w,亮度相当于60w的白炽灯
我们也可以算它的Intensity,假设是均匀发光,用能量lumens除以面积4π得到单位立体角上的Intensity
1.3 Irradiance
Irradiance 定义:在单位时间内,每个单位面积上接受到的光照的能量
即power per unit area
做一下对比,之前的Radiant Intensity是 power per unit solid angle
- 注:这个单位面积必须要和光线垂直,如果不垂直的话要把面积投影到垂直的方向上(图中没有写cos,暂时就一个dA)
类似之前的Biling - Phong里的内容
左图:单位面积和光线垂直,所以直接用Irradiance的计算式即可
中图:面积与光线不垂直,其投影只能接受到三根、一半的光线,所以要×1/2
右图:更普遍的情况,当单位面积与光线不垂直时,要×cos将其投影到垂直的方向上去。
- 上面的Lambert’s余弦定理就解释了地球为什么会出现四季变换
当北半球是夏天时,太阳光直射北半球,北半球的Irradiance更多,也就更热;而当北半球是冬天时,光线与地球的表面有一定的夹角,Irradiance减少,所以冬天就更冷。(如上图地球中黑色虚线处) - 之前提到过,我们是假设能量集中在一个球壳上,随着球壳的增大,光的强度会有一个r平方的衰减;
现在可以用Irradiance正确解释:
在最内部的单位球上, I r r a d i a n c e ( E ) = φ / 4 π Irradiance(E) = φ/4π Irradiance(E)=φ/4π,单位面积上接受到的能量就是 φ / 4 π φ/4π φ/4π,
而在外部的球面上, I r r a d i a n c e ( E ’ ) = φ / 4 π r 2 Irradiance(E’) = φ/4πr^2 Irradiance(E’)=φ/4πr2,,在单位面积上接受到的能量就是 φ / 4 π r 2 φ/4πr^2 φ/4πr2,所以就是r平方的衰减。
所以就可以知道,在这里衰减的并不是Radiant Intensity,而是Irradiance在衰减。
如果从球心以一个立体角画一个锥形,就可以知道,随着球面越来越大,立体角的大小是不变的,而立体角对应单位面积的大小却越来越大,
所以球面越大时,dA越大,Irradiance也就会越小。
1.4 Radiance
- Radiance是描述