您的位置:首页 > 其它

关于dds文件和3dc技术的一点知识

2008-11-04 22:16 441 查看
====== DDS文件介绍 ======
在OrigoEngine的材质系统中,可以看到很多的dds文件。可以简单地认为这些dds文件同bmp、tga等常见的图片格式一样,记录了一张图片的信息,如果我们在photoshop中使用dds的插件,就可以在photoshop中打开这些文件。dds是DirectDraw Surface的缩写,实际上,它是DirectX纹理压缩(DirectX Texture Compression,简称DXTC)的产物。DXTC减少了纹理内存消耗的50%甚至更多,有3种DXTC的格式可供使用,它们分别是DXT1,DXT3和DXT5。
===== DXT1 =====
具体的压缩细节这里就不多叙述了,DXT1格式的压缩比最高,然而它只有1Bit Alpha,Alpha通道信息几乎完全丧失。所以一般将不带Alpha通道的图片压缩成这种格式。
===== DXT3 =====
DXT3使用了4Bit Alpha,所以可以有16个Alpha值,可很好地用于alpha通道锐利,对比强烈的半透和镂空材质。
===== DXT5 =====
DXT5使用了线形插值的4Bit Alpha,所以特别适合Alpha通道柔和的材质,比如OrigoEngine中用于高光掩码的材质。
===== 生成DXT文件 =====
使用OrigoEngine的材质编辑器可以便捷地从bmp、tga生成DXT文件。在生成Texture的过程中,有一个选项 Convert to DDS,选中即可。参见材质编辑器指南部分。此外,nVidia提供了PhotoShop使用的dds插件,通过该插件也可以生成dds文件。还有一种生成dds文件的方法是使用nVidia提供的命令行工具nvdxt.exe(OrigoEngine实际上就是调用这个工具)。
===== Mipmap =====
在进行DXTC时,可以选择同时生成Mipmap,关于Mipmap的概念,请参看相关资料或查看OrigoEngine的材质培训文档。直观来说,Mipmap会提升材质的表现效果,所以OrigoEngine的材质编辑器在生成dds文件时,会自动同时生成Mipmap。 追求图像质量质变的3Dc技术(上)
3Dc是ATi开发的一种新的压缩技术,R420可以实现对这项技术的支持。这项技术允许游戏开发者使用更高细节的纹理,来实现更加真实的3D效果。3Dc技术是R420上最重要的一项图像质量和性能改善技术。

高分辨率下的大纹理对于显存的占用相对严重,压缩技术将纹理压缩成图形核心所识别的一种格式,减小纹理体积,以减小性能损失。当然,这一切都要建立在压缩后基本不损失画质的前提下才算可
行。S3首次引入纹理压缩技术S3TC,而随后微软将S3TC纳入DirectX标准,并且重新命名为DXTC.


「 3Dc技术的演示Demo对比,可以看到应用3Dc后画质的变化 」 DXTC和S3TC已经是1999年前的技术了,对于目前的游戏开发者来说,DXTC似乎已经远远的不够用。因此ATi才创建了3Dc技术,一种更新的纹理压缩功能。
近几年随着可编程Pixel Shader技术的应用,开发人员发现纹理也随之出现了多样化,象surface normals、shininess、roughness、transparency等等这在之前都是没有的。它们会同传统的颜色信息一样存储在纹理中。对于多样化的纹理来说,旧有的DXTC常常不能进行很好的压缩处理。因此我们也需要一种新的压缩技术出现,来提升画质,和降低内存带宽的损耗。3Dc发挥的作用同当时的S3TC是类似的。
3Dc技术被设计用于解决原有DXTC无法完成的工作,并且在新的类型纹理数据中提供最有效的压缩。DXTC主要被拥有压缩3或4通道格式数据,而3Dc则主要集中在2通道数据格式上。3Dc被用于两个日益增多的任务:一、压缩normal maps;二、将多个数据片封存入一个压缩纹理中。



「 可以看到DXTC的压缩会严重损失画质 」 许多现在的游戏,例如FarCry.举例来说,在凹凸贴图上使用一种增强贴图方法,叫做Normal Mapping.Normal Maps是一个包含有多边形信息的特别材质。类似的bump maps,这些normal maps需要详细的多角形模型,并且增加细节。我们所看到的那些美妙的部分是每个角度的光线设置都是非常完美的。
首先,游戏的开发者需要设计一个非常详细的关于使用多边形的计划。然后,实际的游戏中的character会使用较少的多边形的简单方式,两种方式的差别是比较明显的,然后就是转换材质。并且合并最好的部分,这个normal map会被单一模式所应用,使它的细节看起来非常的优质。



「 上面的例子是将15000个多边形压缩成1000个的Normal Map例子 」 让我们使用一个竞赛游戏作为例子。第一个模式非常复杂并且包括许多细节,像tread pattern一样。每秒有16个粗糙的circular shape组成。
第二个的模式的细节要好的多,但是你依然能够辨认出那些大致的circular shape.
当使用normal maps时候 , 也有一些不利的因素。第一,增加了显示芯片的负荷。
另外一个不利因素使需要更大的数据带宽。更多细节开发者愿意将bump-mapping以及Normal Mapping合并, 以更好的分解Normal Maps.但是需要更多的存储带宽。
虽然Normal Maps可能会使用DXTC压缩, 但是这种方式通常可以造成细节是否被压缩一目了然。和S3研究的S3TC压缩方式一样,ATi现在已经开始发展其新型压缩方式3Dc,
根据ATi官方的数据,这种方式可以将压缩比率提高的4:1,并且没有任何细节上的损失。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: