【IT168 评论】微软2007年1月底发布了Windows Vista,Windows Vista为我们带来了更简单,更加人性化的人机界面,同时也为我们带来了全新的API DirectX 10。Windows Vsita发布时被微软誉为面向下一代的操作系统,被称作是有史以来最好的娱乐平台。虽然Vista发布的早期,还有很多软件对于Vista支持度不够,但随着Windows的不断Update,对于软件,对于游戏的支持度也在不断提高。
其实,早在Windows Vista正式推出以前,DirectX 10的信息就已经被泄露出来,而《CrySiS》放出的精美、真实的画面以及支持DirectX 10 API的GeForce 8800系列图形显示芯片发布,也正式宣告了我们已经走入了硬件的DirectX 10时代。
本文的讨论核心在于DX10以及DX10显卡的优越性以及弊端,还有当前消费者是否应该考虑选择DX10显卡,放弃选择市面上主流的DX9显卡。请看下一页——《DirectX 10的技术革新》
DirectX 10的技术革新
Shader Model 4.0
DirectX 10非常明显的一个变化,就是引入了Shader Model 4.0,而Shader Model 4.0也为我们带来了一些和DirectX 9.0C所不同的特性。在DirectX 10中,微软引入了Geometry Shader,Geometry Shader可以认为是图形流水线的一大进步,GS第一次允许了GPU生成/销毁几何的图元数据,并且和流输出功能相配合,大大提高了GPU的可编程性。
统一的Shader架构
之前的DirectX版本,均采用分离式Shader架构,Pixel Shader搭配Vertex Shader,遗憾的是,Pixel Shader在各个方面都要落后于Vertex Shader,包括可用指令数、Shader长度、Constant Register个数等等,导致可编程性的下降。而在Shader Model 4.0中,无论是Vertex Shader、Pixel Shader还是刚刚引入的Geometry Shader,都具有完全相同的Constant/Temp Register、指令集、Shader长度,统一Shader架构的Shader,可以平等的共享这些资源,程序员在操作的时候,完全不必考虑Shader自身的限制。同时,Shader Model 4.0对可用资源进行了扩充,Temp Register从32个扩展到了4096个,而Constant Register从原来的256个扩充到了65536个。
更多的Render Target:图形特效的逐渐增加,对于目标的数量要求也越来越多。一般来说,RT可能需要在物件的位置、pixel等部分,绘制一切的信息。为了提高效率,不少图形卡都可以支持,在Shader执行结束后,把不同的信息,绘制到不同的RT中。DirectX 10将RT的数量从DX9的4个提高到了8个。
纹理阵列:包括在DirectX 9.0C中,多张纹理的切换操作,在一定程度上增加了CPU的复合,原因很简单:每次的切换都需要调用DirectX的函数,而绘制一个新纹理的物件,都需要进行这种切换操作,甚至要实现有些特殊的材质特效,可能需要进行多次切换。因此,曾经有一些游戏,将小的纹理合并到大的纹理中,通过赋予不同物件局部纹理的方式,减少纹理的切换,以提升游戏的运行效率以及CPU的占有率。这种方式的效果相当不错,但实现起来比较复杂,DirectX 9.0c对于纹理,是有一定尺寸限制的,仅为4096*4096,假如要容下更多的纹理,甚至需要增加多张大纹理的切换,造成运行效率的下降。
而在DirectX 10中,微软引入了新的纹理整列,DirectX 10允许图形芯片进行512张纹理的同时维护,并且,Shader可以使用新的指令来随意提取维护纹理中的任意一张,这就意味着,DirectX 10将纹理切换的工作移交给了GPU,并且,GPU进行纹理切换操作,有助于降低和存在于显存中的纹理的操作延迟。在目前的DirectX 10中,应用程序只需要赋予纹理整列中的纹理索引号,即可由GPU来为物件选择纹理。
DirectX 10中,每张纹理贴图的分辨率被提升到了8192*8192,每个Shader能够同时访问的数量,也增加到了128个,因此,DirectX 10中,Texture的细节精细度和多样性,都有了极大的提升。
绘制预测:在很多的3D场景中,有一些物体是被遮挡的,如果对这些被遮挡的部分进行渲染,是对资源的一种浪费。在NVIDIA和ATI的图形芯片中,二者通过某种算法,不对遮挡的部分进行渲染,但尽管如此,还是会浪费不少宝贵的渲染资源。而DirectX 10则引入了绘制预测,来解决这种问题。绘制预测可以一个简单物件的渲染,来判断复杂物件的部分是否被遮挡,用小规模的渲染来判断大规模,高复杂化的渲染,的确要划算的多。
流输出:流输出是DirectX 10的重要特性之一,流输出允许GPU的Vertex Shader或者是Geometry Shader直接向显存中写入数据,而在此之前的DX版本中,VS是只读的Shader,并不能写入。
批量绘制:在之前版本的DX中,一直由CPU对渲染状态进行管理,每一次的调用DX的函数,都占据了CPU的运算能力,一定程序的约束了渲染的效率。而为了让这些操作能够批量运行,DirectX 10引入了全新的State Object以及Constant Buffers。
State Object的作用比较简单,将之前的零散的部分,根据功能,聚合成一个,甚至几个整体,这样的话,应用程序不需要为每个部分进行DirectX函数读取,图形卡一次即能够将所有的部分全部写入。
而Constant Buffers则更加具有实际意义,在建模之前的准备工作中,渲染状态的设置,只是一个小部分而已,这些信息存储在GPU的Constant Register中,每个CR只能够储存4个浮点型向量。在之前的DirectX版本中,CR的数量是非常优先的,而且每次更新一个CR的数据,都必须调用DX API函数,而Constant Buffer的引入,则彻底改变了这种状况——DirectX 10的Constant Buffer可以容纳4096个Constant,只需调用一次函数即可多次,大批量更新。
HDR新的颜色格式
从Shader Model 3.0开始,HDR成为外界所关注焦点,HDR可以通过浮点的格式,以及颜色的格式,为光照、纹理等等运算,提供颜色范围和精度。在DirectX 10中,微软引入了两种全新的格式:R11G11B10和R9G9B9共享5。两种新的格式使纹理占用和原来完全相同的显存空间,避免了显存和带宽的消耗。当然,DirectX 10同样能够支持每个通道32bit精度的FP Texture。
DirectX 9与DirectX 10画面对比分析
枯燥的技术总是令人乏味的,下面让我们以图片来对DirectX10进行一些讲解。
图1 |
图2 |
对比图1和图2,我们可以看到两张图片,完全不是一个艺术层次上的图片。图1和图2,分别是在微软模拟飞行10下,采用DirectX 9和DirectX 10分别渲染的。两者的差距是显而易见的。表面上,水波和水面上的泡沫。DirectX 10还能够处理可能出现的“容积效应”,从而使云彩的部分,更厚,更突出,并且加强了光线的散射效果。当然,我们还能够看到,森林的边缘更加突出,细节更加完美。同时,在图2中,DirectX 10为山脉、森林渲染了真实、准确的倒影;而图1中的水面则更像是水银,森林、山脉的反射也更像是胶体。
图3 |
图4 |
图3来自分裂细胞4:双面间谍,图4来自DirectX 10游戏CrySis,比较以下图3和图4,虽然是DirectX 9.0c和DirectX 10的对比渲染画面,但两者的差距是显而易见的,CrySis提供了多个等级纹理精度,对于面部的渲染,痘子的痕迹,玻璃般的眼睛。
图5 |
图6 |
再看图5和图6,DirectX 9的细节贴图,来自法线贴图,但DirectX 10的细节贴图则包含了更多的部分,更多的材质和更多等级的精细度。图5是DirectX 9的渲染结果,图6是DirectX 10的渲染结果,比较这两张图片的鱼的表面,最大的差别在于DirectX 10在不同纹理的连接方面,显得更加真实,并且,在细节的精细度上,更好一些,侧面轮廓也更加清晰。
图7 |
有了Windows Vista和Direct X10,自然就有硬件支持DirectX 10的产品推出。
NVIDIA在去年的11月9日,首先推出了硬件支持DirectX 10的产品GeForce 8800系列,GeForce 8800系列是迄今为止,唯一支持DirectX 10的图形产品。GeForce 8800系列拥有三个版本,分别为GeForce 8800GTX、GeForce 8800GTS和GeForce 8800GTS 320MB。其中,GeForce 8800GTS 320MB是一款价格平易近人的产品,基于TSMC成熟的90纳米制造工艺制造,拥有96个Streaming Processors,公版核心频率500MHz,显存频率1600MHz,位宽320bit,官方定价仅为249美金,是目前市场上最为具有性价比的中高端产品。
另外,NVIDIA将在4月17日,正式发布GeForce 8600系列图形产品,包括了GeForce 8600GTS和GeForce 8600GT。其中,GeForce 8600GTS拥有32个Streaming Processors,核心频率675MHz,Shader频率1450MHz,128bit显存位宽,256MB显存,显存频率2000MHz,基于TSMC 80纳米制造工艺;而稍低的GeForce 8600GT同样拥有32个Streaming Processors,核心频率540MHz,Shader频率1188MHz,128bit位宽256MB显存,显存频率1400MHz。
两款产品的分别用来取代GeForce 7900GS和GeForce 7600GT,GeForce 8600GTS的售价为199美金,GeForce 8600GT稍便宜,售价为149美金。
GF8600GTS |
当然,NVIDIA的DirectX 10产品并不只是这些,还有GeForce 8500GT和GeForce 8400、GeForce 8300系列,目前这些产品的消息还不明朗,但可以确定的是GeForce 8500GT具有16个Streaming Processors。GeForce 8500GT可能取代GeForce 7300GT的位置,售价仅99美金,而GeForce 8400和8300则是NVIDIA DirectX 10的入门级产品。
反观ATI方面,在延期9个月后,ATI最终决定在5月14日正式发布R600系列产品,R600就是未来的Radeon X2900XTX,目前我们已知的信息:R600将具备512bit显存位宽,支持GDDR4显存,R600的价格可能为创记录的499美金。
当然,高端非一般用户所能及,价格更加具有优势的,才是普通用户的追求。ATI的RV610和RV630就是这样的两个系列产品。RV630和RV610的位置,就像RV530和RV515一样,分别面向中端市场和入门级市场,有传言说,将在5月和R600同时发布。不过,ATI还有更好的产品:根据ATI的ROADMAP显示,RV660/670将在今年的7月出样,8月或者9月上市,另外,RV650也是ATI面向DirectX 10的奇兵。
R600显卡图片请点击——《R600国内网友偷偷贩卖》
据说RV630将主打UVD,而并非性能牌 |
由于制造工艺的进步,ATI支持DirectX 10的产品是非常具有成本优势的,ATI的ROADMAP显示,除了R600外,所有的R6xx系列产品,都将采用TSMC 65纳米制造工艺,不但降低了功耗,还减少了晶体管面积,降低了成本。
在上一个部分中,我们谈及到了一些GeForce 8600GTS和GeForce 8600GT的产品信息,不过,枯燥的产品信息也许并不能够让你对NVIDIA、ATI即将推出的DirectX 10图形卡有所了解,还是看看下面的图片吧。
图8 |
图9 |
图8和图9,分别是GeForce 8600GT和GeForce 8600GTS的图形显示核心,从标号上来看,二者来自同一张晶圆G84,而根据之前的Streaming Processors数量来看,8600GTS和8600GT的差别,就像是7600GS和7600GT的差别一样——核心频率上的差距。并且,GeForce 8600系列的GPU的封装和8800系列完全不同。
图10 |
图11 |
图10和图11分别是网上泄露出来的RV630和RV610图形显示核心,上个部分中,我们已经谈及到了RV630和RV610的一些技术参数,虽然从图片上,我们并不能看出,图10和图8的核心中,谁和的核心面积更小,但基本可以肯定的是:采用65纳米制造工艺的RV630核心面积要稍小一些,更具备成本优势。
深渊——DirectX 10显卡遭遇游戏两大问题
从CrySis的第一次公开展示,DirectX 10的特效已经让不少人迷醉,但当DirectX 10显卡真正可以进入千家万户的时候,却出现了一大遗憾——我们根本没法享受DirectX 10带来的享受,因为还没有任何一款DirectX 10游戏推出。CrySis已经多次跳票,甚至有传言说,CrySis将推迟到今年年底,甚至明年年初发布;我们只能期待其他的作品出现。目前,已经确认会推出DirectX 10版本的游戏有《英雄连》、《微软模拟飞行10》、《命令与征服3》,以及《CrySis》。但这些只是消息,现在没有一点迹象显示:这些DirectX 10游戏将在近期推出。
当我们真正架起了DirectX 10游戏平台的时候,难道遇到的遗憾仅仅是没有游戏吗?
当然不是,还有一个更大的尴尬——目前的DirectX 10图形卡,哪怕是最高端的产品,对于DirectX 10游戏的支持度都相当低,游戏的FPS少的可怜,只能以幻灯片的角度来欣赏,我们并不能流畅的体验。
根据Microsoft泄露出来的消息,GeForce 8800GTX单卡在运行《微软模拟飞行10》时,High Quality 1280*1024分辨率下,帧数只有可怜的13FPS;当分辨率更高,达到1600*1200时,GeForce 8800GTX的成绩更是惨不忍睹,只有个位数!GeForce 8800GTX尚且如此,更不要说只有四分之一Streaming Processors的GeForce 8600GTS和GeForce 8600GT!也许我们只能在800*600 Low Quality下实现幻灯片。
反观目前DIY网友的显示器,已经由前几年的1024x768分辨率到达了今天主流的1280x1024的分辨率,而20寸甚至22寸以上的1680x1050、1920x1200分辨率的显示器已经有不少网友购入。使用液晶显示器的网友非常清楚,液晶显示器只有在使用标准分辨率(如17/19采用的1280x1024,20/22寸宽屏显示器的1680x1050)的时候,画质才能最为完美,否则会因为液晶显示器的显示原理而拉长或者压缩图像点,导致画质下降。因此众多发烧友如果在这个时间段购买较为昂贵但是性能普通的DX10显卡,而在未来运行DX10游戏的时候,只能是获得非常不流畅的fps,即是大家常说的“幻灯片”。
价格——DircetX 10显卡普及障碍
GeForce 8600GTS和GeForce 8600GT即将上市,售价分别为199美金和149美金,如此昂贵的价格,这两款产品自然没有性价比可言。并且,这两款产品可能在若干个月后,以999RMB甚至799RMB的价格出现在市场上,良品率的提升,制造工艺的进步都将让这些产品迅速贬值,而且最关键一点,这些显卡在高分辨下玩DX10游戏,十分狼狈。所以现在购买DirectX 10产品,不是一个好的选择。
相反,DirectX 9.0显卡经过了三代的发展,图形芯片厂商对于DX9的诠释、理解已经近乎完美了。成熟的DirectX 9.0图形芯片,加上低廉的售价,以及厂商极可能甩货的的市场策略,让DirectX 9产品在性价比和DX10显卡的对比上,完全胜出。从目前泄露出的成绩来看,GeForce 8600GTS和GeForce 7900GT的性能几乎相当,而价格至少需要1500元;同为GeForce 7系列的GeForce 7900GS高频版显卡,只要999元,性能即可达到GeForce 7950GT的水平,性价比的高度,已经非常明显。而且更为惊人的是,翔升256M显存的“伪7950GT”(标准7950GT为512M显存),已经是999元的价格,性价比十分突出!评测文章请点击——《还买79GS?千元7950GT新皇登基 》所以从当前来看,买当前的DX9显卡,性价比十分之高。
不过,如果你手头拥有足够的银子,买一块DirectX 10显卡作为DirectX 9游戏卡,也是一个不错的选择;或者,你并不玩游戏,只是需要DirectX 10来实现一些效果或者看H264视频,当然,这另当别论。
写在最后:等待,我们非常好的的选择!
无论是NVIDIA还是ATI,对于一个全新API的,都不太可能在第一代产品中进行完美的理解和诠释,NVIDIA和ATI会随着技术的不断发展,对支持DirectX 10 API的图形芯片进行继续的改进和完善,相信在下一代的图形芯片会对于DirectX 10的支持更加完美。DirectX 10提供了更好的编程性,但划时代的架构变革,尤其是对于Geometry Shader出现、统一Shader架构的实现,游戏开发者缺乏DirectX 10引擎开发经验,虽然可编程性增加,纹理增大,指令集增加等等,都是DirectX 10的优势。游戏开发者需要时间来了解DirectX 10,才能够开发出较好的DirectX 10引擎。
DirectX 10图形卡取代DirectX 9图形卡,是技术、市场发展的必然趋势,不过在现阶段,DirectX 10显卡的确不是最好的选择,尤其是即将发布的DirectX 10中端显卡。首先,即将发布的DirectX 10产品,只有128bit的显存位宽,虽然频率过高,但128bit可能在将来成为数据吞吐的瓶颈;而256bit的GeForce 7900系列和Radeon X1900系列,性能已经可以满足目前绝大多数游戏的需求;其次,DirectX 10系列产品刚刚发布,架构还不完善,并且没有DirectX 10游戏支持,现在购买着实不是一个好选择。
所以说等待,请消费者继续等待,这才是我们的呼声,纵使硬件厂商对于DX10显卡的宣传再高昂,纵使游戏厂商的跳票游戏的描述再诱惑……请消费者等待时机再购买DX10显卡,欲知何时才是购买DX10显卡的非常好的时机,请继续关注IT168 DIY频道!