RTTNW-ch3:Solid Textures

图形中的纹理通常表示在表面上生成颜色的函数,我们将首先使所有颜色成为一种纹理。

我们通过一个指向纹理的指针来替换vec3颜色来制作纹理材质,这样的话我们是赋值的纹理而不是颜色。

我们曾经使用:new lambertian(vec3(0.5, 0.5, 0.5))

现在我们要把它替换为:new constant_texture(vec3(…))

例如这样写:new lambertian(new constant_texture(vec3(0.5, 0.5, 0.5))))

我们可以通过正弦和余弦的符号以常规交替来创建一个检查器纹理,下面写一个棋盘纹理,这个纹理会按棋盘格的方式分割两个不同的纹理

上面的棋盘纹理可以是一个恒定的纹理或者一个程序化的纹理,这是Pat Hanrahan在上世纪80年代提出的着色网格原则。

我们将棋盘纹理添加到地面上,也就是添加到我们的第一个球上:

效果如下:

我们试下渲染两个带有棋盘纹理的球:

调整摄像机:

效果如下:

 

参考书籍:《Ray Tracing The Next Week》

RTTNW系列项目地址:GitHub