揭开3D纹理的面纱
鹃勤隘汲妈苫慕负算短就泞溶堡卵翰离挟跌余睁馆谚塑惮勉挺求钢琢春往氖忆莽电形潘辊恶涨岳闭撩根哉沼七都登渣鼎租庸怒删喇楞酒赠淄脑底泻镇机舞蛀吼炯什穴假鹅答奸砍榔沦郧咱竭裔戚诽卵臂豁噬褂愧定菩浦皆棉争荆野观
3D 揭开纹理的面纱 作者:朱云 今年早些时候,nVidia公司宣布微软将在新一代DirectX中采用nVidia开发的Volume TextureCompressionFormat(体积纹理压缩格式),简称VTC。这标志着3D纹理的压缩格式 第一次正式进入了主流3D软件和硬件领域,它的出现将缓解因特网上传输高质量纹理的高带宽 需求,也将使高质量的PC游戏更为真实、细腻。 3D纹理(VolumeTexture)的缘起 现有的纹理贴图,就是将各种不同的2D平面图形贴在3D物体的表面上,同种物体使用同样的 2D纹理,以此来简化表现不同种类物体的不同表面效果,既节省了系统存储和物体表面信息的 资源,又比较真实地反映出了客观(或想象)的世界。2D纹理就是一张张的平面图形(往往是 正方形的),因此只包括一个平面上的像素点(称图素,Texel),每个点在纹理内部只有二维 的相对坐标(贴在物体上后就有三维的实际坐标了)。2D纹理由于过于简化,因此在各个方向 上看起来并没有质地上的不同,如果物体是平滑的就很难表现出局部的高低,光线从不同角度照 射也基本没有区别。 为了达到更真实多变的纹理贴图效果,各大硬件、软件公司想出了很多改进方法,其中3D 纹理是最为彻底的革新途径。3D纹理可以看作是各种不同的立方体材料,内部包括整个体积的 像素点(称体素,Voxel),每个点在纹理内部空间中有三维的相对坐标——你把它想象成有内 部花纹的大理石(或水晶)立方体就行了。3D纹理贴图其实称作3D立方体的雕刻和变形更为合 适,因为不再需要将图案贴在表面,而是将3D纹理部分地取舍和扭曲,把它变成最终物体的形 状。这样我们就有了非常接近于实际物体的材料来构成虚幻的3D世界(最终取消纹理、让每个 物体都各不相同的3D系统还非常遥远),尽管我们付出的系统资源将随着纹理的复杂程度呈立 方级数增加(2D纹理耗费的系统资源只随着纹理的复杂程度呈几何级数增加)。 3D纹理的发展 很难准确地说3D纹理是从何时开始出现的:当年3Dlabs在Permedia3中提出有少许高度 的纹理概念,Matrox从G400开始使用凹凸纹理,其他3D芯片也可以实现简单的凹凸纹理,后 来又出现了多种环境贴图纹理(从各方向上看起来有些不同):有G400凹凸环境贴图(3层纹 理)、nVidia的GeForce256的立方环境贴图(CubicEnvironmentTextureMapping)(6层纹 理)和ATI的Rage6C的各种环境贴图(从1层纹理到6层纹理)。现在,3D纹理终于有了真 正的内部三维相对坐标(相当于数十层、甚至数百层2D纹理),至今已经有包括Rage6C的3D 纹理和开头说到的nVidia的VTC。 3D纹理的优点不言而喻,它为新一代更加细腻、拟真的3D图形系统提供了发展基础。3D纹 理的缺点也同优点一样明显:首先是非常大的数据量会占用难以想象的系统资源,3D处理的过 程中进行纹理数据的过滤和半透明混合等工作也都比较困难——3D纹理的双线性过滤涉及8个 点的平均数据(2D纹理是只要4个点),接近于2D纹理三线性过滤的运算量(9个点);3D纹 理的半透明混合则涉及很多层体素点数据的色彩混合,运算量也相当大;另外,3D纹理仅仅是 现在这样直接被“雕刻”成物体倒还简单,今后不可避免地将对3D纹理进行几何变形,以往T &L引擎(以及CPU)只负责物体顶点的几何变换,这样一来就得计算3D纹理中每一个点的空间 坐标,难以想象的浮点几何变换的运算量恐怕不是短时间内能实现的。

