GAMES101笔记:BRDF和渲染方程

BRDF : 双向反射分布函数(Bidirectional Reflectance Distribution Function)

描述从某个方向入射的能量反射到不同的方向上的能量的分布。

理解反射

在这里插入图片描述
从能量的角度理解反射。上图中, ω i \omega_i ωi方向入射的光线具有的Radiance,累积在微小面积 d A dA dA上,累积为Irradiance。然后E向各个 ω o \omega_o ωo方向发射出去,计算反射光线的Radiance。

即上图中下面的两个公式:
1)入射的微分irradiance: d E ω i dE\omega_i dEωi是入射的Radiance L ( ω i ) L(\omega_i) L(ωi)乘以微分立体角 d ω i d\omega_i dωi c o s θ i cos\theta_i cosθi
2) 反射的微分Radiance: 是 d L r ( ω r ) dL_r(\omega_r) dLr(ωr)

而BRDF就是各方向反射的Radiance和入射的总的Irradiance的比例。即,在给定的入射方向上,各个反射方向的Radiance分别占总的入射产生的Irradiance的比例。因此是双向反射分布

BRDF定义

在这里插入图片描述
BRDF描述的是如何把一个方向入射的能量反射到各个方向去。
再看一下上面的BRDF公式:

  • 分子部分是某个反射方向 ω r \omega_r ωr的Radiance的微分
  • 分母部分是某个入射方向 ω i \omega_i ωi的Irradiance的微分。由于Irradiance是各个方向的Radiance累积起来的。因此这儿通过考察一个微小的微分立体角 d ω i d\omega_i dωi,这个Irradiance的微分就是入射的Radiance和微分立体角的乘积,以及为了投影受光表面还乘了 c o s θ i cos\theta_i cosθi
    另外Radiance和Irradiance都是针对单位投影面积的。

BRDF定义了不同的材质

BRDF描述了光线和物体是如何作用的。

反射方程 The Reflection Equation

在这里插入图片描述
反射方程计算的是对于某个着色点P的任意一个反射方向 ω r \omega_r ωr的Radiance。方法是将这个着色点接受到的Irradiance的微分,即:
在这里插入图片描述
乘上BRDF,即:
在这里插入图片描述
然后在半球上,针对入射方向 ω i \omega_i ωi进行积分。

BRDF本身就是反射radiance和入射Irradiance的比例,所以这个方程很自然。
如果直接把BRDF的定义式代入到反射方程中,BRDF的分母部分就会和方程内的入射Irradiance微分消掉,得到的就是反射的Irradiance。

我觉得核心是BRDF可以在某个着色模型下去定义好计算好,然后应用到反射方程中计算反射。

挑战:反射方程是递归的

在这里插入图片描述

  • 入射的Radiance不仅仅来自于光源,也可以来自于反射后的光线
  • 入射radiance依赖于其他地方反射过来的radiance

渲染方程 The Rendering Equation

在这里插入图片描述

  • 反射方程只考虑了反射的光,没考虑物体自己会发光
  • 反射方程加上物体自发光的 Radiance 就是渲染方程
  • 方程中所有的方向都是从着色点向外
  • 积分域为半球,写作 Ω + \Omega+ Ω+ H 2 H^2 H2。因为下半球过来的光打在背面不能照亮表面。
  • c o s cos cos项使用点积表示
  • 通过一个方程表示所有的光线传输
  • 所有限制在物体表面上的光线传输都是满足渲染方程

理解渲染方程

一个点光源时

在这里插入图片描述

有很多点光源时

在这里插入图片描述

  • 将入射光加起来

如果是面光源

在这里插入图片描述

  • 面光源是一堆点光源的集合,将面光源上各个点的贡献积分起来
  • 使用积分代替求和

如果是其他物体上反射过来的Radiance

在这里插入图片描述

  • 将反射面当成光源
  • 将反射到 − ω i -\omega_i ωi的Radiance当成入射的Radiance

将渲染方程看做递归的方程

在这里插入图片描述
图中第二个公式是对渲染方程的简写

  • u, v表示两个不同的着色点位置
  • l(u)表示位置u处反射出的光
  • e(u)表示位置u的自发光
  • l(v)表示位置v处反射出的光
  • K(u,v)dv表示从各个不同的位置v有多少光反射到位置u

使用算子进一步简写

在这里插入图片描述

  • L表示反射出的能量,要算的
  • E表示光源发出的能量
  • K是一个反射操作符
  • 这么写可以离散化为简单的矩阵方程
    在这里插入图片描述
  • 这个矩阵的形式可以推导出L
  • 将(I-K)的逆矩阵展开
    在这里插入图片描述
    以上推导难以理解是因为简化了很多中间过程

猜你喜欢

转载自blog.csdn.net/n5/article/details/128850252