第八章 Gleaming the Cube

第八章 Gleaming the Cube

本章介绍图形学相关主题的分类,主要包括skybox rendering,environment mapping,fog,以及color blending(天空的渲染,背景环境的纹理映射,雾境,颜色混合)。前两种effects有一个共同点:都是通过texture cubes实现的。学习这些知识将会让你在图形学的道路上走得更远。

Texture Cubes

一个texture cube(也称为cube贴图)是一个6个2D纹理的集合。每一个纹理对应于以world space原点为中心,轴对齐的立方体的一面。这些纹理可以分别单独存储在一个文件中,或者存储在同一个DDS格式(第3章,“Tools of the Trade”讨论了DDS格式)的文件中。图8.1显示了所有纹理存储在同一个文件中的texture cube,并标出了对应cube的每一面。

第八章 Gleaming the Cube_第1张图片
图8.1 A texture cube. Each face is labeled with the corresponding axis. (Texture by Emil Persson.)

Creating Texture Cubes

有各种各样的工具可以创建texture cubes。比如,NVIDIA的DDS通用程序包中包含了一个命令行工具nvDXT,就可以创建texture cubes(本书的配套网站上提供了链接)。nvDXT以一系列单个的纹理作为命令行参数,把这些纹理编译到一个texture cube中,并存储为DDS格式的文件。
Microsoft提供了DirectX Texture Tool用于创建DDS文件,该工具包含在独立的DirectX SDK安装包中(而不是Windows SDK的一部分)。图8.2中,使用DirectX Texture Tool加载了一个texture cube,并选择了主菜单下的Cube Map Face菜单项。使用该菜单荐可以指定显示cube map的某一面。

图8.2 The DirectX Texture Tool. (Texture by Emil Persson.)

要新建一个cube map,选择主菜单的File-->New Texture,并指定纹理类型为Cubemap Texture(如图8.3所示)。然后设定纹理的分辨率,MipMap Levels的数量,以及纹理格式。创建了一个空的texture cube之后,就可以给cube的每一面指定一个纹理图,选择主菜单View-->Cube Map Face指定Cube的某个面,然后选择主菜单File-->Open Onto This Cubemap Face添加一张图片。

图8.3 The New Texture dialog box of the DirectX Texture Tool.

警告
我曾经见过DirectX Texture Tool在cube map每个面上都增加了一个1-pixel宽的边框。如果你得到的texture cube中出现了明显的接鏠,你可能想要检查一下这个问题。使用Adobe Photoshop打开该DDS文件,并放大纹理图就可以看到接缝。

除了使用一系列textures创建一个texture cube外,还有另一问题要处理,如何创建这些单个的纹理。有多种工具用于创建纹理,比如Planetside Software的Terragen和e-on software的Vue。有很多网站上提供了免费的工具,以及免费的纹理图。本书的配套网站提供了部分资源的链接。

Sampling Texture Cubes

对一个Texture cube进行sample,使用一个以cube中心为起点的三维方向向量。根据该向量与cube相交的那一面选择纹理。图8.4描述了这个概念。第5章,“Texture Mapping”所讨论的texture filtering settings在texture cube中依然适用。
第八章 Gleaming the Cube_第2张图片
图8.4 An illustration of texture cube sampling. (Texture by Emil Persson.)

你可能感兴趣的:(第八章 Gleaming the Cube)