https://raytracing.github.io/books/RayTracingTheNextWeek.html

1 Overview

该部分添加了新特性:纹理、体积(雾)、灯光、BVH 优化

光线追踪领域有一个很多人(包括我)都认同的原则:大多数优化都会使代码复杂化,却无法带来多少速度提升。在本小册子中,我将在每个设计决策中都采用最简单的方法。更多项目相关资源,请参阅我们的“延伸阅读”维基页面。不过,我强烈建议您不要过早进行优化;如果某个优化在执行时间分析中并不突出,那么在所有功能都支持之前,都不需要进行优化!

BVH 和 Perlin 纹理是最难的部分。所以这次不再是一个周末,而是预期一周的时间。

2 Motion Blur

motion-blur.jpg

动态模糊

当你决定使用光线追踪时,就意味着你认为视觉质量比运行时间更重要。在渲染模糊反射((fuzzy reflection)和散焦模糊(defocus blur)时,我们使用了每个像素的多次采样。一旦你选择了这条路,好消息是几乎所有特效都可以用类似的暴力方法实现。运动模糊当然也是其中之一。

在真实的相机中,快门(shutter)会短暂保持开启状态,在此期间,相机和周围物体都可能发生移动。为了精确地重现这样的拍摄画面,我们需要计算相机在快门开启期间所感知到的平均状态。

最终我们要得到这幅图片。

我们考虑时间的问题:

  1. 快门第一次打开到下一次打开之间的时间间隔
  2. 每一次快门打开的间隔,如何分配给每一帧画面

尤其是对于运动的物体,需要考虑上面的问题。不过我们这里只渲染一帧,可以简单处理。

3 Bounding Volume Hierarchies

包围盒层次结构

image.png