跳转到主要内容
Game Engine Jul 30, 2022 1 tags

L14~16

L14~16

cover

0 引入——辐射度量学概述

  • 在之前讲Blinn-Phong着色模型时,会设置一个数当做光照强度,但是这个数真实的物理意义我们并不甚清楚,我们只是极大简化成一个数
  • 辐射度量学给出了一系列度量方法和单位去定义光照

1 相关概念

1.1 Radiant Energy and Flux (Power)

  • Radiant energy:辐射能量,单位焦耳J,Radiant Flux(Power):单位时间内辐射出的能量,可以表示光的亮度
  • Flux也可以理解为单位时间内通过这个平面的光子的数量
  • 知道了这两个概念我们可以定义出其他物理量

1.2 Radiant Intensity

  • Radiant Intensity:在单位时间内,往每个立体角(Solid Angle)上辐射出的能量

  • 那什么是立体角呢,我们先从平面角入手

  • 定义完立体角,我们接着定义单位立体角 单位立体角的积分可以得到是4π,印证之前的结论

  • 现在回头看Intensity,我们定义一个均匀发光的点光源,积分全部的单位立体角上的Intensity得到能量,单位立体角上的Intensity也是能量除以4π

  • 下面举一下生活中的例子

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正确解释: 在最内部的单位球上,Irradiance(E)=φ/4π,单位面积上接受到的能量就是φ/4π, 而在外部的球面上,Irradiance(E’)=φ/4πr^2在单位面积上接受到的能量就是φ/4πr^2,所以就是r平方的衰减。 所以就可以知道,在这里衰减的并不是Radiant Intensity,而是Irradiance在衰减。 如果从球心以一个立体角画一个锥形,就可以知道,随着球面越来越大,立体角的大小是不变的,而立体角对应单位面积的大小却越来越大, 所以球面越大时,dA越大,Irradiance也就会越小。

1.4 Radiance

  • Radiance是描述 环境中 光的分布 的 基本场量(fundamental field quantity)它主要用来准确描述光线的一些属性准确的光线追踪与radiance关系非常大,渲染就是在计算radiance

1.5 Radiance&Irradiance&Intensity之间的联系与区别

我们把这几个概念进行一定区分和总结

Radiance : Irradiance per solid angle

  • 按照放射能量(Radiance)的解释: Radiance表示 单位面积dA 把它接受到的能量 朝w的方向辐射出的能量。

  • 反过来按照吸收能量(Irradiance)的解释: 从w方向发射来的Radiance 到单位面积dA上 ,所有方向累计,单位面积dA一共接受得到的能量即 Irradiance 也就是 Irradiance 在w这个方向上的分量,就是Radiance Radiance: Radiant Intensity per projected unit area

  • Intensity代表的是所有面积会向某个单位立体角的方向上辐射出的能量,Radiance就代表这个Intensity在某个单位面积dA上的投影/分量 Radiance和Irradiance的区别和联系在图形学上用的很多,我们再总结一下

2 双向反射分布函数(Bidirectional ReflectanceDistribution Function,BRDF)

我们之前说反射 如果从一个地方发出光线打到一个镜子,然后光线会反射到另一个方向去;如果打到漫反射物体,那么往四面八方都会去 我们需要有一个函数来描述这种性质:从某个方向进来,并且反射到某个方向去的能量是多少

反射在我们之前的理解中,是一道光线到达一个表面,然后反射到其他的方向去 这个过程其实也可以看作是从某一个方向来的光线,到达物体表面后,被物体表面所吸收,然后再由物体表面发射到其他方向去 这也就是用到了Radiance和Irradiance来解释反射

  • dE(wi)表示:从w_i方向射来的Radiance在到达反射点时,被吸收转化,然后得到的Irradiance dL(x,w_r)则表示反射点向w_r方向反射出去的Radiance
  • 我们知道反射点要吸收来自某一个方向的Radiance把它变成Irradiance,之后要反射到四面八方的立体角Radiance上 但是我们不知道反射到w_r的方向上的Radiance会有多少能量
  • 所以我们就为此定义一个函数,计算出: 考虑一个微小的面积dA,从某一个微小的立体角dw_i 上接受得到到的Irradiance,会如何被分配到各个立体角上。 其实求得就是一个比例,是什么比例? 这个比例是(对于任何一个立体角上发出去的 Radiance) / (单位面积dA接收到的Irradiance)

这就是BRDF的定义 它会告诉我们如何把表面上收集到的能量以某一种比例放射到其他的方向上去

BRDF能表示从每个入射方向收集到的能量以某种比例反射到每个出射方向上的能量 即某个光线打到物体表面后,往不同方向反射的能量分布。 如果说是镜面反射,那么只有反射方向上会有能量,其他所有方向上都没有能量;如果是漫反射,这个进来的能量会被均等的分布到各个方向上

3 反射方程→渲染方程(The Reflection Equation→The Rendering Euqation)

反射方程(The Reflection Equation)

  • 从上面的分析可以得到dL_r(W_r),是 从w_i角度入射的能量 最后反射到w_r方向上的能量。
  • 而在反射的过程,我们并不是只对单一的,来自某一个方向的能量进行反射,而是要将来自四面八方的能量都收集起来,然后反射到某一个角度上。
  • 所以要得到最终的反射效果,应该是: 通过BRDF计算出:每个方向接受的能量 它反射到w_r方向上的能量是多少 然后把这些能量全部累加起来,得到的就是w_r方向上反射的能量 可以用积分表示 (H的平方表示的积分面积为整个半球面,下面的整个表达式就是反射方程)
  • 在考虑反射方程的时候,我们还要注意到: 反射点接受的能量(Irradiance)并不只是来自于光源,还会来自别的表面反射来的光(Irradiance) 从反射点反射出去的能量(Radiance)也并不只会反射到Camera或者人眼,还会作为Irradiance反射到其他的面上 所以反射方程的定义就成了一个递归的定义,也因此,光线反射的次数不同,得到的最终效果也就不会不同 但是我们目前先不考虑这些,把递归的思考先放在这里,做一个通用化
  • 渲染方程(The Rendering Euqation)

4 深入理解渲染方程 Understanding the rendering equation

我们对渲染方程进行加深理解

  • 我们首先从反射方程来看,假设有一个点光源它的反射光=自发光+入射光×BRDF×入射光与法线的夹角

4.1 全局光照 Global illumination

  • 我们对方程进行简写,把 位置+角度 这两个变量用一个概括,变成u以及v,写成了积分的式子
  • 于是渲染方程被拆解成以光的弹射次数为区分的很多项把光线弹射的次数的项都加起来,也就是得到了全局光照
  • 用渲染方程来理解光栅化,光栅化做的只有自发光以及直接光照

下面我们可以看一下加上不同光线弹射次数对应的效果图

5 概率论回顾 Probability Review

大学里大家都学过概率论,所以就简略写了

  • 离散型随机变量及其分布
  • 离散型随机变量的期望
  • 连续型随机变量的概率密度函数(PDF)与期望
  • 随机变量的函数

6 蒙特卡洛积分 Monte Carlo Integration(渲染方程的实现)

关于学习蒙特卡洛积分,我们首先也分三步走

Related Articles

继续阅读