您的位置:电脑秀首页 > 评测室 > 产品评测 > 正文

特效更多?NV40重点技术Shader Model 3.0理论篇

PCSHOW.net 作者:PCShow.net·Monster 2004-05-18

  NVIDIA和FarCry

  从之前公布的画质比较来看,Shader Model 3.0和Shader Model 1.1相比确实有巨大的画质提升。我们最近已经看到很多使用Pixel Shader 2.0特效的游戏带来了更动人的游戏体验,而FarCry正是这些游戏之一。我们现在想知道的是,在Shader Model 3.0中是否有Shader Model 2.0所无法实现的特效。

  我们先来看看下面的表格,从中可以清楚的了解到Shader Model 3.0所具备的新功能。

Pixel Shader功能
Shader 2.0
Shader 3.0
描述

Shader长度

96

65535+

允许采用更复杂的阴影、光线和程序

动态分支

不支持

支持

通过跳过无关像素上的复杂着色以提高性能

Shader抗锯齿

不支持

内置派生指令

开发人员能够计算屏幕空间以调整着色频率或者进行多重采样处理,以降低画面失真

背面寄存器

不支持

支持

允许在一次处理工序中处理双面材质的光源

内插值色彩格式

最低8-bit整数

最低32-bit浮点

更高的颜色范围和色彩精度,允许采用顶点级别的高动态范围光源

多重渲染目标

可选

4个

允许高级光源算法,以节省过滤和顶点操作。能够以最低成本实现更多的光源处理

雾和镜面效果

固定8-bit功能

可自定义的fp16-fp32 shader程序

Shader Model 3.0让开发人员能够完全、精确的控制雾和镜面反射效果。在Shader Model 2.0中,这些效果都是固定的。

材质坐标数量

8

10

更多的per-pixel输入允许更逼真的渲染,尤其适合渲染皮肤。

  下面是Vertex Shader Model 2.0到Vertex Shader Model 3.0所作出的改变:

Vertex shader 功能
Shader 2.0
Shader 3.0
描述

Shader长度

256指令

65535指令

更多的指令允许更为细致的角色光源和动画处理

动态分支

不支持

支持

通过跳过无关像素上的复杂着色以提高性能

顶点材质

不支持

对多达4个的材质进行查找

允许置换贴图和粒子特效

支持实例

不支持

必须

允许使用一条指令绘制各种物体

  Shader长度和处理流程

  我们先看看Pixel和Vertex Shader的shader长度。在Pixel Shader 2.0中,shader长度能够达到96条指令,但是Pixel Shader 3.0将这一数字增加到了65535个,GeForce 6800Ultra的指令长度甚至是无限的。更长的指令意味着在游戏中,我们可以为每个像素应用更多的特效。尽管如此,使用长指令来编写shader程序并不是达到复杂特效的唯一手段,开发人员也可以使用多重处理流程来达到相同的效果。例如,我们可以在Pixel Shader 2.0中使用若干个指令长度为96的shader,并通过多重处理流程来达到长指令shader程序可以输出的画面。实际上,Radeon 9800系列都内建了F-Buffer以辅助shader多重处理流程。

  另外,实际情况是今年最受期待的游戏之一Half Life 2(采用了Shader Model 2.0),其shader长度也仅为30~40指令之间,距离Pixel Shader 2.0限制的96指令也还有一定距离。所以现在让我们迷惑的就是,运行Shader Model 2.0多重处理流程和运行Shader Model 3.0长shader指令之间的性能区别、GeForce 6系列显卡运行长指令shader的能力如何、Radeon系列显卡运行Shader Model 2.0多重处理流程能够达到什么程度。

  Shader分支

  现在我们看看Shader Model 3.0的新技术之一:动态分支。动态分支技术让程序员能够控制程序的实际流程,可以在合适的地方开始和停止程序代码而不是将shader程序从头到尾地执行。这或许能够带来更快的shader性能,不过并不会对画质带来任何改善。即时动态分支技术被应用到像素或者顶点程序中,这些代码也能够被拆开并在Shader Model 2.0中使用。动态分支技术确实有提升性能的可能,不过这也取决于GeForce 6系列处理动态分支的技术。

  SM3.0和置换贴图

  顶点材质查找(Vertex Texture Lookups)是Shader Model 3.0的主要进步之一,通过它可以实现置换贴图这样的功能。Shader Model 3.0和Shader Model 2.0之间可能存在的画质差异主要是由置换贴图的使用造成的。目前被广泛应用的凹凸贴图能够给人以物体材质高低不平的幻觉,但是材质本身仍然是平的,如果贴近物体观看就会显得很假。由于材质本身是平的,这也造成光线和阴影不能准确反射。通过处理材质的高度,置换贴图实际上增加了物体表面的细节程度;置换贴图甚至能够自行创建模型。置换贴图能够大幅度提高游戏画面的拟真程度,如果开发人员熟悉了该技术的使用,我们将从使用Shader Model 3.0的游戏和使用Shader Model 2.0的游戏画面中看出明显的区别。因此,置换贴图或许才是Shader Model 3.0决定性的优势所在。

  几何实例(Geometry Instancing)

  Shader Model 3.0的另一个功能“几何实例”能够带来值得一提的性能提升。通过使用该技术,游戏能够循环使用顶点缓冲中的信息,以创建以前使用过的物体。一个例子是在RPG(角色扮演)游戏中,当玩家控制一整支军队时,场景中的角色实际上都采用了相同的模型。通过几何实例技术,显卡只需要绘制其中一个角色,并复制出其它的角色,而不需要单独绘制每一个角色,这能够带来性能上的提升。这个功能也不会带来画质上的改变,只会影响性能。

  底线

  似乎Shader Model 3.0中的多数功能都是为了提升显卡性能,这一点非常不错。不过在Shader Model 3.0的新特性中,能够为游戏环境带来直接冲击的就是置换贴图技术了。置换贴图当然能够带来更高的游戏画质表现,NVIDIA已经在公布的FarCry屏幕截图中展示了这一点。不过对我们来说,游戏开发人员必须要积极使用这一功能才行。这种功能在Shader Model 2.0中也能在某种程度上被伪造,不过这和真正的置换贴图还是有区别的。

  就算是游戏开发人员也还不能确定Shader Model 3.0的能力。下面是EPIC公司的Tim Sweeney在谈到Shader Model 3.0的应用中所说的话:“我们应用了一些PS3.0代码,不过由于我们最近才拿到有SM3.0能力的硬件,所以还有很多可以优化性能,让PS3.0得到广泛应用的机会。”

  尽管目前看来,Shader Model 3.0的优势还不是很明显,Sweeney仍然认为SM3.0将会比现有技术好得多。他表示:“我们还不清楚SM 2.0和SM 3.0之间在画质和性能上究竟有多达的差距,不过我期望在18个月以后,Unreal Engine 3游戏发售的时候,目前的PS 2.0硬件都会成为相对低端的产品,只能在较低分辨率下运行降低了画质的游戏。Unreal Engine 3是为下一代个人电脑和下一代游戏机所开发的,因此它对显卡性能和功能的要求远远高于目前的主流硬件。”

  那么,关于SM3.0和NVIDIA到目前为止公布的比较结果,最重要的一点是什么呢?如果你正在使用的显卡不能支持SM2.0,例如GeForce FX以前的NVIDIA显卡或者Radeon 9500以前的显卡,如果需要想要享受最新的游戏画面,你将不得不对自己的显卡进行升级。如果你正在使用支持SM2.0的显卡,例如NVIDIA的GeForceFX系列或者ATI的Radeon 9500系列,以及更好的显卡,目前还没有必要为了获得更好的Shader Model质量而升级自己的显卡。不过如果你要求更好的抗锯齿、各项异性过滤以及更高解析度的游戏画面,那么升级是在所难免。

  我们很高兴看到NVIDIA再一次的作了“吃螃蟹者”,为游戏开发商带来了更新的和更好的创造方式,这也让NVIDIA能够在技术上领先ATI相当一阵子了。不容置疑,ATI凭借R300优异的DX9表现站稳了脚跟,NVIDIA率先对SM3.0提供支持也能够为GeForce 6系列GPU带来相似的影响。从过去的经验来看,直到相应的硬件产品上市以前,游戏开发商都不会广泛应用新技术。

匿名评论 登录后评论
[按 CTRL + ENTER 键快速发表评论]
返回页面顶部↑