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

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

    R600对于DIY玩家已经不算陌生,过去一年多的时间里,相关R600的各类新闻充斥着硬件网站。但在今天,它真的来了! 带着众多Afans和新东家AMD的期盼,AMD首款支持DirectX 10显卡——ATI Radeon HD 2000系列正式发布。

    如果说,AMD&ATI的联姻是一个新时代的开始;R600则是这场“婚姻”后真正意义上的产物。这个由当年缔造了经典R300研发团队,再度操刀的R600将会带来怎样惊喜? DirectX 10战场上NVIDIA/ATI精彩厮杀能否再度上演?本文将会带您进入精彩的R600世界。

第一章 前言 Afan的节日 R600震撼发布

    第一节 2007显卡年!AMD/NVIDIA决战图形市场
        内忧外患 Radeon HD2000注定多坎坷
        OEM市场传捷报 R6**未发布已被抢购一空
        
    第二节 奋起直追!全新Radeon HD 2000产品线解析
        ATI Radeon HD 2000系列规格表
        R600——Radeon HD 2900系列
        RV630——Radeon HD 2600系列
        RV610——Radeon HD 2400系列

    第三节 功能化发展!Radeon HD2000系列亮点逐个看
        全线支持HDCP数字保护
        显卡声卡二合一!HD 2000支持HDMI混音输出
        超低功耗 HD2600/2400率先采用65nm制程
        迈进高清! ATI全新视频引擎UVD

第二章 统一渲染架构详细解析

    第一节:3D图形创建原理介绍

    第二节:二次革命!R600的统一渲染架构
        第一小节:传统的显示芯片架构
        第二小节:传统架构的劣势和不足
        第三小节:ATI的第一代统一渲染架构:XENOS

第三章 DirectX发展回顾以及DirectX10详细介绍

    第一节:技术背景——DirectX 的发展回顾和API相关基本常识
        第一小节:DirectX简介
        第二小节:DirectX发展历程

   第二节 DX10的架构特性 以及带来的好处
        1.降低绘制消耗
        2.降低CPU依赖性
        3.批量绘制

    第三节 ATI 3Dc功能回顾
        1.纹理压缩技术
        2.3DC技术原理
        3.3DC技术的优点

 第四节 Shader Model 4.0
        1 加入了一种新的Shader——Geometry shader
        2 统一的Shader架构
        3 百倍于DirectX 9的可用资源
        4 更多的纹理
        5 更多的渲染目标(Render Target)
        6 新的HDR颜色格式

    第五节 几何Shader以及 Stream Out
        1 细分的虚拟位移贴图(Displacement Mapping with Tessellation)
        2 基于边缘(Adjacency)的新算法
        3 数据流输出(Stream Output)

    第六节 高级渲染语言(HLSL 10)
        1 常量寄存器(Constant Buffers)
        2 Views
        3 整形与位运算指令 (Integer and Bitwise Instructions)
        4 Switch 语句(Switch Statement)

    第七节 其他改进
        第一小节 alpha to coverage
        第二小节 shadow map filtering

    第八节 游戏效果
       第一小节 次世代Instancing技术
       第二小节 基于象素级别的位移贴图技术

第四章 R600核心架构解析

    第一节 集众家之长,R600架构总览
        1 Xbox360图形芯片Xenos,为R600的研发积累了宝贵的经验
        2 R580架构的精髓被沿用在了R600之上

    第二节 R600架构分块介绍

    第三节 Command Processor(指令处理器)

    第四节 Setup Engine(装配引擎)

    第五节 Ultra-Threaded Dispatch Processor(超线程分配处理器)

    第六节 Stream Processing Units(流处理器)
        第一小节 SIMD架构的弊端
        第二小节 G80全新的MIMD架构
        第三小节 R600的超标量SIMD架构

    第七节 Texture Units(纹理单元)

    第八节 Shader Export & Render Back-Ends(像素输出部分)

    第九节 独立的专属缓存
        ATI片内缓存相关技术

    第十节 Memory Control(显存控制器)

第五章 R600的神工鬼斧——Tessellation技术

    第一节 Tessellation技术简介

    第二节 传统的虚拟3D技术回顾
        第一小节 通过纹理贴图获得“质感”
        第二小节 凹凸贴图 Bump mapping
        第三小节 法线贴图(normal mapping)
        第四小节 视差贴图技术parallax occlusion mapping
        第五小节 位移贴图(displacement mapping)
        第六小节 ATI的独门秘籍  Trumform

    第三节 Tessellation技术
        第一小节 Tessellation技术的网格细分算法
            第一种:离散算法
            第二种:连续算法。
            第三种:自适应算法
        第二小节 神奇的小数点——细分网格算法中小数位的意义
        第三小节 Tessellation效率的源泉——控制“笼子”
        第四小节 顶点插值技术

    第四节 Tessellation技术的流程

    第五节 Tessellation技术的应用和前景

第六章 游戏画质提升四倍!全新CFAA解析

    第一节 抗锯齿技术及其两种基本方法
        什么叫做抗锯齿(Anti-Aliasing)
        超级采样(SuperSampling)抗锯齿
        多重采样(Multi-Sample),抗锯齿技术真正实用化

    第二节 抗锯齿技术的发展
        暂时性(Temporal)抗锯齿(ATI专用)
        自适应(Adaptive)抗锯齿
        双卡互联,让AA等级成倍提高
       组合AA技术

    第三节 DX10时代,NVIDIA和ATI大幅改进AA算法和精度
        第一小节 NVIDIA GeForce 8系列全新CSAA
        第二小节 ATI HD 2000系列全新CFAA(Custom Filter,定制筛选)技术
        第三小节 各个等级的AA品质对比:

第七章 ATI显卡产品形象代言人——Ruby四度出击

    第一节 DEMO升华到产品形象代言人
        NVIDIA的美女策略,四代产品形象代言人
        ATI四代Radeon统一使用Ruby,技术见证虚拟人物的进化
        Radeon HD 2000系列提出Perfect 10的概念

    第二节 X800 Ruby:The DoubleCross

    第三节 X850 Ruby:Dangerous Curves

    第四节 X1800 Ruby:The Assassin

    第五节 HD 2900 Ruby:Whiteout高清截图赏析

    第六节 HD 2900 Ruby技术解析
        第一小节 更大规模的多边形,展现人物完美细节
        第二小节 支持更多活动混合变形,人物更加生动活泼
        第三小节 更多的资源用于渲染环境,画面表现力大幅提升
        第四小节 HDR效果以及瞳孔根据光线变化
        第五小节 物理加速的粒子系统
        第六小节 CG级别山脉渲染全过程
        第七小节 三款Ruby Demo运算量对比

    第七节 前景 HD 2900 Ruby Demo引擎将会被很多游戏采用

第八章 彻底解放CPU!R600通用计算能力解析

    第一节 GPU逐渐“蚕食”CPU的功能
        第一小节 之所以称为GPU,是因为实现了硬件T&L
        第二小节  不再需要解压卡!显卡就是高清视频加速卡
        第三小节 DX10大革命:几何着色从CPU转移至GPU
        第四小节 物理加速卡还能存活几年?显卡足以胜任物理加速技术

    第二节 CPU地位遭受挑战,GPGPU大战一触即发
        为科学计算作贡献,ATI GPU大放异彩
        AMD发布首款流处理加速卡,GPU通用计算真正进入实用阶段

    第三节 R600——为通用计算而生
        HD Cap`n`Stream技术,GPU视频编码加速
        庞大的运算资源,R600单卡就能物理加速
        R600能用于更多的非3D场合

    第四节 分久必合、AMD的CPU&GPU整合大业

第九章:AMD高清视频功能解析及测试

    第一节  高清时代来临 解决播放问题仍是关键

    第二节  三种HDTV编码方式对比
       1 MPEG-2——已经难不倒主流CPU和显卡
       2.VC-1(WMV9)——存在局限性的平衡之选
       3.H.264(AVC)——最被看好的视频编码格式

    第三节  硬件视频加速

    第四节 UVD 引擎解码流程

第十章 显卡声卡二合一!HDMI声卡解析及体验式测试

    第一节 电脑音频的数码之路

    第二节 HDMI数字音频技术背景

    第三节 各种显卡HDMI接口方案
        第一种:无音频方案
        第二种:音频“飞线”方案
        第三种:光纤接线方式

    第四节 R600:内置数字声卡的完美HDMI音频方案

    第五节:家庭影院实战R600音频播放

    第六节  HD 2900XT应该怎么用?

第十一章 Radeon HD 2900XT显卡实物赏析和设计解析

    第一节 Radeon HD 2900XT外观

    第二节 揭开R600的庐山真面目,HD 2900XT全面拆解

    第三节 HD 2900XT显卡硬件规格

    第四节 HD 2900XT显卡特殊功能介绍
        核心集成完整声卡,DVI也能输出音频!
        视频芯片升级,多媒体功能大大加强
        双桥交叉火力,双卡组建更容易,效能更强!
        全新8Pin+6Pin PCI-E供电接口,保证极限超频的供电

    第五节 HD 2900XT显卡供电模块解析
        第一小节 8800GTX的PCB为何这么长
        第二小节 ATI采用VOLTERRA优异供电解决方案
        第三小节 最大电流输出、最高转换效率
        第四小节 少有的显存IO供电
        第五小节 多层陶瓷电容(MLCC),优异做工与用料
        第六小节 辅助供电模块同样豪华无比

    第六节 各品牌显卡赏析

第十二章 性能测试

    第一节 测试系统配置和设置

    第二节 3DMark06理论测试

    第三节 ShaderMark V2.1理论测试

    第四节 3DMark03——DX7/8/9综合测试

    第五节 3DMark05——DX9.0b基准测试

    第六节 3DMark06——DX9.0b/c综合测试

    第七节 游戏测试:Prey(掠食者)

    第八节 游戏测试:Farcry(孤岛惊魂)

    第九节 游戏测试:Half-Life2:Episode One(半条命2:第一章)

    第十节 游戏测试:FEAR(恐惧)

    第十一节 游戏测试:帝国时代3:酋长

    第十二节 游戏测试:英雄连

    第十三节 游戏测试:优品飞车10

    第十四节 游戏测试:命令与征服3

    第十五节 游戏测试:使命召唤2

    第十六节 游戏测试:Test Drive Unilimited(无限试驾)

    第十七节 游戏测试:S.T.A.L.K.E.R (切尔诺贝利阴云)

    第十八节 交叉火力测试

    第十九节 功耗测试

第十三章 DirectX 10性能测试

    第一节 DX10浮出水面,两大阵营硬件齐备,玩家苦于没有游戏

    第二节 探求客观,公正,专业,全面的DX10测试方法

    第三节 Call of Juarez游戏DX10测试

    第四节 DirectX SDK测试(微软官方2007年四月版)
        第一小节 Basic HLSL测试
        第二小节:CubeMap GS测试
        第三小节:Displacement Mapping测试
        第四小节:Draw Predicated测试
        第五小节:FixedFuncEMU测试
        第六小节:Instancing测试
        第七小节:MotionBlur10测试
        第八小节:ParticleGS测试
        第九小节:PipesGS测试
        第十小节:skining 10
        第十一小节:soft particle

第十四章 总结 AMD让ATI看得更远

活动:2899元团购HD 2900XT

第一章 前言 Afan的节日 R600震撼发布

第一节 2007显卡年!AMD/NVIDIA决战图形市场

    在竞争激烈的图形芯片领域,2007年被业内人士寄以厚望。微软新一代操作系统Vista将个人电脑的3D门槛大大提高;具有革命意义的DirectX 10以及众多诱人的DX10游戏更促进了显示卡的更新换代。机会与挑战并存,对于NVIDIA/AMD两大竞争对手来说,2007年同样具有战略意义的一年。

● 内忧外患 Radeon HD2000注定多坎坷
  
    R600发布固然是个好消息,但AMD近来传出的消息却不慎乐观。四月末,AMD公布了2007年一季度财报:AMD今年第一季度的销售收入为12.33亿美元,这一业绩与其2006年同期的销售收入13.32亿美元相比,减少了0.99亿美元,继续处于亏损状态;再此期间,AMD为了ATI继续支付了1.13亿美元收购开支。看来,06年大手笔的收购案以及处理器市场激烈竞争导致利润降低,短时间内AMD财务状况仍不是太乐观。

{imageTitle}

    从市场状况来看,竞争对手NVIDIA支持DirectX 10的高端G80系列已经上市长达半年。8800GTX/GTS以及简化版的8800GTS 320M覆盖了从6000~2000元的绝大多数高端市场。半年来的市场真空不仅保证了丰厚的利润,也创造了NV高端卡市场的非常好的销量。而待到R600上市后又很可能迎来NV的价格战,这对于在制造成本上不占优势的R600系列将是更大的考验。

    不过一切还算不上太糟糕,DirectX 10游戏的全面延期使得市场对于DX10显卡需求也相应放缓。对于在未来几月才能陆续到来的DX10游戏,A卡还有较为充裕的时间准备。尤其在销量最大的千元内主流市场,NV新推出的8500/8600优势尚未完全建立,市场对于Radeon HD 2000系列前景依旧看好。

● OEM市场传捷报 R6**未发布已被抢购一空

    “前途是光明的,道路是曲折的”这句老话用在A卡身上再适合不过。自去年AMD完成对ATI的并购后,AMD也成为业内唯一能独立提供CPU+GPU+芯片组的厂商,创新的平台化战略大大加强了AMD/ATI产品的竞争力。

{imageTitle}

    据外电报道称,R6**系列图形芯片已经卖出了百万颗芯片。其中低端RV610(HD 2400系列)尚未发布就已被被戴尔、惠普和联想三家瓜分一空。OEM巨头所看重的正是RV610低廉的成本(核心小、64Bit显存成本低)、极小的发热(65nm核心)、UVD高清视频加速和完整的DX10支持。另据有关预测显示,到2007年底,AMD 65纳米的 GPU销量有可能达到一个亿!

{imageTitle}

第二节 奋起直追!全新Radeon HD 2000产品线解析

● ATI Radeon HD 2000系列规格表

    针对新一代产品在HD应用上的特色,AMD也将之前的英文字母“X”从产品命名当中除去。R600、RV630、RV610以及未来的RV6XX系列将会统一命名为Radeon HD 2XXX系列。

{imageTitle}

 Radeon HD 2XXX系列规格表(点击看大图)

● R600——Radeon HD 2900系列

    AMD Radeon HD 2000产品线的高端部分目前只有Radeon HD 2900XT一款,仍采用TSMC 80nm工艺制作。Radeon HD2900系列图形芯片拥有7亿个晶体管,内建320个流处理器,搭配双向512-bit显存位宽;支持原生交火、128-bit HDR渲染、硬件支持物理加速;而在HDTV支持方面,显卡内建了HDMI数字输出以及5.1声道的音频输出。

{imageTitle}

{imageTitle}

 ATI Radeon HD 2900XT

● RV630——Radeon HD 2600系列

    Radeon HD 2600系列采用TSMC最新的65nm工艺。芯片拥有3.9亿个晶体管,内建了120个流处理器,搭配128bit显存位宽主要面向中端市场。主流的Radeon HD 2600系列将拥有XT、Pro两种规格,通过不同显存搭配从而衍生出多个不同版本。

    Radeon HD 2600系列支持最新Avivo HD技术。能够从硬件端完成蓝光、HD-DVD影碟(H.264、VC-1编码)的播放,从而彻底解放CPU。

{imageTitle}
 
{imageTitle}
 
 Radeon HD 2600XT GDDR4

{imageTitle}    {imageTitle}

 Radeon HD 2600XT GDDR3/Radeon HD 2600PRO GDDR3

RV630相关型号规格:

    Radeon HD 2600XT 512MB GDDR4
    Radeon HD 2600XT 512MB GDDR3
    Radeon HD 2600XT 256MB GDDR3
    Radeon HD 2600PRO 256MB GDDR3

● RV610——Radeon HD 2400系列

    面向入门级用户的RV610(Radeon HD 2400系列)分为XT、Pro两种规格,芯片拥有1.8亿个晶体管,内建40流处理器,64bit显存位宽;低端的Radeon HD 2400系列同样保留在HD视频全面的功能。能够支持UVD以及Avivo HD,在输出方面同样支持HDMI以及5.1声道音频输出。

    RV610的功耗仅为25W,发热很小,很容易被设计成被动散热以及刀卡板型,这个特性使得它非常适合用在准系统或者HTPC之上,再加上先进的规格,前景十分广阔!

{imageTitle}

{imageTitle}    {imageTitle}

 Radeon HD 2400XT GDDR2与Radeon HD 2400Pro GDDR2

RV610相关型号规格:

    Radeon HD 2400XT 256MB GDDR2
    Radeon HD 2400PRO 256MB GDDR2
    Radeon HD 2400PRO 128MB GDDR2

● Radeon HD 2000系列定价

{imageTitle}

    根据AMD官方定价,高端HD 2900XT售价不足400美金,国内售价在3000~3500元左右;HD 2600系列由于规格较多,定价从99~199美金(800~1600元之间),基本于NV 8600GTS/GT相似。低端的HD 2400价格将低于99美元,国内售价在500~700元之间。

{imageTitle}

第三节 功能化发展!Radeon HD2000系列亮点逐个看

    硬件产业发展至今,3D游戏性能早已不是衡量一款显卡优劣的全部。了解了Radeon HD 2000系列又具备哪些亮点功能?在正式评测开始前,先让我们来简单了解一下。

● 全线支持HDCP数字保护

    作为高清视频内容的保护机制,HDCP(High-Bandwidth Digital Content Protection)是软件和硬件厂商针对HDTV推出的版权保护协议。在使用PC/HTPC播放蓝光和HD-DVD的播放过程中,选择一块支持HDCP的显卡是必不可少的环节。只有这样,才能完整输出蓝光和HD-DVD影碟的全高清画面。

{imageTitle}

 Radeon HD 2000系列芯片全部内建HDCP密钥

    从X1000系列开始,ATI中高端产品中已经开始加入了对HDCP的支持。但从制造成本考虑,HDCP仍只作为厂商的参考方案,市场销售的千元以内显卡绝大多数并不支持HDCP。随着高清内容的迅速普及,AMD已经将HDCP作为标配,HD 2000系列全线产品均可支持HDCP数字保护。

● 显卡声卡二合一!HD 2000支持HDMI混音输出

    在显示卡发展初期,声卡显卡二合一并不算罕见。不过随着个人电脑市场的发展趋势,偏重3D性能的显卡与声卡功能完全分开从此分道扬镳。然而,HDTV的普及/应用却再次为显卡声卡的合二为一提供了非常好的的契机。

{imageTitle}

    作为AMD新一代图形芯片的另一大特色,Radeon HD 2000系列核心集成了完整的声卡部分。不过这并不是说R600会竞争创新X-Fi等普通声卡,HD 2000系列音频部分是用来提供HDMI输出。因此在使用HD 2000系列显卡接驳大屏幕平板电视时可以更加方便输出视频和音频。

{imageTitle}

    另据AMD官方资料,通过DVI-HDMI转接器HD 2000系列可提供Full HD 5.1音频信号。关于音频的详细介绍及测试,将在下文中为大家介绍。

● 超低功耗 HD2600/2400率先采用65nm制程

    在此次推出的HD 2000系列显卡中,除高端R600(HD 2900XT)仍采用80nm制程外,另外两款RV630(HD 2600系列)、RV610(HD 2400系列)均采用TSMC 65nm工艺制造,这也是业界首款采用65nm工艺制造的GPU。

    得益于更先进的工艺制程,RV630与RV610相比RV5**核心面积更小,对于芯片成本降低有利。不仅如此,先进的65nm工艺也使得功耗发热得到明显改善。低端RV610显卡的功耗仅为25W,很容易被设计成被动散热以及刀卡板型,这也使得它非常适合用在准系统或者HTPC之上,应用前景广阔。

● 迈进高清! ATI全新视频引擎UVD

    R6XX系列除了集成声卡以及HDMI/HDCP等先进特效之外,新一代的高清视频加速引擎UVD也是一大卖点。作为Avivo的升级版本,UVD引擎在播放HDTV高清视频时有着更为出色的表现。与以往视频解码由CPU和GPU共同完成不同,UVD引擎能够在显卡上完成蓝光、HD-DVD影碟(支持H.264/VC-1编码)全部解码过程,从而彻底解放CPU。

    在下文中,我们还会就UVD引擎进行介绍。

{imageTitle}

● 第二章 统一渲染架构详细解析

    R600在架构上最大的特点就是它采用了第二代统一渲染架构(Superscalar Unified Shader Architecture )。这种架构院源自于Xbox360使用的Xenos图形核心。本章节将为您介绍一下统一渲染架构的特点。


第一节:3D图形创建原理

    在为大家介绍R600的统一渲染架构之前,为了让更多的朋友能对统一渲染架构的革命性创新有更深入的了解,我们先介绍下图形管线,来看看传统的显卡管线工作原理,3D画面是如何最终展现在屏幕上的。

    3D程序从载入到展现在屏幕上,在传统图形管线中是经过下列四个步骤的:

● 第一步:应用程序载入/ 场景构建
    
    其中包含了场景/几何数据库遍历、对象的运动,观察相机的运动和瞄准,对象模型的动画运动,3D 世界内容的描述,对象的可见性检查,包括可能的遮挡剔除、细节层次的选择 (LOD)等处理。

    简而言之,这一步主要是决定在游戏中有哪些对象, 它们的模型、使用的纹理,可能在什么动画帧,以及它们在游戏世界里的位置。 也决定照相机的位置和方向。

● 第二步:几何处理

    几何处理过程也就是传统意义上的坐标转换和光源(Transforms&Lighting )
。其中包含几何模型的变换 (旋转,平移, 缩放),从模型空间到世界空间的变(Direct3D),从世界空间到观察空间变换,观察投影,细节接受/ 拒绝 剔除,背面剔除 (也可以在后面的屏幕空间中做),光照,透视分割 - 变换到裁剪空间,裁剪,变换到屏幕空间等几个步骤

{imageTitle}
3d 骨架模型

    在第二步中,计算机处理的内容是几何模型,不包括贴图和其他素材,因为只有骨架确定了位置和形状,往上面贴图才是有意义的。我们所说的“骨架”,也就是几何模型,在电脑里存储的信息就是确定这个几何模型的顶点的数据。因为我们知道,两个点能够确定一条线,三个点能够确定一个面,也就是一个三角形,而多个三角形可以组成一个多边形,多个多边形就确定了一个几何模型。

{imageTitle}
 
三角形蒙皮

    而且,3D画面中的任何一个顶点都有一个坐标,当此物体运动时,它包含的顶点坐标发生变化,这指的就是几何模型的变换。这个步骤里每个模型的每一时刻的顶点位置都要被重新确定。

{imageTitle}

    然后进行的是观察投影(坐标转换),每一个时刻的3D几何模型将会由3D状态转变为2D状态,具体的方法就是将3D几何模型的每一个顶点的三维坐标通过投影的方法转换为二维坐标。这个过程中,做转换用的平面是根据玩家看游戏的方向和视角决定的。这个过程中电脑并不会进行贴图的操作。甚至每个顶点之前也仍然都是独立没有关系的。

{imageTitle}
 
投影

    这个步骤中包含了隐面消除技术(HSR),现实处理时还常加上背面剔除来提高效率。现实生活中,当你观察A物体的时候,如果物体B在你和A物体之间,那么你的视线就被物体B所遮挡。在3D技术发展的初期,整个3D场景所包含的顶点都被进行坐标变换并进行处理,这样一来,很多最终不会被显示在屏幕上面的模型也会被处理。所以研究人员发明了Z缓冲器算法来提前进行Z轴判断,也就是判断每个顶点的前后关系,从而决定究竟哪些顶点会被显示。Z缓冲器其实就是另一种帧缓冲器, 不同的是帧缓冲器存的是画面上每个像素的光亮度, 而Z缓冲器存的是画面上每个像素内可见表面采样点的深度。后来还有扫描线Z缓冲器算法,用于消除早期Z缓冲器算法内存消耗严重的缺点。

{imageTitle}
 
隐面消除

    3D游戏中除了场景与物体还需要灯光,没有灯光就没有3D物体的表现,无论是实时3D游戏还是3D影像渲染,加上光照的3D渲染会引入大量的数学计算。在硬件T&L问世之前,位置转换和光照都需要CPU来计算。ATI从REDEON 256开始支持硬件T&L功能,从而把CPU从繁重的数学计算中解脱出来。后来,在硬件T&L但元为顶点着色单元所取代,这次REDEON X2900XTX的发布,带来的又是一场全新的革命,统一渲染架构下的64个5D Unifide Shader运算单元理论上都可以用作顶点的运算。

● 第三步:三角形生成
  
    这个过程就是将已经转换为二维坐标的点根据他们之间的关系,构建成为三角形,也就是上一步骤中产生的骨架模型被附着一套三角形网格,这一过程也就是所谓的蒙皮,为下一步的贴图做准备。蒙皮过程需要进行计算普通或是相切的向量,并且需要骨架的节点被转化,因此他们与基础形态的关节是相关的,基础形态的关节会被转化后用于生成动态的网格。

{imageTitle}

 一个简单的人物模型有5000多个多边形

{imageTitle}

 一个复杂的人物模型会有多达两百万个多边形

    构建三角形的这个过程常常称之为Setup,不论在GeForce 256发布前后,这个部分都是显卡的性能衡量的重要指标,也就是“三角形生成能力”。

● 第四步:渲染/光栅化

    首先是处理原始的贴图或者材质素材,简单的而言就是根据需要把贴图处理一下,大多数情况是把贴图斜向做透视,说的明白一些就是把图片变变形状。这个过程中,我们常常提到的材质过滤(Texture Filtering,包括二线型过滤,三线性过滤,各项异性过滤)就是在这里做处理的。特别是各向异形过滤在做高等级处理的时候,消耗资源也相当的大。
  
    应用程序经常需要把纹理贴到几何体上并使texel直接映射到屏幕上的像素。例如,以一个需要在纹理中显示文本的应用程序为例,为了使纹理中的文本能清晰地显示,应用程序需要以某种方式确保映射到几何体上的texel不受纹理过滤的影响。如果无法保证这一点,那么得到的图像通常会是模糊的,如果纹理过滤方法为最近点取样,那么可能会产生粗糙边缘。为了统一像素和纹理取样,并同时支持图像和纹理过滤, Direct3D的像素和纹理取样规则经过了精心定义,但这也使得把纹理中的texel直接映射到屏幕上的像素成为一个相当有意义却又艰难的挑战。

{imageTitle}
 
材质过滤

    当然,这个过程随着可编程像素单元问世后变得更加复杂,实时的阴影、光照计算,甚至根据法线贴图做虚拟的3D贴图技术,都是Pixel Shader处理的内容,所以Pixel Shader从问世后就成文显卡中对性能影响最大的一个部分。上一代的R580显示芯片提供了多达48个4D Pixel Shader单元,不过在R600中,弹性的统一渲染架构让可进行Pixel Shader处理的单元最大增加到理论上的64个5D Unifide Shader单元。

    第二,对三角形进行像素的填充,将处理好的每一个象素填充到三角形中,在具体的执行操作的时候其实几乎是和Pixel Shader对像素的计算同步运行的。处理一些像素,就填充一些,然后再运行Pixel Shader处理一些象素。

    这个过程处理的数据也比较多,如果FPS确定、分辨率一定,数据量也就固定了。当然如果括反锯齿的处理,那么需要的像素数据量也会倍增。这部分在当年3D加速芯片问世的时候也是显卡性能的另一个最重要的指标,直接决定了游戏的显示速度。这也是我们常说的“像素填充率”指标。

{imageTitle}
 
像素填充的测试

    在“隐面消除技术”出现之前,这个步骤还要进行根据Z轴信息做Z轴判断,看哪个象素在前面才画出来,哪个象素在后面就不画出来。不过这种低效率的做法早已经被淘汰了。

{imageTitle}{imageTitle}
 
Alpha混合处理前后的对比

    最后,是光栅处理以及帧缓冲和输出,这个步骤起的作用是将已经着色的象素进行透明度(Alpha)混合等处理,这个过程就相当于最终决定显示什么图像的最后的操作,所以也非常的重要。在这个部分,显示芯片也需要投入大量的运算,所以显示芯片也使用了多个ROP单元同时运行的设计。

    经过ROP处理后的数据就是即将显示到显示器上的画面了,显示卡会将这些数据存入一个帧缓冲后再进行输出,由于帧缓冲的速度非常快,所以我们是感受不到的。

    到这里,整个显卡管线的处理过程就算是完成了,接下来就是通过RAMDAC转换为模拟信号,通过D-Sub接口输出到显示器上。或者通过TMDS的运算转换为TMDS信号,通过DVI输出到LCD上。

{imageTitle}

●第二章 第二节:二次革命!R600的统一渲染架构

    上面我们介绍了3D图形管线的整个工作过程,那么在这一节中我们将介绍R600的第二代统一渲染架构。

●第二章 第二节 第一小节:传统的显示芯片架构

    我们已经在第一节中介绍了3D游戏的处理的全部过程,那么在为大家介绍R600的统一渲染架构之前,我们有必要先了解一下传统图形架构的相关知识。

    如前一节所述,3D图形管线是一种顺序处理的过程,这种顺序执行的结构就像是一个管道一样,各种数据就像是管道里的水,不断留向下一级,所以人们也就根据这种特性为这种结构的处理单元起了一个更为形象的名字,这就是“管线”(Pipeline)的由来。

{imageTitle}
 
 传统3D管线

    不过在目前的显示芯片中,管线通常有多种类型,比如像素渲染管线、顶点着色管线、像素着色管线。其中,像素渲染管线是一直存在于图形芯片中的,和三角形生成一样成为早期图形核心的标志性功能。目前像素渲染管线演变为ROP单元,也就是说对于目前的GPU,有几个ROP单元就相当与有几条像素渲染管线。

    像素着色管线、顶点着色管线是从DirectX8开始被引入,具有可编程性。从此以后像素渲染管线逐渐退居到一个相对次要的地位,顶点着色管线、尤其是像素着色管线成为显卡的决定性因素。

● 第二章 第二节 第二小节,传统架构的劣势和不足

    我们注意到,在之前的显示芯片设计的时候,显示芯片厂商在设计的时候并不会将顶点管线和象素管线按照相同的数目去做。而是将顶点管线相对放的少一些,多放一些象素渲染管线。

    那么显示芯片厂商为什么要这么做呢?答案是:这样的结构和比例是芯片设计厂商根据常见游戏的情况而决定的。

    不同的游戏在开发的过程中,设计的游戏复杂度是不同的,有的游戏就非常简单,3D模型也相对简单,这样游戏就可以在更多的玩家的电脑上运行。有的游戏的3D模型和后期特效就非常复杂,这样在保证了游戏的效果的同时就让很多配置不是那么好的玩家无法运行或者运行起来特别慢。

    除去游戏复杂度的区别,游戏的开发商和显示芯片厂商还处在一个更加难以解决的怪圈中,这就是,游戏开发商无法在游戏的资源消耗定向上达成一致,所以带给了显示芯片厂商很大的麻烦。

    具体来说就是,有的厂商会开发一些3D模型很复杂,顶点数目很多的游戏,这些游戏就需要耗费很大的顶点渲染管线的资源,这类游戏可以把通常场景很复杂,里面的3D模型的细节非常到位。而另一类厂商则会将焦点放在后期的象素级别的特效,这样的好处就是可以给游戏带来更炫的视觉效果。

{imageTitle}

Vertex Shader、Pixel Shader负载不均衡
  
    举例来说,上图可以看到一个典型的例子,第一场景(鲨鱼)主要是由框架以及三角形来构成的,因此对于Vertex Shader的计算量是相当高的,而Pixel Shader计算的部分却非常少,Pixel Shader的管线资源被闲置。

{imageTitle}
 
实际中的Vertex Shader、Pixel Shader负载

    而第二个例子描绘的是一个复杂水体模拟场景,是由大量的光影特效都是依靠像素处理实现的,因此对于Pixel Shader单元的要求却非常高,而Vertex Shader的操作早已完成,导致了资源的浪费。这两个例子充分的证明了这样一个事实,大部分的应用中,Vertex Shader和Pixel Shader处理不平衡的现象非常普遍,导致部分Shader单元闲置,从而浪费宝贵的资源。这也正式Shader单元分离式设计显示卡的最大弊端之一。

   在这种情况下,显示芯片厂商只能按照最常见的游戏的情况来设计显示芯片,尽最大能力去满足不同的游戏。

    而游戏厂商在设计游戏的时候也不能随心所欲的设计游戏,必须满足显示芯片的性能配比,这样才能在消耗性能最小的情况下达到最好的游戏效果。

    这个矛盾一天不得到解决,显示芯片最大的效能就不能充分的得到发挥,这也一直是显示芯片的性能提高的最大瓶颈所在,在这样的架构上,不断的加“管线”,提高频率是显示芯片厂商唯一能作的事情。

传统显示芯片架构的缺点

1 游戏厂商无法按照需要设计游戏,必须向硬件性能妥协。

2 显示芯片的利用效率不高,运算单元被闲置的现象经常发生。

统一渲染架构的优点

    1.动态分配运算单元,提升利用率

    在这样的统一渲染架构下,每个处理单元都可以进行Vertex Shader的运算和Pixel Shader的运算,这样一来,无论是怎样的游戏,都能够充分利用显卡的资源,再也不会有一些处理单元闲置,一些处理单元负载过高的情况出现了。

    在需要大量顶点运算的游戏中, Unified Shader将被分配去做顶点的运算,而在需要大量后期象素级别特效的时候, Unified Shader将被安排去做Pixel Shader的事情。

    2.并行处理,提高利用效率

    除了动态分配方面带来的好处,这样的结构还有利于处理并行性的提升,因为这些处理单元可以并行运行,不像原来的串行的结构那样顺序执行。

{imageTitle}

● 第二章/第二节/第三小节:ATI的第一代统一渲染架构:XENOS

    这一节,我们主要回顾下ATI第一代统一渲染架构:用于XBOX360的XENOS的图形核心。

{imageTitle}
 
XBOX360

    ATI从2003年9月与MICROSOFT签订协议,为新一代游戏主机XBOX360开发图形核心,由此开始,ATI正式着手研发第一代基于统一渲染架构的图形核心:XENOS。XENOS(研发代号C1)的研制工作于2005年底结束,也成为世界上第一个的统一渲染架构的图形核心

    Xenos一共由两个图形运算核心构成,主内核拥有2亿3200万晶体管,核心频率为500MHz,拥有48个Unified Shader。Daughter Die附内核拥有1亿晶体管,由NEC 90nm工艺制造,负责处理所有采样运算,包括色彩读写、混合,多重采样AA,Z轴运算等。

{imageTitle}
 
Xenos核心

Xenos核心的特点如下:

(1)是世界上首个基于统一渲染架构的图形核心,可以支持更加优化、效率更高的图形算法。
(2)具有硬件线程分派单元,可以充分提高shader单元的利用效率,配合unified shaders使核心的Shader负载更加平衡。
(3)具有智能的内嵌式存储器,可以提供高到320M/S的带宽,具有专门的逻辑控制单元以及加速反锯齿、 alpha blending等操作。
(4)可以和把数据直接读取或写入到CPU的缓存,更加高效的处理流式指令。
(5)Xenos有自己专门的编译器。

{imageTitle}

 点击查看大图

● Xenos的统一渲染架构:

{imageTitle}
 
Xenos的渲染架构

    统一渲染架构,从硬件的角度来说,就是指不再有Vertex、Pixel Shader单元的划分,显示核心不再为Shader类型不同而配置不同类型的Shader单元,在统一渲染架构中这两种Shader单元被统一为Unified Shader,所有的Unified Shader单元都可根据需要需要进行处理,不管和是Pixel Shader类型还是Vertex Shader类型。

{imageTitle}
 
Xenos架构图

    Xenos具备48个“4D+1D”(矢量+标量)的Unified Shader,其ALU单元为SIMD结构,每16个着色单元被合并为一个着色矩阵,调配哪几组Shader单元负责处理何种指令或者进行什么类型的计算,则由一个被称为thread arbiter(线程仲裁器)的部分来控制。不过,在Xenos中每个矩阵内部同一周期内只能执行同一类别的指令,要么Pixel Shader要么是Vertex Shader,虽然不太灵活,但还是实现了统一着色架构,大大提高了Shader单元的负载平衡。

{imageTitle}    {imageTitle}
 
shader array

    Xenos具备三组线程控制器,最大可以支持64个并行的线程,可以充分提高shader单元的利用效率,有效掩盖了着色管线的延迟问题。其统一渲染架构具备三组渲染单元(每个渲染单元具备16个Shader单元,总共具备16x3=48个Shader单元),也就是说每一组渲染单元都将具有一组独立的线程控制器,而更多的仲裁器显然可以更加优化Shader指令的分派,根据ATI的测试表明,在通用图形计算中,Xenos的shader array可以达到95%的利用率。

{imageTitle}    {imageTitle}
 
 Geometry Tessellation Uni

    虽然没有引入Geometry Shader,但是Xenos中增加了一个Geometry Tessellation Unit镶嵌处理单元,可以对输入的三角形,矩形、正方形进行分割处理。不过,Xenos的Tessellation单元为固定功能的单元,不具有可编程性,也可看作是Geometry Shader的一个雏形,而Tessellation后来也成为DirectX 10中引入的Geometry Shader的功能之一。由于没有Geometry Shader,Xenos自身并不能生成多边形。不过Xenos中的MEMEXPORT、CPU streaming 技术可以实现类似于DirectX 10中的stream-out功能,所以,Xenos可以把数据发送给CPU的cache,然后通过复用实现生成多边形的目的。值得一提是MEMEXPORT可以直接和系统存储器交换向量数据,它的引入也提高了Xenos的通用计算性能以及可编程性(即扩展了shader program 的长度)。

{imageTitle}

    同时,Xenos的数据流控制效率更高,ATI还为vertex、pixel计算引入了统一指令集,可以更快速的执行一些复杂的图形算法,如高次表面和全局照明等等。

{imageTitle}
 
纹理拾取单元

    Xenos还拥有16个纹理拾取单元(过滤纹理单元,带LOD)和16个顶点拾取单元(无过滤/点取样单元)。如果需要还可以增加若干的附属纹理处理单元。所有这些元件都是由纹理处理阵列控制,且每一个纹理单元都有自己的纹理地址处理器。每一个过滤纹理单元都具备双线性取样能力,并可以支持三线性或更高的排列过滤技术(如Anisotropic Filtering,各向异性过滤)。由于XBOX36O采用了是UMA控制器类型,因此整个RAM系统都将支持纹理取样。为了弥补10MB eDRAM在进行反锯齿的时候容量不足的问题,Xenos以Tile Rendering 的方式来实现 FSAA。 此外,Xenos也支持Multiple Render Targets (多目标渲染)、Hierarchical Stencil Buffer(层次模板缓冲)、Alpha-to-Mask等主流技术。
 

{imageTitle}

● 第三章:DirectX发展回顾以及DirectX10详细介绍

第一节:技术背景——DirectX 的发展回顾和API相关基本常识。

    Microsoft发布的DirectX 10代表了自从可编程Shader出现以来在3D API方面的最巨大的进步,也是自DirectX诞生以来,又一次彻底的重新设计。通过一番脱胎换骨般的重建,DirectX 10展现出一系列非常醒目的新特性,包括高度优化的运行时,强大的Geometry Shader,纹理数组等等;这些特性将引领PC实时三维图形进入一个全新的世界。

{imageTitle}

DirectX总览

    在过去的十年中,DirectX已经稳步成为了Microsoft Windows平台上进行游戏开发的首选API。每一代的DirectX都带来对新的图形硬件特性的支持,帮助游戏开发者们视线更惊人的特效。那么我们也就按照DirectX发展的轨迹,以Direct3D为重点,为读者完整回顾下DirectX的辉煌历程。

●   DirectX简介

    DirectX是Microsoft开发的基于Windows平台的一组API,它是为高速的实时动画渲染、交互式音乐和环境音效等高要求应用开发服务的。

{imageTitle}
 
 DirectX机制
 
    微软不仅开发了DirectX标准平台,并且根据硬件制造厂商和游戏厂商合作共同更新升级DirectX的标准。硬件制造商按照此标准研发制造更好的产品,游戏开发者根据这套标准开发游戏。也就是说,无论硬件是否支持某种特效,只要DirectX标准中有,游戏开发者就可以把它写到游戏中,当这个游戏在硬件上运行,如果此硬件根据DirectX标准把这个效果做到了此硬件驱动程序中,驱动程序驾驭其硬件算出结果,用户就可以欣赏到此效果。这就是“硬件设备无关性”,是DirectX真正意义所在。
{imageTitle}
 
 DirectX架构

    通常,Windows对硬件访问的管制非常严格,用通常的办法不易访问,但DirectX通过“硬件抽象层(HAL)”给予了开发人员直接访问硬件的能力,HAL不仅解决了硬件及兼容性问题,而且开发人员可以利用它直接访问计算机的某些硬件设备,例如显示设备的直接显存控制和渲染,键盘、鼠标和游戏杆的控制的直接访问控制,音频设备的直接音频混合与输出能力等等,因此开发人员可以充分利用硬件加速将程序的性能优化到一个新的高度,如果目标机器不支持相应的硬件加速,DirectX还可以仿真加速器以提供强大的多媒体环境。DirectX家族包含的成员有Direct3D、DirectDraw、DirectInput、DirectMusic、DirectPlay、DirectSound、DirectDraw、DirectVoice、 DirectVideo和 DirectShow 。

●  DirectX发展历程

1.DirectX 1.0

{imageTitle}
 
 DirectX 1.0

    1995年9月,伴随着Windows95的发布,微软推出了DirectX 1.0。其中,来自于ATI的开发团队为DirectX的开发带来了最基础的图形技术。第一代的DirectX很不成功,推出时众多的硬件均不支持,当时基本都采用专业图形API-OpenGL,缺乏硬件的支持成了其进一步扩大影响的最大障碍。DirectX 1.0版本是第一个可以直接对硬件信息进行读取的程序。它提供了更为直接的读取图形硬件的性能以及基本的声音和输入设备功能(函数),使开发的游戏能实现对二维(2D)图像进行加速。这时候的DirectX不包括Direct3D,还处于一个初级阶段。

2.DirectX 2.0/2.0a

{imageTitle}

DirectX 2.0

    1996年,伴随着Windows95的成功,微软实行了一项新计划,以支持在Windows95上运行更多的3D游戏,目标是扩大市PC领域的游戏市场。于是微软收购了英国的Rendermorphics,Ltd.并得到了名为RealityLab的3D API。经重新整理,微软发布了新的3D API——Direct3D,并整合在DirectX2.0中。

    DirectX2.0最大的改善是在Direct Draw,而且为当时风靡全世界的《RedAlert》和《Diablo》所支持,《RedAlert》的Windows版本和《Diablo》都是在DirectX的标准上开发的。除了2D以外,DirectX2.0的D3D部分的雏形基本完成,由于当时3D游戏较少,很多都是基于DOS开发的。世嘉公司的VR战士的PC版本就是基于DirectX2.0开发完成的,虽然效果粗糙了一些,但Direct 3D魅力还是可以感受到的。

    在DirectX 2.0中,采用了“平滑模拟和RGB模拟”两种模拟方式对三维(3D)图像进行加速计算的。DirectX 2.0同时也采用了更加友好的用户设置程序并更正了应用程序接口的许多问题。从DirectX 2.0开始,整个DirectX的设计架构雏形就已基本完成。但是当时3D游戏程序更多的是基于3DFX的Glide以及ID的QUAKE引擎(OpenGL)开发,支持Direct 3D的游戏很少。

3.DirectX 3.0/3.0a

    1996年后期,微软发布了DirectX 3.0,DirectX 3.0是DirectX 2.0的简单升级版,它对DirectX 2.0的改动并不多。包括对DirectSound(针对3D声音功能)和DirectPlay(针对游戏/网络)的一些修改和升级。DirectX 3.0集成了较简单的3D效果,还不是很成熟。

    在微软不遗余力的推广下,DirectX的魅力被众多软硬件厂商看好,让D3D有了与OpenGL与Glide格斗的资本。从这个版本开始,很多玩家知道了DirectX存在,也是这个时候开始出现了可以支持Direct 3D的加速卡,如Nvidia的Riva128,Intel的I740。

    当然微软在Direct3D的推广中并不是一帆风顺,也出现过不少波折。微软当时拒绝了在Window95上支持OpenGL并采取异常手段收回对OpenGL的MCD驱动接口的支持,这个做法导致了很多游戏开发者的反对。QUAKE之父John Carmack公开声明拒绝D3D,著名游戏制作人Chris Hecker在游戏开发杂志上发表了两套API的全面分析,并以微软应放弃D3D为结论。以John Carmack为首的56名首席游戏开发者曾联名至信微软,要求其发行OpenGL MCD驱动。

    微软则坚持自己的一贯立场:Direct3D面向通用(high-volume)、高性能应用,认为OpenGL只面向高精度的专业CAD应用。所以微软继续增加对Direct3D的投资,并继续削减对OpenGL的投入。

4.DirectX 5.0/5.1/5.2

    1997年6月,微软公司跳过了DirectX 4.0,直接推出了DirectX 5.0。DirectX 5.0对Direct3D做出了很大的改动,加入了雾化效果、Alpha混合等3D特效,使3D游戏中的空间感和真实感得以增强,此外还加入了S3的纹理压缩技术。

{imageTitle}
 
DirectX 5.0架构

    同时,DirectX 5.0在其它各组件方面也有加强,在声卡、游戏控制器方面均做了改进,支持了更多的设备。因此,DirectX发展到DirectX 5.0才真正走向了成熟。此时的DirectX性能完全不逊色于其它3D API,而且大有后来居上之势。

    微软的投入也得到了回报,3DFX的GLIDE API开始逐渐失去了过去在游戏开发领域的优势地位,最著名的两个例子就当时称得上是风靡世界的古墓丽影2和优品飞车2,这两个过去本来是GLIDE的御用游戏,都加入了对D3D API的支持,当时著名的Riva 128等非VOODOO显卡也可以通过D3D接口完美的运行游戏。

 5.DirectX 6/6.1

{imageTitle}
 
DirectX 6

    1998年7月,DirectX 6正式发布,它的新特性有:几何形体的灵活顶点格式定义、几何形体的顶点缓冲存储、支持多纹理渲染、自动纹理管理、可选深度缓冲(使用Z Buffer或W Buffer)、通过凹凸环境贴图(ENV BUMP ENVMAP,同级别显卡中只有MATROX的G400支持)为反光面和水波特效提供逐像素的渲染和贴图能力。DirectX 6的3D效果更丰富,而且借助硬件的强大性能,可以渲染出高分辨率下的32位色的图像效果。可以看到,这一时期,DirectX 的技术进步速度也远远超过了GLIDE。

6.DirectX 7/7.1

    1999年9月,微软推出了DirectX 7.0。DirectX7最大的进步就是支持硬件T&L(Transforms&Lighting),也就是“坐标转换和光源”。上一章已经有过介绍,此处不再赘述。

{imageTitle}
 
DirectX 7

    DirectX 7的其它新特性有:立方体表面的环境贴图、几何渲染、改进的纹理渲染、自动纹理坐标生成、纹理转换、投影纹理和任意面裁剪、D3DX实用库等。

    DirectX 7的发布无疑给了GLIDE的致命的一击,DirectX 7提供的特效更丰,D3D函数库的引入方便了开发人员的使用,迅速得到游戏厂商的青睐。为了挽回局面,3DFX甚至还开放GLIDE源代码,但最终GLIDE还是被广大开发人员所离弃。没有了GLIDE的3DFX最终也以被自己的老对手NVIDIA收购而告终。

7.DirectX 8.0/8.1

    2000年9月,微软正式推出了划时代的DirectX 8 ,将可编程的着色管线概念正式引入到GPU,新的shaders(着色器)数据处理方式也是DirectX 8中最具意义的创新。Shader采用了新的数据处理程序模型,这与旧有的预定义模型是不同的。这种模型中,数据是透过virtual machine以一个类似于带有特殊汇编指令集的pre-arranged(事先安排好)程序进行处理的,程序员可以直接对其进行编程。
 

{imageTitle}

DirectX 8
    凭借可编程几何管线和可编程像素管线,使用者可以自由的控制几何和像素的代码设计。这对于图形开发者是空前的,他们可以通过基本的着色器,利用开发工具,产生全新的,极具创造力的效果。也正是可编程管线的引入,为GPU发展翻开了新的篇章,GPU开始向SIMD处理器方向发展,凭借强大的并行处理性能,使得GPU开始用有了部分流式处理器特征,逐渐开始被用于工程方面的通用计算。

{imageTitle}
 
DirectX 8架构

    DirectX 8的其他特性:编写定制的硬件着色器,例如通用纹理组合公式,逐像素光照(凹凸贴图),适用于实现照片(真实)级镜面效果的逐像素环境贴图或者任何其他开发者定义的算法。 支持多重采样渲染 、高性能的粒子系统渲染、 3D空间纹理 、允许范围衰减、包含了用于输出Direct3D蒙皮网格的三维内容创建工具插件,使用了Direct3D多种不同技术,多分辨率层次细节(LOD)几何、索引顶点混合 、扩充了Direct3DX实用库。

    2001年底,Microsoft推出了DirectX8.1,主要的改进是增加了PixelShader 1.2/1.3/1.4。在此之前,Microsoft差不多每年推出一个DirectX新版本,到DX8以后,这个速度开始减缓,以后的DirectX9也是如此。主要的原因是自 DirectX 7以后,每一个版本(major release)实际对应于一代新的显示核心,硬件的更新周期要长于软件,所以作为图形API的DirectX要照顾到软件更新的速度。另外,游戏开发的复杂程度也越来越高,开发周期也越来越长,而游戏开发人员并不希望在开发过程中更新API。

8.DirectX 9.0/9.0b/9.0c

 

{imageTitle}
 
DirectX 9.0

    2002年底,微软发布DirectX9.0。DirectX 9中Shader的渲染精度已达到浮点精度,为GPU向通用计算领域的发展迈出了决定性的一步。全新的VertexShader(顶点着色引擎)编程将比以前复杂得多,新的VertexShader标准增加了流程控制,更多的常量,每个程序的着色指令增加到了1024条。全新高级着色器语言的引入,使得程序员从底层代码中解放出来。

{imageTitle}
 
DirectX 9详细规格

    PS 2.0具备完全可编程的架构,能对纹理效果即时演算、动态纹理贴图,还不占用显存,理论上对材质贴图的分辨率的精度提高无限多;另外PS1.4只能支持28个硬件指令,同时操作6个材质,而PS2.0却可以支持160个硬件指令,同时操作16个材质数量,新的高精度浮点数据规格可以使用多重纹理贴图,可操作的指令数可以任意长,电影级别的显示效果轻而易举的实现。

    VS 2.0通过增加Vertex程序的灵活性,显著的提高了老版本(DirectX8)的VS性能,新的控制指令,可以用通用的程序代替以前专用的单独着色程序,效率提高许多倍;增加循环操作指令,减少工作时间,提高处理效率;扩展着色指令个数,从128个提升到256个。

    DirectX9的出现使得OpenGL API在游戏开发领域的应用走到了尾声。目前,除了ID SOFTWARE自家的DOOM、QUAKE系列,基于OpenGL API开发的游戏已经屈指可数了。微软把OpenGL API的应用限制在专业工作站领域的目的已经达到。

{imageTitle}
 
DirectX9.0c

    DirectX9也有DirectX9.0b和DirectX9.0c两个版本,由于篇幅关系,此处不再详细介绍。

{imageTitle}

● 第三章 第二节 DX10的架构特性 以及带来的好处。

 

    DirectX之所以在广大的开发者中流行,是得益于它的简单易用和丰富的功能特性。然而,DirectX一直被一个主要的问题所困扰,那就是高CPU负载。

 

    在图形编程API出现之前,三维程序直接向图形硬件发送图形命令来完成绘制工作。虽然这样绘制效率相当高,但是程序中要应对各种不同硬件上的不同命令,这使得开发工作十分困难,且程序中很容易出错。当越来越多不同的图形硬件冒出来的时候,这就成了一件十分不能忍的事。

 

    于是便出现了像DirectX和OpenGL这样的图形API。它们在图形硬件和应用程序之间架起了一个中间层,这样,应用程序可以使用统一的图形编程代码,而对底层各种硬件的适应,则由图形API来完成。这就将游戏程序员们从与大量的图形硬件交换意见的恶梦中解救出来,使他们能够将精力集中在“制作伟大的游戏作品”上面^_^

 

    但是这样就完美了么?不是的。每次DirectX从应用程序那里接收到一条命令,它就需要先对这条命令进行分析和处理,再向图形硬件发送相对应的硬件命令。由于这个分析和处理的过程是在CPU上完成的,这就意味着每一条3D绘图命令都会带来CPU的负载。这种负载给3D图象带来两个负面影响:限制了画面中可以同时绘制的物体数量;限制了可以在一个场景中使用的独立的特效的数量。这就使得游戏画面中的细节数量受到了很大的限制。而使图像具有真实感的重要因素,偏偏是细节量。

 

    DirectX 10的一个主要目标就是最大地降低CPU负载。它主要通过三个途径来达到这个目的:第一,修改API核心,使得绘制物体和切换材质特效时的消耗降低;第二,引入新的机制,降低图形运算操作对CPU的依赖性,使更多的运算在GPU中完成;第三,使大量的物体可以通过调用单条DirectX绘制命令进行批量绘制。下面我们就来仔细的看一下这三种方式:

 

1.降低绘制消耗


    第一种方式的一个重要例子就是DirectX 10中对三维数据和绘制命令进行验证过程的修改。所谓三维数据和命令的验证,是指在DirectX绘制图形之前,对传给它的图形数据和绘制命令进行格式和数据完整性的检查,以保证它们被送到图形硬件时不会导致硬件出问题;这是很必要的一步操作,但是不幸的是它会带来很大的性能开销。

 

 
{imageTitle}

 

 

 

    从上表我们可以很容易的看出,在DirectX 9中,每次绘制一帧画面之前,都会对即将使用的相关数据进行一次验证。而DirectX 10中,仅当这些数据被创建后验证一次。这很明显是可以大大提高游戏进行中的效率的。

 

2.降低CPU依赖性

 

    在降低CPU依赖性方面,DirectX 10 引入的三个重要机制就是:纹理阵列(texture arrays)、绘制断言(predicated draw)和数据流输出(stream out)。不要被这三个晦涩的名词吓倒,实际上它们是三个不难理解的机制。

 

    首先我们来看纹理阵列。传统的DirectX在多张纹理中进行切换的操作是一个很消耗CPU的操作,因为每切换一次,都要调用一次DirectX的API函数。而每绘制一个使用新纹理的物体,就要进行一次这样的切换操作;有时为了实现特殊的材质特效,绘制一个物体时可能就要切换好几次纹理,开销很大。

 

    所以,以前游戏美工们经常索性将大量的小纹理拼合到一张大的纹理中,通过给不同的三维物体分配这张大纹理的不同局部以期减少纹理切换,提高游戏运行效率。然而,想想也知道,这件事做起来会非常麻烦,而且DirectX 9中对纹理的尺寸的限制是4048×4048像素,也就是说,如果要容下更多的小纹理块,可能就得开辟很多张这样的大纹理。

 

    DirectX 10引入的新的纹理阵列机构,将允许在一个由显卡维护的阵列中容纳512张单独的纹理,而且,在shader程序中可以使用一条新的指令来获取这个阵列中的任意一张纹理。而这种shader指令是运行在GPU中的;这样,就把原来要消耗很多CPU时间的纹理切换工作轻松地转给了GPU。由于纹理一般是直接放在显存中的,所以这件事由同显存一起放在显卡上的GPU来完成真是天经地义,大快人心^_^。现在,在应用程序的层面,只要一开始设置好纹理阵列中的纹理,然后每次绘制一个物体时为它指定一个纹理的索引号,并同物体三维数据一起传递到shader中,就可以放心的让GPU来给物体选纹理了。

 

    然后说说绘制断言。在一般的三维场景里,很多物体都是完全被别的物体挡在后面的。这时候如果要显卡绘制这些物体就是白费力气。尽管高级的GPU可以通过硬件算法将场景画面中被挡住的像素(注意是像素)预先剔除,但是仍然会有一些处理消耗。例如,一个完全被挡住的复杂的角色模型,它的身上可能有几千个顶点,需要做复杂的骨骼皮肤动画处理、顶点光照运算等等——然而,GPU是在处理完这些顶点之后,并要把这个角色模型一个像素一个像素地画到画面中时,才开始判断每个像素是否需要画——当所有的像素都被剔除了时,之前做的顶点处理也就全白费了-_- || 于是,游戏开发者们想出了一个方法来解决这个问题,这就是绘制断言。

 

    简言之就是用一个可以代表某个复杂物体的简单物体来判断这个物体是否被全部挡住了——例如用一个可以罩住刚才那个角色的大盒子,当绘制这个盒子时,如果所有的像素都被P掉了,也就说明这个盒子肯定完全看不见,更甭说里边的角色了,也就不用做什么骨骼皮肤运算啦之类的操作了。一个盒子顶多有八个顶点,这学过初中几何的人都知道,相比处理几千个顶点,开销小得多。但是,以前这步中有些部分也是要在CPU中完成的。现在,在DirectX 10中,已经彻彻低低的交由GPU来做了^_^。真是很周到啊。

 

    最后来看看数据流输出。这是一个DirectX 10中的非常重要的特性,它允许GPU上的Vertex shader或Geometry shader向显存中添加数据!您也许觉得这感觉没什么,然而在以往的vertex shader中是比较独特的。以前的DirectX中,vertex shader只能读取显存中已有的顶点数据;而DirectX 10中引入的新的Geometry shader,不但能读取显存中的顶点数据、几何(点、线段、三角形)数据,还可以生成新的几何数据放回显存。鉴于其重要性,这一机制我们将在第四节:几何Shader以及Stream Out中单独介绍。

 

3.批量绘制

 

    在DirectX 9中,对渲染状态的管理一直是一个十分消耗CPU时间的操作。所谓渲染状态,是指显卡进行一次绘制操作时所需要设置的各种数据和参数。例如,要绘制一个人物角色,就需要先设置他的几何模型数据的数据格式、纹理过滤模式、半透明混合模式等等——每设置一项,都要调用一次DirectX API,占用大量CPU时间,极大的约束了渲染的性能。

 

    为了使这些操作能够批量的进行,DirectX 10中引入了两个新的结构——状态对象(state object)和常量缓冲(constant buffers)。


    状态对象就是将以前的零散状态按照功能归结为几个整体,这样,当要设置一系列相关状态时,无需为每一个状态来调用一次DirectX API,只需要调用一次将这些状态统统设置到显卡中去。

 

    而常量缓冲是另一个十分有意义的机制。在绘制模型前的准备工作中,渲染状态的设置只是一小部分。还是拿绘制人物角色来说,能照亮这个人的光源的颜色、位置、类型、范围等等,都要提前设给显卡;为了通过骨骼来带动他的皮肤做出姿势,还要设置骨骼的位置信息等等——总之是很多东西;而这些东西主要都是通过GPU中的常量寄存器(constant registers)来传递给它的。每个常量寄存器可以存储一个4维的浮点型向量(即四个浮点数)。常量寄存器是游戏程序向GPU输入游戏场景中数据的重要途径。在DirectX 9中,这种常量寄存器的数量是十分有限的,这在下文中的对比图表中我们也可以看到;而且每次更新一个寄存器,都需要调用一次DirectX API函数。而DirectX 10中,使用了常量缓冲(constant buffer)这种结构;在每个constant buffer中都可以容纳4096个常量,而且只需调用一次API就可以更新一大批常量。

 

{imageTitle}


 采用constant buffer绘制的大量克隆物体。

图片来源:Microsoft DirectX 10 SDK


    举一个具体些的例子来对比一下:在以前,如果程序中想在场景里画很多的树木和杂草,可以采用一个类似于“克隆”的方法:先做好一棵或几棵树、草的三维模型,然后在画一帧画面时,不停的在不同的位置、方向,用不同的大小为参数,调用DirectX API的绘制函数来画这些模型,就可以画出很多草木来;但是每画一棵,都要设置一大堆参数后调用一次API;这是很耗CPU时间的,所以在以前的游戏中很难有大规模且细节丰富的森林场景。

 

    而在DirectX 10中,我们可以先把树、草的几个模型设给显卡,然后将所有要画的树木的位置、方向和大小一次性的写入到constant buffer中,然后告诉DirectX——画!显卡就一下把所有的树木和草都一起绘制出来了^_^ 这样,像Far cry 2 那样的游戏,才能营造出十分逼真的森林效果。

 

{imageTitle}
 
 DX9和DX10的处理器负载情况对比

 

总结

 

    总之,DirectX 10降生到这个世上,就是为了带走由于CPU负载过大而给游戏图形效果带来的苦难。通过提前数据验证、纹理阵列、绘制断言、数据流输出、状态对象、常量缓冲等机制,帮助游戏的效果和效率上升到一个新的高度。

{imageTitle}

 ● 第三章/第三节: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}

 

 

● 第三章 第四节 Shader Model 4.0

 

    当Shader Model 3.0的光彩尚未退去的时候,在DirectX 10中,又引入了Shader Model 4.0。它包含下面几项革新:


1 加入了一种新的Shader——Geometry shader

 

    通过它可以编程操纵几何图元;为vertex、geometry、pixel shader采用了统一的Sahder架构。Geometry shaders是可编程图形流水线的一大进步。它第一次允许由GPU来动态的生成和销毁几何图元数据。通过和新的数据流输出功能配合使用,许多以前无法实时使用的算法现在都可以在GPU中使用了。在下一节,将仔细讨论Geometry shaders。

 

2 统一的Shader架构


 

    在DirectX 9中,Pixel shader总是在各个方面落后于vertex shaders,包括常量寄存器个数、可用的指令个数、shader长度等。程序员需要区分对待这两种shader。


    而在shader model 4中,这vertex、geometry和pixel shader有着统一的指令集、同样的临时/常量寄存器个数。它们将平等的共享GPU中的所有可用资源。在游戏程序中不用再考虑每种shader自身的限制了。

 

3 百倍于DirectX 9的可用资源

 

    对于shader中可用的资源,在Shader model 4.0中比原来有了惊人的扩充。就像早期的程序员们绞尽脑汁的省着用可怜的640k内存一样,在使用以前的DirectX开发游戏的过程中,程序员需要小心翼翼的分配珍贵的shader寄存器资源。寄存器的数量,直接影响着shader程序的复杂度。这和在640k内存的机器上,怎么也不可能写出Microsoft Office这样的大规模软件是同一个道理。而在DirectX 10中,将临时寄存器由原来的32个扩充到了4096个,将常量寄存器由原来的256个扩充到了65536个!而这些并不仅仅是DirectX给出的理论值——在Geforce 8800架构中,它们都是实实在在的在显卡上面的!

  
  

4 更多的纹理


    在Shader Model 4.0中提供了对纹理阵列(Texture arrays)的支持。在前文中已经对纹理阵列有了比较详细的介绍,在这里只着重介绍一下与shader相关的部分。在每个纹理阵列中,最多可以保存512张同样大小的纹理。而且每张贴图的分辨率被扩展到了8192×8192。更大的分辨率意味着纹理中更丰富的细节。在一个shader中能够同时访问的纹理个数被增加到了128个,也就是说在每次执行同一个shader时,可以使用一个纹理阵列的512个纹理中的128个。所以说,在DirectX 10中,纹理的多样性和细节程度将会有大幅的提升。

 

{imageTitle}

 

  使用纹理阵列实现细致的纹理

 

5 更多的渲染目标(Render Target)


    所谓渲染目标,就是指GPU可以把画面绘制到的目标,我们可以把它理解为GPU的画布。一般来说,渲染目标被输出到屏幕上,这样我们就能看到画好的画面了;但是有时为了实现一些特效,某些渲染结果并不直接画到屏幕上,而是再返给GPU做进一步的特效处理;而且渲染目标中也不一定是画好的画面的颜色信息。

 

    根据特效的需要,它们可能是每个物体距离屏幕的远近,或者物体表面上每个像素的方向,或者每个物体表面的温度(为了实现《分裂细胞》中那种热能感应器的效果)…总之为了实现特效,可以按需要在其中绘制任何信息。为了提高这种情况下的效率,很多新的显卡都支持在同一遍Shader执行结束后,同时把不同的信息绘制到不同的渲染目标中。在DirectX 9中就已经支持这种机制了,但是它约束最多同时向四个渲染目标绘制。而DirectX 10将这个数量提升了一倍。

 

6 新的HDR颜色格式

 

    要说这些年来在实时图形界炒得最热的概念,应该是HDR了。它通过采用浮点格式的颜色格式来为纹理、光照等计算提供极大的精度和颜色范围(以前的纹理一般都是采用整数型的颜色格式)。尽管最后显示到屏幕上还是每个颜色通道8位的整数格式,但是以前由于在材质、光照计算中纹理也是用每通道8位的格式来参与计算,所以在显示到画面之前,很多细节就在低精度的运算中丢失了。

 

    而采用每颜色通道16位浮点数的纹理,能够保证在运算过程中几乎没有颜色细节信息的丢失。另外,采用16位浮点格式的颜色通道,可以表现更大的颜色范围。这些就是HDR的优越性。对于玩家来说,当游戏中的画面罩上一层HDR效果后,立刻显得和真正的照片一样,有朦胧的光晕、细致的高光和十分自然的色调。在玩《优品飞车9》时,充满风格的色调让人有一种置身于电影里的感觉。

 

{imageTitle}


 HDR(高动态范围)渲染。图片来源:Futuremark

 

    然而,采用每个颜色通道16位浮点数的格式,比采用每通道8位的整数格式的纹理要多占据一倍的显存;这给绘制的效率带来了负面的影响。所以在DirectX 10中引入了两个新的HDR格式。第一种是R11G11B10,表示红色和绿色通道用11位浮点数,而蓝色通道采用10位浮点数表示。那么,为什么不都用11位呢?这是为了凑32这个整数。学过计算机的人都知道,当内存中一个数据单元的宽度是32位时,对它的操作效率最高;而且在纹理数据中一般要求每个像素的数据宽度是2的倍数,如2,8,16,32,64等等。又因为人眼对蓝色的敏感度不如对红色和绿色,所以它比其他两个通道少用了一位。

 

    另外一种格式是采用每通道9位尾数、所有通道共享5位指数的形式(众所周知,在计算机中,浮点数是采用尾数附加指数的形式来表示的),加起来还是32位。这些新的格式使得纹理能够与原来占用同样多的显存空间,避免了大的空间和带宽消耗。同时,为了适合需要精确的科学计算的场合,DirectX 10和Geforce 8800 GTX完全支持每通道32位(4个通道加起来128位)精度的浮点数纹理。

 

总结

 

    上面提到的这些扩充和提高,对于图形程序员来说是一件非常爽的事。他们可以摆脱束缚,创建出包含前所未有的细节度的实时游戏场景;对于玩家来说也是一件非常爽的事,因为他们的眼球有得养了。

 

{imageTitle}

 

 

● 第三章 第五节 几何Shader以及 Stream Out

 

    直到现在,图形硬件只有在GPU上操作已有数据的能力。顶点着色器(Vertex Shader)和像素着色器(Pixel Shader)都允许程序操作内存中已有的数据。这种开发模型非常成功,因为它在复杂网格蒙皮和对已有像素进行精确计算方面都表现的很出色。但是,这种开发模型不允许在图像处理器上生成新数据。当一些物体在游戏中被动态的创建时(比如新型武器的外形),就需要调用CPU了。可惜现在大多数游戏已经很吃CPU了,游戏进行时动态创建庞大数量新数据的机会就变得微乎其微了。


    Shader Model 4.0中引入的几何着色器(Geometry Shader),第一次允许程序在图像处理器中创建新数据。这一革命性的事件使得GPU在系统中的角色由只可处理已有数据的处理器变成了可以以极快速度既可处理又可生成数据的处理器。在以前图形系统上无法实现的复杂算法现如今变成了现实。使用DirectX 10和Geforce 8800 GTX,类似模板阴影(Stencil Shadow)、动态立方体贴图(Dynamic Cube Map)、虚拟位移贴图(Displacement Mapping)等依靠CPU或多通道渲染(Multi-Pass Rendering)的算法效率提升了很多。

 

{imageTitle}


 DirectX 10流水线加入了几何着色器和数据流输出(Stream Output),使GPU可以在不用CPU干涉的条件下进行反复运算。

 

    几何着色器被放在顶点着色器和光栅化阶段(Rasterizer)中间。所谓光栅化,就是一行一行的扫描每个三角形,把它们一个像素一个像素的绘制到画面上。几何着色器把经过顶点着色器处理过的顶点当作输入,对于每个顶点,几何着色器可以生成1024个顶点作为输出。这种生成大量数据的能力叫做数据扩大(Data Amplification)。同样的,几何着色器也可以通过输出更少的顶点来删除顶点,因此,就叫做数据缩小(Data Minimization)。这两个新特性使GPU在改变数据流方面变得异常强大。

 

1 细分的虚拟位移贴图(Displacement Mapping with Tessellation)

 

    几何着色器终于让虚拟位移贴图可以在GPU上生成了。虚拟位移贴图是在离线渲染系统中非常流行的一项技术,它可以用一个简单的模型和高度图(Height Map)渲染出非常复杂的模型。高度图是一张用来表示模型上各点高度的灰度图。渲染时,低多边形的模型会被细分成多边形更多的模型,再根据高度图上的信息,把多边形挤出,来表现细节更丰富的模型。
 因为在DirectX 9中,GPU无法生成新的数据,低多边形的模型无法被细分,所以只有小部分功能的虚拟位移贴图可以实现出来。现在,使用DirectX 10和R600的强大力量,数以千计的顶点可以凭空创造出来,也就实现了实时渲染中真正的细分的虚拟位移贴图。

 

2 基于边缘(Adjacency)的新算法

 

 几何着色器可以处理三种图元:顶点、线和三角形。同样的,它也可以输出这三种图元中的任何一种,虽然每个着色器只能输出一种。在处理线和三角形时,几何着色器有取得边缘信息的能力。使用线和三角形边缘上的顶点,可以实现很多强大的算法。比如,边缘信息可以用来计算卡通渲染和真实毛发渲染的模型轮廓。

 

{imageTitle}

 

 使用几何着色器的非照片模拟渲染

(Non-Photorealistic Rendering - NPR)

 

3 数据流输出(Stream Output)

 

 在DirectX 10之前,几何体必须在写入内存之前被光栅化并送入像素着色器(pixel shader)。DirectX 10引入了一个叫做数据流输出(Stream Output)的新特性,它允许数据从顶点着色器或几何着色器中直接被传入帧缓冲内存(Frame Buffer Memory)。这种输出可以被传回渲染流水线重新处理。当几何着色器与数据流输出结合使用时,GPU不仅可以处理新的图形算法,还可以提高一般运算和物理运算的效率。


     在生成、删除数据和数据流输出这些技术的支持下,一个完整的粒子系统就可以独立地在GPU上运行了。粒子在几何着色器中生成,在数据扩大的过程中被扩大与派生。新的粒子被数据流输出到内存,再被传回到顶点着色器制作动画。过了一段时间,它们开始逐渐消失,最后在几何着色器中被销毁。

{imageTitle}

 


● 第三章 第六节 高级渲染语言(HLSL 10)

 

    DirectX 10  为以前的DirectX 9中的“高级着色语言”(High Level Shading Language )带来了诸多功能强大的新元素。其中包括可以提升常量更新速度的“常量缓冲器”(Constant Buffers),提升渲染流程中操作数据的灵活性的“观念”(view),为更广泛的算法所准备的“整形与位指令”(Integer and Bitwise Instructions),添加了switch语句。

 

1 常量寄存器(Constant Buffers)

 

    着色程序同普通的程序一样需要使用常量来定义各种参数,例如光源的位置和颜色,摄像机的位置和投影矩阵以及一些材质的参数(例如反光度)。在整个渲染的过程中,这些常量往往需要频繁的更新,而数以百计的常量的使用以及更新无疑会给CPU带来极大的负载。DirectX 10中新加入的常量缓冲器可以根据他们的使用频率将这些常量分配到指定的缓冲器中并协调的对其进行更新。

 

    在一个着色程序中DirectX 10支持最多16个常量缓冲器,每一个缓冲器可以存放4096个常量。与其相比DirectX 9实在是少得可怜,因为它在每个着色程序中同时最多只能支持256个常量。

 

{imageTitle}


    相比DirectX 9,DirectX 10不仅提供了更多的常量,最主要的是它大幅的提升了常量更新的速度。对那些被分配到同一个缓冲器中的常量,我们只需进行一次操作就可以将它们全部更新完毕,而非单个单个的去更新。

 

    由于不同的常量更新的时间间隔各异,所以跟据使用的频率来对他们进行组织就可以获得更高的效率。举例来说:摄像机的视矩阵只在每一祯之间发生改变,而像贴图信息这样的材质参数却会在图元切换时发生改变。于是这些常量缓冲器被分成了两个部分——那些每祯更新的常量缓冲器专门存放那些需要在两祯间更新的常数并在两祯间一次把他们全部更新,另外的图元切换更新的常量缓冲器也同理。这样就会将更新常量过程中的一些不必要的工作消除,以便让整个着色器脚本比在DirectX 9中运行的更加顺畅。

 

2 Views

 

    在DirectX 9中,着色器(shader)中的数据的类型是被严格划分开的。例如,顶点着色器用到的顶点缓冲器中的数据不能当作贴图的数据来让像素着色器使用。这样就将特定的资源类型同其相对应的渲染流程中的特定步骤紧密地结合了起来,同时限制了资源资源在整个渲染流程中可以使用的范围。

 

    DirectX 10舍弃了“严格区分的数据类型”这一概念。当一段数据被创建,那么DirectX 10所做的仅仅是将其简单的当作内存中的一段比特域(bit field)来对待。如果要想使用这一段没有定义类型的比特域数据就必须通过使用一个“view”。 使用“view”,相同的一段数据就可以有各种各样的方法来读取。DirectX 10支持对同一段资源在同时使用两个“view”。

 

    通过这种多重“view”的手段,就可以在整个渲染流程的不同部分以不同目的使用同一段数据。例如:我们可以通过像素着色器将一段几何数据渲染到一张纹理上,之后顶点着色器通过一个“view”将这张纹理视为一个顶点缓冲器并将其中的数据作为几何数据渲染。“view”通过在整个渲染流程中的不同步骤重复使用同一段数据为“数据处理”带来了更大的灵活性,帮助开发者实现更多更有创意更精彩的特效。

 

3 整形与位运算指令 (Integer and Bitwise Instructions)


 

    在新的高级着色器语言中添加了“整形与位指令”。这样把“整形与位运算指令”的操作加入其基础运算函数的好处在于帮助一些算法在GPU上的实现。开发者终于可以直接使用整形而非从浮点中强转来计算出准确的答案。数组的索引号现在可以轻松的计算出来。GPU无整形运算的时代终于被终结了。这将为shader程序的开发带来很大的便利。


4 Switch 语句(Switch Statement)

 

    终于,HLSL 10可以支持switch语句了!!!这将大幅简化那些有着大量判断(分支)的着色器脚本的编码。一种用法就是建立一个“航母级的着色器(shader)程序”——包含了大量的小型着色器程序并且自身体形巨大的着色器程序。在这个“航母级的着色器程序”,我们可以通过设定一个材质ID在switch语句中判断来轻松的在渲染同一个图元时切换不同的特效。也就是说,现在一个军队中的每个士兵身上都可以拥有各自不同的特效了。

{imageTitle}

 


● 第三章 第七节 其他改进


● 第三章 第七节 第一小节 alpha to coverage

 

    在游戏中,经常使用带有半透明信息纹理的多边形模型来模拟复杂的物体,例如,草、树叶、铁丝网等。如果使用真正的模型,一颗边缘参差不齐的小草可能就要消耗掉几百个多边形;然而采用透明纹理,可以只用2~3个多边形就解决了。

 

{imageTitle}


 半透明纹理示意——一片树叶

 

    然而,当使用这种有半透明信息的纹理时候,它的不透明和透明部分的边界线上,常常会出现难看的锯齿。采用半透明混合技术可以解决这个问题,但是它需要把场景中所有这类物体按照由远到近的顺序来绘制,才能保证它们的遮挡关系是正确的——这是十分消耗CPU时间的,所以很不可取。在以前,alpha测试和混合简直就是图形程序员的噩梦。


    在DirectX 10中,使用了一种新的技术叫做Alpha to coverage。使用这种技术,在透明和不透明交界处的纹理像素会被进行多极取样(Multi-sample),达到抗锯齿的效果。这就在不引入大的性能开销的情况下华丽的解决了这个问题^_^ 室外场景的游戏将大大受益于这种技术。树叶、铁丝网、草的边缘将会更加柔和、圆滑。

 

 

{imageTitle}


    使用Alpha to coverage技术,叶片的边缘更加平滑。

 

● 第三章 第七节 第二小节 shadow map filtering

 

    阴影图(Shadow map)技术已经逐渐成为了渲染真实感阴影的流行技术。在包括《战争机器》、《分裂细胞:双重特工》、《Ghost Recon》、《刺客信条》等的各大次世代游戏中都能看到它的身影。然而,由于shadow map的尺寸限制,用它实现的阴影边缘往往有明显的锯齿。在DirectX 10中,提供了对shadow map进行过滤的功能的正式支持。经过过滤后,阴影的边缘将会变得更加柔和。

 

● 第三章 第八节 游戏效果

 

    DirectX 10为游戏开发者提供了很多新的特性,采用这些特性可以用来开发大量的次世代图形效果。然而,由于这是基于强大、灵活的可编程特性基础上的,所以很难简单的指出这些特性都带来了哪些效果。实际上,很多图形效果都是对这些特性进行综合运用的结果。在这一部分,让我们来仔细的看一下几种次世代特效技术,感受一下新的DirectX 10特性在其中起到的作用。

 

● 第三章 第八节 第一小节 次世代Instancing技术

 

    在上文中,我们已经用这张图来说明DirectX 10的常量缓冲器特性。其实,这里采用的技术有一个学名叫做Instancing,大意就是通过一个或几个模型来复制出它们的很多实例,实现满山遍野的树木、敌兵那样的效果。这种技术在DirectX 9时代就已经出现了,但是有很多的限制,例如模型不能有动画,所有的模型实例必须使用同一张纹理贴图和同一种材质效果,等等。这就给这项技术带来很多遗憾的地方——玩家肯定不喜欢看见游戏里满山遍野的敌人或树木都长成一个模样,或者只有那么几种模样。

在DirectX 10中,通过常量缓冲器、纹理阵列、动态shader执行分支等特性,将Instancing技术从这些局限中解放了出来。模型的实例没必要使用同一张纹理贴图;它们可以通过自己本身的纹理来从纹理阵列中取出各自的纹理;它们甚至可以有不同的特效——程序员可以写一个包含很多特效的“超级”shader,然后为每个模型实例运用这个shader程序的不同执行分支部分,从而给不同的模型赋以不同的材质特效。甚至连为每个模型实例使用骨骼蒙皮动画这种需要大量变换矩阵操作的问题,在16×4096常量寄存器的强大攻势下都可以迎刃而解。

 

    “克隆人”的时代已经结束了^_^ 通过DirectX 10的高级特性,Instancing将允许每个模型实例拥有它的个性:纹理贴图,pixel和vertex shader,以及动作动画。每个实例都将会有它自己的生命。

 

 

● 第三章 第八节 第二小节 基于象素级别的位移贴图技术

 

    在介绍这项技术之前,首先请允许我对工作在坐落于北京海淀区知春路的微软亚洲研究院/工程院的工程师们致以崇高的敬意\\ ^ ^ /。因为这项技术的实现方法,是由这些中国的工程师们研究、创造出来的。

 

{imageTitle}


 实时每像素位移贴图。图象来源:Microsoft DirectX SDK。

 

    位移贴图技术,用过3DS MAX的读者可能不会感到陌生。在3DS MAX中,这种技术有时也被翻译成“置换贴图”,其核心思想就是在制作三维模型时采用比较低的细节,然后给这个模型赋上一张表面高度图;在渲染时,会根据这张高度图来修改模型的表面,使它们隆起或凹陷——这样,就可以十分省力的给模型表面加上真正的凹凸不平的效果。毕竟,在3DS MAX里一个点一个点的修改模型表面来添加凹凸细节,要比直接拿Photoshop绘制一张高度图麻烦的多。

 

    位移贴图要比单纯的normal map技术的凹凸贴图逼真——因为它是真正的将模型的表面进行修改,抬高或降低它们。然而,由于它需要在渲染时将模型表面进行细分,即将原来的一个多边形分成大量的小多边形,这样才能有足够多的顶点来进行移动。这在原来的DirectX中是不能实现的,因为那时没有geometry shader,不能动态生成多边形图元,也就不能实现动态的多边形细分。即使在有了geometry shader以后,将多边形细分也是一个消耗性能很大的操作。

 

    然而,微软亚洲工程院/研究院的工程师们另辟蹊径,创造了一种新的每像素位移贴图技术。它的大致过程是,将简单模型表面的三角形向上拉伸,成为一个三棱台,这样它就具有了一定的体积;而它的高度,就是模型表面根据高度图进行位移后能达到的最大高度。然后在填充三角形的每个像素时,通过将观察者的视线和这个三棱台进行求交,得到一个相对于这个三棱台的交线段。

 

    由于高度图是相对于这个三棱台的,只有同样使用相对于这个三棱台的交线段,才能正确的求出线段和高度图所代表的表面高度的交点。然后再通过这个交点来计算应该把颜色纹理中的哪个点绘制到屏幕上。在这里只是简单介绍了一下这种技术的大体原理,实际的实现算法比这个要复杂,因为需要克服各种各样的问题。

 

{imageTitle}


 每像素位移贴图原理示意。图片来源:Microsoft DirectX SDK

 

{imageTitle}

 

第四章 R600核心架构解析

第四章\\第一节 集众家之长,R600架构总览

{imageTitle}
 
    就如同G80革命性的架构带给我们的震撼一样,R600的图形架构也让人为之一怔,空前复杂和庞大的规模令人眼花缭乱!DirectX 10、Shader Mode 4.0、统一渲染架构,再加上ATI各种创新的技术和功能,R600的核心架构发生了巨大的变化,但我们依稀也能看出其架构与上代产品有几分相似之处:
 
● Xbox360图形芯片Xenos,为R600的研发积累了宝贵的经验
 
{imageTitle}
 
    通过仔细对比可以发现,R600的整体架构与Xenos比较相似。早在05年ATI就首次在Xenos芯片上实现了统一渲染架构,只不过是用在了微软Xbox360游戏机中,我们可以把它看作是DX9规格的统一渲染GPU。
 
    Xenos不仅是首款采用统一渲染架构的GPU,同时Xenos还率先采用了符合DX10规范的Stream Out(数据流输出)技术。Xenos芯片超前的技术规格见证了ATI和Microsoft亲密无间的合作关系,如今统一渲染架构、高效的ALU利用率、Stream Out等技术被完整地保留了下来,经过改进和优化之后被R600所采用。
 
● R580架构的精髓被沿用在了R600之上
 
{imageTitle}
 
    Xenos和R520几乎是同一时代的产品,正是因为ATI的双线操作才导致了桌面芯片R520的延期,虽然R520是一款不成熟的产品,但其架构设计思路是非常优秀的,其继承者R580一举帮助ATI夺回性能之王的宝座,R5XX架构在经历了风风雨雨之后终于证明了自己的实力,它在Shader Model 3.0多执行运算体系、超标量动态分歧技术、可编程显存控制器、HDR+AA等方面无不是青出于蓝而胜于蓝,R580是毫无疑问的DX9C最强者!
 
    R600的架构论证和底层设计从2003年就已经开始,其最初的规划就是R5XX和Xenos的结合体,R5XX久经考验的快速动态分歧技术、流处理运算、全速联合纹理缓存和Fetch4阴影加速技术都被继承下来。R600集两者之长并且加入Shader Model 4.0规范,改进显存控制器,更令人惊讶的是超出DX10规范的Tessellator技术(DX10.1?),R600的确是一款专为新一代游戏而生的GPU!

{imageTitle}

 
 
    R5XX是首次集成动态分歧预测超线程分配处理器的GPU,而Xenos是首款采用统一渲染架构的GPU,如果将这两款GPU的精华部分有机的结合在一块,那么R600的架构邹形就展现在了我们面前。
 
    R600核心架构主要特点包括:
 
    大规模超标量着色器;
    新一代超线程分配处理器;
    第二代统一渲染架构;
    完整支持DX10,包括SM4.0和几何着色;
    全新的显存控制器,带宽吞吐量大增。
 
    下面就对R600的核心架构进行全方位分析介绍。
 
第四章\\第二节 R600架构分块介绍
 
{imageTitle}
 
    R600的架构可以拆分为以下几个模块:

Command Processor(指令处理器)

Setup Engine(装配引擎)

Ultra-Threaded Dispatch Processor(超线程分配处理器)

Stream Processing Units(流处理器)

Texture Units(纹理单元及缓存)

Cache & Buffer(缓存及缓冲区)

Shader Export & Render Back-Ends(像素输出部分)

Memory Control(显存控制器)

第四章\\第三节 Command Processor(指令处理器)

    Command Processor负责从PCI-E总线发出或者接受指令流,让GPU在驱动程序给定的时间间隔中完成恒定数据流操作,此过程需要通过Parallel DMA Engine,调用系统内存或者是本地显存的相关资源。

{imageTitle}

    DMA引擎能够最大化PCI-E总线带宽利用率,确保GPU和CPU并行工作,消除显示系统的瓶颈。

    R600改进的指令处理器能够降低30%以上的CPU占用率,尤其是在处理大批量小数据流时的效果尤为显著,由此可以将CPU编译驱动指令的负载降低到5%-10%,让CPU可以在复杂的3D游戏中发挥更大的作用。

{imageTitle}

第四章\\第四节 Setup Engine(装配引擎)

    Setup,通常这个词用于程序安装,在这里我们可以理解为GPU负责指令分配和安装的模块,主要负责给流处理器将要执行的指令准备数据,我们将其称之为装配引擎。

{imageTitle}
 
 R600的Setup Engine
 
    我们可以看到R600的Setup Engine分为Vertex Assembler(顶点装配器)、Geometry Assembler(几何装配器)、Scan Converter/Rasterizer(扫描转换/光栅化)、Interpolators(排序器),另外在顶点装配器上方还有一个特殊的Programmable Tessellator(可编程拆嵌模块)。
 
    以往GPU的Setup Engine位于Vertex Shader(顶点着色器)之后Pixel Shader(像素着色器)之前,也就是说指令首先经过顶点建模之后才进入Setup Engine进行三角形重组,生成像素、纹理、颜色值等信息,然后交给Pixel Shader处理。
 
    而R600是统一渲染架构&DX10,因此数据通过Command Processor之后直接进入Setup Engine,此时Setup Engine还必须承担部分顶点引擎的工作、并且生成几何着色(DX10之前几何着色由CPU完成)的必备数据,所以我们看到R600 Setup Engine包含了Vertex Assembler(顶点装配器)和Geometry Assembler(几何装配器)两个新的模块;至于Programmable Tessellator(可编程拆嵌模块)属于DX10.1的内容,在前文中我们已经进行了非常详细的介绍。
 
R520
 
 用网格将的顶点坐标转换为像素坐标
 
    一旦在所有必须的顶点处理都执行之后,顶点必须重新分散到三角形中,这个步骤由几何装配器来完成,这里三个顶点连成一个三角形,其中会有个索引缓存包含了诸如哪个顶点属于每个象素等。几何装配还处理粒子,它被定义为单个顶点。其中两个三角形会被转换成为矩形,它也成为原始的顶点。
 
    接下来三角形顶点的2D坐标信息经过Rasterizer(光栅化)之后就得到了像素信息,也就是得到了屏幕上每个点的数据信息。进行这部分操作的时候也经过Scan Converter(扫面转换)生成了每个点的Z轴信息,这些信息将被传输到Z轴缓冲中,以备后用。
 
    最后,所有的像素/顶点/几何/纹理/颜色等数据经过Interpolators(排序器)之后交给Shader进行处理,当然在此之前还有一项必备的工序,那就是数据的重新封装打包,以及指定相应的统一渲染单元运算,这部分任务由超线程分配处理器完成。

{imageTitle}

 
第四章\\第五节 Ultra-Threaded Dispatch Processor(超线程分配处理器)
 
    熟悉A卡的朋友应该知道,从R520核心开始ATI就集成了Ultra-Threaded Dispatch Processor,这就是ATI引以为傲的超线程分配处理器,通过这个特殊的模块来管理庞大的像素渲染单元。如今R600的Thread Processor不仅仅是管理像素单元这么简单了,统一渲染架构的GPU Shader部分需要同时处理像素、顶点、几何等方面的操作,Thread Processor的任务更加艰巨!
 
{imageTitle}
 
    我们可以看到,Thread Processor集成了三个指令队列,分别为顶点、几何及像素,这也就是GPU最常见的三种渲染操作,从Setup Engine流出的数据在此汇集排队,并且根据不同的程序动态分配三种Shader的比例,比较常见的情况就是像素>顶点>几何。Shader指令分配完毕就开始等候仲裁器指定相应的单元进行处理。
 
    R600拥有四组Shader阵列,每组阵列各对应2个Arbiter(仲裁器)和2个Sequencer(定序器),通过它们来决定渲染操作由哪部分SIMD Array执行,并且对指令的优先权进行排序。仲裁器能够最小化队列中线程之间的延迟,在最短的时间内找出优先度最高的线程交由空闲的SIMD执行,以此来保证庞大的统一着色单元时时刻刻都处在满负载状态。
 
    某些高优先级的指令可以直接插队立即执行,而低优先级的指令可以被暂时存放在高速缓存之中,等待空闲时机再进行处理。Thread Processor的队列中能够同时保存数百条指令,这样不但可以让SIMD处于饱和状态,而且指令之间的延迟也被降至最低,Thread Processor一旦发现将要执行的指令数据尚未到位,则会立即替换下一条指令,直至数据重新获得为止。
 
    顶点和纹理指令拥有专门的仲裁器、定序器和缓存,因为他们在执行前必须经过纹理单元进行采样操作。
 
    由于R600统一着色单元架构的特殊性(超标量SIMD架构),每个着色单元包括5个1D标量ALU,因此Thread Processor需要负责将各种组合形式的指令分类打包,最大限度地发挥着色单元的运算能力,与R600的执行效率息息相关!
 
    总的来说,可以把Thread Processor看作是一个大型的联合线程计数器、小线程单元、专门的分歧单元,和一个高性能任务堆栈列表,可以在高速的动态流控制和扩展并行处理间取得最好的平衡。R600的Shader部分就是庞大的SIMD(单指令多数据处理器),而Thread Processor用相对较少的控制器来控制大规模处理器,同时对一组数据中的每一个分别执行相同的操作来实现空间上的并行性,由此来提高统一渲染架构的效率和SIMD的执行效率。这也是R600的能否发挥真正实力的关键所在!

{imageTitle}

 
    对于一款采用统一渲染架构的GPU来说,统一着色单元就是它的核心,因为通常所说的顶点和像素都要由统一着色单元处理,DX10新引入的几何着色以及未来的GPU物理加速技术也是完全依靠统一着色单元。所以,统一着色单元的架构及规模决定了GPU的运算能力以及显卡的3D游戏性能!
 
第四章\\第六节 Stream Processing Units(流处理器)
 
{imageTitle}
 
 R600拥有64个复杂的Stream Processing Units
 
    NVIDIA将G80的128个统一着色单元命名为Streaming Processors;ATI将R600的64个统一着色单元命名为Stream Processing Units。一字之差导致其含义完全不同,虽然通常都称之为流处理器,但其结构相差甚远,所以无法单纯通过数量来判断其处理能力。也正是从DX10开始,NVIDIA和ATI在Shader设计方面走上了截然相反的道路,两者分别对传统的Shader架构进行了革命性改进,在介绍R600的SP之前,首先从传统Shader的弊端谈起:
 
第四章\\第六节\\第一小节 SIMD架构的弊端
 
    在图形处理中,最常见的像素都是由RGB(红黄蓝)三种颜色构成的,加上它们共有的信息说明(Alpha),总共是4个通道。而顶点数据一般是由XYZW四个坐标构成,这样也是4个通道。在3D图形进行渲染时,其实就是改变RGBA四个通道或者XYZW四个坐标的数值。为了一次性处理1个完整的像素渲染或几何转换,GPU的像素着色单元和顶点着色单元从一开始就被设计成为同时具备4次运算能力的运算器(ALU)。
 
{imageTitle}
 
    数据的基本单元是Scalar(标量),就是指一个单独的值,GPU的ALU进行一次这种变量操作,被称做1D标量。由于传统GPU的ALU在一个时钟周期可以同时执行4次这样的并行运算,所以ALU的操作被称做4D Vector(矢量)操作。一个矢量就是N个标量,一般来说绝大多数图形指令中N=4。所以,GPU的ALU指令发射端只有一个,但却可以同时运算4个通道的数据,这就是SIMD(Single Instruction Multiple Data,单指令多数据流)架构。
 
{imageTitle}
 
 R520核心的像素单元为4D矢量SIMD架构
 
    显然,SIMD架构能够有效提升GPU的矢量处理性能,由于VS和PS的绝大部分运算都是4D Vector,它只需要一个指令端口就能在单周期内完成4倍运算量,效率达到100%。但是4D SIMD架构一旦遇到1D标量指令时,效率就会下降到原来的1/4,3/4的模块被完全浪费。为了缓解这个问题,ATI和NVIDIA在进入DX9时代后相继采用混合型设计,比如R300就采用了3D+1D的架构,允许Co-issue操作(矢量指令和标量指令可以并行执行),NV40以后的GPU支持2D+2D和3D+1D两种模式,虽然很大程度上缓解了标量指令执行效率低下的问题,但依然无法最大限度的发挥ALU运算能力,尤其是一旦遇上分支预测的情况,SIMD在矢量处理方面高效能的优势将会被损失殆尽。
 
第四章\\第六节\\第二小节 G80全新的MIMD架构
 
    而G80打破了这种传统设计,NVIDIA的科学家对图形指令结构进行了深入研究,它们发现标量数据流所占比例正在逐年提升,如果渲染单元还是坚持SIMD设计会让效率下降。为此NVIDIA在G80中做出大胆变革:流处理器不再针对矢量设计,而是统统改成了标量ALU单元。
 
为王位而生 GeForce8800全面解析测试
 
 G80核心架构,每个流处理器就是一个标量ALU
 
    如此一来,对于依然占据主流的4D矢量操作来说,G80需要让1个流处理器在4个周期内才能完成,或者是调动4个流处理器在1个周期内完成,那么G80的执行效率岂不是很低?没错,所以NVIDIA大幅提升了流处理器工作频率(两倍于核心频率),扩充了流处理器的规模(128个),这样G80的128个标量流处理器的运算能力就基本相当于传统的64个(128×2÷4)4D矢量ALU。
 
    当然这只是在处理4D指令时的情形,随着图形画面越来越复杂,1D、2D、3D指令所占比例正在逐年增多,而G80在遇到这种指令时可说是如鱼得水,与4D一样不会有任何效能损失,指令转换效率高并且对指令的适应性非常好,这样G80就将GPU Shader执行效率提升到了新的境界!
 
    与传统的SIMD架构不同,G80这种超标量流处理器被称为MIMD(Multiple Instruction Multiple Data,多指令多数据流)架构。G80的架构听起来很完美,但也存在不可忽视的缺点:根据前面的分析可以得知,4个1D标量ALU和1个4D矢量ALU的运算能力是相当的,但是前者需要4个指令发射端和4个控制单元,而后者只需要1个,如此一来MIMD架构所占用的晶体管数将远大于SIMD架构!
 
为DX10而生!NV新中端8600/8500全评测   为DX10而生!NV新中端8600/8500全评测
 
 G84/G86的成本控制远不如G71/G73
 
    G80拥有6.81亿晶体管,考虑到它那强大的性能可能很多人并不认为它的晶体管规模比较恐怖,但是如果大家稍微留意一下G84和G86核心,就会发现仅有128Bit显存控制器、32个流处理器的G84(2.89亿)和16个流处理器的G86(2.10亿),其最终游戏效能其实要低于上代的G71(2.78亿)和G73(1.77亿)!
 
    G80的128个1D标量ALU听起来规模很庞大,而且将4D矢量指令转换为4个1D标量指令时的效率也能达到100%,但实际上如果用相同的晶体管规模,可以设计出更加庞大的ALU运算器,这就是R600统一渲染单元的架构。

{imageTitle}

 
 
第四章\\第六节\\第三小节 R600的超标量SIMD架构
 
    从架构图上来看,R600拥有64个Stream Processing Units,它依然是传统的SIMD架构,但不能简单地认为它拥有64个流处理器,因为R600的每个Units内部包含了5个超标量ALU:
 
{imageTitle}
 
 R600每个Stream Processing Units的结构
 
    Branch Execution Unit(分歧执行单元)进行流控制和条件运算,BEU获得指令包后将会安排至它管辖下5个ALU执行,流控制效率非常高,几乎不产生延迟或者性能损失。General Purpose Registers(通用寄存器)存储输入数据、临时数值和输出数据,并不存放指令。
 
    与传统GPU ALU架构不同的是,R600的5D SIMD矢量ALU可以在动态流控制的支配下自由的处理任何组合形式的指令,诸如1+1+1+1+1、2+2+1、4+1等组合形式。
 
{imageTitle}
 
    换句话说,既然是5D SIMD矢量架构,那么内部的5个1D ALU就只共享一个指令发射端口,但是R600的Thread Processor可以智能的将各种离散指令(比如将5个1D指令)分类打包,然后通过分支执行单元交给5D SIMD矢量ALU处理,这样同样能够保证GPU所有的ALU资源不被浪费!
 
    宏观上R600依然是SIMD矢量架构,但在微观上可以称之为超标量架构,完美支持Co-issue(矢量指令和标量指令并行执行),单时钟周期可以进行5次MAD(Multiply-Add,乘加)运算。另外还可以看到,5个1D ALU其中有个“胖”一点的,它除了MAD之外还能够进行一些特殊(SIN、COS、LOG、EXP等函数)运算,在特殊条件下提高运算效率!
 
    现在R600的架构优势就完全体现了出来,它拥有如假包换的64×5=320个恐怖ALU阵容,说它是320个流处理器毫不为过,尤其是在科学计算方面,320个流处理器可以很容易就发挥出接近100%的效能,而普通多核心CPU想要发挥出70%的效能都非常困难。
 
{imageTitle}
 
    通过上图可以看出R600XT的理论浮点算术运算能力=320(SPU)×2(MAD指令)× 742MHz=475 GLOPS,而G80Ultra的理论浮点算术运算能力=128×2×1500MHz=384 GLOPS。R600的晶体管规模与G80相近,却实现了更高的理论运算能力,并且突破了传统GPU架构的瓶颈,提升了单位晶体管所实现的效能!但是,理论归理论,GPU在实际游戏中的表现还要受到多方面因素的制约,R600的动态流控制能否最大限度发挥320个流处理器的实力,这还有待测试证明。
 
    通过前面的分析我们可以初步得出这样的结论:G80纯标量架构的效能比较依赖于将矢量指令拆分为标量指令的效率;而R600超标量架构的效能依赖于将各种混合指令重新排序并且打包分配给SIMD单元的效率。R600虽然在流处理器数量上有着绝对优势,但在架构执行效率方面受到的限制也比较多。

{imageTitle}

    ATI从R520到R580核心,将像素渲染单元翻了三倍之多,但纹理单元的数量和性能没有改进,因为ATI认为今后的游戏中纹理操作指令并没有增多,而且所占比重逐年下降。到了DX10时代,ATI为R600设计了恐怖的320个流处理器,那么纹理单元有何变化呢?

第四章\\第七节 Texture Units(纹理单元)

    首先来看看R600的对手——G80在纹理单元部分有些类似于传统的管线式架构,只不过传统GPU是每个ALU绑定TMU,而G80是每组流处理器(16个)阵列绑定一组TMU&L1&L2,这种架构非常灵活,也很容易衍生出一系列产品。

为王位而生 GeForce8800全面解析测试
 
 G80的8组Shader阵列绑定了纹理单元和L1/L2缓存

   与G80每组流处理器阵列绑定纹理单元&缓存不同,R600的纹理单元与流处理器部分是分开的,都受到Thread Processor的统一调度,这种架构沿用R520/R580的设计,但在结构部分改动特别大。

{imageTitle}
 
 R600的纹理单元及缓存部分

    R600拥有4个纹理单元(R580也是4个,4×4结构),但在每个纹理单元内部包含了8个纹理寻址单元(黄色,共32个,R580的2倍),20个32位浮点纹理采样单元(橘黄色,共80个,R580的5倍),和4个纹理过滤单元(深红色,共16个,与R580相等)。

{imageTitle}
 
 R600单个纹理单元的内部结构

    再来看看细节部分,可以看到8个黄色的纹理寻址单元和20个FP32纹理采样单元还要区分大小,这是因为顶点着色只能使用到其中4个小纹理寻址单元进行纹理采样,而像素/几何着色则可以使用全部的8个;顶点着色只能使用其中4个小FP32纹理采样单元,而像素/几何着色则可以使用全部的20个。

    可能很多人都比较奇怪R600怎么会有这么多的FP32纹理采样单元,这是因为Shader Mode 4.0只能支持128Bit色彩精度(IEEE FP32)纹理采样,而且Textures和Samplers现在是各自独立的,程序会大量使用Sampler指令,因此独立、大规模的FP32纹理采样单元可以大幅提升纹理贴图效率和高分辨率纹理精度。

● 纹理单元特性:

    FP16 HDR纹理全速双线性过滤(X1000系列的7倍)

    FP32浮点纹理半速过滤

    支持所有格式的三线性和各项异型过滤

    驱动默认高品质各项异型过滤

    软边阴影着色性能提高

    支持分辨率高达8192×8192的纹理贴图

    Fetch4纹理样本过滤器,采样速度提升四倍

{imageTitle}

第四章\\第八节 Shader Export & Render Back-Ends(像素输出部分)

    ATI的Render Back End(后期渲染)其实就相当于NVIDIA的ROP(Raster Operation Processor光栅操作处理器),其主要作用就是像素输出,但是它还担负了Z(深度)操作、抗锯齿取样等繁重任务,在DX10中被称作“Output Merger”。

{imageTitle}

 R600拥有4个后期输出模块

    与G80相同,R600也提供了最大8个MRT(Multiple Render Target),直接支持8xMSAA。其最大的特点就是可编程AA模式,可以在2/4/8xMSAA的基础上衍生出N多种高效率的CFAA(最大24x),这部分内容将在后文章详细介绍。

    R600可以在一个时钟周期内采样32个Z/模版,速度翻倍,而且深度/模版是分开处理的,执行效率更高。

    深度/模版压缩率提高至16:1,到达了X1000的两倍,在8xMSAA模式下更是可以达到128:1的超高压缩率。

第四章\\第九节 独立的专属缓存

    GPU所要处理的几乎所有数据和指令都是被存储在海量的显存之中,虽然显存速度逐年增长、512Bit总线将带宽翻了两倍、环形总线也有效的降低了延迟,但始终不可能与GPU同步运行,因此片内缓存依然是必备之物。其设计理念与CPU的L1/L2、数据/指令缓存完全相同。

{imageTitle}

    从R600的架构图中可以看到,几乎每一个模块都配备了大量的缓存,这些缓存各自独立、各司其职,如图深黄色部分,接下来简要介绍各部分缓存的用途及相关技术:

{imageTitle}

    超线程分配处理器配备了独立的着色常数缓存和指令缓存,使得代码长度几乎可以不受限制,而且可以在队列中存放更多条优先级较低的指令。

{imageTitle}

    纹理缓存(Texture Cache)部分,R600的L1和L2分别是一个整体(而G80被分割为8块,因为有8个Shader阵列,加起来是384KB),四个纹理单元共享256KB的容量。RV630的L2减半,RV610则没有L2。

    顶点缓存(Vertex Cache)容量达到R580的8倍!

{imageTitle}

    颜色缓存(Color Cache)其中内容可以是颜色索引或者RGBA数据,很多时候拥有左右两个甚至上下左右四个缓存,用以实现立体图。

{imageTitle}
 
    深度缓存(Depth Cache)就是通常所说的Z轴缓存,用于保存象素Z方向的数值,深度大的被深度小的代替,用以实现消隐。R600支持32Bit浮点Z缓冲,上代X1000最高仅支持24Bit精度。
  
    模板缓存(Stencil Cache)用以保持屏幕上某些位置图形不变,而其他部分重绘。例如大家熟悉的开飞机和赛车的游戏的驾驶舱视角,只有挡风外面的景物变化,舱内仪表等等并不变化。

    除此之外,R600的Z缓存和模板缓存压缩比率提高到16:1(达到X1000的2倍),打开8xMSAA时压缩率高达128:1!R600中模板缓存和深度缓存依然是一个整体,但两者是单独压缩独立存取的。压缩信息可以存放在片内缓存或者是显存当中,这使得模板和深度压缩几乎可以被无限制的使用。

{imageTitle}

    显存读写缓存(Memory Read/Write Cache),与CPU相同,GPU并不能直接访问庞大的外部显存,也是通过一块映射缓存充当内存的镜像后访问。

    数据流输出缓冲(Stream Out Buffer),以往几何体必须在写入显存之前是被光栅化之后送入Pixel Shader。而Stream Out技术允许数据从VS或PS中直接传入Buffer或者显存,这种缓存可以被传回Shader重新处理,允许GPU重复利用已有的结果从而减少重复计算。DX10新纳入的几何着色器通过顶点信息批量处理几何图形,快速生成大量多变形,在此过程中会生成大量重复性数据,此时Stream Out Buffer就能起到事倍功半的作用,大幅提高新图形算法及物理运算的效率!

    如此众多的片内缓存有效的提高了芯片个部分模块的运行效率,但同时也让R600的晶体管规模膨胀。

{imageTitle}

ATI片内缓存相关技术:

  • 纹理、颜色、Z轴及模板缓存全面相联:

    早期显存读写缓存采用的是直接映射方式,显存是分块被直接映射到缓存上的,这样如果有数据更新,整个缓存的数据就要清空,重新映射其他的区域,这样就会有大量的失效的情况发生。从X1000开始ATI将缓存和显存的映射已经变为完全自由的映射关系,自由度增大,数据刷新只需要更新局部的数据就可以了。

{imageTitle}
 
 全相连高速缓存可以映射到外部显存的任何位置

    如此一来,就能大幅提高显存读写命中率,减少显存带宽消耗。纹理、颜色、Z轴及模板缓存都与显存读写缓存相互关联,这样可以降低有限的缓存占用量。

  • 3Dc+纹理压缩技术
{imageTitle}
 
 采用3Dc压缩技术后,可以大胆的使用更精密的纹理贴图,从而提高画质

    所有的缓存在存取时都要经过压缩和解压过程,而且压缩率也在不断改进中,比如ATI著名的3Dc纹理压缩技术就被微软纳入DX9c的范畴,成为GPU标准规范之一。

  • 强化Z轴缓存压缩技术:

    与Z轴缓存息息相关的就是隐面消除技术(HSR,Hidden Surface Removal)。当GPU在渲染和构架两个互相遮挡在一起的3D物体之时,一般是分别对这两个物体进行转换,然后计算它的光源和进行纹理贴图等等。GPU是在最后阶段才对2个相互遮挡的图形进行叠加。这样的运作流程会使得那些被遮挡、我们无法看到的图形部分也消耗运算资源。而HSR的作用则是先行运算出哪些面是可见的,然后直接剔除那些不可见的,从而降低GPU的无效渲染提升性能。

{imageTitle}
 
 强化的分级深度缓存:在渲染前监测和丢弃隐藏的像素

    减少了无效渲染就意味着性能提升。ATI的HyperZ技术(Hierarchical Z,多级Z缓冲模块)就是为此而生,在GPU完成坐标转换之后Hierarchical Z会不断对比各个顶点的Z轴位置,一旦Hierarchical Z发现这个顶点不需要显示,将会直接将其剔除避免后续无效渲染。

    ATI在R520核心中首次使用Hierarchical Z模块,R580将Hierarchical Z的缓冲区容量增加了50%,进一步提升高分辨率下的效能。而R600进一步改进了Hierarchical Z缓冲区,新加入Hierarchical模版,用以提升多重阴影的着色性能。

    改进的Hierarchical Z技术大幅减轻了Z Cache的压力,同时有效的节约显存带宽。

{imageTitle}

    自从ATI在R300(9700)上面首次使用256Bit显存位宽之后,高端显卡的显存控制器已经连续五年停滞不前,显存带宽的提升只能依赖于DRAM厂商生产出速度更快的显存颗粒,从GDDR1一直发展到GDDR2/3/4,高频显存对显卡的PCB和散热设计提出了很高要求,显存在显卡成本中所占比例也越来越高,显卡性能一定程度上受到了显存带宽的制约。新一代DX10游戏对显存带宽需求变本加厉,所以NVIDIA和ATI不约而同的升级了显存控制器,G80支持384Bit,而R600则是翻了一倍达到512Bit!

{imageTitle}
 
 512Bit显存带来性能飞跃

第四章\\第十节 Memory Control(显存控制器)

    G80的显存控制器很容易理解,与G71相比就是添加了两组64Bit控制器,每组显存控制器都与ROP绑定,从而组成了384Bit的位宽,依然是(Crossbar)交叉式结构。之所以不用512Bit,一方面是出于显存成本方面的考虑,当然还有一个原因就是交叉存取的结构在规模较大时管理非常复杂,PCB布线难度大增,信号延迟容易增大。

{imageTitle}

 G80的ROP和显存控制器

    这就是ATI引入环形总线的原因,从R520开始我们就接触到了Ring Bus这个词,R520内部显存总线其实是512Bit(即两个256Bit环形管道),4个环站和8组32Bit显存组成:

{imageTitle}

 R520的显存控制器

    为什么要这么设计呢?主要是在提高带宽的同时减缓显存控制器的压力。当程序指令提出显存读取要求时,显存控制器会安排数据从显存颗粒中读取,但数据不会回传至显存控制器,而是只把数据放在环形总线之中,然后程序自行通过环站取回所需数据包,从而减轻控制器的压力。这种方式对于单个的存取操作有可能会使延迟变大,但总体来说能够降低大多数操作的延迟,而且提高数据命中率!

    环形总线围绕在控制器的外围,这样可以简化线路设计使连接处于最优化状态。这意味着任何时候内核各部件都能处于最短的连接线路状态,这样在显存进行数据写入操作过程中有效降低延迟及降低信号品质。当然环形总线的另一大优势就势可以轻松达到高频率,传统显存控制器则由于显存控制器内部线路之间的串扰等原因很难保证GDDR4这种高频显存的效能!

{imageTitle}

 ATI显存控制器的演化

    但是,X1000系列的显存控制器并非是真正的环形总线,它只是通过引入两条环形管道来分担中央控制器的压力,这可以说是ATI做出的一个大胆尝试,X1000系列属于半分布式的混合型控制器。而在R600上面,ATI真正实现了全分布式的环形总线:

{imageTitle}
 
 R600内部1024Bit环形总线,外部512Bit总线

    R600的显存控制器拥有2条512Bit环形通道和四个环站,每个环站控制两个64Bit显存通道,可以看到R600不存在中央控制器,所有显存读写操作都由四个环站经过仲裁器判定后执行:

{imageTitle}
 
 R600显存控制器之环站结构

    可以这么认为,如果是传统交叉式显存控制器的话,必须统一指挥8个64Bit通道,而R600的4个环站只需各自管辖2个64Bit通道就可以了,然后四个环站通过1024Bit(读写各512Bit)内部总线连接起来,所有操作都通过仲裁器优化和排序后执行,比起混乱的交叉操作更加有序和高效!

    如此一来,R600的环形总线可以达到更低的延迟、更高的频率、更大的带宽。同时也可以一定程度上降低PCB布线难度,将16颗显存之间的干扰降至最低,稳定性更容易保证,对于GDDR4提供了完美支持。在现有的技术条件下,R600可以轻松实现1GB 512Bit和512MB 512Bit两种实用的组合方案,今天发布的HD 2900XT就是512MB 512Bit(16颗8M×32Bit颗粒)的规格,未来还会有1GB 512Bit GDDR3/4的XTX版本。

    另外,ATI的双向环路总线是可编程设计的,显存仲裁操作可以交由驱动程序控制,或者是用户通过驱动程序的“CATALYST A.I(智能参数设定)”功能为特定的应用程序设定仲裁优先次序,以便GPU可以优先处理最迫切、对性能影响最明显的数据读写请求。

{imageTitle}

 

第五章 R600的神工鬼斧——Tessellation技术

    作为ATI和AMD合并后最重要的一款显示芯片,R600身上的意义可以说是非常的重大,前面我们已经介绍了第二代统一渲染架构,还有DirectX10的一些技术特性。

    这一章我们主要介绍一下这次R600所独有的一种技术,Tessellation技术。这个技术是超越了DirectX10标准的一种技术,能够为未来的图像处理带来超乎想象的发展空间。

第五章\\第一节 Tessellation技术简介

    截至笔者从AMD的技术培训会上了解到这项技术的时候,Tessellation技术一直还没有一个准确的中文译名,如果直译过来,Tessellation这个词本身的意思是“镶嵌”的意思。而根据笔者的理解,将其翻译成为“拆嵌”可能更为妥当。

    Tessellation技术如果用一句话来说明的话就是:“一种能够在图形芯片内部自动创造顶点,使模型细化,从而获得更好画面效果的技术。”

{imageTitle}
 
 Tessellation技术让模型变得更加细腻

    Tessellation技术是一种超越了DX10标准的技术,这种技术并不是DX10标准中规定图形芯片必须具备的一种技术,可以说是一种提前设计并且实现的技术。

{imageTitle}
 
 Tessellation技术已经纳入DX10.1的计划之中
点击下载微软演示文稿“The Future of DirectX”

    Tessellation技术的精妙之处是在于R600图形芯片能够根据3D模型中已经有的顶点,根据不同的需求,按照不同的规则,进行插值,将一个多边形拆分成为多个多边形。而这个过程都是可以由编程来控制的,这样就很好的解决了效率和效果的矛盾。

{imageTitle}
 
 Radeon 8500的TRUFORM技术再次焕发出了生机

    看到这里,可能一些资深的玩家会感到似曾相识,不错,Tessellation技术就是由Radeon 8500时代的TRUFORM技术发展而来的。

{imageTitle}

第五章\\第二节 传统的虚拟3D技术回顾

    在了解Tessellation技术之前,我们是有必要了解一下一些技术背景的,这一节,我们会介绍一些在Tessellation技术之前的图形图像学的技术。

    前面我们已经详细介绍了一个3D程序是如何被创作出来的,是如何被一个图形芯片运算并且显示出来的。但是,在图形图像学发展的过程中,最大的矛盾还是性能和效果的矛盾,也就是说如果3D程序设计师需要创作出非常逼真的画面的时候,就必须使用更加复杂的3D模型,而这就需要图形芯片具备更高的性能,这当然也是显卡和显示芯片行业发展的最大的动力所在。

    但是随着时间的推移,随着显示芯片技术的发展,我们却看到了另外一些情况,这就是3D图形设计师在开发程序的时候,不得不考虑他们的软件的通用性是不是够高,因为如果设计的游戏只有R600或者G80能够运行的东的话,可能他们的软件或者游戏根本就卖不出去了。还有一个因素是设计更加复杂的3D模型无疑会给游戏开发带来更大的成本问题。

    在这样的背景下,图形芯片厂商以及微软,早就开始算计这件事情了,他们想出了各种各样的方法来让3D模型保持简练的同时来获得更加逼真的效果。

第五章\\第二节\\第一小节 通过纹理贴图获得“质感”

    在3D图形诞生的第一天可能就有的技术就是通过最普通的贴图做这件事情。我们知道,绝大多数表面都是有凹凸的质感的,图形学最初的解决方法其实就是利用纹理贴图的处理来让模型看起来更真实。

    例如一个砖墙的墙面的纹理贴图,游戏开发者会在做贴图处理的时候就通过将处于阴影位置的变暗,将迎光面做亮等手段来表现一个表面凹凸的情况。

{imageTitle}
 
 做纹理贴图最简单的莫过于用实际照片往模型上贴了

    当然,这种做法是最原始的,也是效果最差的,因为游戏开发商做的都是具备交互功能的3D游戏程序,而不是静态的画面,所以一旦玩家面向贴图面的视角改变,就丝毫体会不出立体的效果来了。所以这种技术甚至可以不算是虚拟3D技术的范畴。

{imageTitle}

第五章\\第二节\\第二小节 凹凸贴图 Bump mapping

    真正开创虚拟3D技术先河的其实是凹凸贴图技术。这种技术一直到现在仍然在广泛的应用,这种技术能够获得非常好的效果,但是对资源的消耗并不是很大。

    凹凸贴图技术简单说起来是一种在3D场景中模拟粗糙表面的技术,将带有深度变化的凹凸材质贴图赋予3D物体,经过光线渲染处理后,这个物体的表面就会呈现出凹凸不平的感觉,而无需改变物体的几何结构或增加额外的点面。例如,把一张碎石的贴图赋予一个平面,经过处理后这个平面就会变成一片铺满碎石、高低不平的荒原。当然,使用凹凸贴图产生的凹凸效果其光影的方向角度是不会改变的,而且不可能产生物理上的起伏效果。(来源 百度百科)

 光照因角度不同而呈现不同的明暗

     凹凸贴图技术严格来讲,是一类技术的通称。这种技术有很多的算法和衍生产物,应用这一技术的3D游戏和程序非常常见。

{imageTitle}
 
 凹凸贴图是最常见的技术 有着广泛的应用

  我们来看一下凹凸贴图的原理:    

    让我们来先解释一下有关错觉的问题。先看下面左边这幅图,不用怀疑,绝大多数人(为什么这样说,后面会提到)都会马上分辨出这幅图凹凸效果。而这仅仅是用了几根白色和黑色的线条勾勒出来的。好,千万不要理所当然的认为这是这幅图的固有特性。

{imageTitle}  {imageTitle}

 同一幅图,不同的放置方法能带来不同的视觉感受

    让我们把左边的图旋转180度,变成右边这个样子,结果怎么样?你会发现这幅图的凹凸性正好和左图相反。本来是凸出来的地方凹进去,本来是凹进去的地方却凸出来了。而他们却确确实实是一幅图啊,只是旋转了180度而已。呵呵,这下你知道左图的凹凸性并不是它所固有的,而是你的眼睛在跟你开了个小小的玩笑。

    我们所生活的环境,光源通常都来自上方(当然,除了象我们这些整天都坐在电脑前的人来说,光源来自正前方)。所以,我们在看左图的时候,眼睛将亮边缘和暗边缘的信息传达到大脑,在没有任何光源提示的情况下,大脑会假定光源来自我们的上方,然后经过快速的经验判断,告诉你它的凹凸性。

    好了!有了以上的认识,相信你对凹凸贴图已经有了一些了解。    我们知道,与光线方向垂直的面,颜色将最亮,而与光线方向平行的面,颜色将最暗。

   上面介绍的这个算法是典型的凹凸贴图的算法,凹凸贴图的算法还有很多中,这些算法并不是规定死的,任何一个图形学程序员都可以对算法进行改进和调整。

凹凸贴图的优缺点:

    凹凸贴图的好处就是算法简单,运算量小,确定凹凸贴图只要根据每个点周围的点的颜色就可以确定。

    凹凸贴图在今天看来已经是老的不能再老的一种技术了,虽然能够获得凹凸的效果,但是凹凸的程度非常受限制,基本上只能做出一些简单的浮雕效果来。这种技术通常用在一些观察视角很小的情况上,例如地面,墙壁,远处的一些模型等等。

{imageTitle}



第五章\\第二节\\第三小节 法线贴图(normal mapping)

    法线贴图也是一种很常见的虚拟3D技术。不过有的时候一些媒体和一些词典翻译的并不准确,因为Normal这个词在英文中有“标准的,普通的”意思,所以就连金山词霸也将这个专有词汇翻译成什么“正规映射”的意思。

    其实,Normal是指“法线”的意思,法线就是垂直于一个平面的一个向量,如果您连法线,向量这些基础概念也没法理解的话,那就请原谅我在这里实在没有篇幅为您解释了,您还是继续去把大学读完吧。

   法线贴图技术是个非常有意思的技术,笔者在三年前介绍前ATI的3Dc技术的时候就曾经为大家详细介绍过。链接请见:http://www.pcpop.com/doc/0/39/39366.shtml

    简单来说,法线贴图就是把一个表面的凹凸情况用每个点的法线向量记录下来,在贴图的时候根据法线贴图做光影的变换,从而实现凹凸效果。

    法线贴图如果我们在电脑上看的话,颜色通常会看起来怪怪的,这是因为法线贴图的RGB值取的其实不是颜色,而是每个点的法线向量的三个分量。

{imageTitle}  {imageTitle}

  Doom3中的一张纹理贴图和这张贴图对应的法线贴图

    法线贴图的好处有很多,不仅仅能表现出哪里凹,哪里凸,还能表现出很多不同斜率的曲面的情况。所以法线贴图技术能够带来更好的效果。

    这里需要提一下的是在R520的时代,ATI当时提出了一个叫做3Dc的技术,这个技术就是对法线贴图技术的一种补充,是对法线贴图进行压缩的一种技术。3Dc技术的压缩率为4:1,而解压后的效果明显好于微软DX标准中的DXTC技术。

{imageTitle}
 
 法线贴图技术


法线贴图的优缺点:

    法线贴图比起凹凸贴图而言,能够实现的效果更加好了,相对的就是运算量更大了,每个象素的光照情况都需要计算这个点的法线向量和光照情况的夹角计算该点的亮度和颜色。

    当然,法线贴图技术同样不是完美的,它也有着自己的不足,凹凸贴图没有能够解决的切向效果问题肯定是仍然不能够得到解决。

    此外,就是法线贴图技术不能够解决解决更大的凹凸情况的效果。大家如果去观察的话,法线贴图效果能实现的通常是一些内凹或者外凸不是很严重的表面效果。

{imageTitle}

第四小节 视差贴图技术parallax occlusion mapping

    上一节我们介绍到的法线贴图在解决比较深的内凹的情况的时候不能够达到的效果被ATI打破了,这个技术就是视差贴图。

    视差贴图技术(parallax occlusion mapping)是一种比法线贴图技术更加先进的技术,它能够获得更好的“高度”的视觉效果。视差贴图技术我们曾经在X1900发布的时候就已经看过了,最著名的就是《Toyshop》的demo,它是当时ATI随着X1900发布所曾经做过演示的一种技术。

{imageTitle}
 
 视差贴图能够获得非常好的凹凸效果

    视差贴图技术我们其实应该称之为视差遮蔽贴图技术,因为在这一技术中,会对纹理的坐标做变换,一些凸出的纹理会遮蔽到其他的纹理,这样就会看起来具备更好的凹凸的感觉了。

    正如我们在上图看到的情况一样,地面上的石块的凹凸感觉非常好,前面的石块已经对后面的石块进行了局部的遮蔽。

    不过视差贴图技术的实现原理,其实和法线贴图是一样的,都是根据法线贴图进行的处理,所以我们可以把它当作是法线贴图的一种衍生技术。

    视差贴图技术的实现是和硬件没有必然联系的,这个技术的概念的诞生其实也非常早,只不过在实际程序中应用的并不是很早,这是因为视差贴图技术的运算量要比法线贴图大了不少,原来的显示芯片基本上都运行不了,只有到了X1900时代,GPU的能力才足以满足它的需求。

视差贴图技术的优缺点。

    对于不牵涉模型改变的虚拟3D技术而言,视差贴图技术其实已经走到了接近于极限的边缘。因为它实现的效果已经足可以乱真了。目前视差贴图技术在整个图形图像界已经有了比较广泛的应用。

    对于视差贴图的效果,我用的是“乱真”这个词,也就是说它还是不能够获得最好的效果。为什么 呢?这就是视差贴图技术的根源所决定的了,也就是所有的虚拟3D技术最大的遗憾——侧面看永远是平的。

    因为没有模型的改变,当玩家的视角和平面的夹角接近于平行的时候,无论是法线贴图,还是视差贴图,都必须弱化他们的处理效果,当达到平行的时候,凹凸的感觉就会荡然无存。

{imageTitle}

第五小节 位移贴图(displacement mapping)

    图形图像学的专家们和图形芯片的厂商其实早就看到了 前面几种技术的局限性,早就在考虑用什么方法能够获得真正的更加细腻的效果了。

    当然最传统的想法就是增加模型的细节了,电影走的就是这个道路。随着电影中用到3D虚拟形象的增加,电影中的模型的细节程度也在不断的增加。从早期的《玩具总动员》到最新的《蜘蛛侠3》《金刚》等等影片,我们可以看到他们的区别。

{imageTitle} {imageTitle}
 
 电影中的3D效果也在有着突飞猛进的提升

    但是这种“解决方案”就是没有解决问题,因为电影公司可以用成百上千台工作站做长达数个月的渲染。而我们需要的是能够互动的实时运算。

{imageTitle} {imageTitle}
 
 电影中的3D模型通常都非常复杂

    我们知道,如果3D模型需要做的更细腻,就需要用更多的多边形,也就是需要有更多的顶点来描述一个模型。更多的顶点带来的问题就是运算量的增加,和数据传输的瓶颈效应。

{imageTitle}
 
 海量的顶点数据需要大量的带宽的支持

    我们知道,早期的图形芯片只能处理象素信息,后来才能够处理顶点的几何位置变换。但是顶点的信息全都需要从CPU传输到显卡上,几年前,还是AGP时代的时候,过于复杂的模型的顶点势必会和纹理数据抢带宽。因为我们所运行的不是静态画面,而是动态的3D程序,里面的每个顶点都会发生位移,每个时刻都有海量的顶点位置信息需要产生,需要去传回CPU做游戏逻辑和物理模型的处理。

    鉴于这种情况,显示芯片厂商早就想出了一种非常巧妙的解决方法,这就是位移贴图(Displacement Mapping)。位移贴图的核心就是在显示芯片内部创建新的顶点,使之具备更高的细节。而这些顶点的创建完全是显卡完成的,它们的位置也是已有的模型的顶点决定的。

    位移贴图(Displacement Mapping)的原理是这样的:

    首先游戏开发者会提前准备一个高度图(height map),这个高度图的意义有点类似于法线图,但是它表示的是一个平面上各个凹凸的点距离基础平面的高度情况。高度图通常是一张黑白的图,用灰度来表示高度的值。

    当这个模型被读到显卡里面以后,首先需要进行的是对网格进行细分,细分的结果就是创建了很多新的顶点,显示芯片然后根据高度图将这些顶点的位置重新定位,顶点的位置坐标正是由高度图所决定的。

{imageTitle}
 
  位移贴图的原理

    这样的好处是,这些诞生的顶点是真实存在的,但是并不会牵涉到大量的数据传输的需求,每个时刻这些顶点都是重新诞生的。而从效果而言,这样达到的效果和使用更复杂的效果是完全一致的,所以位移贴图达到的效果是前面的技术望尘莫及的。

位移贴图的优缺点

    位移贴图的有点就是效果是最好的,它产生的顶点都是真实存在的,而且比单纯的增加模型的复杂程度的方法来的要好,要节约一定的运算资源。

    但是毕竟位移贴图需要大量的顶点运算工作需要做,所以效率并不是很高,这一概念截至目前只有一些演示程序能够使用这一技术,游戏开发商还是不愿意将鸡蛋放到这个篮子里。

    位移贴图需要和大家说明的是,虽然顶点的创建和显示全是在显示芯片中完成的,但是处理器在这个过程中仍然要做不小的运算。这在微软的DX10提出之前都是必须要做的。

{imageTitle}


第六小节 ATI的独门秘籍  Trumform

    本节将介绍一个非常有创意的技术,这个技术可以说是R600的Tessellation技术的前身,在将这个技术之前笔者先给大家讲个小故事:

    话说2001年七月的时候,微软即将推出DirextX最新的8.1版本,所以就在Meltdown2001会议上把ATI,NVIDIA等公司叫来开会,一起商定DX8.1的一些技术细节。当时这次会议可以说是图形图像界的“华山论剑”,当时不光有主办的厂商参加,媒体甚至也可以买票入场,票价是650美元,当时TheInquirer网站就参加了这次会议。据他们报道,当时NVIDIA和微软的关系搞得有点僵,据他们称是由于NV当时拒签当时正在开发的DX9的协议。
所以这次会议上ATI无疑成为了微软非常好的的合作伙伴。

{imageTitle}
 
 2001年7月 西雅图 ATI无疑成为了Meltdown2001的主角

    讲这段八卦的历史并不是讨论谁和微软更近,而是因为这次会议上其实就决定了DX8.1的标准。微软这次在DX8.1的规范中提出了一个技术叫做“N-Patch”技术,这个技术相比前面我们提到的各种虚拟3D技术和位移贴图技术而言是一种非常精妙的技术。它能够像位移贴图那样创造顶点,但是却不需要高度图来做参数,使模型自动的变得光滑。

{imageTitle}
 
{imageTitle}
 
 TRUFORM技术能带来神奇的效果

    N-Patch技术的原理是这样的:显示芯片在读取了一个模型之后,判断每个三角形三个顶点的法线向量,再根据这三个向量算出插入的顶点的位置。

{imageTitle}

    NPatch技术非常适合于将一个模型变得“圆滑”。因此非常适合于一些有很多曲面的模型。因为对于曲面的表现,通常的表现方法只是尽量多的使用内割多边形或者外切多边形来模拟曲面的效果。

{imageTitle}
 
{imageTitle}
 
 N-Patch技术使用原三角形的顶点的法线确定曲面的形状

    N-Patch技术的巧妙的地方在于算法简单,只要进行多次递归运算,就能将一个面做成一个高次曲面,N-Patch这个词的本意也就是一个N次曲面。

    在ATI的Radeon 8500显示芯片中,就率先采用了这个技术,在ATI自己的官方介绍中称之为“TruForm技术”

TruForm技术的优缺点

    这个技术的好处是效率会比位移贴图要高,而且实现的效果也算是不错。不过呢,这个技术比较适合于海豚,赛车,表面为曲面的模型上,而如果这个技术应用在坦克等不需要做曲面化的模型上的时候,效果就会变得相当的滑稽。

{imageTitle}
 
 英雄萨姆中枪械模型发生变形现象
 
{imageTitle}
 
 CS中人物模型变成了“胖子”
 
    虽然TRUFORM技术非常具有创意,而且还能给大家带来意象不到的快乐,但是这一技术的应用情况并没有像微软和ATI所期望的那样。

{imageTitle}

第三节 Tessellation技术

    N-Patch技术的创意虽然不错,但是只能简单的生成一种曲面,这是非常不够的,所以在R600的Tessellation技术中就对这些问题进行了满足。

    Tessellation技术的原理和前面所说的TruForm技术是类似的,但是功能和效果却有着不小的不同。

{imageTitle} {imageTitle} {imageTitle}
 
 Tessellation技术能够精确的由粗糙的模型获得细腻的效果

    首先,是Tessellation技术在对一个网格进行细分的过程中具备更加智能的分法。我们前面在介绍位移贴图的时候也介绍过网格细分,不过在位移贴图技术中的网格细分是采用的等分的方法,其实在位移贴图中采用的网格细分的过程也是tessellation这个词的动词形式tessellate,但是我在前面均避免了采用这个词,是担心大家混淆概念。我们现在介绍的第一个字母大写的Tessellation技术是一个专有名词,是一套技术的合称。

    言归正传,在Tessellation技术中,采用的网格细分的方法是智能的,有的地方做细分网格,有的地方根本就不用做细分的就不作。

第一小节 Tessellation技术的网格细分算法:

    在Tesselation技术中,采用了三种不同的网格细分法则。

    第一种:离散算法

{imageTitle}

 
    这种方法在创建顶点的位置的时候使用的是等分的方法,创建的点之间的距离都是一样的。这种网格细分的算法的参数是整数,每个边上插入的顶点的数目就是参数。
 
    离散算法的网格细分是一种最基础的算法,不过也具备最明显的局限性,这种算法只能对三种最基本的三角形数据格式进行操作,这三种数据格式分别是最基本的“三角形列表”、“三角形条带”以及“三角形扇形”。
 
第二种:连续算法。
 
{imageTitle}

    连续算法的特点是能够使用浮点数作为参数,如果参数的小数部分为零,这种算法和前面说的离散算法是一样的,如果小数部分有值,会将以中心部分的边继续细分。

第三种:自适应算法

{imageTitle}

    自适应算法的功能就更加强劲了,它在细分网格的时候,能够对不同的边采用不同的级别进行细分。这样的好处就是节省了资源。

    自适应算法的的参数也是浮点数,不过对于每条边可以有不同的参数,在这个算法中,参数范围是1.0到15.0。

{imageTitle}

神奇的小数点——细分网格算法中小数位的意义

    在前面介绍的三种算法中,后两种算法采用的参数都是浮点数,为什么要这样呢?难道只是简单的区别是否在中心部分继续细分么?小数部分的数值究竟起什么作用呢?

{imageTitle}
 
    大家注意观察上图,资深的发烧友就会很容易发现在Tessellation技术中的细分网格操作中,R600利用一个小小的参数非常巧妙的解决了“效果跳跃”的现象。具体怎么回事儿,还请您往下看:
 
    首先,我们知道,在一个游戏中的模型,会有远有近,为了节省系统资源,将近处的我们需要仔细观察的模型做Tessellation技术才是有意义的,AMD在设计R600的时候早就想到了这一点。
 
    那么,R600就设计成了动态的进行Tessellation技术的操作的模式,模型随着远近和大小不断的改变细节程度,这样就能保证了很好的效率。
 
    如果一个模型的细节变化的过程被看出来,其实就是一件失败的事情。但是如果R600使用了传统的离散形式的细分网格算法,那么就很容易被看到这个变化的过程。不过这还不算什么,因为模型在经过Tessellation技术之后还需要各种其他的处理,所以在模型表面所做的光照等效果发生“突变”就会更加明显。R600巧妙的使用了浮点数作为参数,这样就能避免这种现象。
 
{imageTitle}
 

    在R600的Tessellation技术中,参数的小数部分表示的是第二次网格细分的位置。如果参数是1.1,那么第一次细分就是在两个顶点中心,第二次细分就是在距离中心全长的1/40处,如果是1.5,第二次细分就是在距离中点全长的5/40处。如果参数达到了2.0,就正好是做了两次等分。

{imageTitle}

 
Tessellation效率的源泉——控制“笼子”
 
    Tessellation技术能够自动创造出很多顶点出来,这些顶点是实实在在的顶点,效果是等同于建模的时候直接设计出来的。但是如此大量的顶点数据,如果参与了运动,那么所需要进行的运算量则是非常大的。R600是如何做到效果和效率的兼得呢?
 
{imageTitle}
 
    上图中,紫色的模型就是经过处理后得到的效果,大家注意橙色线条所组成的这个“笼子”,这个橙色线条就是模型的控制点组成的,如果在计算模型的位置变换的时候只计算这个简单的模型,就能够节省非常多的资源。
 
    R600的Tessellation技术在真正运作的时候就会先算出“笼子”的位置,再根据笼子上的节点算出模型的每个顶点的位置,这样就能获得很高的效率了。
 
第四小节 顶点插值技术
 
    讲完了对于原始模型的网格细分操作,我们再来看看这些新创造出来的顶点的具体位置确定的方法。
 
    在传统的位移贴图中,基本上使用的都是高度图来确定新的顶点的位置,这种方法非常容易理解:
 
{imageTitle}
 
 传统的位移贴图技术使用高度图做位移贴图
 
    但是高度图有个致命的缺点,就是精度问题,因为高度图并不能用来描述一个曲线具体的形状,如果当一个曲线被多次细分之后,高度图的精度就不够了。
 
    R600的Tessellation技术支持多种决定插值顶点位置的方法来创造各种曲面:
 
1  N-Patch曲面,就是和TRUFORM技术一样,根据基础三角形顶点的法线决定曲面。
 
2 贝塞尔曲面,根据贝塞尔曲线的公式计算顶点的位置。
 
3 B-Spline, NURBs, NUBs 曲线(这三种曲线均为CAD领域常用曲线,在Maya中均有相应工具可以生成。)
 
4 通过递归算法接近Catmull-Clark极限曲面。
 
    这里需要和大家说的是最后一种Catmull-Clark极限曲面,这种曲面是一种极限限定曲面,只能够无限的接近,并不能达到。
 
{imageTitle}  {imageTitle}
 
{imageTitle}  {imageTitle}
 
 Catmull-Clark极限曲面需要用递归算法无穷逼近
 
{imageTitle}
 
 R600能获得无限逼近Catmull-Clark极限曲面的效果
 
    看到这里,可能就有朋友该问了,既然Tessellation技术中创建曲面的能力这么强大,那么R600这颗芯片如何知道它该使用哪种算法呢?会不会还像TruForm那样把不该变化的模型进行变化呢?
 
    答案肯定是不会的,这就是Tessellation技术中很关键的部分,这个技术是一个可编程控制的技术,一切都在程序员的掌握之中。

{imageTitle}

 
第五小节 Tessellation技术的流程
 
    在R600的架构中,Tessellation技术是一项非常重要的功能,Tessellation技术中最重要的Tesselator被设计在了Vertex Shader之前。
 
{imageTitle}
 
 传统的流程
 
{imageTitle}
 
 R600的Tessellator在Vertex Shader之前
 
    Tessellator在Vertex Shader之前的好处是,创造出来的顶点全都可以参与Vertex Shader的处理和运算。这些顶点所带来的所有细节,将具备所有特效。

{imageTitle}

 
 
第五节 Tessellation技术的应用
 
    大家都知道,AMD的R600这颗芯片是由Xbox360上的那颗进化而来的,所以在Xbox360上也是支持Tessellation技术的,而且目前已经有采用Tessellation技术的游戏了。这就是Viva Pinata。
 
{imageTitle}
 
    这是一款面向于儿童的游戏,游戏画面相当的不错,里面所有模型的表面都是类似于纸片的材质。
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
 应用了Tessellation技术的游戏画面
 
总结:
 
    Tessellation技术最重要的是在保证了非常好的视觉效果的前提下节约了性能,让一个程序的运行速度能够保证在很好的水平,下面我们就来对比一下Tessellation技术和使用高细节模型的性能对比。
 
{imageTitle}
 
    讲到这里,我想大家对Tessellation技术应该有了一个初步的了解了,不过一项技术能不能发扬光大,需要的不仅仅是R600这颗芯片的支持,更重要的是需要游戏开发商对其支持。目前对于Tessellation技术有个非常令人高兴的消息。
 
纳入规范
 
    在GDC2007上,微软展示了他们下一代DirectX标准的一些细节,非常令人高兴的是,在DX10.1中,微软将很有可能会把Tessellation技术纳入规范之中。
 
{imageTitle}
   
 DX10.1的架构(来自于GDC2007)
 
    这令我们想到了当年的3Dc技术,当年3Dc技术也是ATI自主研发的一种对发现贴图进行压缩的算法,后来被微软纳入了DX9.0C的规范之中。
 
    从这两件事情我们可以看出,ATI对于技术发展的态度是积极的,在努力将最好的技术创造出来,并且推行到标准之中。

{imageTitle}

 
第六章 游戏画质提升四倍!全新CFAA解析
 
    无论NVIDIA还是ATI,在提高显示芯片性能的同时,他们都在致力于提升游戏的画面质量,在不改变游戏API以及渲染模式的情况下,最简单同时也最有效的方法就是采用全屏抗锯齿(Full-Scene Anti-Aliasing,FSAA是一种统称),并不断改进抗锯齿的算法、提高抗锯齿的精度。
 
第六章\\第一节 抗锯齿技术及其两种基本方法
 
● 什么叫做抗锯齿(Anti-Aliasing)
 
    我们知道,电脑画面是由一个个小象素所构成的。虽然这些象素非常的小,不过每一个象素都覆盖了这一画面上的某一个区域。我们可以将这些象素比作通向虚拟世界的一扇一扇窗户,而电脑的任务就是决定每一个象素的颜色以使得我们通过这些窗户能看到一幅最美的画面。不过渲染的速度也是一幅“实时”图片的所需要考虑的一个重要因素,因此通常象素的色彩都通过对该象素内的某一点进行采样得到的颜色所决定的(即我们所谓的点采样Point Sampling)。不幸的是,为了提高速度而采取的这种做法可能使得所采样的单个点的色彩不能体现出整个象素所覆盖区域的色彩状况。当这种情况出现在物体的边缘的时候就非常明显了。
 
{imageTitle}
 
 混合黑色和白色,用不同色阶的灰色填充边缘,效果显著提升
 
    有一些象素“跨”在物体的边缘,该象素内部的色彩是有一定比例的,而且在外部的显示我们也希望体现出这一比例。物体的边缘两边却会呈现出不同的颜色。点采样技术将会使得整个象素呈现出边缘两边的某一种颜色。而这样对物体边缘的着色无论是着上前景色或是背景色中的哪一种色,由于象素间色彩的突然跳变,都自然而然的会呈现出锯齿状。这种情况就是我们所说的锯齿(Aliasing)了。这是由于这一个象素的面积正好覆盖在了边缘上,两边都有它的存在。一个更好的办法就是将前景色和背景色进行混合从而造出第三种颜色来填充色一象素。这种方法能有效的改进图像边缘的表现效果,换一种说法就是实现了“抗”锯齿的作用。
 
● 超级采样(SuperSampling)抗锯齿

    早期的图形芯片都采用了SuperSampling(超级采样)的算法,代表产品为GeForce 256/GeForce 2/Radeon 7000/7500,其实更老的VOODOO显卡也能够支持这种算法。

    超级采样就是将一个像素拆分为几个像素(也就是进行多次采样,Subpixel),然后进行独立的处理并写入缓存。超级采样利用更多的取样点来增加图形像素的密度来改善平滑度,如此一来图形芯片所处理的图像分辨率比实际输出图像分辨率大的多!因此SSAA的画质改善是有目共睹的,但以当时芯片的实力来看最终性能却是惨不忍睹!

{imageTitle}

    超级采样虽然非常原始,但这种模式至今仍然被保留了下来,因为后期出现的很多抗锯齿算法在面对特殊物体时无能为力,因此不得不请出低效率的超级采样来帮忙(比如NVIDIA的透明抗锯齿超级采样)。我们可以把超级采样看作是“无损压缩”的算法,画质最高但性能损失最大,因此使用的情况并不多。

    超级采样根据每个像素中取样的位置可分为:OrderedGridSuperSampling(OGSS,有序栅格)和RotatedGridSuperSampling(RGSS,旋转栅格)。
 
{imageTitle}
 
    OGSS是将原来的画面放大并且在这放大的画面中进行着色,之后再将画面还原到原来的大小显示出来,这样的做法所得到画面会将画面中影像边缘的锯齿消除。
 
    RGSS是在取样点的位置旋转了一个角度来达成更好的消除锯齿目的,在一些角度可以获得好于OGSS的效果。早期,ATI使用RGSS算法,而NVIDIA使用OGSS,后来NVIDIA在NV40当中也加入了RGSS算法。
 
● 第三小节 多重采样(Multi-Sample),抗锯齿技术真正实用化
 
    超级采样性能损失太大,基本上只能在低分辨率下才敢打开,实用价值并不高,因此各家图形厂商不约而同的启用了更加智能的多重采样抗锯齿(Multi-Sample Anti-Aliasing),这种AA算法在对像素进行采样前首先检测像素的位置,看其是否位于模型的边缘,也就是说MSAA仅仅处理对象边缘的像素,这样大大降低了抗锯齿所需要处理的数据量,同时还能保证抗锯齿质量。从此MSAA也成为了事实上的抗锯齿标准!
 
{imageTitle}
 
    由于MSAA的智能性,打开AA之后的性能损失基本上取决于屏幕内多边形的数量,有些程序性能损失还是比较大,但有些就小了很多。总的来说缓解了GPU的压力,让游戏玩家以很少的代价获得了画质的明显改善。
 
    但MSAA并不总是有效的,比如遇到很多密集的树叶、草丛、栅栏或铁丝网时,多重采样不认为这些像素是在模型边缘,因此忽略了这些位置。所以图形厂商不得不在此基础上对算法进行改进,加入了新的辅助抗锯齿模式,比如NVIDIA的透明(Transparency)抗锯齿和ATI的自适应(Adaptive)抗锯齿,通过额外的采样甚至是超级采样来强制提升画质。

{imageTitle}

 
第六章\\第二节 抗锯齿技术的发展
 
   虽然MSAA基本被所有游戏所支持,但不可否认无论MSAA还是SSAA都存在很大的局限性,因此图形芯片厂商都在不断的改进抗锯齿算法或者启用新的抗锯齿技术,下面就来看看一些通过显卡驱动实现的特殊抗锯齿:
 
● 暂时性(Temporal)抗锯齿(ATI专用)
 
    X800时代,ATI除了改进Z轴压缩效率之外(可提升AA效能),还加入了Temporal Anti-Aliasing(暂时性抗锯齿)这种新的模式。此前的抗锯齿采样点是不变的,但Temporal抗锯齿(需要打开垂直同步)使用不同的采样格式,它通过奇偶帧随机采样并合成的方法来达到效果,因为人眼的视觉有暂停残留的特点,这样产生的影像就如同实际采样的两倍,采用2x Temporal抗锯齿效果就相当于4xMSAA了。因此Temporal 抗锯齿在工作量与一般的全屏抗锯齿相同的情况下,使画面又提升了一个等级。
 
{imageTitle}
 
    但Temporal抗锯齿在应用方面有一定局限性,由于整个渲染场景是通过奇偶帧显示,如果FPS过低时,屏幕就会产生闪烁。实际使用中当FPS低于60, ATI的驱动就会自动关闭Temporal抗锯齿而改用普通MSAA,直到FPS增加到60帧以上为止。
 
{imageTitle}
 
 暂时性AA可以搭配任何类型的AA实用,在特定情况下的画质提升两倍
 
    由于目前的游戏极其消耗资源,高端显卡都很难保证60帧以上的运行速度,Temporal抗锯齿由于采用垂直刷新同步,最高刷新率值还要受到显示设备(特别是液晶显示器)刷新率的限制,因此使用面比较狭窄。
 
● 自适应(Adaptive)抗锯齿

    MSAA虽然得到了大量使用,但有一个重要缺陷就是不能处理Alpha材质,因此在一些栅栏、树叶、铁丝网等细长的物体上就不能起作用了。为了解决这种问题,NVIDIA在GeForce 7系列加入了透明(Transparency)抗锯齿,ATI在X1000系列加入了自适应(Adaptive)抗锯齿,通过额外的多重采样甚至是超级采样来强制提升画质。

{imageTitle}
 
 催化剂驱动中的自适应抗锯齿开关

{imageTitle}

 普通的抗锯齿(左图)与透明自适应抗锯齿(右图)

    自适应抗锯齿可以专门针对Alpha材质选择性的进行多级或是超级采样,这样就比完全采用SSAA拥有更低的性能损失,画面质量依旧完美!

● 双卡互联,让AA等级成倍提高
 
    受限于GPU处理能力以及显存带宽,单显卡很难实现高倍AA,比如常用的MSAA采样数一般为2x或者4x,几乎所有的主流显卡和游戏都能支持这两种模式,而ATI为了进一步提高图像画质,加入了更高级的6x模式,因此A卡用户在很多游戏中就能直接打开6xAA(HD 2000系列提高到8xAA),而N卡最高只能到4xAA(GeForce 8系列提高到8xAA)。
 
    为了在有限的技术条件下进一步提升抗锯齿精度,有两条路可选:一是采用组合算法(MSAA+SSAA),二是双显卡分别采样然后复合。这两种方案目前已经被ATI和NVIDIA广泛使用:
 
{imageTitle}
 
    由上图可以看出,组建交火系统之后,让两颗GPU分别进行不同位置的采样,然后复合,这样就能直接生成8xAA(4+4)和12xAA(6+6)两种模式。ATI将双卡提供的高倍AA称为Super AA,因为下面要介绍的两种组合AA模式中包含了超级采样。
 
● 组合AA技术:
 
    为了进一步提升抗锯齿精度,NVIDIA和ATI都选择了以MSAA为主,SSAA为辅的组合方式,由此诞生了更高等级的AA算法,虽然游戏无法直接支持,但通过驱动强制开启后,画面品质可以得到明显改善。
 
    ATI在双卡实现8x和12x的基础上,如果再加入2xSSAA,就能最高提升到14xAA。为什么不加入更高倍数的SSAA呢?因为性能损失太大就失去了实用价值,让双显卡共同完成2xSSAA代价就少了很多。
 
{imageTitle}
 
    实际上,NVIDIA很早就采用了组合AA技术。由于N卡的MSAA采样数要低于A卡,因此NVIDIA加入了8xS模式(4xMSAA+2xSSAA),在AA等级上超过了A卡。这种模式起初被称为6xS,但其中的2xSSAA效果明显高于2xMSAA,接近4xMSAA的效果而且还附带透明抗锯齿效果,因此被改名为8xSAA以表示该模式画质高于ATI的6xMSAA。事实的确如此,但8xS性能损失太大,只敢在较早的游戏中开启这种模式。
 
    NVIDIA双卡组建SLI技术之后也能够轻松将AA精度翻倍,从而获得8xSLIAA(4xMSAA+4xMSAA)和16xSLIAA(8xSAA+8xSAA=4xMSAA+4xMSAA+2xSSAA+2xSSAA),与ATI的14xSuperAA相比,NVIDIA需要进行两次2xSSAA而ATI只需要一次,开销非常大,导致16xSLIAA效能低下,最实用的还是8xSLIAA。相比之下ATI还有10xSuperAA、12xAA等灵活的模式。

{imageTitle}

 
 
第六章\\第三节 DX10时代,NVIDIA和ATI大幅改进AA算法和精度
 
    随着时代的发展和GPU性能的飞跃,玩家对游戏画质提出了更高的要求,传统的4xMSAA已经难入苛刻玩家的法眼,于是到了DX10这一代,NVIDIA和ATI相继改进AA算法,将精度提升到了之前难以想象的境界!
 
● NVIDIA GeForce 8系列全新CSAA(Coverage Sampled,覆盖采样)技术:
 
    由于上代产品中N卡4xMSAA小于A卡6xMSAA,8xSAA效能太低,16xSLIAA也存在相似的局限性问题。因此NVIDIA在GeForce 8系列做出了大幅改进,将色彩样本数目提高至8个,从而直接支持8xMSAA,同时也将覆盖样本数提高至16个,这样通过不同的组合模式就能够支持8xCSAA、16xCSAA和16xQAA等多种模式。其中效率最高的模式就是8xCSAA和16xCSAA(Coverage Sampled Antialiasing,覆盖采样抗锯齿)。
 

NVIDIA GeForce 8系列显卡抗锯齿模式

抗锯齿模式

2x

4x

8x

8xQ

16x

16xQ

色彩/深度值采样数

2

4

4

8

4

8

覆盖采样数

2

4

8

8

16

16

 
    可以看出,NVIDIA GeForce 8系列的CSAA可以在确保完成16或者8倍覆盖采样的情况下,像素只需要保存4份深度值和色彩值,由此显著降低内存带宽压力,从而让AA效率大幅提高。
 
为王位而生 GeForce8800全面解析测试
 
 驱动中提供了8x(CS)、8xQ(MS)、16x(CS)和16xQ(CS)四种新AA模式
 
    由于色彩/深度只进行4次采样,因此8xCSAA和16xCSAA相比普通的4xMSAA性能损失非常小,但所带来的画质改善却是非常显著的!如果您拥有8800GTX/Ultra这样的优异显卡,那么就可以尝试打开8xQ(就是8xMSAA)和16xQ(8xMSAA+额外的8份覆盖采样)这种高精度模式,从而获得非常好的画质。
 
● ATI HD 2000系列全新CFAA(Custom Filter,定制筛选)技术
 
    ATI上代产品的确在AA方面占据了很大的优势,AA运算效能高,6xMSAA精度高(很多游戏可直接支持),但是单卡也只能止步于6xAA,双卡最高14xAA,离高清晰游戏的标准还很远。NVIDIA率先将AA精度提高至单卡16x、双卡32x,接近于CG级的画面品质,ATI在新一代产品上面显然不会示弱。
 
    首先,R600也将色彩采样数目提高至8个,从而直接支持8xMSAA,与G80处在同一级别。这时可能有人会问,为什么NVIDIA和ATI不约而同的选择了8xMSAA,而不是直接提供更高的16xMSAA呢?原因在于传统MSAA如果采样16份色彩缓存的话,仅此一项的显存带宽消耗可达30GB/s以上,即便R600拥有100GB/s的显存带宽也将不堪重负(纹理缓存也要占用很多的带宽),效能十分低下。
 
    在4xMSAA和8xMSAA的基础上,NVIDIA通过组合多倍覆盖采样提供了8xCSAA、16xCSAA两种效能模式和16xQAA这种高精度模式。而ATI则使用了更加灵活的可编程方案,除了保留以往的Adaptive SSAA/MSAA,Temporal AA,Super AA之外,还通过选择性的采样临近象素点,从而扩大采样精度,最高提供了24xCFAA,下面就来看看如此高倍AA是如何实现的。
 
{imageTitle}
 
    上图所示就是普通的8xMSAA,G80和R600都支持,很多游戏也能直接支持。其中每一个栅格就是一个像素,MSAA只在栅格类进行采样,8x就是8个像素点。
 
{imageTitle}
 
    12xCFAA就是扩大了采样范围,并且小幅超出了栅格的范围,在栅格内8个象素的基础上将栅格外的4个象素纳入采样范畴,从而实现了12x精度。但是这种栅格外的象素可能会让结果模糊或者失真,因此在最后合成时栅格内外象素的权重值是不同的,距离栅格中心越远所占比重越小,ATI通过一些补偿算法消除了这个缺陷。
 
{imageTitle}
 
{imageTitle}
 
 驱动AA选项特别丰富,8xMSAA+Wide-tent就是16xCFAA
 
    16xCFAA也是同样的道理,只不过采样范围更大,栅格内外各有8个象素被加入。如此一来每个象素的色彩值都可以被更加精确的计算出来,看上去资源消耗会非常大,而实际上由于大量的象素都是被重复利用的,因此显存带宽占用依然保持在8xMSAA的水平,而重复性的数据计算可以利用Stream Out技术大幅提高效率。
 
{imageTitle}
 
    以上就是目前ATI在R600上所提供的6种CFAA模式,在2xMSAA、4xMSAA、8xMSAA的基础上进行小范围、大范围和超大范围栅格外采样合成。

{imageTitle}

 
● 第三小节 各个等级的AA品质对比:
 
{imageTitle}
 
● ATI 8xCSAA VS. NVIDIA 8x CSAA
 
{imageTitle}
 
    无论CFAA还是CSAA都是优化的算法,以较低的性能代价实现较高的画面品质,就拿8x CFAA和8x CSAA来说,其画质都要低于8x MSAA,但如果仔细对比的话CFAA还是要胜出CSAA一筹。
 
{imageTitle}
 
    ATI 16x CFAA是由8xMSAA复合而来,而NVIDIA 16x CSAA只是由4xMSAA复合而来(16xQAA才是8xMSAA复合而来),画质上的差别被拉开。
 
● CFAA的优点:
 
    CFAA可以说是在传统MSAA基础上改进而来的,因此其适应性和兼容性也都非常好,其优点有:
 
在不增加显存带宽占用的情况下提高精度
可通过软件(驱动、游戏)升级或者改进算法
可以被任何游戏所支持(通过驱动增强AA模式)
可以和ATI以前的AA技术协同工作(自适应AA、暂时性AA、与SSAA组合)
将HDR+AA精度提升到新的境界
可对模版阴影产生作用
画质(或精度)的提升仅仅取决于GPU的性能
 

{imageTitle}

第七章 ATI显卡产品形象代言人——Ruby四度出击

    无论ATI还是NVIDIA,每次有新显卡发布都会同时公布一个或者多个用显卡实时渲染而成的DEMO。这些美轮美奂DEMO的设计初衷就是通过完美的3D效果征服每一位观众,让大家对新显卡的性能和技术充满憧憬和期待。所以ATI和NVIDIA必定会使出浑身解数,在DEMO中大量采用显卡最新、特有、特长技术。

第七章\\第一节 DEMO升华到产品形象代言人

● NVIDIA的美女策略,四代产品形象代言人

{imageTitle}   {imageTitle}

为王位而生 GeForce8800全面解析测试   {imageTitle}

 NVIDIA四代产品的形象代言人

    NVIDIA的每一代产品都更换形象代言人:GeForce FX系列是蝴蝶仙子、GeForce 6系列是美人鱼Nalu、GeForce 7系列是纯情小美女Luna,到了GeForce 8系列则是真人美女模特Adrianne Curry,总的来说美女策略是坚持不变的!

● ATI四代Radeon统一使用Ruby,技术见证虚拟人物的进化

{imageTitle}   {imageTitle}
 
{imageTitle}   {imageTitle}
 
 ATI四代产品都用Ruby作为形象代言人,单从画面效果就能看出技术进步

    ATI则是从X800开始启用数字虚拟美女Ruby作为Radeon显卡的产品形象代言人,ATI通过多个故事型的DEMO将Ruby的形象生动活泼的展现了出来,此后ATI在X800、X850、X1800、X1900、X1950等连续几代产品都坚持使用Ruby作为形象代言人,各种ATI相关的活动也大量使用真人Ruby Cosplay,这使得Ruby的形象更加深入人心!

AMD-MSI校园行三:谁说MM不喜欢玩电脑   AMD-MSI校园行三:谁说MM不喜欢玩电脑

 ATI Ruby人气很高!

● Radeon HD 2000系列提出Perfect 10的概念:

    从虚拟形象的角度来看,Ruby的确是大获成功,因此即便是ATI被AMD收购之后,ATI图形部门及其Ruby代言人不但没有被取消,反而被AMD发扬光大。在最新发布的Radeon HD 2000系列产品上,AMD-ATI再次启用Ruby作为形象代言人,在Radeon HD 2900XT DX10 DEMO中,Ruby第四次出击!

{imageTitle}

    在介绍R600全新Ruby之前,我们首先对ATI的前三款Ruby DEMO做一个简单的回顾,从历代Ruby的进化就可以了解到显示技术的发展和显示芯片的强大实力。

{imageTitle}

第七章\\第二节 X800 Ruby:The DoubleCross

{imageTitle}

    Ruby首次出现在The DoubleCross这个Demo当中,ATI使用了大约8万个多边形构建而成。为了充分展示Radeon X800显卡的能力,ATI找来图形工作室RhinoFX作为合作伙伴。RhinoFX制作出了一个简短而逼真、大片般的打斗场景,在这个仅有1分40秒的过程当中,Ruby不但要蒙骗她的敌人Optico,而且不得不打败Optico的Ninja,最终顺利脱逃。

{imageTitle}   {imageTitle}
 
{imageTitle}   {imageTitle}

    ATI的DEMO制作小组则把动画序列转换为即时的图像DEMO。整个演示动画应用了电影级别的特效技术,例如景深效果、动作捕捉,更大量采了Radeon X800支持的特效,如像素纹理渲染、柔和的动态阴影、3Dc纹理压缩技术等等,几乎每个物体表面都使用了一个或者更多的渲染层次,从而给人真实感,从皮革到皮肤,甚至是刚刚打过蜡的地板都不例外,尤其Ruby的嘴唇渲染得柔和润泽,极为经典。

{imageTitle}
 
    Ruby首次登场就出手不凡,当然形象代言人也取得了预期中的效果,每逢ATI有什么发布会或者展示会,必然会出现不少真人Ruby美女,ATI精心刻画出来的虚拟人物已经深入人心,伴随着ATI的红色风暴进入市场的每个角落、飘入千家万户。
 
{imageTitle}
 
    以现在的眼光来看,这个Ruby 1.0版本画面并不完美,不支持FP16 HDR导致脸部曝光过度,Ruby的头发相对比较简单,皮肤和脸部刻画不够精细等等——当然这是因为大家现在玩的游戏和当年已经不在同一个级别了。

名称:Ruby: The DoubleCross

下载http://www2.ati.com/misc/demos/ATI-Demo-DoubleCross-v1.4.exe

大小:EXE格式,131MB

第七章\\第三节 X850 Ruby:Dangerous Curves

    X850与X800其实并没有实质性的差别,不过ATI还是为其准备了一个全新的Demo来展示性能上的提高,这个Demo中人气正旺的Ruby再次登场!

{imageTitle}   {imageTitle}

    Dangerous Curves继续展示了Ruby的冒险经历,此次的Demo总共只有45秒,Ruby在逃亡过程中遭到了Optico的追杀。高机动性的摩托车在狭窄的隧道内高速疾驶,无数机器人炸弹正在追赶,情况十分危险!

{imageTitle}
 
    在Dangerous Curves当中使用了实时动态模糊、光晕、预计算辐射转换(PRT)等效果和技术,总体来说实现技术方面与The DoubleCross基本相同,主要为了体现电影动作类游戏的实时渲染效果。而高速运动的光源以及带来的光阴变换反光效果显得更加真实。
 
{imageTitle}
 
    虽然都是基于DX9.0b的技术,但可以明显地看出X850的这款Ruby DEMO在人物细节刻画方面要明显优于上代,Ruby衣服和皮肤的质感和层次感非常强烈。在同样的技术条件下和同一代显卡上面实现了更加高品质的游戏画面,这说明开发商并不是做不出来高品质的游戏,只是授限于硬件的性能不敢使用太多消耗资源的贴图和特效,只有当硬件性能取得飞跃时,游戏画面才能取得质的改善!

名称:Ruby:Dangerous Curves

下载http://www2.ati.com/misc/demos/ATI-Demo-DangerousCurves-v1.3.exe

大小:EXE格式,179MB

{imageTitle}

第七章\\第四节 X1800 Ruby:The Assassin

    X1800系列的隆重登场打响了ATI对抗NVIDIA 7800的反击战,以当时的形势而言多次延期的X1800并不乐观。但首次支持SM3.0规格、全新的架构、超高的频率以及超强的性能都需要强大的宣传攻势体现出来!

{imageTitle}

    鼎鼎大名的Ruby再次出现在了X1000系列的Demo当中,此次的剧情进一步发展,而Ruby的对手也比以前更为可怕:

{imageTitle}   {imageTitle}
 
 Ruby的敌人为一位叫做Cyn的半机器人
 
{imageTitle}   {imageTitle}
 
 Ruby和Cyn展开精彩的搏斗,动作更加真实、画面效果更华丽
 
{imageTitle}   {imageTitle}
 
    打斗过程中不断变换的光源都采用了HDR技术,仅仅突出光线还是远远不够的,光和影永远都是不可分割的。因此阴影的渲染使用了柏特农神庙中提到的动态软边阴影技术,光影效果显得非常柔和、逼真!
 
{imageTitle}
 
    The Assassin中的Ruby比起前两个Demo,主观上来讲人物刻画更加细腻、动作场面更加真实、渲染精度大幅提高,真正做到了电影级别的实时渲染效果!虽说之前两个Ruby Demo的效果已经很不错了,但SM3.0技术让The Assassin更上一层楼,看过The Assassin之后,回过头来再欣赏The DoubleCross和Dangerous Curves就可以体会到ATI的Demo制作水平有了明显提高。The Assassin将X1800强大的3D渲染能力以及先进的规格近乎完美的以电影动作艺术的形式展示了出来!
 
名称:The Assassin

下载:http://www2.ati.com/misc/demos/ati-demo-theassassin-v1.0.exe

大小:EXE格式,131MB

技术:DirectX 9.0c,SM3.0

{imageTitle}
 
 X1800 Ruby性感润泽的嘴唇给人留下了深刻印像
 
    X1800之后发布的X1900和X1950都没有新版本的Demo出现,因为新产品主要强掉像素渲染能力的提高,技术方面并无进步。ATI认为X1800 Ruby已经达到了当前技术水平的极限,画面表现很难继续提升。
 
    现在,革命性的DX10 SM4.0来了,R600携众多超前的技术于一身,那么ATI最新版Ruby Demo能给我们带来什么样的惊喜呢?下面请看HD 2900 Ruby:Whiteout……

{imageTitle}

第七章\\第五节 HD 2900 Ruby:Whiteout高清截图赏析

    伴随着R600的发布,ATI带来了首款采用DX10 SM4.0技术的Demo,主角当时是颇具人气的Ruby,此次Demo时长正好3分钟,还是与图形工作室RhinoFX合作开发。首先我们为大家献上R600 DX10 Ruby Demo:Whiteout的高清晰截图及Demo剧情介绍,下一页再详细分析Demo所采用的图形引擎及相关技术!

    以下所有图片均为1280×720(720P)分辨率,可点击放大欣赏完美画质和景物细节:

{imageTitle}
 
    Whiteout直译就是乳白天空(极地的一种大气现象),R600 Ruby Demo的场景就是位于冰天雪地的一个秘密军事基地。
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
   这个Demo画面水平几乎达到了CG动画的境界,ATI采用了最新的DX10游戏引擎构建了如此华丽逼真的场景,充分发掘出了R600架构的潜力!接下来就对该Demo中所采用的图形技术进行深入分析。

{imageTitle}

第七章\\第六节 HD 2900 Ruby技术解析

第一小节 更大规模的多边形,展现人物完美细节

    每一代Demo的设计理念就是最大限度的发挥显卡实力,应用最新非常先进的技术,当然还要保证Demo能在当时优异显卡上面流畅运行,所以在基于X800XT的Ruby Demo中ATI使用了8万个多变形,这个数目达到了当时主流游戏的8倍!

{imageTitle}
 
{imageTitle}

    而在最新Ruby 4.0当中,有了强大的R600作为后盾,ATI大胆的使用了20万个多变形来构建Ruby模型,其中大量的多边形用于增强Ruby的脸部细节、皮衣和皮帽。这样可以让Ruby做出更加丰富而又生动的表情,不像以前那样单一乏味。衣服的增强也是极富质感,可以让Ruby的身体做出各种高难度动作,看上去更加和谐真实。

第二小节 支持更多活动混合变形,人物更加生动活泼

    再来看看Ruby的脸部细节,Ruby 1.0在当时受到了技术条件的限制,虽然可以通过高精度的纹理贴图来增强嘴唇和面部皮肤的质感,可是Ruby的脸部表情很难做出改变,最多只能支持4个位置进行活动混合变形,所以Ruby只能进行简单的局部微笑表情,不过这在当时来说可变面部表情已经优于很多游戏里的呆板人物了。

{imageTitle}
 
{imageTitle}
 
    到了Ruby 4.0,DX10可以将活动混合变形操作数提高到几乎无限个(由GPU性能决定),ATI使用了多达128个可同时变形的目标体,由此让Ruby的面部表情变得丰富多彩,一颦一笑活灵活现!
 
第三小节 更多的资源用于渲染环境,画面表现力大幅提升
 
    GPU能够同时处理的多边形数目是有限的,为了让主角看上去更加细腻生动,游戏必然会将大部分多边形用于构建主人公,由此导致周围环境的模型和细节不够扎实。在Ruby 1.0的每一帧当中,主角与环境所用三角形的比例大概是2:1;到了Ruby 3.0(X1800时代)中,这个比例正好对调,主角和环境所用三角形的比例是1:2,环境渲染时每帧达到了100万个三角形:
 
{imageTitle}
 
{imageTitle}
 
    到了DX10时代,R600性能大幅提升,此时GPU拥有足够的能力生成更多的三角形,但是当主角的三角形数目增加到一定程度时,继续增多不会给画面细节带来明显的改善,此时程序员就可以把富裕的资源运用在大面积的周围环境上面,可以让画面表现力大幅提升!
 
    在Ruby 3.0上面,每帧渲染时Ruby的三角形数量达到了20万个,而周围环境达到了200万,这个比例被提升至空前的10:1!
 
● HDR效果以及瞳孔根据光线变化
 
    人眼可以自动适应光线的变化,当遇到强光时瞳孔缩小以阻止更多的光线进入视网膜,从而在较短的时间内看清楚强光下的物体;当你从明亮处进入阴暗处(比如山洞)时,瞳孔会自动放大以吸收更多的光线进入,所以在几秒钟或者是10几秒后暗处的物体也能够看得比较清楚。
 
{imageTitle}
 
 Demo中HDR效果无处不在
 
    为了模拟人眼的这种特性,3D游戏中加入了大名鼎鼎的HDR(高动态范围光照)技术,当游戏中遇到强光画面时,程序会在瞬间调高光线的亮度,让屏幕很难看清楚,然后又在短时间内缓慢恢复原来的亮度,屏幕内的物体变回原样。实际上就是变相的迫使人眼瞳孔放大/缩小。
 
{imageTitle}
 
 Ruby的眼睛也被HDR效果所改变,瞳孔自动放大/缩小
 
    玩家的瞳孔会根据游戏的画面自动调节,那么游戏中的虚拟人物也应该具有这种特性,于是ATI在Ruby 4.0中加入了这个细节,Ruby的瞳孔在不同场景经历了几次动态的变化,不得不赞叹程序员的考虑的确是细致入微,Demo刻画更加贴近现实。

{imageTitle}

 
● 物理加速的粒子系统
 
{imageTitle}
 
    所有的雪雾和冰柱碎片都使用了物理特效,实时生成逼真的粒子系统,让整个画面的动态过程不至于单调乏味。
 
● CG级别山脉渲染全过程:
 
    玩过魔兽世界的朋友无不被暴雪精湛的CG制作水平所征服。但CG不同于实时渲染的游戏,属于不考虑图形渲染的负载,尽可能的做到3D图形所能达到的最高境界,然后用强大的图形工作站逐帧输出,经过后期处理制作成高清视频,以展现游戏/电影公司的开发实力!
 
{imageTitle}
 
 WOW片头CG:积雪覆盖的铁炉堡山头
 
    那么游戏显卡什么时候能够达到这种境界呢?虽然还相差很远,但每一代显卡的发布就预示着3D实时渲染离CG级别又更近了一步!现在我们看到在ATI的DX10 Ruby Demo中,对于雪山的渲染已经达到了近乎完美的水平,几年前的游戏CG在它面前显得黯然失色:
 
{imageTitle}
 
 这座山脉的真实程度甚至要超越很多游戏的片头CG
 
{imageTitle}   {imageTitle}
 
{imageTitle}   {imageTitle}
 
{imageTitle}   {imageTitle}
 
 看看ATI是如何一步步构建出如此完美的雪山

第七小节 三款Ruby Demo运算量对比:

{imageTitle}

    Whiteout当中像素着色指令数之所以会减少,这主要是得益于智能的动态流控制技术:在过去处理三个不同的光源需要三条指令,而现在可以将三条指令打包成一条交给一个Shader在单周期内完成!

ATI重登性能王座 48管线R580完全测试
 
 算术处理操作与纹理操作在游戏中所占的比重

    ATI很早就在强调算数指令的重要性,2003年的Ruby 1.0中ALU:TMU就达到了4:1,2006年的Ruby 3.0达7:1,这其中像素着色和顶点着色都在大量使用算数指令(也就说抛去顶点着色的话,像素:纹理的比例会稍低一点),所以ATI上代产品像素:纹理=3:1架构就是基于这个理念来设计的。根据发展趋势来看如今像素指令已经达到了纹理指令的10倍以上,如果加上顶点着色中的算术操作的话,如今ALU/TMU比例达到了23倍!所以ATI在R600核心中集成了空前的320个ALU运算单元,而纹理单元设计改进相对有限。

{imageTitle}

第七章\\第七节 HD 2900 Ruby Demo引擎将会被很多游戏采用

    ATI展现给我们的R600 Ruby的确是相当完美的,但是这种Demo很多时候仅仅用于图形演示而已,其特性和编程模式并不会被实际游戏所采用,比如效果完美的3DMark系列和NVIDIA/ATI的历代Demo只能算是昙花一现。

    Ruby Demo当然时是根据其架构为R600量身打造的,能够适应其架构优势发挥出最大的实力,而游戏则很难达到如此境界。但是我们发现了一个Ruby Demo的秘密,这个Demo所用引擎在未来可能被很多DX10游戏所采用……

DX10 Ruby Demo竟采用下代战地引擎!
 
 ATI X1800XT著名的Toyshop Demo,还没见识过这款Demo的朋友请看这里

    在GDC2007(游戏开发者大会)上,瑞典DICE公司(战地系列游戏开发者)透露出了一些相关资料,原来ATI鼎鼎大名的Toyshop(玩具店,X1800系列除Ruby 3.0之外的另一款经典Demo)是由他们和ATI携手创建的。

DX10 Ruby Demo竟采用下代战地引擎!

    同时DICE Johan Andersson也通过隐晦的方式透露ATI R600 DX10 Ruby Demo使用了他们的下一代游戏引擎——《Frostbite》(霜寒),这就是传说中的战地二引擎:

DX10 Ruby Demo竟采用下代战地引擎!
 
DX10 Ruby Demo竟采用下代战地引擎!
 
DX10 Ruby Demo竟采用下代战地引擎!
 
DX10 Ruby Demo竟采用下代战地引擎!
 
    Johan Andersson出于保密原因,在PPT当中并未直接说明采用Frostbite引擎的这个雪山Demo就是R600 Ruby demo,但是现在我们就可以看得很清楚了,R600 Ruby Demo就是在Frostbite引擎基础上开发完成!
 
    这就意味着现在我们所看到接近完美的Ruby Demo很快就会变成真正的游戏,而且是很多游戏!未来的DX10游戏将会给我们带来全新的视觉体验,同时R600的图形架构也会在未来得到充分发挥,渲染出CG级别的完美画面!

{imageTitle}

 
 
第八章 彻底解放CPU!R600通用计算能力解析
 
    在前文中我们提到,R600拥有320个流处理器,运算能力高达475GFLOPS,达到了优异CPU的10倍以上!如此强大的实力不仅可以用在其擅长的3D图形渲染上面,科学计算、物理计算等都严重依赖于浮点运算速度,如果显卡能够支持的话,就可以让电脑运算能力轻松提高数十倍!
 
第八章\\第一节 GPU逐渐“蚕食”CPU的功能
 
第一小节 之所以称为GPU,是因为实现了硬件T&L
 
{imageTitle}
 
 传统3D图形渲染流程,GPU接管了原本属于CPU的操作
 
    从第一颗GPU诞生时起,原本交由CPU进行处理的功能逐渐转移到了GPU身上。第一代GeForce和Radeon就“剥夺”了CPU进行T&L(Transform and Lighting,坐标转换和光源)的权利,由于GPU可以更高效的进行T&L运算,因此消除了3D渲染中的瓶颈,同时降低了CPU的负载。
 
第二小节  不再需要解压卡!显卡就是高清视频加速卡
 
{imageTitle}
 
 高清视频解码,CPU几乎不参与操作
 
    此后几乎所有的显示芯片(包括IGP)都集成了DVD视频加速、补偿等技术。近年来随着HDTV的普及,GPU当中开始集成专用的解码模块,将HDTV解码过程中的所有流程都搬到了GPU当中,CPU占用率接近于零!
 
第三小节 DX10大革命:几何着色从CPU转移至GPU

为王位而生 GeForce8800全面解析测试

    随着DX10时代来临,新引入了一种Geometry Shader(几何着色),而此前所有的几何坐标转换都是交给CPU处理器,在渲染过程中GPU必须等待CPU处理完成后才能进行下一步操作。就如同当年硬件T&L所带来的突破一样,GPU进行几何着色效率更高,如此一来可以批量处理以前不敢想象的庞大规模物体渲染,让游戏画面更具震撼力!
 
第四小节 物理加速卡还能存活几年?显卡足以胜任物理加速技术
 
    近两年来比较热的话题就是物理加速技术,碰撞、烟雾、变形、流体、布料等等物体的运动需要符合自然规律,此时就需要对其运行轨迹和状态作出判断。以往这些运算都是交给CPU完成,但效果不能令人满意,CPU有限的浮点运算能力根本无法胜任大量物体之间的相互干涉,虽然很多游戏都使用了经过软件处理的物理场景,但是使用量都十分有限,假如耗尽CPU资源的话会对游戏的正常运行造成瓶颈。
 
{imageTitle}
 
 ATI公布的GPU物理加速DEMO
 
    于是专用的物理加速卡出现了,代替CPU进行硬件物理加速,从而消除了程序设计员的顾虑,让游戏过程变得更加贴近现实。与此同时NVIDIA和ATI也非常重视物理加速方面的内容,用GPU实现物理加速成本更低,而且比起CPU和PPU更具优势,这是因为高端显卡拥有比物理卡还要强的浮点运算能力!虽然GPU物理加速技术尚未进入实用阶段,但可以预见其前景是非常广阔的!
 
    ATI在这方面显然是走在了前面,X1000系列的架构就非常适合进行物理运算,之前ATI已经公布了大量实时演算的GPU物理加速Demo,并且声称低端的X1600在物理加速方面都要强过物理加速卡。未来物理加速肯定会成为游戏标配,我们非常期待GPU物理加速的表现。

{imageTitle}

第八章\\第二节 CPU地位遭受挑战,GPGPU大战一触即发
 
    前面所介绍的运算项目全部是针对3D游戏,随着GPU以及图形技术的发展,CPU将会更少的参与3D渲染过程,因为其架构根本不适合进行此项运算,所以GPU剥夺CPU的权利是必然的,未来的游戏将会更少的依赖于CPU性能,CPU的作用只是进行一些游戏AI计算以及数值统计等辅助性工作。
 
GPGPU大战一触即发!NV即将发布新品牌
 
 GPU的架构更加适合通用计算(单纯依赖ALU)
 
    如今,GPU咄咄逼人的态势已经延伸到了科学计算以及视频编码(注意不是解码加速)等非3D图形领域。ATI显卡在这方面的表现非常出彩:
 
第一小节 为科学计算作贡献,ATI GPU大放异彩
 
    Folding@home是一个“研究蛋白质折叠、误折、聚合及由此引起的相关疾病的分布式计算工程”,目前全球已经有超过一百万颗CPU参与了Folding@home计划的实施。此外,Sony的PS3也参与了斯坦福大学的这项全球网络分布式科学计算工程,只不过PS3是利用多核心Cell处理器参与计算。而ATI首次合作开发了新软件利用GPU的浮点运算能力来在空闲时间进行计算。
 
{imageTitle}
 
 科学计算,GPU才是王道!
 
    据悉,PS3 Cell处理器的运算能力相当于Windows PC的33倍(参与计算的PC平均值),而R580核心的运算能力达到Cell的2倍以上,远远超过了CPU!
 
科学计算GPU才是王道!GPU=较多核CPU
 
 与PS3相比,GPU成本低,效能更强
 
    ATI早先发布的催化剂7.4驱动已经能够支持斯坦福大学的蛋白质折叠分布式计,只要您拥有一块X1000系列显卡,接入互联网,并且安装了斯坦福大学GUP分布式计算应用程序。那么就可以在显卡空闲时(非3D模式)为科学计算做一份贡献。由于所有的计算都是由显卡来完成,因此它不会占用您的CPU和内存资源,在上网和文字处理时不会受到任何影响,仅仅是占用少量的网络带宽,另外要消耗一部分电能。
 
    NVIDIA声称G80拥有更强的通用计算能力,但目前为止还只有ATI的GPU参与此项蛋白质科学计算,看来ATI在GPGPU软件开放上面又一次走在了前面!
 
第二小节 AMD发布首款流处理加速卡,GPU通用计算真正进入实用阶段
 
    当今最强大的超级计算机是IBM的蓝色基因/L,拥有65536个双核心处理器,也就是131072个处理核心,峰值运算性能367TFlops。如果换成AMD来打造这一系统,只需更少数量的“流处理器”(即R580 GPU)就能达到同样的性能,而如果使用同样数量的流处理器,则将为系统带来大幅的提速。利用R580内蕴藏的巨大性能潜力,理论上只需不到1000个图形处理器就能达到蓝色基因/L的性能水平,因为每个R580核心都能提供至少375GFlops的运算能力。
 
AMD首款“显卡”公布:流处理加速卡!
 
 基于R580核心的流处理加速卡
 
    这绝非是天方夜谭!AMD收购ATI之后发布的首款产品就是基于R580核心的流处理加速卡,AMD-ATI已经制作了一套完整的CTM界面专业软件,可以“直接访问(GPU的)原生指令集和内存”,提供8倍于传统3D编程界面的性能。

{imageTitle}

 
    AMD-ATI通用计算/物理加速/科学计算方面取得的辉煌主要仰仗强大的R580核心以及X1000架构。作为R580的继任者,R600拥有超大规模的流处理器,更加智能的动态流控制和指令分配模块,再加上海量的显存带宽,R600显然是一块真正的GPGPU,那么现在我们就来看看AMD-ATI的重头产品R600在非3D领域的改进及应用。
 
第八章\\第三节 R600——为通用计算而生
 
    硬件系统再怎么强大都只是停留在理论阶段,如果没有相关软件的配合那就是空有一身武艺无从施展。
 
G80
 
    上面这张图属于理论值,从实际情况来看CPU想要达到理论的48GFLOPS都很困难,一般只能停留在50%-70%的水平。虽然多数GPU在架构上很适合通用计算,但由于软件开发比较滞后因此尚未进入GPGPU领域。据ATI表示GPU想要发挥出90%以上的运算能力非常容易,但软件开发却没那么轻松。
 
{imageTitle}
 
    早在2005年,ATI就发布了基于R520核心的各种通用计算软件,用于物理加速、科学计算,支持第三方PeakStream、Havok和Rapidmind的引擎,到了R580之后ATI的软件已经比较成熟了。AMD-ATI合并完成之后系统化了整套平台,并开发了完整应用程序接口、程序开发、配套软件解决方案。由于软件平台的成熟,AMD才正式发布了流处理加速卡。
 
● HD Cap`n`Stream技术,GPU视频编码加速
 
    A卡用户应该知道,ATI在X1000系列的AVIVO驱动中提供了一项视频编码技术,AVIVO Encoder支持高效率的MPEG 1/2/4及H.264编码,能够生成标准的VCD、SVCD、DVD、PMP等各式的文件,速度比纯CPU编码快3倍以上!虽然灵活性不够高,但对于家用视频格式转换来说还是非常方便的,可以说是ATI在GPU视频编码方面的一个尝试。
 
{imageTitle}
 
    R600从开发之初就考虑到了在通用计算方面的应用,这一代产品被命名为HD 2000系列,不仅是因为它全面支持HDMI、HDCP以及HDTV解码加速,HD 2000系列架构能够更较有效的进行HDTV编码,要知道编码操作的运算量可达解码的10倍以上!
 
{imageTitle}
 
{imageTitle}
 
    R600能够支持单GPU、双GPU以及网络分布式视频编码,能够大大的结余系统内存容量和带宽的占用、解放CPU,更高效的进行各种格式的视频编码和格式转换。
 
    硬件方面有320个流处理器作为强大后盾,而软件方面CTM CAL开发平台已经准备就绪,相信不久之后AMD还会发布更大显存容量的R600显卡,不过正式名称可能是流处理加速卡。

{imageTitle}

 
● 庞大的运算资源,R600单卡就能物理加速:
 
    R600拥有多达320个流处理器,想要完全耗尽GPU资源没那么容易,实际上任何游戏都不可能保证100%利用GPU资源,但随着统一渲染架构的出现,以及ATI动态流控制合理分配ALU资源,可以确保GPU动态的处理各种类型的指令,比如像素、顶点、几何以及物理加速。
 
{imageTitle}
 
    DX10 API很容易实现GPU进行物理加速,性能损失并不会很大,因此可以将这部分运算交给单一的GPU执行,当然发烧玩家依然可以选择双显卡交火甚至是搭配第三块显卡专门负责物理加速!
 
{imageTitle}
 
 这是ATI提供的一个特殊Demo,在塌陷过程中仍能保证图像的变化
 
{imageTitle}
 
 非常有意思的Demo,用来展示R600的强大物理加速性能
 
{imageTitle}
 
    还可以用小球来搅局,这个Demo与Ageia提供的物理加速卡Demo有几分相似之处,但是复杂程度远远超越了我们的想象,由此可见如果把一块R600显卡当作专用的物理加速卡的话,其强大的性能是物理加速卡无法比拟的!
 
● R600能用于更多的非3D场合
 
{imageTitle}
 
 流体力学计算
 
{imageTitle}
 
 气象图变化预测和化学分子反应
 
{imageTitle}
 
 阴影、光影和烟雾的干涉
 
    看来如今的GPU已经远远超出了Graphic Processing Unit的范畴,视频解码加速、物理加速、视频编码、科学计算、气象财务预测……CPU的地位遭受前所未有的挑战。

{imageTitle}

第八章\\第四节 分久必合、AMD的CPU&GPU整合大业
 
    GPU在科学计算领域的出色表现让IT巨头Intel也为之一振,即便是最新、最强的四核酷睿2处理器在新一代GPU面前也是相形见拙。于是Intel专门针对科学计算研发了80核心的处理器,并且计划在五年内正式推向市场。
 
Intel震惊世人 完成80核心处理器原型
 
    目前还未有这款80核处理器的详细资料,但根据推测它应该是内置N个浮点算数运算单元(ALU),然后通过先进的制造工艺大幅提高工作频率,从而实现恐怖的TEARFLOGS(万亿次浮点运算),这样其架构就与GPU的流处理器有些相似。
 
2008年45nm工艺!AMD CPU/GPU整合计划
 
    与焦急的Intel不同,AMD的目光更加远大,AMD与ATI联姻后阶段性重点摆在GPGPU架构,如今的目标是要达成CPU与GPU完全整合,并提出以Fusion为研发代号的硅芯片整合计划,预计产品在2008年底或2009年初推出。
 
{imageTitle}

    AMD收购ATI不仅仅是获得芯片组业务和图形芯片业务这么简单,将AA资源优势整合这才是重中之重。尤其是今年来CPU和GPU的技术发展都有很多重复之处,CPU和GPU的应用领域也在不断的交叉融合,由此造成了不少运算资源的闲置和浪费,如果能够最终完成CPU和GPU的整合,那么将对整个产业造成深远影响,而且AMD的实力和地位也将会膨胀!

Intel强势进逼!AMD欲以CPU+GPU反击

    AMD明确指出,拓展GPU的使用效能,是AMD的一项策略目标,尤其传统用来解读计算机指令及处理存在计算机程序数据为主的CPU架构正趋向多核心分工发展,而AMD的汇流运算(Stream Computing)技术能让GPU分担CPU运算。目前AMD Stream汇流处理器已被大量使用在科学研究、国防安全、财务预测等应用面,前景十分广阔。

    作为ATI的死对头,NVIDIA在GPGPU方面也是异常积极,曾有消息表示NVIDIA将会发布单独品牌的GPGPU产品,也有传言说NVIDIA将会进军CPU领域。作为AMD的死对头,Intel除了展示80核处理器之外,还计划重返独立显卡市场,甚至是秘密研制CPU to Graphic计划!
 
    总的来说,目前IT巨头Intel、AMD和NVIDIA三足鼎立之势已成,GPU和CPU之间的界限也开始越来越模糊,或许不久的将来电脑将会只有一颗真正的“中央处理器”,CPU和GPU甚至Chipset以及声卡、网卡等功能芯片都将不复存在。
 
{imageTitle}   {imageTitle}
 
     这绝非天方夜谭,就拿目前的产品来说,AMD CPU集成了内存控制器,剥夺了北桥芯片组的主要功能;而HD 2000系列显卡整合了声卡功能,无需纷繁芜杂的设置就能直接输出HDMI数字信号;未来的产品将会变成什么样呢?谁也说不清楚,目前可以看到的是AMD在技术创新和资源整合方面走在了业界前沿,我们非常期待AMD以及被收购的ATI在未来拿出革命性的产品!
 

{imageTitle}

第九章:AMD高清视频功能解析

第一节 高清时代来临 HDTV普及趋势加快

    从两年前HDTV概念开始进入大众视野,如今已经被越来越多普通用户所接受。然而在国外发达地区,HDTV的普及度早已超出我们的想像。根据Display Search 2006年第四季的调查报道显示,北美2006年的HD用户已经达到2000千万以上。而在今后两年,包括欧州、日本都将进入HDTV的高速发展期,预计到2008年用户总数突破6000万以上。

{imageTitle}

    国内的情况略有不同,虽然央视高清频道以及各地方台数字纷纷开播。但在高清电视信号和高清碟机还没有普及的情况下,通过宽带高速下载高清影片使得PC最先成为了HDTV的主力播放设备。随着蓝光与HD-DVD竞争局面逐渐明朗,播放设备的成本降低让国内用户有机会体验正版HDTV影片。四月末,首批蓝光格式电影光盘已经出现在香港市场,最低售价不过180元港币。可以说,HDTV距离我们更近了。

{imageTitle}

 首批在香港上市的蓝光格式电影光盘,最低售价180元港币

 低端PC成瓶颈 解决播放问题仍是关键

    无论下载还是正版高清影片,播放仍然是个大问题。或许还没有很多人把HDTV影片的播放和显卡联系在一起,也许大家都觉得“无非是看个电影嘛,什么显卡不都一样么”。这主要是因为初期HDTV都采用了和DVD相同的MPEG-2编码,只不过码率高了一些,因此只要CPU频率够高、或者是双核CPU,都能够通过软件流畅完成解码,所以很多人并没有对HDTV播放投入足够多的重视。

 蓝光和HD-DVD来了,保证流畅播放仍然是个大问题

    如今,作为HDTV的载体,HD-DVD和蓝光开始普及,高压缩率的VC-1和H.264取代了MPEG-2成为新的编码标准,相同品质视频的体积变得更小,但同时解码要求大幅增加,仅靠CPU已经无法胜任需求。此时显卡的视频加速性能直接影响到了HDTV的播放流畅度和画质。

{imageTitle}

    从这张Blu-ray、HD-DVD与DVD的规格对比表中不难看出,随着视频分辨率由DVD时代的720×480提升至1920×1080(1080P),高清节目数据流量也随之水涨船高,从9.8Mbps峰值到达蓝光电影的40Mbps,这也成为影响HDTV视频的流畅度播放的主要原因。

    除了数据流量增大之外,HDTV影片不同的编码方式对电脑硬件的要求也相差甚远。目前,Blu-ray、HD-DVD影片采用的编码格式为MPEG2、VC-1、H.264三种。每一种编码格式算法、复杂程度各不相同,这也是为什么有些玩家能够搞定MPEG2影片却无法流畅播放H.264格式影片的关键所在。

{imageTitle}

    为了能够更加深刻的理解ATI UVD技术的实现方式。这里我们首先对HDTV所采用的三种编码格式作一个详细的介绍:

● MPEG-2——已经难不倒主流CPU和显卡

    MPEG-2是由MPEG(Moving Picture Experts Group,运动图像专家组)制定的国际通用视频编码标准,MPEG-2在很早之前就得到了广泛引用,它的优点是运算量相对较小,对于现有行业设备的兼容性最好,我们所熟知的DVD影碟即是MPEG-2编码。但MPEG-2文件容量过大,一部2小时左右的1080i/1080p格式电影通常需要10GB—20GB的存储空间

{imageTitle}

 早期的BD影片多数采用MPEG-2编码

    早在GeForce 256时代的主流显卡就实现了MPEG-2编码补偿,即以GPU来实现部分解码过程。但是此时仅仅是数据流的渲染处理,并未在算法上取代CPU,因此更多的贡献在于提高画质而并非降低CPU占用率。为了改变这一现状,主流显示芯片厂商都在最新的显卡中采用补偿技术,做到了MPEG-2硬件加速解码,此时CPU的负荷可以更大幅度地下降。

    MPEG-2虽然古老,但这并不意味着它就是过时的——我们可以把它比作是经典游戏Doom3,虽然问世了3年之久,但至今依然有新游戏采用Doom3的OpenGL引擎。同理,如今采用MPEG-2编码的HD-DVD和蓝光影碟也不在少数。

   早期,MPEG-2格式的影片体积并没有超出HD-DVD或者蓝光光盘容量的限制,那么就没必要使用压缩率更高的H.264或VC-1。但对于大片或者是加入了很多拍摄花絮、分支剧情以及预告片的影片来说,使用MPEG-2可能无法植入如此众多的内容,所以MPEG-2被淘汰是必然的。如今流行影片BT下载,更小的文件体积就意味着减少网络负担和下载时间,因此采用H.264以及VC-1的影片越来越多,MPEG-2仅限一些球赛或者节目短片,慢慢被淘汰出局。

● VC-1(WMV9)——存在局限性的平衡之选

   微软WMV格式的视频文件大家并不陌生,与早期的ASF格式一样,WMV也采用了MPEG-4编码技术,并在其规格上进行了进一步开发,使得它更适合在网络上传输,微软希望用WMV来取代其它电脑流媒体格式。而VC-1是微软针对TV平台开发的视频编解码技术,是基于微软WMV9压缩技术的一个视频编码规范,由运动图像和电视工程师机构加以标准化,从而成为微软自有版权的国际公认视频编码标准。

{imageTitle}

 在微软的支持下HD DVD基本上均采用WMV9图形编码

    有了微软这个行业巨头的强力支持,VC-1进入并且得到广泛采用是必然的事情。比起老迈MPEG-2,VC-1的压缩比更高,而比起热门的H.264来说,VC-1所需的编码解码计算要小很多。所以说VC-1应该是一个比较好的平衡,但随着硬件技术的不断进步,VC-1也暴露出了不少弊端。

{imageTitle}

 微软官网提供大量WMV9 1080p短片下载

    WMV是微软私有编码技术,不容易实现硬件芯片解码或DSP解码方式,主要采用软件解码方式,而VC-1同样存在协议相对私有的问题,实现硬件解码或DSP芯片解码难度较高。NVIDIA新一代G84/G86仅集成了H.264解码引擎,而不支持VC-1,就是因为这个原因。

    压缩率方面VC-1不如H.264这就是硬伤,可能会限制影片的时间长度,因此VC-1的使用存在一定的局限性,对于文件体积有严格要求的网络HDTV大多采用H.264而非VC-1。这就使得VC-1的处境类似于一种过渡方案,未来H.264的前景被普遍看好!

● H.264(AVC)——最被看好的视频编码格式

    MPEG-4 AVC(Advanced Video Coding)也叫H.264,它是最新的MPEG压缩技术,目前负责通信技术标准化的ITU-T(国际电信联盟电信标准化部门)与ISO(国际标准化机构)正在合作制订相关标准。

    H.264编码最大的优势在于它能够以更低的码率得到更高的画质,例如一部2小时1080p格式的HDTV电影,如果使用与DVD相同的MPEG2编码,需要15GB左右的空间来保存;而如果使用H.264编码的话只需一半左右的容量,并且画质与MPEG2的不相上下。

{imageTitle}

 相同码率(意味着文件大小相近),H.264画质优势明显

{imageTitle}

 相近的画质,H.264所需码率大为减少(意味着网络带宽要求降低)

    高压缩率除了能够让视频文件体积大幅减少之外,还可以让流媒体的数据传输率降低不少,这就意味着可以在线视频或者是手机等带宽较窄的网络上传输高质量的视频,可以说应用前途一片光明。

{imageTitle}

第三节 硬件视频加速

    了解完MPEG-2、VC-1、H.264这三种HDTV视频的编码格式,大家应该明白H.264编码最为复杂。高压缩率、高质量的特性让H.264编码的影片在播放的时候对硬件系统提出的要求最高。相比之下,VC-1编码复杂程度次之;MPEG-2最次。据相关资料显示,H.264的影片在编码的过程中复杂度是MPEG2的10倍,解码的复杂度是MPEG2的3倍,这对于CPU来说是很沉重的负担。

{imageTitle}

    从GeForce 6/Radeon X1000系列开始,NVIDIA/ATI纷纷在GPU当中加入了解码加速模块,通过DXVA接口调用GPU资源辅助CPU进行H.264解码,达到降低CPU占用率的目的,让影片得以流畅播放。

{imageTitle}
{imageTitle}

     早期的Avivo及PureVideo HD对HDTV解码并不完备

    即便如此,但NV/ATI第一代视频技术大半还是需要通过软件交给CPU处理。例如上图,PureVideo 具体就是负责后期输出的Motion CompensATIon(运动补偿)和Deblocking(解码去方块滤波),也就是说前期Bitstream Processing(流处理)、Inverse Transform(逆变换)解码仍然要交给CPU来完成。

{imageTitle}

    不过随着时代的发展,内容提供商和用户对影片画质的要求用来越高,由此导致HDTV码率成倍提升,播放影片对硬件方面也提出了更高的要求,上代的视频加速技术已经开始力不从心,无法胜任高码率HDTV的需求!

{imageTitle}

 当H.264影片码率超过20Mbps以上,流处理部分CPU占用率最高达到47.8%

    为了降低高清视频的门槛,同时亦是为了适应未来高码率HDTV以及影碟的播放需求,NVIDIA在G84/G86核心内集成了新一代Video Processor,而且还加入了全新的BitStream Processor Engine(二进制空间分割引擎),这个模块专门负责处理上代PureVideo所忽略的CAVLC(前后自适应可变长度编码)/CABAC(前后自适应二进制算术编码,压缩率更高)解码以及Inverse Transform(逆变换)。

{imageTitle}

    通过改进H.264的编码引擎,就可以在显卡上完成H.264全部的解码过程。即便玩家使用低端处理器,也能在播放高码率H.264视频时大幅降低CPU占用率,这也是正真正意义上首次实现GPU纯硬件解码H.264。

    下面,我们将要介绍的ATI UVD技术还会更加令你兴奋。因为它不仅仅支持H.264的完整硬件解码,对于VC-1完美解码同样能做到100%支持。

{imageTitle}

第四节 UVD 引擎解码流程

    在文章的第一章我们曾介绍过,作为新一代ATI Radeon HD 2000系列的产品亮点,HD 2000在视频方面的改进完全可以用惊艳来形容。全新推出视频加速引擎UVD(Universal Video Decoder,通用视频解码器)配合HDMI数字/音频输出以及全线产品HDCP认证能够在播放HD音频时解决各方面的难题。

{imageTitle}

 UVD引擎解码流程,支持H.264/VC-1完全的硬件解码

    上图就是ATI UVD引擎解码流程,与上页我们介绍的一样,UVD引擎可以完成H.264视频解码的全部4个过程;不仅如此,对于另一种HDTV编码格式VC-1也是完全做到了显示卡的百分百解码,对于MPEG-2编码的影片更是不在话下。

    换句话说,也就是UVD引擎支持目前最全面的HDTV编码格式。无论在播放蓝光还是HD-DVD时,都能保证较低的CPU占用率。

{imageTitle}

 相比CPU软件解码、竞争对手以及Avivo,包括UVD引擎的Avivo HD功能最为全面

{imageTitle}

 无论是H.264还是VC-1,采用UVD引擎的HD 2000系列比G84/86略胜一筹

    显然,NVIDIA是认准了未来高清视频一定是H.264的天下,所以在GPU纯硬件解码H.264上大有改进,而未重视了VC-1格式的解码。对于后来者ATI HD 2000系列,要想获得DIY玩家的认可,后来居上,必须想办法超越竞争对手。

    尽管VC-1编码复杂并不及H.264,CPU占用率也相对较低,但毕竟部分解码与全面硬件解码从功耗、整体CPU占用率上都有差别。作为普通玩家,当然希望拥有一款能够支持全面HDTV视频解码的显卡。

{imageTitle}

 

第五节 HQV测试

    HQV Benchmark是一款面向多媒体PC以及家庭影院的基准测试程序,它其中包含了多种特征的视频素材,可以非常全面的检验影音系统在视频播放方面的能力,并且以画质定分数从而裁定性能。接下来,我们针对R600的视频画质部分进行测试。作为参考,我们选取了NVIDIA同档次产品8800GTS 640M作为对比。

    有关HQV的介绍与测试,各位读者可以参阅《教你给显卡视频评分 HQV权威测试教程

教你给显卡视频评分 HQV权威测试教程

    我们选取了其中特殊场景截图进行对比。下图是HQV测试中的抗锯齿项目,快速移动的三个线条用来测试视频系统对于快速运动物体的锯齿消除能力。

  {imageTitle}  {imageTitle}
 
 反交错测试:8800GTS(左)最下面的白条出现了锯齿只得到3分,2900XT满分5分(右)这也成为整个HQV测试中唯一一处的得分差别所在
{imageTitle}  {imageTitle}{imageTitle}  教你给显卡视频评分 HQV权威测试教程
 无论是反向电视电影处理、噪音消除,HD 2900XT都控制得很好

    需要说明的是,HQV Benchmark是一项视觉效果测试,其评分是根据画面而定。HD 2900XT在本次测试当中得到了130分满分,比1950XTX的118得分提高了不少。8800GTS 640M得到128分,离完美只是一步之遥。

{imageTitle}

    最后,我们也必须看到HQV Benchmark存在的局限性。因为仍然采用DVD作为存储介质,HQV视频格式仍然是较老的MPEG-2编码。这对于注重考察HDTV视频画质并没有实质性意义。据了解,HQV的最新版本HQV HD将会在近期推出。

    关于HDTV视频加速测试,由于R600研发时间较早,没有加入对UVD视频引擎的支持,HD 2900XT视频加速功能仍保持在X1950系列水平。在征求AMD方面后,我们选择了放弃这部分测试。

    高端卡不支持新的视频技术在NV/ATI两家都不算罕见,例如NV 8800系列就不支持85/8600具备的H.264全硬件加速。不过这对高端用户而言关系不大,因为购买R600/G80的用户肯定都会配备高端酷睿2双核CPU,HDTV高清视频的解码也无大碍。

    对于HD 2000系列解码能力以及UVD引擎的测试部分,我们将在HD 2600/2400产品评测中详细为大家介绍,敬请期待!

{imageTitle}

第十章 显卡声卡二合一!HDMI声卡解析及体验式测试

第一节 电脑音频的数码之路

    上个世纪90年代初,电脑开始逐步强化了多媒体功能,当时能够给电脑配个光驱,加个多媒体音箱,在14寸球面CRT上看看VCD就已经是一个很令人兴奋的事情了。当然这一些早已变成了过去,随着科技的发展,人们对于电脑的多媒体方面的性能也是有着不断提升的需求。

    转眼到了2007年,AMD最新推出的R6XX系列显示芯片已经具备了数字音频输出的能力,将电脑音频的发展之路推向了新的纪元,下面,我们就来先看看以往的电脑音频方案是如何解决的。

    最初的时候,大家对于电脑音频的需求仅仅是能出声就好,但是随着人们需求的不断提高,渐渐开始追求电脑所能回放的音频的质量了,这个过程中,一家传奇的公司为整个电脑多媒体领域贡献了很多优秀的产品,这就是创新。

{imageTitle}
 
 创新经典的AWE 64
 
    慢慢的,大家开始发现,使用模拟信号传输音频讯息有个弊端,就是线材上会损耗掉一些细节,为了达到更高的音质,就需要采用更好的声卡,采用更好的线材,采用更好的播放设备。

全球同步 ATI双X16平台RD580深度评测

拥有光纤和同轴数字音频输出的主板非常常见

    慢慢的,数字音频接口开始进入人们的视线,这其中最常见的就是同轴和光纤接口了。光纤接口可以使用一根线材传输多个声道的音频。而且能够保证音质是完全没有损失的。
 
    但是光纤接口同样也有一些不完美的地方,一个是设备,很多传统的播放设备均为模拟设备,而专业的功放价格都比较高。另外一个就是线材成本高,而且容易折断。所以光纤接口在出现后仍然和传统的模拟音频并存了很长时间。

画质大比拼! HDMI版690G全球独家解密

 
    在光纤接口还没有普及的时候就已经面临被淘汰的命运了,这就是因为随着家庭影院概念的普及,很多用户已经有了多声道高保真音频的需求,而这样的音频的数据带宽早已超过了当初光纤接口设计的规范。
 
    在这样的需求下,HDMI接口出现了,HDMI接口使用电信号传输数字数据,多针脚的设计让数据带宽达到了10Gbps以上,所以即便是8个声道的未经压缩的音频,也可以用192K的采样率进行传输。
 
总结:HDMI传输音频的好处:
 
1 数据带宽高,高达10Gbps的数据带宽能够轻松传输多声道数字音频。
2 无失真,数字信号本身的就能够避免数据的丢失。
3 通用性高,普通用户可以使用电视机做回放设备,对于高端用户,也有很多AV功放可供选择。

{imageTitle}

 
 
第二节 HDMI数字音频技术背景
 
    对于HDMI接口,可能有些朋友觉得已经是老生常谈的事情,但是为了更好的理解R600通过HDMI输出多声道数字音频的原理,我们还是再来认识一下HDMI接口。
 
    关于HDMI接口的基本的特点,我们这里就不多介绍了,无非是哪些公司创建的,是DVI发展而来的,传输的TMDS信号等等,这些信息大家通常比较容易在各种文章中看到介绍,大家去百度一下就很容易查到相关资料。
 
{imageTitle}
 
 HDMI不同版本的不同兼容性
 
    今天我们主要说说HDMI接口的音频部分。我们知道,HDMI接口分为几个不同的版本,大家目前最经常提到的是HDMI1.1和HDMI1.3版本的接口。不同的版本之间的兼容性并不是很好,甚至有的时候会出现上下互不兼容的情况。对于兼容性,基本上出现问题的原因还是各种设备因素。
 
    造成这种混乱的情况的原因,主要还是在于数字音频格式的不统一,目前我们能够见到的数字音频的格式有很多。
 
    Dolby Digital和DTS 是我们最常见的音频格式,这两种格式的兼容性也是最好的。这些格式都可以理解成为多声道的MP3格式。
 
{imageTitle} {imageTitle}
 
 Dolby Digital和DTS是我们最常见的格式
 
    此外,Sony大力推行的是LPCM格式的音频,这种音频格式的音轨通常只会存在于Sony Picture的电影蓝光盘中,非常少见。这种格式的播放需要蓝光播放机或者PS3游戏机才能支持。还有另一类能够把LPCM格式的音频放出来的设备,这就是AV功放,常见的马兰士,天龙,先锋,雅马哈等高档AV功放都是能够解码这种音频格式的。
 
{imageTitle}
 
 LPCM5.1 格式的音频 通常只能在Sony Picture的高清盘中见到
 
    而对于Sony阵营之外的高保真音频格式,大家比较推崇的有三种,这就是DD+(Dolby Digital Plus),Dolby Digital True HD,和DTS-HD。
 
 
 DTS-HD音频格式的影碟比较少见
 
    这其中DD+的设计基本上是按照DD的思路来的,所以兼容性也很好,扩展能力比较强,早在2004年就已经成为BD硬盘的可选音频编码了。
 
    后面两种HD类的音频格式都是无压缩的的环绕音频格式,通常只存在于蓝光影碟中。您可以理解成6或8个声道的192K采样的WAV文件。
 
    还有一种格式叫做MLP的无损压缩格式。你可以理解成多声道的APE格式。
 
    这么多音频格式中,电脑能播放的其实并不多,只有Dolby Digital和DTS可以进行解码,对于其他的格式,PowerDVD可以选择让这些数据通过数字接口输出。
 
    不同的音频编码对应着不同的数据带宽,下面我们就来看看不同的HDMI接口可以兼容的编码标准。
 
HDMI1.1:最大可传输LPCM8.1信号,可传输DD、DTS信号,可将DVD-AUDIO音频流转换为LPCM输出。

HDMI1.2:在1.1的基础上增加了可以传输SACD的DSD音频流。

HDMI1.3:在1.2的基础上增加了可以传输DD-True HD和DTS-HD。

{imageTitle}

 
 
第三节 各种显卡HDMI接口方案
 
    随着HDMI接口逐渐成为业界统一的标准,各个显卡厂商早已经开始考虑使用HDMI接口传输视频信号了,纷纷推出了具备HDMI接口的显卡,但是我们知道HDMI是含有音频接口的,这其中就分为几种不同的方案。
 
第一种:无音频方案
 
    最初出现的带有HDMI接口的显卡只是利用了HDMI接口传输视频信号,这种方案可以说只是让显卡增加了兼容性。并不能称之为真正的具备HDMI接口。这种方案通常有两种形式,一种是提供了一个DVI转HDMI的转接头或者转接线,另外一种是将显卡上的DVI输出接口换成一个HDMI接口。
 

HTPC上佳之选!迪兰率先出货HDMI显卡

 HDMI哑巴方案

    这种方案的意义主要是方便用户在连接没有DVI接口的显示设备的时候的连接,这种方案的音频部分还需要用户去自行连接多媒体音箱。
 
 
第二种:音频“飞线”方式
 
    不过很快就有了另外一种HDMI显卡出现了,这种显卡能够真正的通过HDMI输出声音了。这种方案使用的是一根2pin的音频连接线从主板的音频接口接到显卡上,显卡上使用一颗AD芯片再来将音频信号编码成为数字格式的信号,再通过HDMI接口输出。

安静的享受HDMI!技嘉静音7600GS赏析

 “飞线”方式能保证有声音并且成本比较低

 
    相比没有声音的方案,这样就已经好多了,因为一旦这套系统调试好,还是非常方便的。直接使用一条HDMI数据线就能将音频和视频信号同时输出到电视机上。
 
    但是这种方案也同样有着很不方便的地方,首先就是不能保证所有的主板集成声卡或者独立的声卡都有音频输出的接针,这种接针的初衷本身只是为了机箱的前置耳机插口准备的。机箱内部的强大的干扰对细细的音频线势必有着不小的影响。
 
{imageTitle}
 
    另外就是这样的解决方案只有两个声道可以出声,通过HDMI接口输出之后没法实现家庭影院的多声道环绕效果。这样就会让高清影片的效果大打折扣。
 
第三种:光纤接线方式
 
    考虑到以上的缺陷,就有厂商开始想法推出更加完美的HDMI显卡了。小编如果没有记错的话,是华硕率先推出这种显卡的。
 

高清娱乐任我行!14款HDMI显卡全推荐

 华硕的光纤接口HDMI显卡

    这种显卡的HDMI音频是通过主板的光纤输出到显卡的光纤输入,这样的好处就是没有音质的损失,数字信号可以保证完美的音质。
 
    声音通过光纤传到显卡上之后,显卡上的HDMI芯片会进行一些操作,这部分有没有经过DA和AD的操作笔者就不知道了,不过最起码这样的音质一定会比前面的解决方案好的多。

高清娱乐任我行!14款HDMI显卡全推荐

    此外,这样的好处还有能够真正的将5.1或者7.1多声道音频信号输送到HDMI设备上去。
 
    但是,如果使用这种方案,就必须要有一块支持光纤输出的声卡或者支持光纤输出的主板了。
 
{imageTitle}
 
    这几种方式各有千秋,但是都不能同时满足我们的需求,我们需要的并不复杂,只需要多声道数字音频输出,任何主板都能用,不用连接额外的数据线,怎么就没有这么一个完美的显卡出现呢?

{imageTitle}

 
第四节 R600:内置数字声卡的完美HDMI音频方案
 
    ……接上节
 
    对于HDMI显卡的各种音频方案,在AMD的R600出现之前可以说都是很临时的一种解决方法,R600的解决方案才是比较完美的。我们下面就来看看AMD的R600是如何解决音频信号的传输的。
 
一 芯片内部集成数字声卡
 
    对于整个HDMI方案的音频部分的音源的选择,是决定整个方案的关键,在R600中,AMD没有使用主板的集成声卡或者独立声卡作为音源,而是在芯片内部集成了一个声卡芯片。这种不把鸡蛋放到别人篮子里的做法肯定是最为稳妥的。
 
{imageTitle}
 
 
    在HD 2900XT显卡上,并没有直接做上HDMI接口,而是提供了一个DVI转HDMI接口的转接头。这是因为在HD 2900XT显卡上,DVI接口的数据中就已经包括了音频的数据。
 
{imageTitle}
 
 
    这里可能有朋友会问了,DVI接口中那么多针脚都已经被占用了,如何再传输音频信号呢?还是HD2900XT使用了空闲的针脚传输音频信号呢?其实如果您对HDMI接口有一定的了解就不会问这样的问题了。
 
    这是因为HDMI接口和DVI接口都是数字信号接口,和D-Sub等接口是不一样的,里面的针脚定义并不是限定的每个针脚传输什么样的信号,而是定义的哪些针脚传时钟信号,哪些针脚传输数据信号,哪些针脚传输校验信号等等。
 
{imageTitle}
 
 
    在HDMI的接口中,数据都是以数字形式传输的,无论是视频音频,都经过了编码进行串行的高频传输,所以完全有可能在不增加针脚的情况下传输音频数字信号。
 
{imageTitle}
 
 R600支持的音频格式
 
    这种方案是目前我见到的最为方便的方案了,不仅可以使用到HDMI接口的无损数字音频,而且还可以只用一条线就传输所有的信号,非常方便。

{imageTitle}

 
第五节:家庭影院实战R600音频播放
 
    这次为了测试,我们准备了两套设备,一套是天龙3806AV功放加上50寸PDP:
 
{imageTitle}
 
 天龙 3806 AV功放
 
{imageTitle}
 
    另外一套是来自明基的全高清液晶电视,SH4231:

 
第一步:首先我们需要保证HDMI转接头接在靠近PCI-E接口的那个DVI接口上,这样才能放出声音。
 
第二步:安装好驱动,我们就会发现在系统中多了一个音频设备出来。我们需要选择这个设备作为默认放音设备。
 
第三步:播放MP3格式:
这个步骤就是对PCM音频的测试
 
{imageTitle}
 
 测试结果:成功播放
 
第四步:播放高清视频
 
    这里我们首先使用了明基的高清液晶电视做播放设备,直接播放Dolby Digtial 5.1格式和DTS 5.1格式的高清影片都是可以正常出声的。但是后来笔者发现,这样其实并没有测试到HD 2900XT对这两种音频格式的支持,因为PowerDVD会把这两种格式进行软件解码。所以我们必须将PowerDVD的音频回放设置切换成为SPDIF数字信号的输出,这个时候我们发现是播放不出声音的。
 
{imageTitle}
 
 PowerDVD里面的选项
 
    于是我们切换到了天龙AV功放的平台上,这次,当我们选择了数字输出之后,天龙功放就能识别出了数字音频格式,并且经过解码传输到6声道的音箱上了。这证明HD 2900XT的HDMI接口是的确支持Dolby Digital 5.1和DTS 5.1格式的数字音频的。
 
{imageTitle}
 
 高清视频播放成功
 
第五步:拓展性尝试
 
    测试进行到上一步,其实已经验证了完整的HD 2900XT的音频功能,但是我们并不甘心,于是我们找来具有双音轨的LPCM格式的蓝光光碟的镜像文件,结果发现,如果我们使用PowerDVD播放的时候,PowerDVD并不会选择LPCM 5.1音轨进行播放,而且就算是最新的PowerDVD也没有办法选择LPCM音轨。
 
    于是我们由尝试了具有功能较多播放器之称的暴风影音来播放,不过不幸的是根本播放不了这种格式的文件,这个情况非常令我们奇怪,因为在这次测试之前,我们还曾经成功播放过,可能是系统装了太多遍不同的解码器的缘故吧。由于时间的关系,我们已经没有更多时间去等待这套平台重新装系统了。我们将会在以后的文章中为大家介绍我们后续的测试结果。

{imageTitle}

 
第六节  HD 2900XT怎么用?
 
    在R600发布之前的媒体培训会上,就有人问过这样的问题:“R600提供的HDMI接口中提供了5.1声道的支持,但是如果接到电视上,电视机都只有两个声道,那么如何体验到R600的5.1声道的环绕音效呢?”
 
    这个问题我当时真想替David回答,答案就是,R600的这种设计并不是个缺陷,而是一个更方便的设计。
 
{imageTitle}
 普通用户的接法
 
    对于普通的用户,直接使用HDMI接口能够给您带来最为方便的连接方式,一条HDMI连接到电视就可以开始欣赏高清电影了。
 
{imageTitle}
 高端用户应先接到AV功放上
 
    而对于高端用户,您一定要把显卡的输出连接到您的AV功放上,然后用AV功放做解码和HDMI的转发,再连接到电视上,这样,你就可以享受到具备5.1声道的高清电影了,而且音频部分则是无损的高保真音效。这才是HD 2900XT正确的使用方法。
 
    我们在测试的过程中发现使用了HD 2900XT之后有个有趣的功能,这就是我们可以通过Vista系统的音频设置,实现非常自由的播放模式:
 
第一种:如何不用AV功放实现环绕音效?
 
    我们可以选择不使用R600的内置声卡,而转而使用我们自己机器的独立声卡或板载声卡来播放影片,这样就能实现了具有5.1声道环绕音效的高清影院的效果了。当然,您必须有一套5.1的音箱。
 
{imageTitle}
 使用独立声卡同样能实现环绕立体声
 
第二种:如何实现一个电脑两人用?
 
    现在的CPU都这么强了,再加上显卡都支持视频加速,仅仅用电脑来放电影岂不是很亏,如果你在看电影的时候,你的女朋友要玩跑跑卡丁车怎么办? 那就让她去玩吧!
 
    你需要做的是,先把默认的音频设备设置为R600的内置声卡,然后在电视上开始放高清视频。然后你再把系统的默认音频设备设置为板载声卡或者独立声卡,然后再在第二个显示器上打开游戏。
 
   这个时候就会有神奇的现象发生了,原来在播放高清视频的电视仍然正常播放,电视机里只会有电影的声音出来。
 
    而电脑一段,也可以正常的玩游戏,音箱里只有游戏的声音,丝毫没有别的声音。
 
    如果你家比较大,你可以把电视放在客厅,把电脑放在书房,关上门,两个人使用电脑可以毫不影响。

{imageTitle}

 
第十一章 Radeon HD 2900XT显卡实物赏析和设计解析
 
   在前文中对我们对R600的架构和技术做了大篇幅的解析,现在我们就来看看R600零售版显卡实物——Radeon HD 2900XT:
 
第十一章\\第一节 Radeon HD 2900XT外观
 
    在ATI正式发布之前,网络上流传着大量R600工程样板以及OEM版显卡的图片,其夸张的体型吓倒了很多朋友。
 
火星来客!首批R600万元天价销售一空
 
 R600 OEM版挺吓人的
 
    而当零售版本HD 2900XT正式曝光之后,大家才发现其体积只比“标准”的X1950XTX大一点点,PCB长度小于8800GTX。而且还保持了ATI一贯的外观设计风格,整体来看HD 2900XT的造型非常漂亮:
 
{imageTitle}
 
{imageTitle}
 
     R600 512Bit的显存位宽要求使用多达16颗显存,所以HD 2900XT的PCB背面也分布了8颗显存,ATI使用了一块特殊结构的金属背板,用来辅助背面显存散热,同时起到固定显卡散热器以及防止显卡PCB变形的作用。
 
{imageTitle}
 
    通过对比可以看到,HD 2900XT的体积介于8800GTS和8800GTX之间,三块显卡的散热器结构基本相同,都是涡轮风扇+热管+散热片,将显卡发出的热量吹到机箱之外。
 
{imageTitle}   {imageTitle}
 
 8800GTX体重0.74千克,8800GTS体重0.665千克
 
{imageTitle}   {imageTitle}
 
 HD 2900XT体重0.945千克,X1950XTX体重0.85千克
 
    但是,由于ATI使用了密度很高的纯铜热管散热片,这使得显卡的总体重远高于N卡,因为8800GTX/GTS的散热器都是铝制热管和散热片,只有在GPU接触部分采用了嵌铜设计。
 
    接下来就拆开HD 2900XT的背板和散热器,来看看它的内部结构。

{imageTitle}

第十一章\\第二节 揭开R600的庐山真面目,HD 2900XT全面拆解
 
    HD 2900XT的散热器结构比较复杂,包括背板、风罩、骨架、散热片和风扇几个部分,有数十个螺丝,拆起来比较麻烦:
 
{imageTitle}
 
    千万不要小看了HD 2900XT的这个散热器,为了解决庞大的R600核心的散热问题,ATI使用了双热管+大面积纯铜散热片,配以涡轮风扇,其成本价就高达60美元(460元人民币):
 
{imageTitle}   {imageTitle}
  
  纯铜回流焊工艺的散热片,两条热管从核心部位延伸出来
 
{imageTitle}   {imageTitle}
  
  涡轮风扇,12V 1A最大12W,4Pin供电接口,通过显卡温度职能控制转速
 
{imageTitle}
 
    铜质散热片与核心直接接触,两条热管负责将热量均匀、快速的传递在散热片上,散热器骨架与正面8颗显存及供电模块的MOS管接触,然后涡轮风扇将所有的热量吹到机箱之外,不但不会对系统散热带来压力,反而有利于机箱空气对流。
 
{imageTitle}
 
{imageTitle}
 
    优异显卡的做工用料的确是一丝不苟,密密麻麻的贴片元件令人眼花缭乱。下面就来看看HD  2900XT的硬件规格。

{imageTitle}

第十一章\\第三节 HD 2900XT显卡硬件规格
 
80nm的优势,R600核心面积小于G80
 
    R600核心布局比较特殊,与基板呈菱形放置,四周安装了保护盖,这样就能在不影响散热的情况下,防止安装散热器时核心边角被压碎的情形发生。
 
{imageTitle}
 
    R600核心集成了比较独特的7.2亿晶体管,采用台积电80nm工艺制造,所以其核心面积比6.81亿晶体管90nm的G80要小一些。
 
{imageTitle}   {imageTitle}
 
 G80有密封铁盖保护,国外网站的测量结果比较精确
 
    R600 Die Size=20.23mm×21.17mm=428mm2
    G80 Die Size=22.42mm×21.69mm=486mm2
 
16颗显存,512MB 512Bit黄金配置
 
    再来看看显存部分,G80 384Bit需要12颗显存,NVIDIA将所有的显存都安置在了PCB正面;而R600 512Bit需要多达16颗显存,只能采用PCB正反面各8颗的方案:
 
{imageTitle}   {imageTitle}
 
    由于正反面都是显存,因此GDDR3显存的终结电阻和滤波电容显得更加密集:
 
{imageTitle}
 
 Hynix 8M×32Bit 1.0ns GDDR3显存颗粒
 
    按照之前的消息来看,HD 2900XT显然不是最高端的版本,它仅使用了8M×32Bit的颗粒,16颗组成512MB 512Bit的配置。如果改用16M×32Bit的颗粒,那么就可以轻松组成1GB 512Bit的规格。除此之外ATI还可以选择使用更快的GDDR4显存,事实上之前曝光的R600 OEM版就是1GB 512bit GDDR4的配置。
 
    事实上在大多数应用环境下,512MB显存容量并不会造成性能瓶颈,升级到1GB也不会有质的提升,所以ATI为HD 2900XT配备了512MB显存,这样就能够大幅降低显卡的整体成本。
 
    8M×32Bit的显存颗粒要比16M×32Bit成本低很多。简单打个比方,8800GTS拥有10颗显存,8800GTS 640MB和8800GTS 320MB的售价相差近1000元。而HD 2900XT拥有16颗显存,如果将其升级到1GB版本的话就要付出不止1000元的代价,性价比非常低!
 
Radeon HD 2900XT硬件规格:
 
{imageTitle}

{imageTitle}

 
第十一章\\第四节 HD 2900XT显卡特殊功能介绍
 
核心集成完整声卡,DVI也能输出音频!
 
    以往的显卡想要支持HDMI,就必须集成额外的第三方芯片,将音频信号从主板声卡导入进行混音处理,然后从HDMI接口输出,这样做不但兼容性容易出问题,而且成本较高。为此ATI创新性的将声卡集成在了GPU内部,显卡可以直接输出音频信号。
 
{imageTitle}
 
 双Dual-Link DVI输出,支持两个30寸液晶显示器
 
    在HD 2900XT显卡上,并没有直接做上HDMI接口,而是提供了一个DVI转HDMI接口的转接头。这是因为在HD 2900XT显卡上,DVI接口的数据中就已经包括了音频的数据:
 
{imageTitle}
 
    这里可能有朋友会问了,DVI接口中那么多针脚都已经被占用了,如何再传输音频信号呢?还是HD2900XT使用了空闲的针脚传输音频信号呢?其实如果您对HDMI接口有一定的了解就不会问这样的问题了。
 
    这是因为HDMI接口和DVI接口都是数字信号接口,和D-Sub等接口是不一样的,里面的针脚定义并不是限定的每个针脚传输什么样的信号,而是定义的哪些针脚传时钟信号,哪些针脚传输数据信号,哪些针脚传输校验信号等等。
 
视频芯片升级,多媒体功能大大加强
 
    以往ATI的高端显卡都板载了ATI Rage Theater这颗古老的视频芯片,用来提供VIVO(视频输入输出)功能。而在HD 2900XT显卡上面采用了较新的Theater 200芯片,这个多功能的芯片不但能够轻松胜任视频输入和捕捉功能,并转换为数字信号,而且能够捕获Sound IF或合成音频,执行音频解调和立体声解码,并通过I2S、S/PDIF或VIP端口输出解码后的音频。
 
{imageTitle}
 
 多功能的Theater 200视频/音频芯片
 
{imageTitle}
 
 驱动安装后自动识别
 
    Theater 200之前多用于AIW系列显卡中,HD 2900XT虽然没有集成电视卡功能,但它却集成了完整的声卡,因此Theater 200在处理音频和视频的部分功能也能得到有效利用。就同以前的Theater芯片一样,R600的驱动当中也附带了WDM部分,安装使用都非常方便,
 
双桥交叉火力,双卡组建更容易,效能更强!
 
    以往ATI高端显卡想要组建交叉火力的话,必须搭配一块主卡,这块特殊的显卡集成了复杂的第三方DMS处理芯片,用以将双显卡的DVI数据合成处理,从而达到与NVIDIA SLI相近的效果。
 
    但是,高端主副卡设计令成本增加不少,而中端X1600/X1300软交火的效能并不高,所以从RV560/570核心开始,ATI通过核心集成处理引擎的方式很好的解决了这些问题。如今高端的R600核心也集成了交火模块,实现方式上与SLI相似,显卡都集成了特殊的桥接金手指:
 
{imageTitle}
 
    由于交火需要传递更多的数据,因此这两个金手指的针脚数不但比SLI多,而且必须插两个(上行和下行)才能正常启动交火。据ATI称,高速的桥接通道能够让交火的效能得到大幅提升!
 
    在后文中我们将对HD 2900XT的交火性能进行专项测试,并于NVIDIA G80 SLI效能对比,发烧玩家千万不要错过了。
 
全新8Pin+6Pin PCI-E供电接口,保证极限超频的供电
 
    随着芯片制造工艺的改进,GPU晶体管数成倍增加,其复杂程度已经远远超越了CPU,随之而来的重大问题就是节节攀升的功耗!如今PCI-E插槽所提供的75W电量仅能满足中低端显卡的需求,高端显卡必须使用外接6Pin PCI-E供电接口才能满足需求,而NVIDIA的8800GTX需要两个6Pin PCI-E供电:
   
R600需要8Pin+6Pin供电 功耗超过200W
 
 8800GTX与R600功耗设计示意图
 
{imageTitle}   {imageTitle}
 
 注意观察8800GTX/Ultra的供电线路
 
    如此一来,8800GTX所能提供的最大功率就是225W。实际上仔细观察8800GTX的供电部分就可以发现它预留了8Pin供电接口,只不过没有启用。而在HD 2900XT上面,ATI使用了8Pin+6Pin的供电方案,最大功率可达300W:
 
{imageTitle}
 
 HD 2900XT的供电接头,新式的8Pin PCI-E和常用的6Pin
 
    这里的8Pin PCI-E供电接口定义与服务器CPU用的8Pin并不相同,只有新电源才会配备这种接口。但是大家也不用担心,这个8Pin接口是向下兼容的,普通6Pin接口可以空2针插入,也就是两条6Pin PCI-E供电足以带动R600。
 
{imageTitle}
 
 不同担心,6+6pin也能用,性能不会受到任何影响
 
    ATI之所以集成全新的8Pin接口,就是考虑到发烧玩家极限超频的需要,普通用户使用500W普通电源就足够使用了。另外值得一提的是,催化剂控制面板会自动侦测供电的连接方式,只有8+6pin的连接方式才会打开Overdrive功能,6+6pin会自动屏蔽Overdrive功能,不过我们可以使用AMD提供的专用超频工具来超频显卡。

{imageTitle}

 
第十一章\\第五节 HD 2900XT显卡供电模块解析
 
    不管R600还是G80,在获得超强性能的同时,都是以庞大规模的晶体管作为代价,G80拥有6.81亿晶体管已经让人惊讶不已,而R600更是集成了空前规模的7.2亿晶体管!再加上HD 2900XT核心频率达到740MHz,并且为512Bit显存通道配备多达16颗显存,可想而知其电流将会达到新的境界。于是,如何设计显卡的PCB及供电模块成为显卡设计师一项非常艰巨的任务!
 
第十一章\\第五节\\第一小节 8800GTX的PCB为何这么长
 
    先来看看三块显卡的PCB对比,从上至下依次为8800GTX/Ultra、HD 2900XT和X1950XTX:
 
{imageTitle}
 
    很多人都抱怨8800GTX体积太大机箱容纳不下,现在通过对比就可以发现,8800GTX之所以如此长,这其中光是供电模块就占据了整个PCB 1/3以上的表面积。80nm的R600核心工作电压只有1.2V,峰值电流比G80还要大,但其PCB长度却控制的相当好,ATI是如何做到的呢?
 
{imageTitle}
 
 8800GTX/Ultra庞大的供电模块
 
    从设计思路来看:NVIDIA为了控制PCB制造成本,使用了传统的低频PWM供电设计,需要大量MOS、电感和电解电容等辅助元件,虽然这些普通元件的成本不高但因为集成度低,不可避免的要占据更大的PCB面积,所以显卡体积很难控制。而ATI则为了让用户不要更换机箱所以不惜成本,使用了目前最优异的MULTIPHASE供电方案,一排整齐划一的QFP
封装MULTIPHASE芯片\\多路并联电感、陶瓷积层电容和整合式MOS,集成度非常高,以高成本换取了较短的PCB以及极高的转换效率。下面就来仔细研究HD 2900XT的供电设计。
 
第十一章\\第五节\\第二小节 ATI采用VOLTERRA优异供电解决方案
 
    从X1000系列开始,ATI就采用了VOLTERRA提供的数字式供电解决方案,随着产品的更新换代,供电设计也不断做出改进,力求为核心提供充足稳定的电流,并为超频玩家预留很大的提升空间。
 
{imageTitle}  {imageTitle}  {imageTitle}
 
 X1800XT、X1900XTX和X1950XTX的供电模块
 
    到了HD 2900XT这一代,由于核心晶体管膨胀、显存翻倍,简单的供电改进已经无法满足需求。ATI不但采用了史上集成度最高的14层PCB,而且首次采用VOLTERRA新一代优异供电解决方案:
 
{imageTitle}
 
 HD 2900XT主供电模块
 
    HD 2900XT的供电部分所占用的PCB面积非常小,而且排列非常整齐。右上角的VT1165MF搭配6颗VT1195SF(此芯片已包含MOS在内)以及两颗并联电感组成6相电源给R600核心供电。而左边的另一颗VT1165MF主控芯片仅控制1颗VT1195SF和电感单独给显存供电。
 
{imageTitle}
 
    接下来就详细分析每颗芯片的作用以及数字供电模块的优势。

{imageTitle}

 
第十一章\\第五节\\第三小节 最大电流输出、最高转换效率:
 
{imageTitle}
 
 7颗VT1195SF MULTIPHASE芯片
 
    HD 2900XT上所用VT1195SF芯片单颗就可以提供40A的电流输出,这是目前为止显卡单项电源输出的最高纪录!6颗VT1195SF为R600核心输出高达240A电流(750MHz的R600电流一般只有大概120A左右,远低于此上限),即便是液氮极限超频,这个电流输出也是非常富裕的。上代X1950XTX用了4颗VT1115SF芯片,给R580核心提供4×30=120A电流。在HD 2900XT上面,核心供电电流正好翻了一倍!
 
    VT1195SF目前不仅创造了可输出电流值最高的纪录,而且内建了MOS和驱动电路,极大地减少了PCB面积占用。和以前的VT1105系列比较其封装由CSP53封装改变为QFN21封装,不仅保持了其散热和电气性能优良的特性而且极大的降低了检测和维修的难度(CSP封装和BGA一样Pin脚都掩藏在芯片下,不象QFN封装芯片的Pin脚是伸出来的,因此便于焊接和检测)。而传统MOS类元件相比在大电流下容易老化、精度下降甚至不稳定,VT1195SF不存在这个问题。

    除了超大电流之外,VT1195SF最明显的优势就在于这套芯片的损耗非常小,其开关频率达到了1.5MHz,内部阻抗仅为1mΩ,所以整体转换效率可高达89.3%!这里可以做一个简单对比,传统供电转换效率最高为70%,而且随着电流的增大和温度的升高下降很严重,X1900XTX的VT1105转换效率为80%,X1950XTX的VT1115转换效率为85%。在此基础上再提升5%谈何容易!

    R600核心3D模式下的工作电压是1.15V,假如通过电流为240A(实际上这个峰值电流可供2颗R600 CF了),那么实际需要的功率就是276W,90%的转换效率代表需要306W的电源功率,可如果是70%的普通PWM转换效率那么实际功率将攀升至394W,光是供电模块白白浪费的功率就高达90W,可见选择一个转换效率很高的电源模块对显卡的作用有多大。ATI不惜成本采用非常先进的供电模块,除了压缩PCB面积之外,另一大目的就是尽可能的降低无谓的功率消耗。

{imageTitle}
 
 Pulse专为VT1195SF设计的配套电感,单颗可通过40A电流
 
    这是3个(相当于7个)带磁闭的贴片式电杆,左边的单颗能通过40A电流,中间一个为双胞胎、右边是四胞胎,可以看作是2/4颗并联电感,这样封装在一起的好处就是干扰更低,可以杜绝大电流通过时出现高频电流声的情况。
 
第十一章\\第五节\\第四小节 最大电流输出、最高转换效率:
 
    除了前面的主供电模块外(核心6+显存1),HD 2900XT还有1相额外的供电,专门给MVDDQ(显存IO)接口供电。
 
{imageTitle}

    目前市面上大部分的显卡为了节省成本都省略了这部分供电,因为它可以共用显存的电源。按理说R600主供电模块的单独一颗VT1195SF的40A电流应付16颗显存供电已绰绰有余,但ATI为了让组成512Bit显存带宽的16颗显存具备更好的稳定性和超频性又额外使用了一颗CSP 75Pin封装的VT233芯片,此芯片将电源和MOSDET都整合进一颗芯片中,可提供的峰值电流为18A,连同前面的那颗VT1195SF我们可以算出R600的供电模块一共可以为显存提供58A的峰值电流,实际上一般每颗GDDR3显存才需要1A的电流(合计是16A),配合14层PCB和现代1.0ns的显存颗粒,HD 2900XT可以说是最具超频潜质的显卡!
 
第十一章\\第五节\\第五小节 多层陶瓷电容(MLCC),优异做工与用料

    通过前面的分析我们知道供电模块的VT1195SF拥有很高的转换效率,这种高效率主要依靠的是高达1.5MHz的开关频率,在如此高的频率下普通的铝电解电容无法满足要求,而更高级的钽电解(包括聚合物)电容,在开关频率高于1MHz的情况下,电气性能会大为下降(普通显卡所使用的PWM开关频率为300KHz左右)。

{imageTitle}    {imageTitle}
 
 PCB上C打头、整齐排列的棕色颗粒都是陶瓷电容

    所以在HD 2900XT显卡上使用了一排排昂贵的MLCC(多层陶瓷电容)。MLCC被广泛的用在军用雷达、电子干扰发射机等高精密电子设备之上,近年来被高频率的CPU所采用(Intel CPU背面就有很多MLCC),因为MLCC能够在很高的频率下工作,而且拥有极强的抗干扰能力。MLCC的上限工作频率可以高达100GHz以上,而铝/钽电容工作频率还没有高于1MHz的!

    MLCC的另一个优势就是ESR值(等效串联电阻)特别小,大家认为优品的SANYO OSCON电容拥有最小的ESR值(一般此时电容值高达1500uF以上) 都在10毫欧姆左右,而MLCC(22UF)很轻易达到1毫欧姆以内,可以说不是一个级别,正是MLCC的这些优品特性奠定了它电容之王的地位!

    ESR值是一个非常重要的电容参数,比如即使1毫欧姆乘以100A的电流=0.1V,而显卡的核心工作电压只有1.15V左右,显存在1.8V左右,细微的电压波动可以直接造成死机或花屏!即使HD 2900XT用了那么高档的MLCC仍然要多颗并联才能让ESR进一步降低。HD 2900XT使用的是村田制作所优品22UF 0805 X7RMLCC电容,成本自然非普通铝/钽固体电容可比!

第十一章\\第五节\\第六小节 辅助供电模块同样豪华无比

{imageTitle}   {imageTitle}
 
 HD 2900XT也用了不少钽电容(黄豆状)

    在HD 2900XT PCB背面和输出部分,也使用了不少钽电解电容,这些电容与核心、显存两个耗电大户无关,主要给一些小PWM滤波,这些PWM负责风扇和辅助芯片的供电。X800系列和7800/7900的主供电模块依靠钽电容滤波,而HD 2900XT竟然用钽电容给风扇和小芯片供电,ATI高端显卡奢华的做工和不惜工本的用料可见一斑!

{imageTitle}   {imageTitle}
 
    很多用户奇怪:供电模块的正反两面,除了核心数字供电之外,还有三颗16V SANYO OSCON SVP聚合物电容,这种在别家高档卡上作为卖点炫耀的家伙在2900XT上仅仅沦落到最低档次的电容给8Pin和6Pin外接电源的的12V电流滤波所用(超大容量的MLCC电压很难做那么高,所以没法在此处使用),这里笔者实在不想再费口舌描述2900XT的用料了。

第十一章\\第五节\\供电小结:

    从HD 2900XT显卡身上,我们再一次感受到了ATI追求完美的显卡设计理念:最豪华的14层PCB、最优异的数字供电、电气性能较好的MLCC陶瓷电容、最大的电流输出和最高的转换效率。无论X1800XT、X1900XTX、X1950XTX还是HD 2900XT,ATI每一代产品都是当时来说登峰造极的显卡!

    当然为此ATI也付出了很大的代价,单单是一个全铜热管散热器,成本就要高达60美元,14层PCB以及数字供电的成本也远非竞争对手产品可比(8800GTS仅为10层)。令人难以置信的是,如此成本高昂的优异显卡上市价格仅为399美元(国内定价3299元,还附送DX10游戏大作),要低于8800GTS 640MB,据了解个别厂商的团购价格甚至仅和8800GTS 320MB相当,要知道其成本是要高于8800GTX的!

    如此巨大的价格反差让我们看到了ATI的厚道,以及竞争对手产品的暴利。对于高端用户来说,HD 2900XT不但做工用料完美、性能强大,而且价格十分合理,从各个方面来考虑的确是物超所值!而对于那些想打破超频世界纪录的玩家来说,14层PCB,最大可提供240A核心电流及40A显存电流的供电模块是他们攻破超频世界纪录的不二利器!

{imageTitle}

 
第十一章\\第六节 HD 2900XT发布即上市!五款显卡争艳
 
    HD 2900XT的确是让人期待太久了,不过这也给各大AIB以及通路厂商提供了充足的时间来准备产品。今天,在AMD正式发布Radeon HD 2900XT显卡之时,各大厂商的显卡纷纷摆上了货架,有些厂商甚至组织了团购活动!这就说明HD 2900XT绝非是一款有价无货的产品,此次AMD不但做到了全球范围发布即上市,而且货源十分充足!
 
    在国内,总共有五家厂商第一时间推出了Radeon HD 2900XT显卡,他们是:盈通、蓝宝石、迪兰恒进、七彩虹、双敏。下面就来挨个看看:
 
盈通HD 2900XT:
 
{imageTitle}   {imageTitle}
 
{imageTitle}
 
 交火测试,使用了盈通提供的显卡
 
    通路大厂之一的盈通动作非常迅速,是除了AMD之外唯一一家给我们送测样卡的厂商。而且盈通第一时间在网上开展了低价团购活动,网友反响十分强烈!
 
蓝宝石HD 2900XT:
 
{imageTitle}
 
{imageTitle}    {imageTitle}
 
    蓝宝石一如既往地赠送大量附件和软件,产品全面通过了无铅认证及Vista认证,给未来的DX10游戏提供高效能的体验!
 
    更多资料请看——极致视觉体验 蓝宝发布HD 2900XT显卡
 
迪兰恒进HD 2900XT
 
{imageTitle}
 
{imageTitle}
 
    其实各家的HD 2900XT显卡都是由ATI原厂设计制造,规格频率做工用料以及散热器都完全相同,不同的只有Logo而已。迪兰恒进保留了风扇上的ATI Logo,自家的Logo贴在了风扇正上方,不影响整体美观还加强了视觉效果,显然是最漂亮的。
 
七彩虹HD 2900XT:
 
{imageTitle}
 
    通路大厂七彩虹也于第一时间推出了自家的HD 2900XT显卡。根据以往的情况来看七彩虹会在稍后推出液冷超频版本,那么R600会不会有呢?请大家拭目以待。
 
双敏HD 2900XT:
 
DX10不再是独角戏!双敏抢先发布R600
 
DX10不再是独角戏!双敏抢先发布R600    DX10不再是独角戏!双敏抢先发布R600
 
    通路大厂之一的双敏也同步发售了HD 2900XT显卡,其产品型号为火旋风PCX2958XT黄金限量版。做工用料都是ATI原厂水准,价格更具优势。
 
 
第十二章 性能测试
 
第十二章\\第一节 测试系统配置和设置:

    为了最大限度的发挥出优异显卡的实力,我们使用了频率最高性能最强的Core 2 Duo X6800 CPU,搭配双通道2GB内存,确保CPU和内存子系统构成瓶颈,另外975X主板还能够支持交叉火力,在测完单卡之后我们还将进行双卡性能测试。

PCPOP.COM泡泡网显卡评测室

硬件系统配置

处理器

Core 2 Extreme X6800 (双核, 2.92GHz, L2=4MB)

主板

ASUS P5W64 WS Professional

   卡

8800GTS 640MB(500/1200/1600MHz)
8800GTS 320MB(500/1200/1600MHz)
HD 2900XT 512MB(740/1650MHz)
X1950XTX 512MB(650/2000MHz)

 

海盗船2x 1GB DDR2-800 (CL 5-5-5-15-1T)

   

Seagate 7200.9 160GB

Samsung SP2504C

显示器

Dell 3007

BenQ SH4231

软件系统配置

  操作系统

                   Windows XP Professional SP2
                   Windows Vista Unimate双系统

    DirectX

                           9.0c(XP)/10.0(Vista)

  显示驱动

Forceware 158.19 (XP)
Forceware 158.18 (Vista)

ATI 催化剂7.4WHQL (X1950XTX)
ATI 催化剂8.37Beta (HD 2900XT)

    华硕的这块P5W64 WS Professional主板是给工作站设计的,采用了975X芯片组,但集成了两颗南桥,从而支持多达4条PCI-E X16插槽,可以轻松的组建双X16交火,接口带宽不再成为瓶颈,可以充分发挥出HD 2900XT交火全部性能。

{imageTitle}
 
 拥有4条PCI-E的975x主板,支持双X16全速交火
 
{imageTitle}
 
 测试平台

对比评测,目标瞄准8800GTS 640MB

    HD 2900XT的官方定价为399美元,国内售价不会仅为3299元,这一价格甚至比8800GTS还要低,因此我们选择了同一价位的8800GTS 640MB和HD 2900XT进行对比。至于8800GTX和8800Ultra,其价格甚至可以买到两片HD 2900XT了。

{imageTitle}   {imageTitle}
 
 8800GTS 640MB和X1950XTX作为对比
 
    X1950XTX虽然货源稀少,但作为ATI的上代优异产品,还是有必要拿出来做个对比,来看看新一代产品比起上代性能提升可以达到多少。
 
测试模式:

    对于高端玩家来说一款24寸宽屏液晶显示器是必备之物,因此我们的游戏测试分辨率从1920×1200起跳。对于HD 2900XT和8800这种级别的显卡来说,只有在超高分辨率下才能够发挥出全部实力,因此我们还加入了2560×1600这种民用显卡所能达到的最高分辨率!事实上很多发烧玩家早就在使用30寸液晶显示器玩游戏了:

 
{imageTitle}
 使用Dell 3007进行超高分辨率测试

    当然,3DMark理论性能测试还是保留了默认设置(1024×768)下的成绩。

{imageTitle}

第十二章\\第二节 3DMark06理论测试

    Radeon HD 2900XT是ATI全新架构的显卡,支持DX9C&DX10而且采用了统一渲染架构。因此在正式进行测试之前,我们首先进行了基于DX9C的纯理论测试,来检验R600核心的运算能力。测试项目包括3DMark06和ShaderMark 2.1两个程序。首先来看看3DMark06
{imageTitle}
 
{imageTitle}
 
 HD 2900XT CrossFire的3DMark06子项成绩
 
{imageTitle}
 
{imageTitle}

    像素填充率\\单纹理测试中,3DMark06使用2×2尺寸的纹理以64Quad的组合方式铺满整个屏幕。HD 2900XT的成绩大幅超越了8800GTS,实际上已经能够领先于NVIDIA刚刚发布的8800Ultra!

    像素填充率\\多重纹理测试中,3DMark06使用2×2尺寸的纹理以8Quad的组合方式铺满整个屏幕,同时每个Quad都会被叠加8层纹理进行复合。使用2×2小尺寸纹理的目的是为了避免显存带宽对GPU填充率的影响,因此测试结果更加逼近GPU的理论值。HD 2900XT的成绩要稍弱于8800GTS。

{imageTitle}

    像素着色器测试,3DMark06使用了第三个游戏场景的峡谷岩石表面的SM3.0/HDR技术,直接由像素着色器生成,此时照射光源会不断变换以检验GPU Pixel Shader的处理能力。HD 2900XT的性能稍稍领先于8800GTS,但差距并没有拉开。

{imageTitle}

    顶点着色器\\简单测试,3DMark06使用了4条第三个游戏场景中的巨龙模型,每条龙都由100万个顶点组成。在龙的旋转过程中,GPU对其进行简单的顶点和单个光照计算。HD 2900XT的顶点着色器性能比8800Ultra还要强。

{imageTitle}

    顶点着色器\\复杂测试,3DMark06提供了一个随风而动的草坪场景,这个场景中除了草丛波纹交给CPU计算之外,无数个顶点转换个光照变换由顶点着色器来完成,由于场景较为复杂纹理填充率也会对最终结果造成影响。HD 2900XT的顶点着色器性能领先8800GTS/GTX/Ultra达70%以上,显示出了第二代统一渲染架构的优势。

{imageTitle}

    Shader粒子测试,3DMark06一共引入了409600个粒子,GPU需要对每个粒子进行欧拉综合轨迹计算和简单重力、空气阻力的计算;与此同时,GPU还要负责在垂直方向上(高度)对所有粒子进行碰撞检测。R580不支持VTF因此无法进行此项测试。两款采用了统一渲染架构的HD 2900XT和8800GTS表现都不错,HD 2900XT更胜一筹。

{imageTitle}

    Perlin Noise测试,是由8个一组的简单3D计算构成。在整个测试中一共包含了48个纹理查找操作指令和447条运算指令。由于Pixel Shader 3.0最多只能在一个Shader中包含512条指令,因此Perlin NoiseShader所包含的共495条指令已经接近极限。在48个纹理查找指令中,每次查找的纹理都为32bit 256×256(64kb)大小,以避免大型纹理查找受到显存带宽的限制而影响最终的测试结果。HD2900XT的表现非常出色,大幅领先于8800GTS,再次超越了8800Ultra。

{imageTitle}

第十二章\\第三节 ShaderMark V2.1理论测试

{imageTitle}
 
    Shadermark是一款著名的Pixel Shader测试软件,其中的各种着色器是用微软的高级着色语言(High-level Shading Language,HLSL)编写的。2.1版能够支持Pixel Shader,并且包含了几个HDR测试项目,场景虽然很简单,而且FPS可以达到数百帧,但能够反映出GPU之间的微弱差别。
 
    下面就来看看HD 2900XT和8800GTS 640MB的单项成绩对比:
 
{imageTitle}

    在总共25个子项目中,HD 2900XT赢得了其中16项,8800GTS 640MB赢得了9项。总的来看两款显卡的差距并不是很大,HD 2900XT并没有远远领先优势,在面对8800GTX是就里不存心了。

{imageTitle}

第十二章\\第四节 3DMark03——DX7/8/9综合测试

双核心最强显卡!NV新旗舰7950GX2测试
 
    3DMark03是款很老的测试软件了,但我们依然保留了这个测试项目,因为它能够代表一些使用老图形引擎的游戏性能,通过它的成绩可以反映出HD 2900XT全新架构对老游戏的适应性。
 
{imageTitle}
 
    3DMark03以往都是N卡的强项,因为老游戏往往对纹理操作有更多需求,可以看到8800GTS大幅领先于X1950XTX。而HD 2900XT的表现出人意料的强,其3DMark03默认得分直逼8800GTX。
 
{imageTitle}
 
{imageTitle}

    非常可惜的是,HD 2900XT在打开AA之后性能暴降,最终得分甚至不如X1950XTX。这个问题可能是出自驱动可编程CFAA方面,如此不正常的成绩应该属于BUG,据悉AMD将会在稍后发布新的驱动以解决这个问题。

{imageTitle}

第十二章\\第五节 3DMark05——DX9.0b基准测试
 
双核心最强显卡!NV新旗舰7950GX2测试
 
    3DMark05是款纯DX9测试,从以往的经验来看偏向于像素渲染,拥有众多像素单元的X1000系列优势比较大。而HD 2900XT采用了统一渲染架构,那么其表现如何呢?
 
{imageTitle}
 
    HD 2900XT继续保持了A卡在3DMark05中的传统优势,其得分甚至要超过8800Ultra!
 
{imageTitle}
 
{imageTitle}
 
    但是,3DMark05开AA后存在和03中相同的问题,得分下降很厉害,完全没有从512Bit显存中获得优势,所以HD 2900XT真正的实力还需要等待AMD更新驱动。

{imageTitle}

第十二章\\第六节 3DMark06——DX9.0b/c综合测试
 
双核心最强显卡!NV新旗舰7950GX2测试
 
    3DMark06作为目前最新的综合测试工具,包括了两个SM2.0测试和两个SM3.0测试场景,基本上达到了DX9C的画面最高境界,其测试结果对于很多主流游戏都有参考价值。
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
    在最新的06测试中,HD 2900XT大幅领先于8800GTS,默认总分非常接近于8800GTX,通过子项成绩来看。其SM3.0得分还是要高于SM2.0,也就是说HD 2900XT的SM3.0性能可以和8800GTX持平,而SM2.0则要稍差一些。
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
    提高分辨率之后,HD 2900XT依然是保持对8800GTS远远领先优势。接下来就看看如此大幅的优势能否在游戏中得以继续保持。

{imageTitle}

第十二章\\第七节 Prey(掠食者)
 
Prey(掠食者)——Doom3引擎的最新OpenGL游戏:

为王位而生 GeForce8800全面解析测试

    Prey这款游戏并不算老,但它依然采用了略显老迈的DOOM3引擎,因此我们用它来代替传统的Doom3和Quak4,做为唯一一款OpenGL游戏进行测试。
 
无敌最寂寞!NVIDIA最强8800Ultra评测
 
 游戏效果设置:内置所有特效全开最高(包括4xAA和AF)
 
{imageTitle}
 
{imageTitle}
 
    OpenGL是N卡的传统强项,不过A卡拥有强大的AA效能以及高分辨率下的运行效率,即便是X1950XTX都能够击败8800GTS,HD 2900XT自然不在话下。

● FarCry(孤岛惊魂)——首批经典DX9游戏,支持DX9C:

双核心最强显卡!NV新旗舰7950GX2测试

    FarCry是一款比较老的DX9游戏了,普通模式下对显卡的要求并不高,它以频繁更新的补丁而闻名。给FarCry打上一款款补丁之后,这款老游戏不但兼容性、游戏性得到了增强,而且它也成为了首批支持HDR技术的游戏之一,在高分辨率下打开HDR或者AA时,优异显卡也很难跑出高FPS。

无敌最寂寞!NVIDIA最强8800Ultra评测
 
 游戏效果设置:内置所有特效全开最高(包括HDR和8xAF,不开AA)
 
{imageTitle}
 
{imageTitle}
 
    两款显卡的Vista性能都不错,与XP几乎没有差别。HD 2900XT能够领先于8800GTS 640MB,但无法与8800GTX相提并论。但我们也要考虑到价格因素,HD 2900XT和8800GTS才是同一价位的东西。

{imageTitle}

 
第十二章\\第八节 Half-Life2:Episode One和FEAR
 
● Half-Life2:Episode One(半条命2:第一章)

为王位而生 GeForce8800全面解析测试

    最新的半条命2第一章依然使用了Source引擎,但Valve一直都对引擎做改进和优化,Source引擎使用了Int16格式的HDR,因此DX9显卡都可以完美开启HDR+AA特效,但精度范围不如FP16 HDR。

无敌最寂寞!NVIDIA最强8800Ultra评测
 
 游戏效果设置:内置所有特效全开最高(包括HDR、4AA和16AF)
 
{imageTitle}
 
{imageTitle}
 
    半条命2第一章中HD 2900XT的表现一般,仅与8800GTS 640MB打成平手。不过其Vista性能几乎与XP完全相同,而8800GTS在两种系统下的表现则有一定的波动。
 
● FEAR(恐惧):
 
双核对抗四芯!ATI新旗舰1950XTX测试
 
    FEAR是款金属风格非常浓厚的FPS游戏,在引擎方面最大的卖点就是真实的软边阴影、烟雾效果和爆炸效果,这些都对显卡提出了很高的要求。
 
无敌最寂寞!NVIDIA最强8800Ultra评测
 
 游戏效果设置:内置所有特效全开最高(包括SoftShadow、4AA和16AF)
 
{imageTitle}
 
{imageTitle}
 
    FEAR的成绩与HL2类似,HD 2900XT与8800GTS旗鼓相当。

{imageTitle}

第十二章\\第九节 帝国时代3:酋长和英雄连
 
● Age of Empire3:The Warchiefs(帝国时代3:酋长)
 
无敌最寂寞!NVIDIA最强8800Ultra评测
 
    微软的帝国时代资料片大受欢迎,虽然游戏引擎没有变化,但优化过的画面表现力感觉更上一层楼,无处不在的HDR效果将即时战略游戏的画质推向了新的高峰!
 
无敌最寂寞!NVIDIA最强8800Ultra评测
 
 游戏效果设置:内置所有特效全开最高(会自动打开HDR和4AA)
 
{imageTitle}
 
{imageTitle}
 
    1920分辨率下,HD 2900XT稍逊一筹,而2560分辨率下得以反超,30帧的成绩对于RTS游戏来说还是足够流畅的。
 
● Company of Heros(英雄连):
 
无敌最寂寞!NVIDIA最强8800Ultra评测
 
    英雄连是一款二战即时战略游戏,不但采用了最新的游戏引擎,拥有出众的游戏画面,其最大的特点就是游戏场景会随着战斗的进行不断发生变化,可以被各种手段破坏游戏场景——大量的射击爆炸和烟雾效果,因此对显卡的要求非常高!
 
    值得一提的是,英雄连在未来会发布一个新的补丁,来支持DX10特效,初步估计会是9月份,目前我们还只能测试它的DX9性能。
 
无敌最寂寞!NVIDIA最强8800Ultra评测
 
 游戏效果设置:内置所有特效全开最高(包括4xAA和物理效果)
 
{imageTitle}
 
{imageTitle}
 
    HD 2900XT虽然取得了领先,但优势不大,而且没有和自家的X1950XTX拉开差距,看来ATI在驱动方面支持还不到位,没有充分发挥出320个流处理器的优势。

{imageTitle}

第十二章\\第十节 优品飞车10和命令与征服3和使命召唤2
 
● Need for Speed Carbon(优品飞车10:卡本峡谷)
 
跑分不是唯一!新显卡VS新游戏谁最强
 
    优品飞车10和前作优品飞车9相比,加入了动态模糊特效,大幅改善了赛道以及周围物景的渲染细节,画面整体质量大为改观,当然游戏对显卡资源的消耗也比前作更为苛刻,总体来看对像素渲染提出了很高的要求。GF7在X1000面前几乎是一败涂地,那么GF8的表现如何呢?
 
无敌最寂寞!NVIDIA最强8800Ultra评测
 
 游戏效果设置:内置所有特效全开最高(包括4AA和各项异性过滤)
 
    优品飞车10游戏最高仅支持1600×1200分辨率,而且不支持宽屏,所以只能测试这一种模式。
 
{imageTitle}
 
    很遗憾,三款显卡性能差不多,HD 2900XT在已经很强的X1950XTX基础上没有取得突破性进展。R600的架构如此强大,但性能表现一般,看来问题还是出在驱动方面。

● Command & Conquer 3 Tiberium Wars(命令与征服3:泰伯利亚战争)

RTS王者归来《命令与征服3》DEMO全解

    号称RTS王者归来的经典游戏新作,人气非常之高,以至于正式版发布之前就已经入选WCG2007正式比赛项目,在繁体中文正式版发布之后引起了C&C3热潮。

    抛开游戏性不谈,C&C3将RTS游戏的画面提高到了新的境界,比起英雄连复古的风格、帝国时代绚丽的画面,C&C3更加重视细节方面和战斗场面,所以如果特效全开的话,优异显卡也不一定能保证流畅的速度。

无敌最寂寞!NVIDIA最强8800Ultra评测
 
 游戏效果设置:除了AA全开最高

    C&C3游戏本身存在30帧限制,但我们通过特殊的方法破解,这样才能够区分出不同显卡之间的微弱差异。C&C3默认就能侦测到显卡最高支持的AA等级。由于游戏本身就十分消耗资源,打开AA后可能连基本的30帧都很难保证,因此测试中并未开启AA。

{imageTitle}
 
{imageTitle}
 
    HD 2900XT和8800GTS性能差不多,在2560×1600分辨率下都能达到30帧的要求,流畅运行没有任何问题。
 
● Call of Duty2(使命召唤2):
 
为王位而生 GeForce8800全面解析测试

    使命召唤2使用了全新3D引擎设计不但让游戏画面更为细腻,而且在即时光影、爆炸、火光、烟雾等效果呈现上更为逼真,让玩家有亲临战场般的震撼,甚至游戏中还能玩家使用烟雾弹,或是靠烟雾因引来隐匿行踪,以及支援各种气候变化、晨昏光影变化而产生的视觉隐匿效果等,让游戏的战斗过程更逼真。

    正是因为这些看似不起眼AI效果的使用,COD2对显卡的要求也是比较高的,高端显卡要上60帧也非常不易!

无敌最寂寞!NVIDIA最强8800Ultra评测
 
 游戏效果设置:内置所有特效全开最高(包括4xAA和各项异性过滤)
 
{imageTitle}
 
{imageTitle}
 
    HD 2900XT再次表现出了不成熟性,性能和X1950XTX相当,落后于8800GTS,这有可能是AA方面出了问题。

{imageTitle}

第十二章\\第十一节 Test Drive Unilimited和S.T.A.L.K.E.R
 
● Test Drive Unilimited(无限试驾):
 
无敌最寂寞!NVIDIA最强8800Ultra评测
 
    优品飞车10以漂移和速度而著称,而无限试驾强调的是真实感,游戏内容也更加丰富多彩,将游戏和休闲生活结合在了一块。而游戏画面也是别具一格,HDR光照无处不在,同时开启HDR+AA对显卡提出了很高的要求。
 
无敌最寂寞!NVIDIA最强8800Ultra评测
 
 游戏效果设置:内置所有特效全开最高(包括4xAA和HDR)
 
{imageTitle}
 
{imageTitle}
 
    TDU是最新的一款赛车游戏,能够完美支持HDR+AA特效,HD 2900XT的表现神勇,大幅领先于8800GTS,2560分辨率下的成绩达到了8800Ultra的水平!
 
● S.T.A.L.K.E.R(切尔诺贝利阴云):
 
无敌最寂寞!NVIDIA最强8800Ultra评测
 
    一款以切尔诺贝利核电站大爆炸为背景的FPS游戏,被融入了大量RPG游戏的元素,由此让该款游戏的可玩性大大增加,这款游戏虽然跳票四年之久,但还是加入了SM3.0支持,以及大量的HDR和动态光影效果。虽然游戏画面整体风格可能比不上众多新引擎的游戏,但S.T.A.L.K.E.R对显卡的要求还是非常高的。
 
无敌最寂寞!NVIDIA最强8800Ultra评测
 
 游戏效果设置:内置所有特效全开最高(包括HDR、4AA和16AF)
 
{imageTitle}
 
{imageTitle}
 
    Stalker虽然提供了HDR+AA选项,但实际上没有任何效果。测试中,HD 2900XT与8800GTS的表现惊人的一致!

{imageTitle}

第十二章\\第十二节 HD 2900XT CrossFire测试
 
    为了对抗NVIDIA在GeForce 6800Ultra时代的SLI技术,ATI在很短的时间内开发了CrossFire技术,尽管X850 CrossFire非常不成熟,但其效能并不差。在之后的X1800 CrossFire中ATI消除了分辨率上限,让CrossFire获得了和SLI平起平坐的实力,之后的X1900 CrossFire和X1950 CrossFire都沿用了X1800的这种设计。
 
{imageTitle}
 
 X1950 CrossFire甚至可以战胜NVIDIA Quad SLI
 
    ATI以往的CrossFire虽然在性能提升幅度方面并不输给SLI,但是繁琐的组建方式让人大伤脑筋,而且交火主卡的成本很高、产量有限,实用性不能让人满意。现在ATI将交火引擎集成在了GPU内部,通过桥接器让两颗GPU相互通讯,不但让组建方式大为简化,而且让交火效能获得了质的提升!接下来我们就对HD 2900XT CrossFire的性能进行全方位测试:
 
{imageTitle}
 
 双桥交火,组建起来非常方便
 
{imageTitle}
 
 HD 2900XT CrossFire模式启动(975X主板XP系统)
 
{imageTitle}
 
 HD 2900XT CrossFire 3DMark03得分破6W,直逼8800Ultra SLI
 
{imageTitle}
 
 HD 2900XT CrossFire 3DMark05得分超越8800Ultra SLI
 
    下面来看看HD 2900XT CrossFire系统在高辨率模式以及主流游戏中的表现:
 
{imageTitle}
 
    HD 2900XT CrossFire的表现绝对可以用完美来形容!在我们此次测试的所有11款游戏以及3DMark03/05/06基准测试中,CrossFire全部都有非常显著的性能提升。而NVIDIA的SLI只能在其中8款游戏中获得提升,详细测试成绩可以参见8800Ultra评测文章的SLI部分,成绩如下:
 
无敌最寂寞!NVIDIA最强8800Ultra评测
 
    通过对比我们可以发现,HD 2900XT CrossFire不但对游戏的支持度要好于8800Ultra SLI,而且双卡性能提升幅度也要超过SLI,SLI的效能除了在Prey、C&C3、3DMark05默认(此项双方效能都极低)三个项目中领先于CrossFire,其他游戏都是完败,这可能是因为8800Ultra性能太强,遇到了CPU瓶颈,因此提升幅度相对较低!
 
    虽然2900XT CF的性能不及8800U SLI,但要知道一片8800Ultra的价格就能买到两片HD 2900XT了,而HD 2900XT双卡交火的性能显然要强过8800Ultra单卡!
 
    根据经验来看,SLI和CrossFire的效能与驱动优化息息相关,看来ATI不但在硬件部分作出了革命新的改进(双桥硬交火),而且在双卡互联驱动方面投入了高度重视。相比之下NVIDIA自7950GX2开始SLI/Quad SLI的效能就无法令人满意,GeForce 8系列的Vista驱动和SLI驱动表现比较糟糕,希望未来的Forceware驱动能够改进兼容性和效能。

{imageTitle}

 
第十二章\\第十三节 全系列高端显卡功耗测试
 
    更多的晶体管、更高的频率就意味着更恐怖的功耗和发热,虽然发烧玩家并不会在意多掏一些电费,不过电源方面以及温度控制、噪音控制还是不可忽视的。下面我们就针对HD 2900XT的功耗进行专项测试。
 
    我们的功耗测试方法就是直接统计整套平台的总功耗,既简单、又直观。测试仪器为Seasonic的Power Monitor,它通过实时监控输入电源的电压和电流计算出当前的功率,这样得到的数值就是包括CPU、主板、内存、硬盘、显卡、电源以及线路损耗在内的主机总功率(不包括显示器)。
 
G80禁锢的右半部分
 
    只要把PSU电源线插在Seasonic的Power Monitor上,然后把Monitor插在电源插座上,就可以量测整个平台的消耗功率。测试平台保持不变,测得的总功率包括680i SLI主板、X6800 CPU、2GB内存、三块硬盘、一个光驱,再加上一块显卡的总功率。
 
    另外,8800Ultra SLI的功率依然在680i SLI平台上进行测试,而HD 2900XT CrossFire的功率测试转移到975X平台(硬盘内存CPU等其他配件都保持不变),由于主板的更换导致功率会有个位数甚至十位数的变化,这个误差还请大家谅解,毕竟680i SLI不能支持交火。
 
{imageTitle}
 
    待机情况下HD 2900XT的功率与8800GTX持平,而X1950XTX待机功率非常低,主要原因是A卡采用了2D/3D频率切换模式,而N卡频率保持恒定。
 
{imageTitle}
 
    以3DMark06 HDR+AA模式作为显卡3D满负功率,可以看出频率对功率的影响特别大,X1950XTX已经超过了8800GTS 640MB,HD 2900XT超过8800GTX,但要小于8800Ultra。
 
    双显卡模式,HD 2900XT CF与8800Ultra SLI的功率差不多。
 
    由此可见,虽然R600使用了更先进的80nm工艺,但由于晶体管规模太庞大,而且核心频率高,再加上多达16颗显存,所以功耗控制不容乐观。

{imageTitle}

第十三章 DirectX 10性能测试

第一节 DX10浮出水面,两大阵营硬件齐备,玩家苦于没有游戏

     随着DirectX10伴随着Windows Vista操作系统浮出水面,大家对于DirectX10(以下简称为DX10)的关注也日益升温,作为普通玩家最关心的当然是DX10所能够给我们带来什么样的游戏效果。这个过程中最吊观众口味的就是Crysis陆续放出的截图和视频了。

DX10大作!CryEngine2引擎特效全展示

 DX10 动态日夜交替变化

DX10大作!CryEngine2引擎特效全展示

 DX10 完全交互式环境

    经过前面几章的介绍,我们已经看到了非常令人欣喜的情况,无论是AMD(ATI)还是NVIDIA都已经推出了支持DX10的显示芯片,很多读者一定对他们的DX10的性能对比非常感兴趣。

    但是非常不幸的是,《Crysis》原来传言是在年初发布,然而迟迟不见其踪影,目前的消息是需要等到7月才会正式和大家见面。截止到目前,全球范围内还没有任何一个DX10的正式版游戏的出现,对于这种软件落后于硬件的情况还是比较少见的。

    究其原因,一方面肯定是因为DX10的显卡占有率太低,刚刚出现的G80和R600都是定位于发烧友的产品,普通的消费者暂时还消费不起。另外一方面则是因为DX10的全新特性比起DX9改变了太多,这些变化需要让程序员接受并且反映在游戏中,肯定是需要一定的后延期的。

    但是,当我们在大约一个月之前计划进行R600的测试的时候,就定下了一定要为大家带来最详尽的测试的目标。

{imageTitle}

 第二节 客观,公正,专业,全面,泡泡网为您带来最权威的DX10测试

    这次我们的测试分为几个部分,除了前面大家见到的理论测试,游戏测试,之外,我们还将为大家带来最权威的DX10性能测试和视频播放测试。

    在这次测试之前,我们和其他媒体一样收到了AMD提供的目前唯一能够运行的DX10游戏的测试版测试软件,《Call of Juarez》(狂野西部)的Demo。

    不过我们这次测试并没有局限在仅仅使用这一个测试软件进行测试,因为这样得来的成绩难免有些不够全面。

    这次我们的DX10测试分为游戏测试部分和理论测试部分。游戏测试部分使用的就是COJ的Demo版本进行测试。而理论部分测试使用的是来自于微软的DirectX SDK。由于DirectX标准就是微软制定的,所以微软的软件和程序具备了更中立更权威的特性,我们希望通过这个测试告诉大家最公正的数据。

什么是DirectX SDK?

  DirectX SDK就是DirectX Software Development Kit 的意思,大家通常称之为DirectX开发包,这是一个微软官方网站提供给所有的开发人员免费下载的一个软件包。

{imageTitle}
 
 在微软下载中心的首页就有DirectX SDK的下载链接
 
    DirectX SDK不同于我们常说的DirectX ,我们常说的DirectX其实是 DirectX的RunTime(运行时)。
 
{imageTitle}
 
 DX SDK有440M左右
 
    DX SDK里面由于包含了非常多的源代码,例程,实例程序。所以容量就会比普通的DirectX要大不少。而我们用来进行测试的就是DirectX SDK中的示例程序。
 
{imageTitle}
 
 DirectX中有很多可以实际运行的DX10的程序。
 
    这些用作例子的程序都是微软的工程师所开发的真正的DirectX的程序,这些程序分别会使用到DX10的各种不同的特性,所以用来查看DirectX的性能是再好不过的了。
 
    我们这次所进行的理论测试正是采用了这些程序,我们分别在不同的显卡上运行这些程序,通过记录程序的帧速率看看不同显卡的DX10性能如何。
 
理论测试的局限性
 
    不过需要和大家事先说明的是,我们这次的测试仅仅是一个尝试性的测试,测试成绩也只是提供给大家做参考之用,对于在实际DX10游戏中的性能如何,还需要等大批DX10游戏上市之后来进行更全面的测试。此外,目前各个厂商针对DirectX 10的驱动都还不是很成熟,在随后的更新中,很有可能获得比目前更好的成绩。

{imageTitle}

 
第三节 Call of Juarez游戏DX10测试
 
    Call of Juarez是目前唯一的一个DX10游戏,虽然目前只是一个测试版的版本,但是最起码算是一个能运行在DX10环境下的游戏,它的测试成绩还是具备一定的参考意义的。
 
{imageTitle}
 
{imageTitle}   {imageTitle}
 
{imageTitle}
 
测试成绩:
 
{imageTitle}
 

    我们看到,在这个测试中,HD 2900XT显示出了不错的DX10性能,比竞争对手要高20%的幅度。

{imageTitle}

 
第四节 DirectX SDK测试(微软官方2007年四月版)
 
    第一小节 Basic HLSL测试
 
    首先我们进行的是DX SDK里的第一个测试,这个测试名字叫做Basic HLSL,就是基本的HLSL的意思。HLSL是指High Level Shader Language(高级渲染语言)。
 
    这个程序是一个很简单的程序,SDK里这个是一个比较入门的例程,运行起来是一个人物模型不断的由瘦变胖,由胖变瘦。这个程序运行起来的速度很高,每秒钟都在数百帧之上。
 
下面我们来看看测试成绩:
 
{imageTitle}
 
第二小节:CubeMap GS
 

    这个例程主要展示了DX10同时向6个渲染目标渲染场景的能力,以及用到了一些Geometry Shader的功能。

 

    这个例程中的模型可以为一个球体或者是一辆汽车,我们都分别进行了测试:

 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
    测试成绩:
 
{imageTitle}
 
{imageTitle}
 
第三小节:Displacement Mapping(位移贴图性能测试)
 
    这个测试是这组测试中最为重要的一个,它反映了显卡在Displacement mapping(位移贴图)中的性能,这个例程的主要目的,是展示利用D3D10的Geometry Shader技术实现的raytrace位移贴图技术相对于传统的法线凹凸贴图,以及真正的实时位移贴图技术,在图象效果或性能方面的优越性。这是一个纵向的比较;然而,由于raytrace位移贴图技术在Pixel Shader中使用了比较复杂的射线跟踪算法,而真正实时位移贴图技术会使用高多边形的模型。
 
什么是基于四面体和视线追踪的位移贴图技术呢?这个还真是在DirectX 10有了Geometry shader之后才成为可能的一种实时位移贴图技术。它其实也不是真正的移动3D模型的顶点来达到位移的效果,而是和虚拟位移贴图一样,是“虚假的”位移贴图技术,只不过比原来的虚拟位移贴图更高级而已。它的原理并不复杂。看下面这张图:
 
{imageTitle}
 
    要把3D模型原来的平的表面,也就是图中V0 V1 V2构成的三角形加一个凹凸不平的位移变化,也就是图中蓝色的曲面,我们首先需要把这个三角形向上挤成一个四面体,这样才能有位移的空间。而图中蓝色的曲面,就是由位移贴图中储存的高度值来定义的。然后,取一根从摄像机观察这个四面体的射线,它必然会有一个从四面体外面穿入的点和一个从底面穿出的点,并能够计算出和蓝色曲面的一个交点。
 
    这样,通过这三个点,就可以计算出在穿入点上,应该取颜色贴图中的哪个象素,以给人视觉上的凹凸位移感。其实和原来的虚拟位移贴图技术很相像,但是原来的虚拟位移贴图是直接使用视线射线和高度信息运算,而这个是使用穿入点、穿出点和高度信息运算。另外,原来的虚拟位移贴图也不会将模型表面的三角形挤成一个四面体。所以某种意义上可以把这种技术理解为“有厚度的”虚拟位移贴图技术。
 
    这种技术的好处是不用像传统位移贴图技术那样需要模型表面有大量顶点;但是通过这三个点计算贴图坐标的算法是比较复杂的,而且都是在Pixel Shader中每象素的完成,所以这种技术比真正的位移贴图要省Vertex Shader,但是对Geometry Shader和Pixel Shader还是有一定考验的。
 
{imageTitle}
 
 法线贴图模式
 
{imageTitle}
 
 位移贴图模式
 
我们来看看测试成绩:
 
{imageTitle}
 
{imageTitle}

{imageTitle}

 
第四小节:Draw Predicated
 
    这个例程展示的技术,主要原理是在绘制一个高多边形的模型之前,先用它的一个低多边形版本来和深度缓冲中已有的深度值逐象素的比较,只要保证使用的低多边形版本轮廓稍大于高多边形模型,则如果在这个过程中检测到低多边形版本的模型完全被别的东西挡住了,则高多边形模型就肯定被完全挡住了,就不用画了。这个例程展示的主要是DX10中的这个能力。
 
{imageTitle}
 
 不渲染低多边形模型
 
{imageTitle}
 
 渲染低多边形模型
 
测试成绩:
 
{imageTitle}
 
{imageTitle}
 
第五小节:FixedFuncEMU
 

    这个例程主要展示了使用Vertex Shader、Geometry Shader和Pixel Shader来实现老的D3D固定渲染流水线效果,由于场景不太复杂,光照效果是逐顶点的,且除了雾效之外也没有用到什么逐象素的效果,所以对于各种Shader的使用比较平均且能力考验不是很大,主要还是体现教学意义。

{imageTitle}
 
{imageTitle}
 
{imageTitle}

第六小节:Instancing

这个例程所展示的是DX10的Instancing技术,即将一个模型和多个位置信息传给显卡,通过一次调用即可以在这些位置上绘制这个模型的大量副本的技术。另外也使用到了DX10的纹理阵列(Texture Array)技术。由于地上的草叶是通过Geometry Shader生成的,所以此例程也比较考验Geometry Shader的性能。

{imageTitle}
 
{imageTitle}

 

{imageTitle}

{imageTitle}

第七小节:MotionBlur10

    此例程实现了基于三维模型的运动模糊技术。这个例程主要可以考验Vertex Shader和Geometry Shader能力。它主要使用Geometry Shader将模型的三角形的边线沿着运动轨迹生成一个3D的条形,然后用渐变的透明度来绘制,以达到运动模糊的那种物体拖着残影的效果。由于生成这个条形需要多次循环,所以Geometry Shader的运算量比较大。

这种3D运动模糊和以前的2D运动模糊相比的优点主要是效果比较稳定,受程序运行帧数的影响比较小。

由于这个例程中还使用了带有骨骼皮肤动画的角色模型,所以它的Vertex Shader也是比较复杂的。而Pixel Shader则编写的很简单。

{imageTitle}

 
{imageTitle}
 
{imageTitle}
 
第八小节 ParticleGS
 
这个例程效果比较炫目,但是实际上不是很复杂。它实现了用Geometry Shader来生成很多粒子形成礼花的效果。这样就可以把原来粒子系统中CPU的工作量转换到GPU上。主要的工作量还是集中在Geometry Shader上。
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
第九小节 PipesGS
 
这个程序也是在考验Geometry Shader的能力。地面上生长出来的植物,主要是由Geometry Shader生成的。
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}

{imageTitle}

 
 
第十小节:Skining 10
 
这个例程主要是考验Geometry Shader在处理多个模型对象时的能力。我们在这个测试中使用了多达500个人物模型来考验显卡的能力。
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
 
第十一小节:soft particle
 
    这个例程是用来测试柔和粒子烟雾特效的,这个程序中有三种不同的烟雾模式可以选择。
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
{imageTitle}
 
 
总结:
 
从上面的测试成绩中,我们可以看到,在DX10的程序中,有的特性需要消耗的系统资源很高,连我们目前最优异的系统连10fps都运行不到,而有的就消耗系统很小。这说明在DX10上面,显卡仍然有很多性能需要提高的地方,随着技术的发展,我们一定能看到性能更强大的显示芯片出现。
 
    测试成绩方面,我们看到HD 2900XT和8800GTS各有千秋,都有互相胜过对方的测试项目,不过我们知道,这些程序只是微软给程序开发人员的例子,并不是为测试显卡性能设计的,我们今天使用这些程序进行测试,一方面是为了让大家看看DX10中新的特性,另外一方面只是为了作为一个性能的参考。
 
    对于这些程序的性能,很大程度上会受到驱动程序的影响,驱动的修改可能导致一个程序的运行速度有很大的改进,所以究竟最终DX10的游戏性能还需要看具体的每个游戏中的实际表现了。

{imageTitle}

第十四章 总结 另觅蓝海!AMD让ATI看得更远

● 测试总结:

    通过理论测试以及3DMark基准测试来看,R600庞大的核心的确是有着惊人的实力,个别项目中拥有超越8800Ultra的表现,可惜现有糟糕的驱动未能发挥出它应有的实力。

    在好几款游戏中,HD 2900XT的性能仅与X1950XTX相当,庞大的流处理器资源被浪费;3DMark03/05默认设置可以跑出很高的成绩,但打开AA后性能巨降,512Bit显存没能体现出优势。这种现象绝对是不正常的,由此可见HD 2900XT性能发挥很大程度上受到了测试版驱动的限制!

{imageTitle}

    即便如此,HD 2900XT还是在绝大多数项目中击败了竞争对手同价位的8800GTS 640MB显卡,性能方面还是可圈可点的。如果将来正式版驱动对其架构和AA模式进一步优化,相信性能会获得很大程度的提升!

    目前唯一令人比较满意的就是HD 2900XT的交火性能,双卡的性能提升幅度完胜8800Ultra SLI的幅度,这使得CrossFire的前景变得一片光明!

    对于R600这样一款全新架构的产品来说,配套驱动的开发同样是一大难题,尤其是它超标量SIMD架构对驱动的依赖程度比较大。在R600正式发布之前,AMD三个版本的驱动让其性能获得了较大幅度的提升,现在据我们了解,AMD改进AA效能的新驱动即将放出。所以说,现在对HD 2900XT的性能表现下结论还为时过早,或许未来一至两月其性能可以获得较大的改善,让我们拭目以待!

● 另觅蓝海!AMD让ATI看得更远

    在我们看来,近些年与NV在图形芯片领域的恶斗几乎让ATI精疲力竭。NV半年一次的产品升级就像是将对手一步步逼向万丈深渊。如今,让我们再回过头看06年的那起收购案,对于ATI而言意义深远。

    收购案不仅让ATI实力大增,也让新东家AMD一跃晋升成为全球优异能提供CPU、Chipset、GPU的半导体厂商。借助ATI在消费电子、图形领域获得的成绩,AMD也从单一处理器芯片企业转变为运算解决方案提供商,平台化战略得以真正实现。

{imageTitle}
 AMD/ATI强强联手的威力得以初步展现

    同样,收购后的ATI也在避免陷入与NVIDIA性能/价格战泥潭。另辟蓝海,成为ATI产品战略的主导。在此次发布Radeon HD2000系列产品里,ATI别有心意的加入了HD音频、HDMI等特色功能的支持,正式寻求与NV产品的差异化,开创属于ATI的蓝海。

● 技术创新!值得尊敬的ATI

    纵观ATI在最近几年的发展,我们不难看出这是一个非常重视技术创新的团队,从他们的各个产品上我们可以感受到他们对于技术发展的推动力。

    在DX8.1的时代,ATI就是DirectX标准非常有力的支持者,他们当时推出的Truform技术是唯一的一个支持N-Patch技术的可应用技术。这种技术的诞生为显卡技术以后的DirectX技术的发展奠定了基础;在DX9时代,ATI自主研发的3Dc技术,能够比微软DX标准中的DXTC技术获得更好的效率,和更好的画质效果,这一技术后来被微软纳入了DirectX 9.0C规范当中。这使得使用法线贴图技术的3D程序可以获得更好的运行速度。

{imageTitle}

    在X1900发布的时候,ATI使用实时演算向大家演示了时差贴图令人惊诧的画面效果,这使得在位移贴图尚不能实际应用的时候就能获得了非常好的立体效果。

    在芯片架构方面,ATI更是率先实现了统一渲染架构,将其应用在了微软的Xbox360游戏机上,成为业界第一款统一渲染架构的GPU。

    今天,R600发布了,我们欣喜的看到,R600对于技术创新的贡献更加显著,Tessellation技术不但已经在Xbox上应用,更是为3D图形领域创造了新的思路,从细分算法到巧妙的“笼子”模型控制法,都是ATI的工程师的智慧的结晶。

    当然,物理加速,GPGPU运算,创新的CFAA,乃至完美的内置声卡都让R600不再像是一款显卡芯片,而是一个电脑的多媒体处理中心。

    ATI的这种对技术创新不断追求的精神,是我们这些DIYer永远值得尊敬的。

{imageTitle}

    首先,恭喜大家终于看完了这篇泡泡网有史以来字数最多、分页最多、内容最丰富、测试最全面的长篇评测。如果您是花了一定时间仔细阅读这篇编辑心血结晶的话,那么对于R600的架构以及Radeon HD 2900XT显卡的特性将会有一个全新的认识。

{imageTitle}

    Radeon HD 2900XT的性能您满意吗?它击败了对手的GeForce 8800GTS 640MB,相信在未来通过驱动优化还有很大的提升潜力。

    Radeon HD 2900XT的功能您满意吗?AMD创新性的在GPU当中整合了完整的声卡功能,是唯一支持原生HDMI(带音频)输出的高端显卡。

    Radeon HD 2900XT的价格您满意吗?AMD的官方定价是399美元(国内3299元),而且还附送三款DX10游戏大作,性能比8800GTS 640MB强,价格更便宜。

惊喜回馈!2899元就买盈通HD 2900XT

    为了答谢广大读者对泡泡显卡频道的关爱,我们与国内知名显卡品牌盈通合作,特别提供十片Radeon HD 2900XT(限量十片)显卡低价销售。如果您对HD 2900XT有兴趣的话,那么现在就能以极具诱惑力的价格将其收入囊中。

活动方式:

    您只需要在文章评论中留言,谈谈对HD2900XT以及本文的看法,并留下您的E-mail地址。我们将从留言中挑选出10位热心读者,以2899元的价格购买到盈通公版HD 2900XT显卡(限一片)。

活动时间:

    2007年5月15日——18日,我们将于本周六显卡新闻公布这十位幸运读者。

{imageTitle}

{imageTitle}

{imageTitle}
0人已赞

关注我们

泡泡网

手机扫码关注