图形学笔记(十三)光线追踪3——双向反射分布函数BRDF(反射方程、递归方程)、辐射度量学基础radiometry、立体角、Radiant Energy、Flux、Irrdiance、Radiance

图形学笔记(十二)光线追踪2——使用AABB包围盒加速光线追踪、空间划分(八叉树、KD树、BSP树)、物体划分(BVH加速结构)、光线与物体求交
图形学笔记(十四)光线追踪4——蒙特卡洛(Monte Carlo)积分、路径追踪详细过程(Whitted-Style的问题于RR(俄罗斯轮盘赌)算法、Ray Generation)、照片级真实感渲染

1 辐射度量学(Basic radiometry)

1.1 辐射度量学的动机

光源中定义L=10,但是10代表的是什么无法确定,缺少单位。

1.2 概览

辐射度量学就是在物理上准确度量光照的方法。

它定义了一系列的方法和单位,准确的定义了光在空间中的属性:

  • 定义了光照的新属性:Radiant flux(辐射通量),intensity(辐射强度),irradiance(辐射[照]度),radiance(辐[射]亮度)

为什么学,学的是什么,这个新的东西是怎么运用的

1.3 角、立体(solid)角、微分立体角

角Angle 圆上的弧长与半径的比值。

  • θ = l r \theta=\frac{l}{r} θ=rl
  • 圆的角度为 2 π 2\pi 2πradians(弧度数)
    在这里插入图片描述

立体角 Solid angle 球面上的面积和半径平方的比值。

  • Ω = A r 2 \Omega=\frac{A}{r^2} Ω=r2A
  • 球的立体角为 4 π 4\pi 4π steradians

在这里插入图片描述
微分(Differential)立体角 通过两个角度定义球面上的唯一一个方向( θ \theta θ(方向与z轴的夹角) ϕ \phi ϕ(方向绕着z轴旋转的夹角))。

下图的 d ω d\omega dω就是微分立体角(单位面积与 r 2 r^2 r2的比值),这个角非常小。
在这里插入图片描述
通过积分可以得到,整个球的立体角是4 π \pi π
在这里插入图片描述

1.4 Radiant Energy and Flux(Power)

1.4.1 Radiant Energy

定义 Radiant energy是一种电磁辐射的能量。它由焦耳(J=Joule)单位来度量,用符号Q来表示。
在这里插入图片描述

1.4.2 Radient Flux(Power)

定义 Radient flux(Power) 是单位时间的发射出的、反射的、传播的和接收的能量。
在这里插入图片描述
另一种定义:单位时间辐射出光子的数量

1.5 与光相关的物理量

关键的物理量 光源辐射出的能量(Radiant Intensity),物体表面接收的光的能量(Irrdiance),光线在传播过程中的能量(Radiance)。

在这里插入图片描述

1.5.1 Radient intensity

定义 Radient intensity是每单位立体角辐射的能量。
在这里插入图片描述

1.5.2 Irradiance(辐射[照]度)

定义 Irradiance是单位面积的辐射通量(面必须和光线垂直,否则要变成和投影面垂直的)。
在这里插入图片描述

通过Irradiance解读现象

  1. 冬夏温度之分是因为点光源辐射的能量到达辐射点的角度不同步(阳光和不同区域的夹角不同),导致接收的能量不同。
  2. Irradiance会衰减,如下图所示(不是Intensity衰减)。
    在这里插入图片描述

1.5.3 Radiance

Radiance描述光线在传播过程中的属性。

定义 Radiance是在单位立体角发射的在单位面积由表面反射、发射或接收的能量。
在这里插入图片描述

由于 Irradiance是单位面积的辐射通量,Intensity是单位立体角发出的能量。
所以 Radiance是每单位立体角的Irradiance,Radiance是每单位面积的正交Intensity

Incident Radiance

Incident Radiance是每单位立体角的到达表面的irradiance。
在这里插入图片描述

Exiting Radiance

Exiting surface radiance是每单位面积向某个角度辐射出的radiance。
在这里插入图片描述

1.5.4 Irradiance与Radiance

Irradiance:被区域dA吸收的所有的能量。
Radiance:被区域dA的来自 d ω d\omega dω的能量。

1.6 各向同性点光源 Isotropic Point Source

如果点光源均匀的辐射出光,则可以得到点光源的强度I如下所示。
在这里插入图片描述

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

引入 来自于 ω i \omega_i ωi立体角的Radiance转化成dA接受的能量E,然后能量E会变成向着任何其他方向 ω \omega ω的radiance。

意义 BRDF用于表示某个微小面积 d A dA dA从某个微小立体角 d ω i d\omega_i dωi接受的irradiance会如何被分配到不同的立体角去

如下图所示,来自于 ω i \omega_i ωi立体角的到达微小表面的irradiance—— d E ( ω i ) dE(\omega_i) dE(ωi)经过吸收后,被向着某一方向 ω r \omega_r ωr发射出去,发射出去的radiance是 d L r ( x , ω r ) dL_r(x,\omega_r) dLr(x,ωr)
在这里插入图片描述
BRDF用于表示从每个入射方向进来的光线会每个向出射方向 ω r \omega_r ωr反射的能量多少。
在这里插入图片描述

BRDF就是任何一个出射方向的radiance的微分除以在入射点上irradiance的微分,BRDF如下所示。
在这里插入图片描述

2.1 反射方程

BRDF是描述光线对物体时如何作用的,所以可以用于定义不同的材质
在这里插入图片描述

把每一个方向对出射方向的贡献都加起来就会获得向某个方向反射出光照的结果。
在这里插入图片描述

2.2 递归方程

反射radiance取决于入射radiance,而入射radiance不仅取决于光源,还有被其他物体反射的光,具有递归关系。
在这里插入图片描述

2.3 渲染方程 Rendering Equation

2.3.1 推导(由反射方程)

已知反射方程如下,可以从反射方程推出渲染方程,
在这里插入图片描述渲染方程首先要在反射方程的基础上加上自己辐射的radiance,假设所有方向都向外,渲染方程如下( Ω + \Omega^+ Ω+ H 2 H^2 H2都表示半球):

在这里插入图片描述
其中 c o s θ i = n ⋅ ω i cos\theta_i = n · \omega_i cosθi=nωi L i ( x , ω i ) L_i(x,\omega_i) Li(x,ωi)表示来自光源的入射光, f ( x , ω i , ω r ) f(x,\omega_i,\omega_r) f(x,ωi,ωr)为BRDF表示材质的性质, L e ( x , x r ) L_e(x,x_r) Le(x,xr)为反射物体自身发出的光, L r ( x , x r ) L_r(x,x_r) Lr(x,xr)是最终的反射光。

场景中往往由很多光源,所以如果有很多点光源,就累加它们。

在这里插入图片描述
L r ( x , ω r ) = L e ( x , ω r ) + Σ L i ( x , ω i ) f ( x , ω i , ω r ) ( ω i , n ) L_r(x,\omega_r)=L_e(x,\omega_r)+\Sigma L_i(x,\omega_i)f(x,\omega_i,\omega_r)(\omega_i,n) Lr(x,ωr)=Le(x,ωr)+ΣLi(x,ωi)f(x,ωi,ωr)(ωi,n)

对于面光源,则进行积分。

在这里插入图片描述

L r ( x , ω r ) = L e ( x , ω r ) + ∫ Ω L i ( x , ω i ) f ( x , ω i , ω r ) cos ⁡ θ i d ω i L_r(x,\omega_r)=L_e(x,\omega_r)+\int_{\Omega}L_i(x,\omega_i)f(x,\omega_i,\omega_r)\cos \theta_id\omega_i Lr(x,ωr)=Le(x,ωr)+ΩLi(x,ωi)f(x,ωi,ωr)cosθidωi

如果考虑其他物体反射的radiance,就把反射物体和反射面当成光源,可以把渲染方程写成更通用的形式。

L r ( x , ω r ) = L e ( x , ω r ) + ∫ Ω L r ( x ′ , − ω i ) f ( x , ω i , ω r ) cos ⁡ θ i d ω i L_r(x,\omega_r)=L_e(x,\omega_r)+\int_{\Omega}L_r(x',-\omega_i)f(x,\omega_i,\omega_r)\cos \theta_id\omega_i Lr(x,ωr)=Le(x,ωr)+ΩLr(x,ωi)f(x,ωi,ωr)cosθidωi
以上的式子可以简单的表达为,
l ( u ) = e ( u ) + ∫ l ( v ) K ( u , v ) d v l(u)=e(u)+\int l(v)K(u,v)dv l(u)=e(u)+l(v)K(u,v)dv
K为反射操作符,进一步简写为
L = E + K L L=E+KL L=E+KL
可以看出L是递归定义的。

2.3.2 结论

渲染方程如下所示,而我们的目的是解出L。
L = E + K L L=E+KL L=E+KL

解L的方法如下所示,其中K也可以理解成反射次数,反射次数越多,项越多, K 2 K^2 K2代表光弹射两次。

在这里插入图片描述
全局光照是直接和间接光照( K E + K E 2 + K 3 E + . . . KE+KE^2+K^3E+... KE+KE2+K3E+...)的集合。

光栅化的着色一般只有E+EK,而后面的间接光照部分光栅化难以做到,一般使用光线追踪来进行计算。

猜你喜欢

转载自blog.csdn.net/weixin_43399489/article/details/121655346