0%

上一节中我们实现了光源和矩形物体,并初步创建了一个 Cornell Box 场景,但场景中还缺少两个立方体,并且立方体和墙面之间存在一定的旋转角度,因此这一节我们需要实现一个立方体物体类,并且支持旋转和平移。

阅读全文 »

之前的场景中一直缺少一个重要的元素,那就是光源,这一节我们来实现光源,这样我们之后就可以随意控制场景中的光照了。

阅读全文 »

噪声在游戏领域的应用极为广泛,能帮助我们产生更加真实的纹理、特效等。之前在 Shader 的学习中,我们就使用过噪声纹理,并在最后提到了这些噪声纹理来自于哪里,著名的 Perlin 噪声就是其中之一。Perlin 噪声由于计算量小,效果好而被广泛应用,它的发明者 Ken Perlin 凭借这一算法还获得了当年的奥斯卡科技成果奖。这一节我们在光线追踪器中自己实现 Perlin 噪声。

阅读全文 »

我们之前实现了物体和材质,但还缺少让物体变得更丰富的纹理,因此这一节我们实现一个纹理类。纹理可以是图片,也可以是程序生成的噪声,我们之前场景中所有的物体都是纯色的,实际上纯色也可以认为是一种纹理。因此我们可以定义一个纹理抽象类,然后在此基础上实现各种不同的纹理。

阅读全文 »

这一节我们开始考虑对光线追踪器的性能做一点优化,以应对之后更加复杂的场景。之前在渲染随机场景的时候我们的代码运行的非常慢,根据目前代码的实现过程以及之前学的图形学知识可以分析出,影响速度的一个重要瓶颈是计算光线和物体交点的部分,因为每根光线都要和场景 world 中的所有物体去计算交点,然后判断哪个离我们最近,当物体非常多的时候自然效率会很低。因此这一节我们运用图形学中学过的层次包围盒(BVH)去优化我们的代码。关于 BVH 的理论知识可以查看之前的笔记【计算机图形学】(十一)Whitted 风格光线追踪

阅读全文 »

从这一节开始我们将进一步完善之前的光线追踪器,加入更多真正的光线追踪器中用到的算法和功能。首先我们将为场景中的物体加入运动,并且实现运动模糊效果。

阅读全文 »