chapter 0:概述
文章翻译
在过去的几年,我教过很多图形学课程。我通常让他们学习光线追踪,因为可以在没有使用API接口的情况下,亲手写下所有的程序代码,并得到一张很炫酷的图片。我决定在这门课程里,教你如何尽可能快速的实现一个炫酷的程序。这或许不是一个功能齐全的光线追踪器,但是它确实能间接照明,这使得光线追踪成为电影里的主要内容。跟着这些步骤走,如果你对光线追踪感兴趣并想实现它,你所构建的光线追踪器框架能够扩展为功能更丰富的光线追踪器。
当某些人说,"光线追踪"可能意味着很多事情。而我要描述的是这只是一个非常一般的技术性的路径跟踪器。尽管这代码十分的简洁,但我相信你会对你所制作出来的图片感到快乐。
我将按着我完成的顺序,带领你写一个光线追踪器,并告诉你一些调试的小技巧。到最后,你将拥有一个光线追踪器,这能产生一些很棒的图片。你能够在一个周末完成这个任务,如果你花的时间不止如此,不需要对此感到焦虑。我使用c++作为开发语言,你不一定非要用c++。但是我建议你使用,因为这门语言足够的快速、轻便,大多数电影、电子游戏的渲染器是c++写的。我避免使用了许多c++的新特征,而继承和操作符重载对光线追踪器的完成十分有用。我不会在网上公布程序源码,但这本书中的代码是真实可靠的,我在书中展示了除vec3 class中一些简单操作符外的所有代码。我坚信只要你亲手写下这些代码你就能学会,当代码可行时我会使用它,当代码不可行时,我才实践我所宣扬的内容,所以不需要询问!
现在,让我们开始吧!