“2006是一个造神的年代”——不知不觉中,2006年所剩的时间已经只能用几十小时来计算。在这一年里,发生了太多值得记忆,值得回味的事情。 每时每刻发生着的或大或小的变革,都将成为创造未来的基础。本文谨以技术的观点与大家一起探讨2007年显卡界内可能的发展趋势。
·1995年Microsoft发布GameSDK(初代Direct 3D)
·2002年中旬原ATI发布了首款directx9显卡Radeon9700
·2006年底,新一代操作系统Microsoft Vista发布,其中一项重要内容便是与之捆绑的DirectX 10。(第一代支持DX10的显卡NVIDIA Geforce 8800已于11月发布。)
DirectX已经陪伴我们走过了11年的时间。而Direct9是DX家族中寿命最长的版本,也是所有图形API中寿命最长的一个。直到今天,主流的DX9.0C依旧被应用在大量的新游戏/软件开发当中。但是随着技术的发展,DX9已经渐渐落伍下来。随着DX10的发布,DX9将渐渐的退出历史舞台。

DirectX 8渲染流程
自从DirectX 8时代开始,MS引入“可编程管道”概念。也带来了显卡史上最值得记载的变革之一。
在DirectX8那个短暂而安逸的春天里,人们开始憧憬着程度更高的光影效果与自由绘图。分离的可编程Pixel Shader(象素渲染单元,以下统称PS、PSU)与Vertex Shader(顶点渲染单元,以下统称VS)为这一切提供了可能。但事实上,我们并没有看到多少基于DX8的精彩的应用。Shader Model 1.0的诸多弊端严重的限制了“自由”的程度。也难怪有人评论“要在DirectX8实现自由,你就必须先背负上几倍于自由的分量”。

NVIDIA GeForce 3 TI系列显卡
T&L硬连线,早期的NVIDIA GeForce 3 TI系列上依旧保存着“固定管道”时代里才有的东西。就现在看来这些生硬与不协调的硬连线就像是枷锁一样,而GeForce 3 TI的存在就犹如“带着枷锁的自由”。这也能够部分的说明当时人们心里的矛盾。
今天我们经常会与人讨论ATI在Radeon X1000系列里采用的3PS:1TMU的架构的优劣。对于现在的游戏来说对象素渲染的需求要高于纹理渲染,但在directx8时代却是另一番景象。经典的TI4200采用了1PSU:2TMU的架构—这并非是因为那个时候所需要的纹理渲染比多,而是因为受到了Shader Model 1.0先天不足的限制。

DirectX 9
就在人们为Shader Model 1.0的种种缺陷而苦恼的时候,DirectX9闪电般的发布让人们为之振奋。Shader Model 2.0使得处理器具备了浮点处理能力,支持更长更精确的指令,能够更加精确的实现各种效果。此后,我们也彻底告别了像是T&L这样像的枷锁。
对于“CG工作者”,HLSL,GLSL,这几个单词怕都是耳熟能详的。而这一切,也受益于DirectX9的诞生。
在这个时期,M$与OpenGLARB分别推出了他们的图形语言HLSL与GLSL,NVIDIA更是融合两者开发出了C for Graphics——这也就是我们耳熟能详的单词——CG。他们的出现,对于后来有着极重要的意义。
作为DirectX8的继承者,DirectX9所实现的编程自由度要远高于他的前辈。由此,DirectX9也具备了前者所难以比拟的寿命。在后来,人们开发出了Shader Model3.0,也就是DirectX9.0C,在编程自由度上又有了大幅提升。直到今天,我们依旧受益于这样的变革。

DirectX 8时代人们期待的VTF效果
这里之所以提到DirectX8与DirectX9,是因为他们都是可编程分离式PS、VS架构的实践者。事实上,DirectX8时所梦想的东西,多数都在DirectX9时得以实现。这也从侧面上帮助DirectX9长时间保持先进性。
一个时代总有结束的时候,发展至今日,DirectX9已经凸显出诸多的弊端。应对越来越高的需求,PS与VS分离的设计,使得处理器经常处于一方繁忙而一方空闲的状况。这就造成了极大的资源浪费。Shader Model 3.0面对着更高的需求,渐渐显的捉襟见肘。
directx9已经发展到末期,为此,MS推出了新一代的DirectX 10与Shader Model 4.0。
Shader Model 4.0在各项规格上又有了新的跃升,编程的自由度提高到了空前的高度,程序员有了更大的发挥的空间。此外SM4.0开始支持硬件层面上的RGBE,在此基础上可以轻松实现HDR特效。
DX10带来了多项革新,在我们看来,其中最重要的是统一渲染架构 (Unified Shader),Physics(物理加速)技术,以及新引入的Geometry Shader(几何渲染)、与流输出流程。
可编程PS与VS的引入是DirectX8以及后继DirectX9的最大的特点之一,但在统一渲染架构中他们将不会继续存在。事实上,DX10依旧有象素渲染与顶点渲染的阶段,而且它的自由度要比DX9更高。统一渲染的目的并非是消灭PS与VS,而是将之替换为功能更加灵活的“多能单元”,极大的提升处理器的渲染效率。这样的好处便是程序员在编程时不必顾忌显卡PS与VS的分配—有多少PS就有多少VS。

DirectX 10渲染流程
Geometry Shader是DX10中新引入的工作流程,同样也属于可编程的部分。它可以为 3D 场景创建几何对象。可利用它来生成多种效果。使用这一功能强大的新增着色类型,可完成例如阴影锥、毛皮、鱼鳍、程序几何、细节、GPU 粒子系统等效果。这些处理将在GPU中完成,不会占用CPU。大幅度减少渲染中GPU对CPU的需求。
此外,DX10还首次引入了流输出阶段。这是一个固化不可编程阶段,通过此阶段,可将“顶点着色”阶段或“几何着色”阶段(根据管道配置而定)生成的顶点数据读回到管道中,以供另一通道使用。这不必占用 CPU。或者,将数据复制到资源中,由 CPU 进一步处理。它的存在,使得GPU效率进一步提升并进一步减少GPU对CPU的依赖成为可能。
Physics(物理加速),顾名思义,它针对的是对于渲染物体的物理状态。举个简单的例子,用不含Physics技术的显卡来渲染一颗子弹从静止到射出的过程(这本身是个物理状态变化)。如果是一颗粒子弹,当然可以轻松应对。如果是十几颗、几十颗或者上百颗,高端卡还能凑合,低端卡就开始有被虐待的感觉了吧?假如换上著名的格林机枪,每秒可以射出几百到上千发子弹,究竟有谁能够流畅的渲染的了这样的场景?
在以前,物理加速都是由GPU做预处理后交由CPU进行运算,再反馈到游戏中。这些数据多是浮点格式,对于浮点运算能力有限的CPU(CPU的浮点运算能力要比GPU低很多)来说,如果遇到大量的物理运算的数据,便会显得很是无能。Physics技术的存在,便提供了一种可能的解决方案。那便是直接利用GPU的浮点处理能力去代替CPU处理这些数据,使得系统处理物理数据的能力有了巨幅提升(尤其是在多GPU系统里)。

电影般的爆炸效果
众多战争题材的游戏里,现在我们能够实现同时几枚导弹或者几颗子弹同时攻击的效果。不知你有没有想过,有了具有物理加速能力的GPU,我们有朝一日会用民用显卡渲染出真实的千军万马同时驰骋战场壮观场面?
作为最长寿命的DirectX9的取代者,毫无疑问它的关注度将是2007年的NO.1。
看到8800GTX你的第一反应是什么?是巨大无比的体积?是巨大到即使高端民用电源也不一定伺候的顺畅的耗电量?是虽没到难以接受的程度,却也维持在高水平的发热?还是大到ZALMAN ZV9都不能完全遮盖过来的核心面积?

| 相关新闻 | 热点新闻 |
| 没有相关新闻 |