GAMES101(15~16节,全局光照)

Irradiance辐射度量学

辐射度量学在渲染领域,可以帮助理解基于物理的光照模型

radiant energy辐射能量Q,累计总能量(单位J= joule焦耳),就像太阳能板,光照时间越长接收能量越多,收到的能量总和 

radiant flux/power辐射功率\Phi(单位时间能量:dQ / dt,d为极小的增量(一次导数),(单位W=watt瓦特,光学单位lm = lumen)),比如灯泡每秒发出的光照强度

单位立体角

w(=omega)立体角(单位s2)

  • 2D:(弧度制)角度\theta = l球面对应弧长 / r半径,当lr同时缩放,不影响角度大小
  • 3D:(弧度制)立体角\Omega(球体上投射的大小) = A球体对应面积 / r^2(半径如果越大,立体角越小,一般情况r==1,也就是立体角 = A)
  • 那么球体的立体角为?A=4πr^2  /  r^2 = 4π
  • 单位立体角A:sin\theta(theta绕z) d\theta d\phi(pai绕y)
  • 那么球体的单位立体角积分:

 

球坐标系:是一种利用球坐标(P 点的距离 r,天顶角\theta,方位角 \phi)表示一个点 p 在三维空间的位置的三维正交坐标系

intensity辐射强度,一个单位立体角上发射多少能量(一次导数)(I (单位cd = candela)= d\Phi (单位W)/ dw(4π)立体角(单位s2))

Irradiance辐照度,一个单位面积接收到多少能量,(一次导数)E = (d\Phi / dA * r^2 ) *cos\theta  (随着距离越远,受到的能量越小,Irradiance不断衰减,光线和法线的夹角越大,受到的能量越小) 

radiance光在从传播中的能量:

(二次导数)L(p,w) = (总辐射功率)d ^ 2  \Phi   / dw(单位立体角上)dA  (单位面积上) * cos\theta (以什么投影角度)传播的能量

表示:某个单位面积A上,从一个单位立体角w上,接收的能量

因此可以分解为导数的导数形式去理解:

L(p,w) = dE(p,w) /  dwcos\theta  :A从所有方向接收的能量中,仅看从一个立体角w投射的能量

L(p,w) = dI(p,w) / dAcos\theta :从立体角w发出的所有方向能量中,仅看投射到A的能量

因此radiance和Irradiance区别在于,radiance它仅考虑某个方向w的能量,而Irradiance考虑所有方向投射到A的能量

我们通过将上面分解公式移项dE(p,w),然后用radiance表示 Irradiance,将两边同时积分(d->0),即可表示E(p,w),也就是一个单位面积接收到的所有方向能量

BRDF反射方程:

Bidirectional_Reflectance_distribution_function)双向反射分布函数:

有了上面辐射学在光学的基础,我们可以推导BRDF公式

某方向反射的能量dL / 某方向上A接收的能量 dE

表示:A接受的某个方向的 dE,反射到某个方向(摄像机看到的)能量(光/颜色值)

如果将所有方向的入射光都加起来-》每个方向都要 * BRDF

某方向反射的能量dL / 积分 ,所有方向上A接收的能量 dE

表示:A接受的所有方向的 dE,反射到某个方向(摄像机看到的)能量(光/颜色值)

总体来说:

BRDF即可以表示,某方向反射能量  / 某方向入射 能量  ,的比例关系,

同时它也是一系列基于物理公式的组合, 表示某方向入射 能量,经过BRDF后,向某方向反射多少能量

渲染方程:

某方向wo反射能量 = 物体自发光能量Le + 积分(半球):所有方向上投射到A的能量,反射到wo方向能量和

其中积分部分:L所有方向上投射到A的能量 * cos dw 仅考虑从w立体角投射到A的能量  *BRDF 此方向反射出多少能量

这里积分为半球,因为考虑到光从平面下照射无意义

这里cos替换为,法线 * (点乘) wi入射光

全局光照

数学理解渲染方程:

简化为算子形式:L = E + KL

移项分解后:L = E + KE + K^2E + K^3E ……解释为:直接看到光源 + 经过一次反射的能量 + 经过两次反射的能量……

直接光照:光线经过一次弹射的能量

间接光照:光线经过两次及以上弹射的能量

全局光照:所有(直接光照 + 间接光照)

概率论Probability Review

随机变量X:从样本空间(事件 / 样本)到实数集的函数,此函数为样本空间中的每一个可能结果(子事件 / 子样本)分配一个实数

样本空间S,对于每个子样本s,都有函数X(s) = x将s映射为x实数 ,

每个Pr{s}子样本的概率和 ,可以等价为左边的形式, 0≤ pr{x}≤1非负,总概率和 == 1

pr{A}:事件A的概率 = A所含样本点数 / 总体所含样本点数。

在给定另一事件B已经发生的条件下,事件A发生的概率为:P(A∣B) = P(A∩B) /  ​P(B)

离散型随机变量X:有限个或可列个值的随机变量

概率质量函数(PMF)

期望值E[X] (均值): (i == 1; i < n;)\sum xi * pr{xi}

连续型随机变量X:无限(连续)的随机变量

概率密度函数(PDF)

X~p(x)曲线:横轴随机变量X(函数)的取值范围(返回值范围),随机变量取值为横轴上对应点时的概率密度值(非概率,取到某个具体值的概率是0),总概率(总面积)积分 == 1

随机变量落在某个区间[a,b]内的概率可以通过计算该区间上PDF的定积分(面积值)来得到

期望值E[X] (均值):积分\int xi * pr{xi}  dx

积分 vs. 求和

积分主要用于连续变量的累积计算,而求和则用于离散变量的累积计算。

蒙特卡洛积分

对于一个复杂的函数,不好解析不定积分,从而无法计算定积分,因此需要用其他求解积分方法

黎曼积分:将闭区间[a,b]分割成有限个子区间,每个子区间称为一个子段,在每个子区间中取一个代表点,计算所有子区间上函数值(高)与子区间长度(宽)的乘积之和,得到黎曼和即定积分

蒙特卡洛积分:根据一定的概率分布随机生成样本点,计算每个样本点对应的函数值求出的总长方形(高:f(x),宽:b-a),再求和,然后除以样本点的总数

假设考虑最基础的概率均等情况,采样是均匀的,PDF函数每个X的概率均等,因此给定ab范围,每个概率为1 / (b-a)

那么fx高  /  (1 / (b-a))即fx 高  * (b-a)宽 = 长方形,因此蒙特卡洛积分思想可以用这个公式代替

如果概率不均等呢,概率小的对于的长方形(总权重占比)就小,也满足蒙特卡洛积分思想

这样只要找到X值对应的fx和px就可以得到定积分结果,且x采样数越多,结果越准确

路径追踪path Tracing

Whitted-Style_Ray-Tracing:反射和折射仅做一次,没有再次弹射

使用基于物理的模型渲染方程,path Tracing就是应用这个模型

f(x)

求解 渲染方程:

首先需要考虑积分的直接光照情况: 

∫(a->b) ​f(x)dx ,其中​f(x)为有图部分,用蒙特卡洛求解积分,

其中ab区间为\Omega,我们让每个方向概率均等,因此可以求出p(xi), 因为总概率为1,因此∫(a->b) ​p(x)dx == 1,因此px = 1 / (b-a) = 1/2\pi(半球面积)

对于蒙特卡洛求解积分,我们直到fx和px,因此将多项式带入公式中

以上公式就是推导后的替换结果,我们可以根据这个公式写出算法的伪代码,其中随机变量x是wi(入射方向) 

考虑积分的间接光照(多次弹射)情况:

多次弹射的光照,可以理解为Q对P的直接光照,(一个点光源只有一个方向的光线直接照射到p)在for到wi方向计算时,由于此光非直接光照,我们想要知道wi方向对p点发射的能量,因此根据radiance理解,等价于从q点以-wi视角接受的能量

递归算法(为某个点p着色,从wo摄像机视角观察):

着色颜色值初始为0,对点p循环每个入射方向wi,

如果光线打击到光源(直接光照),将此方向直接光照(已知光源亮度)的反射结果,添加到着色颜色值中

否则(间接光照),将此方向间接光照(需要递归)的反射结果,添加到着色颜色值中

问题一:

但是这样递归非常消耗性能,因此,我们仅计算一个随机wi入射光的反射结果,而不考虑所有在半球wi方向的入射光

也就是n == 1时的蒙特卡洛积分,这就是路径追踪

对于每个像素,我们随机发出n个光线,对于每个光线的交点,仅计算一个随机wi方向的反射颜色,* 1/n的权重占比,所有的颜色值求和

问题二:

递归没有基类条件,对于永远不会传回直接光源的光线,将无法返回,因此我们应该设定基类返回条件

但如果指定次数返回,会损失一定能量(颜色亮度)

俄罗斯轮盘赌注:

因此设定一个概率p:使得期望值E  = p *  lo/p  +  (1-p) * 0  = lo最终结果仍然时Lo反射颜色,不会损失能量

问题三:

如果我的采样率小,则出现噪声,如果提高采样率,又消耗性能

这正是因为均匀的采样浪费了大量的采样方向,收敛速度慢,难以快速求得结果

那么怎样才能提高收敛速度?

需要改写渲染方程,渲染方程针对四面八方\Omega采样,需要改写针对光源采样

首先采样范围非 \Omega,而是光源的A面积上,另外原来的cos(wi和p的法线n夹角)替换为立体角考虑(cos \theta'A面法线和p的夹角),的积分\int f(x) dA

这就是改写的渲染方程

之后,再次通过蒙特卡洛求解积分,p = 1/A(从光源上均匀采样)

结果:

因此,根据问题二描述,仅不会传回光源的部分没有返回值,

我们仅对不会传回光源的部分执行俄罗斯轮盘赌注的随机方法,而对可以传回光源的采用改写的渲染方程

拆分为两部分,第一个是会传回光源,第二个是不会传回光源,要注意这部分首先要判断是否是 不是传回光源的,再执行递归,否则会重复计算

问题四:

对于传回光源的光线,如果路径又其他遮挡物,将不会有贡献,

那么如何判断路径中是否有遮挡物?

通过p和光源连线,看路径是否有打到其他物体

其他问题:

怎么对半球均匀采样?How sampling?

蒙特卡洛积分,选择什么PDF函数是最好的-》重要性采样importance sampling

低差异序列,的随机数分布很好,不会扎堆现象low discrepancy sequences

MIS-》multiple importance sambly

为什么把每个像素不同发射光线平均,就是像素颜色?pixel reconstruction filter

gamma伽ga马校正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值