0%

到目前为止,最简单的光线追踪器就构建完成了,在开始进一步完善之前,我们先随机向场景中加入许多不同材质不同属性的球体,渲染第一张“完整的”光线追踪图片。

阅读全文 »

到目前为止,我们的简易光线追踪器就差不多了,接下来对相机进行一些改进,使得我们能在任何角度观察场景并且模拟镜头相机的景深效果。

阅读全文 »

这一节开始实现诸如水、玻璃、钻石等透明材质,他们都是电介质(dielectric ),光线到达电介质会发生折射,因此首先要计算折射光线。

阅读全文 »

上一节渲染的球体边缘可以明显看到锯齿,为了得到更好的效果我们需要实现一个简单的反走样算法,并且实现一个相机类,以便于管理虚拟摄像机和之后的各种场景采样任务。

阅读全文 »

排序是最基础的算法,也是应用最广泛的算法。对排序算法的掌握程度很能体现算法与数据结构的基本功,所以也是面试中最常问到的算法。这一节对十大常见排序算法做一个全面总结。十大排序算法可以按照时间复杂度分为三类:

  • 时间复杂度为 $O(n^2)$ 的排序:冒泡排序、选择排序、插入排序
  • 时间复杂度为 $O(nlogn)$ 的排序:快速排序、归并排序、希尔排序、堆排序
  • 时间复杂度为 $O(n)$ 的排序:桶排序、计数排序、基数排序

可以通过排序数组题目实践这些算法。在最后,学习 C++ STL 的排序算法 sort()的具体实现。

阅读全文 »

这部分我们将使用 C++ 从零开始实现一个光线追踪器。首先需要实现一些在简单的光线追踪器中要用到的基本工具类,包含三维向量类、光线类,以及一些之后可能频繁用到的工具函数。

阅读全文 »

很多时候,向规则的事物里添加一些“杂乱无章”的效果往往会有意想不到的效果。而这些“杂乱无章”的效果来源就是噪声。在本节中,我们将会学习如何使用噪声来模拟火焰消融、波光粼粼、云雾飘渺等各种特效。

阅读全文 »