
序言:这个世界的铁则
● 序言:这个世界的铁则
RISC(Reduced Instruction Set Computing)。精简指令集,一种指令数目少、执行周期短、以流水线优化优先的高效能CPU指令集。但他并不支持受众面最广的操作系统—Windows,使得它失去了大份额的受众群。
RISC与CISC
GeForce FX系列,nVIDIA的首款DirectX 9显卡,曾被抱以厚望。一度人们认为配合nVIDIA同步发布的革命性Cg技术,在专业领域十分强悍的NV30系列GPU在3D游戏里同样会有优秀表现。但他最终因为对DirectX 9应用执行效率过低,成为nVIDIA历史上在民用图形领域最失败的产品。
“一台完整的计算机是由软件部分与硬件部分所组成”,大概在每种计算机入门教材里都会出现类似的说辞。的确,硬件发展的最终目的是为各种软件应用服务。反过来讲,软件的应用也离不开硬件基础的支撑,这早在数十年前就已经成为共识与常识。
历史不止一次证明了硬件技术与软件应用间的紧密依存关系,但以产业来分这又是相互独立的。就像会有很多人向往着与搭档间能够有亲密无间的配合的心情,可这并不见得软件与硬件的发展就真的默契无间。计算机是个多元的领域,无论是性能、应用、价格亦或是各种错综复杂的金钱利益都会对其产生影响。
显卡以及算机图形产业的历史并不长,不过从诞生那天开始它便是发展速度最快的领域之一。伴随着不断涌现的新技术与新需求,我们也走过了10余年的时间。各式各样的图形技术与应用软件之间不断的成长与碰撞着,为我们勾勒出并不只是美丽与纯洁的神奇世界。随着时间的流逝,计算机图形技术与应用软件所处的地位、立场也发生了微妙的变化。
从用途上来讲,计算机图形技术所涉及的软件无非是两种:一种用来提供基本的软件环境与运行平台。另一种则是直接应用去处理各种终端事物。像是DirectX、OpenGL、各种驱动可以归为前者,后者又可以进而分为专业软件与民用软件。在民用软件之中,目前分量最重的无疑是各种游戏软件。
在我们还沉浸在漫长的DirectX 9时代时,DirectX 10已经悄然而至。在AMD与nVIDIA的推动下,2007年将是变革的一年。我们见证着历史,审视着现实,同时也反思着自己。现在关于DirectX 10的价值又有新的一轮争论,让我们暂且把它丢在一边,在描绘未来世界之前,不妨先仔细研究一下历史为我们留下的各种思考。
● 未来的基石 - 编程时代:自由就是力量
Microsoft DirectX已经有12年的历史,相继推出了9个版本,凭借着极强的适用性DirectX当仁不让的成为被使用最广的3D开发组件以及3D API。这可以分为几个阶段,最初的显卡程序开发无法直接对输出像素进行编程,渲染管线也是固定的,那时的显卡程序开发就如同拿着一块块定型的积木反复组合罢了。
但DirectX 8.0的出改变了这一切,随着Shader(着色器)的引入,程序员就可以摆脱桎梏,自由的进行创作。不过自由也是需要付出代价的,Shader与Shader间地位也有不同,用来用于衡量它强弱的Shader Model同时被提出。
● DirectX 8.0
Shader的本质是一段可以编译的小程序,程序员可以像挥动画笔一样通过编译一段Shader来执行各种操作。而Shader Model则是Shader的行业标准,就像画笔有不同功能级别那样,不同版本的Shader Model所对应的功能也不同。根据职能不同,Shader又分为Pixel Shader(像素着色器)、Vertex Shader(顶点着色器)。在最新的Shader Model 4.0中Microsoft又开发出Unified Shader(统一着色器)来代替前两者,并引入了Geometry Shader(几何着色器?)的概念。
对于像Shader一样的程序,只有对其进行编译它才能发挥作用。能够决定其优劣的重要标准之一是它所支持的指令长度,某种意义上讲,Shader Model的革新的最核心内容是更高的编译自由度与不断提升与指令长度。
列举一下各版本的DirectX的在世时间,可以发现一条有趣的信息。标志着自由编程时代来临的DirectX 8.0与Shader Model 1.0发布于2000年11月,也就是20世纪的最后一年,而它开始大规模的应用正是随即到来的21世纪。
这就验证了一个观点:至少在本世纪初的一段时间内,编程的自由度将是衡量显卡技术的一个极重要的参数,我们甚至可以片面的认为所有现代显卡技术的产生都是为了配合编程自由度的提高,不断延展的指令长度也不断的造就着新的功能与效果。
● 寂寞与英雄如影随形?
2002年8月,第一款支持DirectX 9的CPU: ATI Radeon 9700发布。2003年12月,首款DirectX 9游戏《变形金刚:重拳出击》(gun metal)发布。时间跨度为1年5个月。
2004年4月,第一款支持DirectX 9.0C以及Shader Model 3.0的显卡:nVIDIA GeForce 6800发布。2004年7月,首款DirectX 9.0C游戏《孤岛惊魂》(FarCry) 1.2补丁*发行。时间跨度为3个月。
2006年11月,第一款支持DirectX 10以及Shader Model 4.0的显卡*:nVIDIA GeForce 8800发布。2007年Q2,首款DirectX 10游戏Crysis将会发行*。时间跨度约半年。
注1:2006年7月S3就已经暴光了代号为“Destination 1”的DirectX 10 GPU,但第一款正式发布并上市的DirectX 10显卡仍为GeForce 8800。
注2:对于一款游戏来说,延迟发布是很常见的事。具体时间请以实际为准。
注3:FarCry的发行时间为2004年3月,使用它在同年7月推出的1.2补丁后才能支持DirectX 9.0C,使用1.3补丁后才能开启HDR。
● 王者都难逃寂寞的宿命?
我们发现一个有趣的现象,近几代有着重要意义的显卡型号上市后都会面临一段时间没有应用软件支持的窘境,在这段时间内它只能与上代型号竞争,但这并不妨碍它们成为经典。
在今天我们经常能够看到“DirectX 10无用论”与“Shader Model 4.0无用论”,这与两年前常见的“Shader Model 3.0/HDR无用论”如出一辙。在这些说辞中,如果把有可能的厂商因素与个人喜好排除掉,剩下最多的理由便是“没有软件能够支持它的应用”。类似于“硬件、软件发展脱节”、“只要画面不要游戏性”的话题已是老生长谈。我们暂且将这个话题放在一边,转而从需求的角度来探讨。
CS,非DirectX 7显卡不可?
Counter-Strike(反恐精英),一款极经典的FPS射击游戏,至今仍有无数的FANS为其痴迷。CS本身是一个DirectX 7游戏,可玩CS就一定要搭配一块DirectX 7代的显卡么?我想答案是很明确的,现在拿DirectX 8、DirectX 9显卡来玩CS的人非常多。同理,因为DirectX与Shader Model有向下兼容的特性,一旦他们的规格达到或超过了应用的需求,那么最该考虑的是显卡的性能。至于那些“因为没有支持DirectX 10的游戏,所以玩DirectX 9游戏不能用DirectX 10显卡”的言论显然是极其荒谬的。
也许会有人讲“投资‘超前’技术有风险”,在这方面其实无需顾虑。上面已经提过了编程自由度的重要性,无论是从2.0->3.0还是3.0->4.0,Shader Model每次换代都会在支持指令长度与编程自由度上有着巨幅的提升。任何软件厂商都无法绕过这一步骤,所以不必过度担心日后会没有足够的软件去支持它。换个角度来想,在价格合适的前提下,即使将“新技术”当作赠品,那也十分值得。
● 代沟 - 不同时代的分歧
现在有一种比较多见的说法:“可以等DirectX 10游戏成熟的时候再入手新显卡”。关于这种说法,我们不妨与上面的疑问一起来探讨。关于软、硬件发展不均衡的问题也已经有了长时间的争论,这同样是一个有趣的话题。对于这个话题,不妨分为两部分去考虑。一是“固定管线时代(DirectX 8之前)”,一是“自由编程时代(DirectX 8到现在)”。
在显卡刚刚诞生的那段时间里,DIY的状况与现在大不相同,当初所谓的DIY只是抛弃了品牌机后在为数不多的几种CPU、显卡里简单的组合一下罢了,几乎没有选择的余地。那时各行业基本都是一家独大的状态,不存在现在的不纯竞争。用掉7000~8000人民币装配上486、586之类的CPU,外加一块1M缓存的Trident或S3显卡,就可以流畅的玩遍当时所有的游戏,并且在两三年之内也不必考虑升级的问题。
当显卡业还处在起步阶段时候,因为基本不存在竞争,市面上各种型号显卡的性能差距远没有现在这么大。游戏开发商所能做的只是针对有限的几种型号不断的优化,不断的挖掘潜力,在图形技术没有差距的时代就不得不考虑游戏可玩性的问题。
随着图形产业的发展,游戏开发商所考虑的问题变成了是否要跟进新的图形技术。在这个问题上,开发商们分为两个派别,一是坚定的追随最新的图形技术,将最好的画面带给游戏爱好者。另一种则是坚持以可玩性为主,图形方面够用就好。这里我们可以将后者忽略掉—即使不使用最新的图形技术,也不一定会影响到游戏的可玩性。
● 还记得玩仙剑、红警95的时光么?
在那个年代的游戏爱好者看来,也许游戏开发商与硬件厂商间的确是达到了默契的程度,人们很少需要去考虑自己显卡的规格能不能玩的了更多游戏。但是在厂商的眼里却不一定是这样,随着产业的发展,这种“脱节”的现象也逐渐产生。只是因为当时行业的深度相对较浅,游戏开发的周期也可以控制在较短的时间,能够察觉到这些的人并不多。但是随着自由编程时代的到来,这种现象被大幅度的放大了。
“脱节”一词带有贬低的色彩,用它来形容图形技术与应用软件间配合的程度是不合适的。因为“技术领跑游戏”的现状是行业发展的必然,从某种意义上更是一种进步。下面以DirectX 9.0C与《极品飞车9》(NFS9)、《英雄连》(COH)为例做一下简单的分析。
以笔者的观点,DirectX 9.0C的游戏应该分为“初期”与“成熟期”两个阶段。发行于2005年11月的《极品飞车9:最高通缉》便是典型的“初期”作品。
第一次玩到NFS9,有两个记忆深刻的地方:一是暴光过度的bloom贴图技术,二是尽管只支持低精度HDR,但依旧华丽的光源效果。早期的DirectX 9.0C给笔者留下的最深印象居然是一幕幕暴光过度的HDR(高动态光源渲染)画面。也许是被死板的光源效果限制太久,此时诸如《帝国时代3》、《波斯王子》等游戏都是“被毒烈的阳光尽情曝晒”的风格。
刨除HDR特效之外,相对于DirectX 9.0b,DirectX 9.0C在画面的细节,精细度等方面已经可以看出差距。使用Shader Model 3.0进行编程的自由度比Shader Model 2.0要高许多,诸多厂家看到这一点后,便纷纷转投Shader Model3.0阵营。但以此时的开发程度,DirectX 9.0C游戏还无法彻底的将DirectX 9.0b游戏打压下去。
《英雄连:CompanyofHeroes》发布于2006年9月。笔者认为它可以算的上DirectX 9.0C“成熟运用”的代表作之一。
从去年中末期开始,相继发行了《英雄连》、《细胞分裂4》、《彩虹6号》等几个游戏,制作质量较初期的DirectX 9.0C游戏有着大幅度的提升。这些游戏细节清晰、画面细腻,也摆脱了以前那种暴光过度的HDR光源渲染模式。拿他们与使用DirectX 9.0b制作出的游戏比较,明显的要高出一个档次。DirectX 9.0C、Shader Model 3.0与HDR终归以自己的表现回击了当初那些“SM3.0、HDR无用”的言论。
DirectX 9.0C游戏的成熟期是从2006年第二季度末开始的,距离它的发布已经有两年的时候。但nVIDIA与Microsoft在去年底相继推出了第一款支持DirectX 10的显卡GeForce 8800与第一款支持DirectX 10的系统 VISTA。这样算来,DirectX 9.0C的“成熟期”只有短短的几个月。
至此,总结近几代的图形开发套件、3D API、游戏软件的发展史,不难得出一个貌似惊人的结论:在自由编程时代,当一种开发套件、3D API被充分开发、成熟应用的时候,也就是它寿命的尽头。
这也许是个令人难以接受的说法,其实只要转换立场去做思考,就可以轻松的解读出其中原由。随着图形领域的不断发展,各种型号的显卡性能差距也逐渐拉开。进入自由编程时代之后,游戏厂商必须要考虑几个问题:1、是否有可行的软件环境?(诸如DirectX、Shader Model、OpenGL)2、是否有可行的硬件平台?(能够支持它运行的显卡)当这两点都得到保证的时候,游戏才会经过一定的制作周期后出现到市面上。
因为对新的编程规则要有一段适应过程,初次使用新技术制作的游戏往往在制作上会比较保守。当游戏厂商充分掌握了新的技法的时候,就有可能会造成桎梏。这时发布新一代的开发组建、3D API就显得十分必要,对于显卡来说能够领先对方率先支持新的规格将对自己有利。此时的游戏厂商就需要再次考虑一开始的问题。由此,也构成了维系行业进步的一个循环。
这样的循环模式是必然的,自由编程时代的到来加深这个循环的深度,但整体上并不脱轨。反观今天出现的对技术与软件的焦虑,其实并不是哪一方面真的发展太快,更多的原因恐怕是现在弥漫着不纯竞争的行业氛围所带来的浮躁心情吧。
● 总结:DirectX 10—在无定则世界中必然的进化标志
Shader Model的革新本身是可以将程序员从繁杂的劳动中解脱出来,但有竞争的存在,就会有人背离它的实质,不惜几倍的辛劳去在Shader Model 2.0下制作类HDR特效。
DirectX 8之后的革新对自由编程时代有着莫大的意义,但是因为利益与私人情感的存在,“某某无用论”的说法层出不穷。
DirectX 10行业发展的必然,却经常可以听到“DirectX 10根本不适合游戏,即使是顶级的DirectX 10显卡运行DirectX 10游戏也只有不到10帧”。
游历于行业中,经常可以看到如同像上面所提到的“怪事”。其实就像开始所提到的“计算机是个多元的领域,无论是性能、应用、价格亦或是各种错综复杂的金钱利益都会对其产生影响”。几十年间,行业的本质没有改变,行业的发展却使我们必须要不断的考虑更多新因素,面对着无法用旧有规则解释的“怪事”,这个世界也变的更加复杂与陌生。
在这个多元化的世界,每条看似无法侵犯的规则在多种因素的影响下都有可能变成柔性的存在。我们该做的也许是静下心来重新审视这浮躁的一切。只有这样才能创造出新的游戏规则,引领进步的潮流。
技术的发展究竟在行业内有多少意义,这很难给出精确的答案。对于即将到来的DirectX 10时代有多少实际价值,这里不想多做评论。简单的举例:有时可以可以看到一些“打开Shader Model 3.0后变成幻灯片”的说法,这显然是将HDR特效与Shader Model 3.0的概念混淆了。提起“特效”,不免想起雾化效果。
在以前雾化是被当作令人惊叹的“特效”所对待,到了今天它已经变成了随处可见的“效果”。就像我们今天将HDR称为“特效”,是因为它的效果绚丽,因为它在DirectX 9.0C下开启将占用大量资源。但是到了DirectX 10,要实现HDR“效果”则轻松的多。特效与效果两个看似区分严格的词汇,虽只差一字,内涵却相差甚远,随着行业进步却它们却可以融会变通,在不同的时间内形容同一事物。
曾经有个关于进化的观点:“人类之所以能够在历史的长河中还能诞生时的形态,是因为他们懂得利用工具。工具的进步取代了人类肉体的进化,人类甚至有可能将可能的肉体进化当作疾病进行抹杀”。对于这个观点笔者是比较赞同的,如果拿人类的进化来对比行业的进化,技术的进步就该相当于工具的进步。
DirectX 10是行业进步的必然,保守的坚持着DirectX 9的终将成为行业进步的拖累,被未来淘汰。至于具体到DirectX 10软件/硬件环境的发展,我们可以通过编程时代的发展规律进行判读,而不应盲从各种毫无根据的流言。事实上,包括在近几日发布的nVIDIA G8X与将在夏天之前将会发布的几种显卡型号,已经标志着DirectX 10时代的大幕将于今年夏天拉开。作为近在咫尺的进化标志,DirectX 10的价值已不需多讲什么,究竟要做出怎样的选择,相信大家已经心里有数。