泡泡网显卡频道 PCPOP首页      /      显卡     /      评测    /    正文

完美DX10!ATI新王者HD2900XT权威评测

 ● 第三章/第三节:ATI 3Dc功能回顾

1.纹理压缩技术

    纹理贴图是贴在3D对象上的位图,它可以在不增加3D场景中几何体复杂性的前提下得到逼真的表面细节。纹理贴图可以从木纹、大理石一直到复杂图形如人物、建筑、树木等等。为了模拟现实生活中的场景,必须利用大量细致的纹理贴图来实现。这些纹理贴图会占用大量系统或显存。纹理压缩就是将预备贴到3D模型上的贴图进行数据压缩,从而节省传输、存储它们所占用的显存的带宽、容量。

{imageTitle}
 
待压缩的材质

    据个例子来说。对于一个最大尺寸是4096×4096像素的图片来说。如果按照32位色来存储,这个贴图文件的大小是:4096×4096×32=536,870,912bit,也就是67,108,864Byte,合算是67MB。这意味着什么?这意味着256MB的显存也只能放上不到4张贴图。所以纹理压缩显得非常必要了。纹理压缩的原理就是将这些贴图进行压缩后存储进显存,这样就能大大的减小对显存容量的依赖。

    最开始的纹理压缩技术并不是微软在DirectX中提出的,这种技术的渊源要追溯到5年以前了。最开始采用纹理压缩技术是S3在OpenGL中首先提出的,最初的名称叫做S3TC。

    到了1999年,微软吸纳了这种做法,在他们的DirectX中加入了纹理压缩技术,并且取名为DXTC(DirectX Texture Compression)。

{imageTitle}
 
 DXTC

    纹理压缩的技术虽然看似简单,但是将压缩后的数据存储进显存并不是终结。重要的是需要用显示芯片把这些压缩后的数据进行解压缩,再经过运算贴图到3D模型上。这个过程就需要显示芯片在硬件上支持了,如果不支持,对于压缩后的数据无法识别,照样不能完成纹理压缩,也不能发挥出纹理压缩的优势。

    纹理压缩应用的算法由于涉及硬件复杂度、解压效率、色彩空间变换等等技术问题,要比单纯的压缩图片复杂的多了。就拿我们刚刚提到的DXTC来讲,这其中就包含着5种不同的算法,DXT1一直到DXT5,这5种不同的算法是根据5种不同的情况来使用的。

    当然然而,DXTC纹理压缩技术虽然能够带来性能上的提升,但是这种压缩技术却是一种有损压缩,这也就意味着在压缩→存储→解压的过程中势必会对细节有一定的损失,但是这个损失的幅度并不是很大,所以人们也就接受了这种折中的做法。DXTC技术得到了充分而广泛的应用,几乎所有游戏都采用了这种技术。

    随着技术的发展,normal mapping技术成为了游戏中逐渐流行的贴图技术,它用很少的多边形就可以表现非常高的表面纹理细节。由于法线贴图RGB通道中存贮的是法线向量,在使用传统的压缩算法的时候就遇到了麻烦。

{imageTitle}
 
 法线贴图

    法线贴图中每个点的颜色反映的是该点法线的角度,也就是该点的凹凸的信息,如果这些信息丢失了,带来的结果就会糟糕的多——阴影失真是小,甚至可能造成贴图错误,因此,ATI研发了3Dc技术,以解决法线贴图的压缩问题。

2.3DC技术原理

    首先,3Dc压缩算法是一种基于“块”的压缩方式。什么叫做基于“块”呢?就是指压缩的过程中将要压缩的内容进行分块,再对每一个单独的“块”进行压缩。

  在3Dc技术中,ATI选择了将一个法线贴图分成若干个4×4像素(纹素)的块,每个块拥有16个像素。为什么这样分,这其中也是有一定的道理的。

{imageTitle}
 
 分块

  因为作为一个法线贴图来讲,虽然每个点表示了相应位置的凹凸情况。但是,一个平面的凹凸通常不会太细,即使有小尺寸的凹凸情况,也不会比贴图上4个像素还要小。所以ATI选择了以4×4个像素为一个基本的单元,然后对这个单元内的信息进行压缩。

    接下来的步骤就是要进行插值运算了。所谓插值运算,就是在这两个数之间插入一些经处理器生成的数值。具体到3Dc算法中,他们采用了在这最大值和最小值之间等分7份,然后将中间的6个值插进刚刚统计得来的最大值和最小值之间。

    有了插值运算的基础,我们接下来就不难理解其中压缩的实现方法了。因为我们在记录数据的时候就能够摒弃原来的16个数了,转而使用两个数(最大值和最小值)就能表示了,两个数自然要比16个数占的空间要小,这也就是压缩的意义所在。

{imageTitle}
 

    当然,这个过程中还有特别重要的一点就是将原数据和插值后的数据进行比较,从而让计算机知道那些不是最大值也不是最小值的点,究竟应该取这8个数值中的哪一个。

    3Dc技术根据Z轴向量是一个仅仅表示方向的向量的特点,将向量的长度取“256,然后利用公式X2+Y2+Z2=2562,将Z在后期算出。

3.3DC技术的优点

● 压缩比比较大,体现了压缩的优势

    我们看到,3Dc技术对于法线贴图的压缩比是恒定的4:1,这个比例相对于DXTC压缩技术中的6:1的压缩比要小一些,但是对于原数据来讲,能够将原来占用的空间缩减到1/4,压缩的意义也是非常大的。

● 压缩失真小

{imageTitle}

    我们看到,在3Dc算法中其实是有一定的失真的,这一点也不必隐晦,因为如果在一个取样范围较大的空间实现压缩的话,失真是在所难免的,这16个点中每一个色彩通道的取值范围均有256个,3Dc算法仅仅使用了8个数来表示这些值,其中就有可能舍掉了248个数。

    但是由于我们采用的8个数值在这个空间中是平均分布的,而且每个值都用了和原数据最为接近的一个值来表示,所以每个数值失真的幅度就被控制在了[0,16]的闭区间上。由于实际情况中在一个4×4的块中两个极值的差通常会比较接近,所以实际应用中3Dc的失真的影响也会比较小。

● 算法简单,效率高

    这个算法的具体操作过程非常简单,这些步骤在通过CPU和显示芯片运算的过程中耗费的资源相对于其他的步骤来讲比较小,所以CPU和显示芯片就能够在更短的时间内完成更多的操作,从而提升了效率,反映在用户的直观感受上就是看到了3D效果但是显示的帧速率并没有太大的降低。

    有鉴于3DC技术的出色表现,Microsoft在2004年发布的DirectX 9.0c加入了对ATi 3dc纹理压缩技术的支持,3DC成为得到业界公认的技术标准。3Dc 技术最初是伴随着X800系列显卡问世界,成为DirectX 9.0c标准的压缩技术后,对手NVIDIA也在GeForce 7800 GTX系列显卡上使用了3Dc压缩技术。

    不止3DC技术,ATI也率先支持的tesselation功能(上一章介绍),ATI对新技术的追求也是孜孜不倦,为图形核心的发展做出了自己的贡献,也赢得了业内人士的尊敬。

{imageTitle}

0人已赞
第1页:完美DX10!ATI新王者HD2900XT权威评测第2页:完美DX10!ATI HD2000系列评测提纲第3页:2007显卡年!AMD/NVIDIA决战图形市场第4页:奋起直追!全新Radeon HD 2000产品线解析第5页:功能化发展!Radeon HD2000系列亮点逐个看第6页:第二章:统一渲染架构解析第7页:第二章/第二节:革命!R600的统一渲染架构第8页:4第9页:第三章:DirectX发展回顾以及DirectX10详细介绍第10页:第二节 DX10的架构特性 以及带来的好处第11页:第三章/第三节:ATI 3Dc功能回顾第12页:3第13页:3第14页:3第15页:3第16页:集众家之长,R600架构总览第17页:R600架构分块介绍第18页:Setup Engine(装配引擎)第19页:Ultra-Threaded Dispatch Processor(超线程分配处理器)第20页:Stream Processing Units(流处理器)第21页:R600的超标量SIMD架构第22页:4第23页:5第24页:ATI片内缓存相关技术第25页:Memory Control(显存控制器)第26页:第六章 R600的神工鬼斧——Tessellation技术第27页:第六章\\第二节 传统的虚拟3D技术回顾第28页:第二小节 凹凸贴图 Bump mapping第29页:第六章\\第二节\\第三小节 法线贴图(normal mapping)第30页:视差贴图技术parallax occlusion mapping第31页:位移贴图(displacement mapping)第32页:Ati的独门秘籍 Trumform 第33页:Tessellation技术第34页:神奇的小数点——细分网格算法中小数位的意义第35页:Tessellation效率的源泉——控制“笼子”第36页:Tessellation技术的流程第37页:Tessellation技术的应用和前景第38页:1第39页:AA发展第40页:CFAA第41页:123第42页:ATI显卡产品形象代言人——Ruby四度出击第43页:X800 & X850 Ruby第44页:DX9C的最高境界 X1800 Ruby第45页:R600 DX10 Ruby高清晰截图赏析第46页:R600 DX10 Ruby引擎和技术解析第47页:23第48页:R600 DX10 Ruby所用图形引擎揭秘第49页:1第50页:2第51页:第九章\\第二节第52页:庞大的运算资源,R600单卡就能物理加速第53页:3第54页:第四章:AMD高清视频功能解析第55页:22第56页:第三节 硬件视频加速第57页:第四节 UVD 引擎解码流程第58页:第五节 UVD测试第59页:第一节 电脑音频的数码之路第60页:第二节 HDMI数字音频技术背景第61页:第三节 各种显卡HDMI接口方案第62页:第四节 R600系列方案第63页:第五节:实战R600音频播放第64页:第六节 HD 2900XT怎么用?第65页:显卡介绍第66页:123123第67页:显卡介绍第68页:123第69页:显卡介绍第70页:3第71页:123123第72页:测试系统配置和设置第73页:阿苏大发送颠覆第74页:113123第75页:4第76页:05第77页:06第78页:游戏第79页:游戏第80页:123第81页:6第82页:6第83页:交火第84页:功耗测试第85页:1第86页:第二节 客观,公正,专业,全面,泡泡网为您带来最权威的DX10测试第87页:第三节 Call of Juarez游戏DX10测试 第88页:第四节 DirectX SDK测试(微软官方2007年四月版)第89页:第四小节:Draw Predicated第90页:第七小节:MotionBlur10第91页:第十小节:Skining 10第92页:第十四章 总结 另觅蓝海!AMD让ATI看得更远第93页:123

关注我们

泡泡网

手机扫码关注