Lec16 Ray Tracing 4 (Monte Carlo Path Tracing)蒙特卡洛路径追踪
正确的解出渲染方程
回顾
- 辐射度量学
- irradiance和radiance解释反射问题
- BRDF
- 光线传播方式
- 反射方程
- 渲染方程
- 全局光照
- 概率论复习
复习
- 渲染方程
-
自己发出的光加上来的光
-
BRDF就会告诉自己发射的光反射到发射方向上的光
-
- 概率论
- 离散随机变量,符合一种概率密度分布
蒙特卡洛积分
积分方法
-
为了干什么
-
解一个定积分
-
用数值方法算一个复杂函数的定积分的近似值
-
-
蒙特卡洛定积分
-
定积分
- ∫ a b f ( x ) d x \int_{a}^{b}f(x)dx ∫abf(x)dx
-
随机变量
- X i ∼ p ( x ) X_i \sim p(x) Xi∼p(x)
- p(x)是任意概率密度函数
-
蒙特卡洛算子
-
例子
-
这里用蒙特卡洛去求就是 F n = b − a N ∑ i = 1 N f ( X i ) F_n = \frac{b - a}{N}\sum_{i = 1}^N f(X_i) Fn=Nb−a∑i=1Nf(Xi)
-
任意定积分都能这样算
-
N越大,得到的越准确
-
积分是定义在x上的,采样x
-
路径追踪 Path Tracing
- whitted-style ray tracing:
- 当光线打到光滑物体上,光线沿着镜面方向反射 / 折射
- 在一个漫反射面上停止反射
- whitted-style 的问题:
- Glossy的反射不太对
-
specular reflection(镜面)
-
Glossy reflection(没那么镜面的反射,但是也有高光)
-
The Utah teapot
-
- 在漫反射面没有反射
- Glossy的反射不太对
渲染方程
-
其实是解一个积分
-
是对于 L i ( p , w i ) f r ( p , w i , w 0 ) ( n ⋅ w i ) d w i L_i(p,w_i)f_r(p,w_i,w_0)(n·w_i)dw_i Li(p,wi)fr(p,wi,w0)(n⋅wi)dwi
-
pdf是多少?
- 均匀采样
- p ( w i ) = 1 / 2 π p(w_i) = 1/2\pi p(wi)=1/2π
-
path tracing
-
加上间接光照
-
对于打到的物体,算物体以-w_i方向发出的光照(即在p点看q点发出的直接光照)
-
-
但是这样光线会指数爆炸
-
所以N = 1的时候能够避免这个问题
-
Ray Generation
- 对一个像素内多个采样点进行采样
-
递归终止条件
- Russian Roulette(RR)
- 一定的概率来停止光线往下追踪
-
效率不高(多条光线可能只有一条能打到光源)
-
直接从光源采样就能够不浪费
-
但是在光源上积分的话,需要在光源上采样
-
根据立体角定义,可以得到dw和dA的关系
-
所以就可以根据关系改写渲染方程
-
-
所以分成两种光
- 来自光源
- 不需要RR
- 来自其他非光源物体对他的贡献
- 需要RR
- 来自光源
-
最终算法
一个小问题
- 光源可见性
- 从P打一条光线去光源,看能不能打到光源