Pixel Sampling
在 相机和视平面 当中采用了最简的采样方法 —— 一个像素,仅在其中心采样一条 Ray,这样渲染出来的一个简单的图像 ——

不过肉眼可见的,边缘锯齿问题 —— 其本质是欠采样。对于一个像素点,它其实是有实际面积的,但是我们现在仅仅使用一条射线来进行模拟,使得连续空间中的很多信息在采样的过程中丢失。
当然,还可能出现一个问题,一个像素覆盖了两个物体,但是采样的光线恰好从两个物体的缝隙中间穿出,导致显示出意料之外的结果。
那么在理想情况下,当前这个像素的颜色应当是 ——
也就是这个区域内所有的光线结果的均值,而不是仅仅是一个中心点的值
但是我们在计算机中很难对这样的一个区域进行精确的求出结果,于是引入蒙特卡罗方法进行计算,每次在一个 Pixel 内随机采样多条射线的结果,然后求均值,这样在采样的光线数量越多的时候,模拟的结果就约趋近于真实的结果。
不过如果真的单纯随机采样,也可能出现问题 —— 比如恰好所有采样点都集中在像素中的某一个小区域导致失真。所以一般的,我们会把像素先进行空间划分(分层采样 Stratified Sampling),然后再每一个规则的空间内进行随机采样来规避这个问题。
不过随着 SPP (Sample per Pixel)的数量变大,渲染的代价随之近似为线性增长
我们继续看一下 SPP = 64 下的结果

锯齿确乎是消失了,边缘现在比较平滑,不过代价 ——
SPP 1:
Total Rays : 1711782
Render Time : 177.137 ms
SPP 64:
Total Rays : 109575454
Render Time : 11535.580 ms同样的场景,在渲染一张 1280 * 720 的图片时单线程的效率对比