Irradiance辐射度量学
辐射度量学在渲染领域,可以帮助理解基于物理的光照模型
radiant energy辐射能量Q,累计总能量(单位J= joule焦耳),就像太阳能板,光照时间越长接收能量越多,收到的能量总和
radiant flux/power辐射功率(单位时间能量:dQ / dt,d为极小的增量(一次导数),(单位W=watt瓦特,光学单位lm = lumen)),比如灯泡每秒发出的光照强度
w(=omega)立体角(单位s2)
- 2D:(弧度制)角度 = l球面对应弧长 / r半径,当lr同时缩放,不影响角度大小
- 3D:(弧度制)立体角(球体上投射的大小) = A球体对应面积 / r^2(半径如果越大,立体角越小,一般情况r==1,也就是立体角 = A)
- 那么球体的立体角为?A=4πr^2 / r^2 = 4π
- 单位立体角A:sin(theta绕z) d d(pai绕y)
- 那么球体的单位立体角积分:
球坐标系:是一种利用球坐标(P 点的距离 r,天顶角,方位角 )表示一个点 p 在三维空间的位置的三维正交坐标系
intensity辐射强度,一个单位立体角上发射多少能量(一次导数)(I (单位cd = candela)= d (单位W)/ dw(4π)立体角(单位s2))
Irradiance辐照度,一个单位面积接收到多少能量,(一次导数)E = (d / dA * r^2 ) *cos (随着距离越远,受到的能量越小,Irradiance不断衰减,光线和法线的夹角越大,受到的能量越小)
radiance光在从传播中的能量:
(二次导数)L(p,w) = (总辐射功率)d ^ 2 / dw(单位立体角上)dA (单位面积上) * cos (以什么投影角度)传播的能量
表示:某个单位面积A上,从一个单位立体角w上,接收的能量
因此可以分解为导数的导数形式去理解:
L(p,w) = dE(p,w) / dwcos :A从所有方向接收的能量中,仅看从一个立体角w投射的能量
L(p,w) = dI(p,w) / dAcos :从立体角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;) xi * pr{xi}
连续型随机变量X:无限(连续)的随机变量
概率密度函数(PDF)
X~p(x)曲线:横轴随机变量X(函数)的取值范围(返回值范围),随机变量取值为横轴上对应点时的概率密度值(非概率,取到某个具体值的概率是0),总概率(总面积)积分 == 1
随机变量落在某个区间[a,b]内的概率可以通过计算该区间上PDF的定积分(面积值)来得到
期望值E[X] (均值):积分 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就是应用这个模型
求解 渲染方程:
首先需要考虑积分的直接光照情况:
∫(a->b) f(x)dx ,其中f(x)为有图部分,用蒙特卡洛求解积分,
其中ab区间为,我们让每个方向概率均等,因此可以求出p(xi), 因为总概率为1,因此∫(a->b) p(x)dx == 1,因此px = 1 / (b-a) = 1/2(半球面积)
对于蒙特卡洛求解积分,我们直到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反射颜色,不会损失能量
问题三:
如果我的采样率小,则出现噪声,如果提高采样率,又消耗性能
这正是因为均匀的采样浪费了大量的采样方向,收敛速度慢,难以快速求得结果
那么怎样才能提高收敛速度?
需要改写渲染方程,渲染方程针对四面八方采样,需要改写针对光源采样
首先采样范围非 ,而是光源的A面积上,另外原来的cos(wi和p的法线n夹角)替换为立体角考虑(cos 'A面法线和p的夹角),的积分 f(x) dA
这就是改写的渲染方程
之后,再次通过蒙特卡洛求解积分,p = 1/A(从光源上均匀采样)
结果:
因此,根据问题二描述,仅不会传回光源的部分没有返回值,
我们仅对不会传回光源的部分执行俄罗斯轮盘赌注的随机方法,而对可以传回光源的采用改写的渲染方程
拆分为两部分,第一个是会传回光源,第二个是不会传回光源,要注意这部分首先要判断是否是 不是传回光源的,再执行递归,否则会重复计算
问题四:
对于传回光源的光线,如果路径又其他遮挡物,将不会有贡献,
那么如何判断路径中是否有遮挡物?
通过p和光源连线,看路径是否有打到其他物体
其他问题:
怎么对半球均匀采样?How sampling?
蒙特卡洛积分,选择什么PDF函数是最好的-》重要性采样importance sampling
低差异序列,的随机数分布很好,不会扎堆现象low discrepancy sequences
MIS-》multiple importance sambly
为什么把每个像素不同发射光线平均,就是像素颜色?pixel reconstruction filter
gamma伽ga马校正