<aside>
Path Tracing 是实现正确的 Ray Tracing.
Yes, almost 100% correct, a.k.a. PHOTO_REALISTIC
</aside>
<aside>
我录了一个费曼式学习的手写视频 BV1qfi9BuEhT ,从辐射度量学到路径追踪。
</aside>
<aside>
</aside>
https://github.com/Crispher/MCRayTrace
辐射度量学 > 渲染方程 > 数值求解积分的蒙特卡洛方法 > 路径追踪 (对光源直接采样 & 俄罗斯轮盘赌来解决无线队规问题)
蒙特卡洛积分

直观理解
给任意一个函数,计算定积分会得到一个数值。假如一个函数本身非常复杂,数学上求解析式几乎不可能(渲染方程就是一个栗子)。那么我们可以使用一种数值法,反正把最后的值求出来差不多就行。
蒙特卡洛积分是一种通过随机采样近似计算 $\int_a^b f(x) \mathrm{d}x$ 数值的方法。
从区间 $[a, b]$ 上采样一个点 $x_i$ 得到 $f(x_i)$ ,我们就认为积分的面积近似为矩形面积 $(b - a) f(x_i)$ ,只采样一次的话会很不准,那么我们采样非常多次,然后求平均。
$$ \int_a^b f(x)\,\mathrm{d}x \approx \frac{b-a}{n}\sum_{i=1}^n f(x_i) $$
具体定义
(注:这里就不再是考虑面积了,而是PDF概率)
$$ F_N = \dfrac{b-a}{N}\sum_{i=1}^{N} f(X_i) $$
$$ \int f(x) \mathrm{d}x = \dfrac{1}{N}\sum_{i=1}^{N} \frac{f(X_i)}{p(X_i)} \qquad X_i \sim p(x) $$
Path Tracing 前面和 Whitted-Style 光线追踪一样,不一样的是在最终着色的时候是求解渲染方程,