Submit News Tips | I4U Gadget Flyer | RSS Feed
I4U Shopping : Cool Gadgets and Consumer Electronics Store
 
HOT TOPICS: Nintendo Wii | Sony PS3 | Xbox 360 | Gadget Models

I4U Latest News

什么是Shader? 走进奇幻Shader世界

Topic: 技术前沿         ★★★★★

作者:Rowan    文章来源:本站原创    点击数:    更新时间:2007-7-10

编者按:这篇文章成文于2005年11月13日,发表在《大众硬件》杂志上。是一篇非常优秀的显卡技术文章。玩显卡很多年了,自认为对显卡还是有非常深刻的理解的。Shader自从它的出现,就对3D显示业界有着重大的影响。未来的Shader Model 4.0会成为新的主流。然而在2005年的时候,对于今天我又作了怎样的预测呢?


走进奇幻Shader世界

如果要提起显卡,提起游戏性能很多人都会首先想到显卡的一些基本性能指标。如,核心频率、显存容量、象素填充速度、三角形生成率等等。但是随着3D图形技术突飞猛进的发展,上面提到的一些性能指标已经远远不足评判一款显卡的优劣。因为显卡世界正在悄悄发生着变化,一个新词经常被人们提起——Shader。消费者在选购显卡时,Shader已经成为一项十分重要的考虑因素。今天我们就来谈谈显卡中的Shader技术。


先聊聊历史

可以说真正意义上的第一款3D加速卡诞生于1997年,那就是家喻户晓的第一代3Dfx Voodoo 3D加速卡。这款3D加速器仅仅能对象素和光栅进行处理。接下来不断有新的公司和团体加入到3D加速器的研发和技术研究中。在第一代Voodoo的基础上又推出了许多具有3D加速能力的显示卡。在这个群雄四起的年代,微软也制定出了自己的图形API接口DirectX。

(如图1,不同版本的Shader和DirectX游戏画面质量也不同。)

直到Geforce 256 GPU的出现,3D加速史才翻开了一个新的篇章。它是真正意义上的一款完全3D加速器,通过硬件级别的T&L转换和光照技术,自始至终为全部3D场景进行加速。由此图形显示卡又多了一个非常华丽的名字——GPU。

不久GeForce 2显卡诞生了,它虽然比GeForce 256有着更快的性能但是它的整体架构仍然没有太大的变化。3D游戏开发人员在编程时,只能利用显卡内置的一些简单的函数制作特效。当时支持DirectX7的游戏就是最好的例子,那些画面仅仅是简单的多边形和材质的堆砌。

几个月之后GeForce 3来了,它是第一代可编程的GPU。它允许游戏开发人员自己编写更为复杂更为逼真的程序,可以精细的控制游戏场景中每一个象素。这一重大突破随着支持DirectX8的游戏一起到来。每一位玩家都深刻的感受到了这股彭湃的浪潮,它就是第一代Shader标准v1.1。

在GeForce 3出台不久ATi的Radeon 8500也随之登场。由于它的研发起步较晚,它支持Shader的版本更高。当时已经有Shader v1.4版本出台,由此它也不折不扣的支持了当时最为先进的DirectX8.1规范。

等到NVIDIA发布GeForceFX系列显卡时,已经是DirectX9.0的时代了。又是由于起步较晚,ATi的Radeon 9700系列比NV的FX系列更完美的支持DX9,游戏性能大幅领先。但是NVIDIA也不是一无是处,FX系列支持的是Shader v2.0a。这个小写的a意味着它支持的是标准版的扩展,在很多方面要优于微软所要求的规格。

3D加速器发展到今天,GeForce系列已经更新到第6、7代了,他们都可以完美的支持DirectX9.0c和Shader v3.0。而ATi的Radeon X800系列的显卡虽然号称支持DirectX9.0c但是它仅仅支持Shader v2.0b。

什么是Shader?

很多人都明白象素、多边形、材质的意思,但始终对Shader一词难以理解。翻开字典Shader是阴影的意思,但它和3D加速卡又有怎样的关系呢?事实上Shader就是一段可以改变象素和顶点的小程序。因此在Shader规范模型中又划分出两个分支,一个叫作象素Shader(Pixel Shaders)一个叫作顶点Shader(Vertex Shaders)。这个Shader小程序可以为游戏场景添加一些基本的几何学特效。例如湖水的涟漪,它会让特定的蓝色材质发生移动、扭曲和倒映,这样就会给人波光粼粼的感觉了。若是要将一个物体渲染成玻璃的风格,它就会让一些材质发生透明和扭曲。Shader技术主要是应用在目前的电脑游戏当中,它让我们的电脑游戏画面更加逼真,现在的主流3D游戏画质要比几年前逼真很多。Shader是具有可编程性的,开发人员可以用它创造出非常图特的游戏场景。像NVIDIA和ATI的显卡都严格支持Shader的规格,并且为Shader程序作了很多优化。当然除了游戏的特效之外,游戏开发人员也可以用Shader作很多其他工作。总之Shader在未来的游戏中将发挥重大的作用。

(如图2,显卡中的Shader运算单元。)


目前Shader技术还处于一个迅速壮大的阶段,它的版本并不多。他们之间的区别也就比较容易归纳总结。其实每个新的Shader版本的出台都是一种修正,Shader指令的长度就曾经被反复修改。在早期的Shader中指令都是被分开独立执行。随着游戏越作越逼真,场景越作越复杂,Shader指令也变得长且复杂起来。并且为了支持最新的3D技术,在Shader中也要不断加入许多相应的新指令。最令游戏开发人员兴奋的是Shader越来越像是一套完备的编程语言了。例如,早期的v1.1版本中,每条指令只能单独执行。而到了v2.x时加入了跳转语句。到了v3.0版本时都可以使用动态的分支语句了。程序员可以使用“if”这样的判断句,这使得Shader程序更加灵活。在历代的Shader更新中,从v2.x到v3.0的变化最大。在v3.0中加入了独特的顶点材质检索功能,这使得Shader可以支持一种叫做“置换贴图”的高级材质贴图技术。

3D图形技术虽然在不断的革新,但是普通用户的购买力却并不像技术发展的那样快。因此并不是所有人都像硬件发烧友那样经常升级自己的硬件。NVIDIA是图形业界的大哥大,新的Shader v3.0出台了NV自然毫不犹豫的宣布支持。但是ATI却没有盲从跟风。

因为现在拥有支持Shader v3.0显卡的玩家只占有极少数的比例,游戏开发商并不想跟风支持最新的v3.0。游戏开发商首要顾及的是占绝大多数的老玩家。因此新游戏不会只支持最新的v3.0,它也会向下兼容。例如著名的《Far Cry》它的核心虽然使用的是Shader v3.0来编译程序,但是它也可以支持更低的Shader版本,只是在运行游戏的时候画质和速度都会大打折扣罢了。但是在一般玩家心中能玩总比无法运行要强。此后游戏开发商又放出了HDR高动态范围光照补丁。NVIDIA当时最新的GeForce 6系列优势也被发挥的淋漓尽致。

 

[1] [2] [3] [4] 下一页

 

发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口

  • 上一篇文章:
  • 下一篇文章:
  • 起居室变摄影棚 DIY摄影背景幕布
    mod地带:恶龙传说MOD主题机箱改造
     
    姓 名:

    评 分: 1分 2分 3分 4分 5分

    评 论: