本章将学习如何使用一个3D纹理来纹理化一个半圆形。这种技术叫做立方体贴图,且我们将使用该技术来学会如何制作一个天空盒子。
立方体贴图通常用于创建一个无限远的环境,比如天空。我们能够使用该技术通过加载一个3D纹理来创建一个天空盒子,并使用该3D图片来纹理化一个半圆并环绕相机。为了让这种错觉持续,天空盒子必须总是以相机为中心环绕,因此我们无论往哪个方向移动多远,我们都不会接近天空盒子。另外一件事就是天空盒子要总是位于深度缓冲后面,所以所有绘制在天空上的东西总会位于天空盒子前面。在我们的视图空间可通过设置Z值为1来实现。我们还会学习通过使用directx纹理工具如何创建一个立方体纹理。一个立方体纹理有6个面,每个轴有两个面(+x,-x,+y,-y,+z,-z每个对应一个)。在文件中,图像会像下面一样被存储。
为了将立方体纹理贴到天空上,实际并不难,我们要做的就是获取到我们当前渲染的像素的位置,并将它转为向量以找到我们将要着色的像素对应的立方体贴图上的纹理元素。下面的图显示2D的一个思路,我们在这使用(u,v)纹理坐标系,但是在3D中,思路是一样的,只是不同的是我们使用3D纹理坐标系(u,v,w)。