在看完 1980、1990 年代错综复杂的 2D 图形发展之后,接下来我们要进入当今显示适配器主要的用途-3D 立体图形的世界了。

还没有 3D 图形加速卡的时代

首先我要特别强调,本篇所谓的「3D 图形」指的是「实时运算 3D 物体的外观并显示在屏幕上」的意思,并不是指单纯的立体图形 (立体图形并不是后来才有的东西,差不多早在计算机可以显示图形以后不久,就可以在计算机屏幕上见到所谓的 3D 立体图形了,因为其实静态的 3D 立体图形只是角度改变跟上了光影的 2D 图形罢了)。

所以在还没有发展出独立的 3D 图形加速卡之前,实际上计算机就已经有能力进行 3D 物体外观的实时运算了 (当时没有特化的专用芯片,所以是通通丢给 CPU 负责),只是速度慢到人们难以接受的地步而已,更别提要搞出动画效果或是看起来像影片顺畅拨放的等级了。

3D 图形 API 的发展

在 1980 年以前,基本上要开发一套可以在各种系统之间通用的 2D、3D 图形程序是非常困难的,因为每台计算机使用的显示设备可能都不一样,每家图形芯片厂商设计出来的产品具备的特性也各有不同,因此在 1980 年代的软件工程师得针对各式各样的计算机撰写不同的程序代码版本,这显然是很浪费精神与体力的一件事情。

还记得前面我们提过在 Windows 3.0 时期,微软在操作系统中加入了 GDI 这玩意儿吗?从那之后厂商们只需要针对 GDI 这个 API 接口进行优化,并撰写驱动程序给操作系统用来负责硬件与 GDI 层之间的通讯即可,这让显示适配器的通用性与开发难度都获得了相当程度的改善。

而在 3D 图形的世界里人们也做了类似的事情,从早期的各自为政开始逐步发展为几套大家共同使用的 3D 图形 API,在开始介绍 3D 图形之前我想先谈谈这些当今或历史上曾经扮演重要角色的 API (不过我在这边只先谈发展缘起,各版本的功能在之后介绍显示适配器时才会点到)。

早期的 3D 图形 API-PHIGS 与 IRIS GL

在 1990 年代初期,实时 3D 图形演算基本上还没有进入个人计算机领域,而当时在工作站与服务器的世界里最主要使用的 3D 图形 API 有 PHIGS 与 IRIS GL 两种。

IRIS GL

显卡的发展史概括(显卡发展史-3D图形)(1)

IRIS GL 由当时业界的领导者 Silicon Graphics, Inc. (SGI,是一家成立于 1981 年的公司,以设计绘图工作站与专业绘图领域芯片闻名,后于 2009 年申请破产保护并被一家叫做 Rackable Systems 的公司所并吞) 所提出,全称为 Integrated Raster Imaging System Graphics Library,是一款私有的 (封闭原始码) 2D/3D 图形 API,主要用于 SGI 自家的 IRIS 绘图工作站上 (基于 MIPS 架构,使用 SGI 自家发展的 IRIX 操作系统)。

PHIGS

而全称为 Programmer's Hierarchical Interactive Graphics System 的 PHIGS 则是 IRIS GL 最主要的竞争对手,这款 API 最大的特色是 PHIGS 是一款开放的 API 标准因此获得不少大厂的支持 (特别是 SGI 的竞争对手),许多知名科技大厂都有推出自家产品适用的 PHIGS 版本,例如 IBM 的 graPHIGS、Sun 的 SunPHIGS 等。

显卡的发展史概括(显卡发展史-3D图形)(2)

这两款 API 在 1995 年以前互有竞争,而 PHIGS 更是在 1997 年正式成为了国际 ISO 标准 (ISO/IEC 9592;1997),但 PHIGS 最终因为不支持立即模式 (Immediate Mode,指工作站接收到绘图指令后就立即使用几何图形产生器绘制出物体图形的能力) 与使用上比起 IRIS GL 来说困难、复杂许多 (我想从英文全名上就看得出这点了 XD),因此在接下来的发展中渐渐没落。

跨平台的代表-OpenGL

显卡的发展史概括(显卡发展史-3D图形)(3)

OpenGL 最早发布于 1992 年 01 月 (距离个人计算机进入 3D 图形加速时代还有好几年的时间),一开始是由 SGI 发展,主要是当时 SGI 将自家的 IRIS GL 简化与整理后的产物,因此 OpenGL 早期的版本与 IRIS GL 有着颇高的相似度。

OpenGL 与 IRIS GL 初期主要的差异是将 IRIS GL 内与 3D 图形较无关联或牵涉到授权协议的部分移除 (例如键盘、鼠标与窗口 API 等) 并改为开放标准,并且在文件的完善程度与标准化、一致性上比起 IRIS GL 来说有了大幅度的改进,这些因素加上 PHIGS 先天的一些弱点与使用上的困难,使得 OpenGL 得以在之后彻底击败 PHIGS,成为 3D 图形中主流的 API 之一,至于原有的 IRIS GL 则转型成为工业标准且维持私有授权的 OpenGL 特殊用途版本。

时至今日,OpenGL 仍然几乎可以说是唯一能够横跨各大平台的实时 3D 图形标准,用于嵌入式装置的特殊版本 OpenGL-ES 更是广泛地受到手机等行动装置的支持。

Windows 限定-DirectX

显卡的发展史概括(显卡发展史-3D图形)(4)

有在玩游戏的人应该对 DirectX 这个名词不陌生吧?DirectX 是微软在 1995 年为了提高开发者针对 Windows 9x 平台制作多媒体程序的意愿 (因为在 Windows 底下直接命令硬件做事不如在 DOS 底下容易) 而设计的「一大票」API 的总称,从 Windows 95 OSR2 开始内建至系统中,成为重要系统组件之一。

DirectX 的全称是 Direct eXtensions,顾名思义是用来向开发者提供让它们得以直接透过程序对硬件下达指令,让开发难度合理地降低并解决在 Windows 3.1 时代使用 WinG API 时多媒体程序效率不彰且不稳定的问题,并取代 Windows 3.x 下仅有存取画面缓冲区 (Frame Buffer) 功能的 DCI (Display Control Interface)。

DirectX 在 2006 年以前主要由下面这些组件组成:

· Direct3D用于 3D 图形实时绘图,接下来我们主要讨论的重点大多在这里。

· DirectDraw用于 2D 图形实时绘图。

· DirectSound用于播放与录制音讯,与声卡比较有关。

· DirectInput用于处理键盘、鼠标或游戏杆等输入设备的接口。

· DirectPlay用于提供局域网络或因特网间的通讯服务。

· DirectMusic建立在 DirectSound 的基础上,主要用于方便使用硬件加速功能拨放与制作一些音效效果。

显卡的发展史概括(显卡发展史-3D图形)(5)

早期的 DirectX 在推广上并没有很顺利,某种程度上是因为当时的开发者们担心 DirectX 最后会不会如同 WinG 一样被微软快速地放弃,因此即便 Direct3D 早在 DirectX 2.0 中就已经出现,但采用的软件其实并不多,主要还是以 OpenGL 为主,DirectX 真正要被开发者接受要等到 1997 年的 DirectX 3.0 (下图就是以 DirectX 3.0 制作的游戏)。

显卡的发展史概括(显卡发展史-3D图形)(6)

当时微软内部的定位是将 OpenGL 视为专业高性能、高画质工作站的图形运算解决方案 (仅内建于 Windows NT,但 Windows 95 可以透过安装套件补上),DirectX 的目标市场则是较为轻量化、主要用于消费性市场的解决方案 (主要由 Windows 95 部门推行,但 Windows NT 也支持),一方面也确实由于 DirectX 的多媒体功能较丰富,但 OpenGL 的绘图演算功能较强,彼此各有长处因此 DirectX 与 OpenGL 之间的竞争还不算太激烈。

而随着 OpenGL 逐步补强自己在多媒体功能方面的不足,DirectX 也将自己的绘图演算功能不断强化,两者之间的竞争难免逐渐浮上台面,但这次微软一反常态的并未利用在 Windows 的市占率来让开发者转向 DirectX,反而是选择对 OpenGL 提供支持,这让开发者得以同时混用两大阵营的 API,例如使用 OpenGL 进行图形渲染却搭配 DirectInput 来处理游戏杆输入的部分。

至于具备 DirectX 硬件加速能力的图形加速卡则主要是从 1997 年的 DirectX 5.0 开始大量出现的 (DirectX 4.0 与 5.0 同时间开始开发,但由于 DirectX 4.0 的改进内容有限因此没有太多厂商感兴趣,最终被微软直接跳过),而第一批图形加速卡大多不支持 OpenGL,主要原因就是前面提过的定位问题。

至今 DirectX 仍然是 Windows 系统的重要核心组件之一,不过架构设计与内容和早期版本已有相当大程度的不同。

如烟火般灿烂却转瞬即逝-Glide

显卡的发展史概括(显卡发展史-3D图形)(7)

虽然还没有正式介绍这间在个人计算机 3D 图形加速发展过程中数一数二重要的公司-3dfx,但既然谈到 API 就不得不把 Glide 这款曾经在数年之内成为图形 API 界的王者,之后又在很短的时间之内被 DirectX 与 OpenGL 打得一败涂地的 Glide API。

Glide API 与 OpenGL 有一定程度的相似,某种程度上可以视为 OpenGL 的简化版本 (也就是将 OpenGL 比较少用的功能拿掉),因此除了轻量化得以很快速的设计出适用的图形加速芯片之外,还保有着 OpenGL 易于使用的特性,由于 1990 年代后半 3dfx 推出的 Voodoo 系列成为了当时 3D 图形加速器界的龙头,因此其内建支持的 Glide API 也自然而然得到了广泛的运用。

至于造成 Glide API 在目前已经彻底销声匿迹的主要原因是当时 3dfx 选择将 Glide 保有为旗下的私有标准,禁止任何厂商以模仿或模拟的方式提供 Glide API,并且高度依赖 3dfx 自家的 Voodoo 系列芯片设计而难以移植,再加上 3dfx 在软件改进方面始终着墨甚少,Glide API 进入 3.0 之后几乎就没有任何改进,最终在功能上也被 DirectX 与 OpenGL 远远甩在后头。

在这些因素的结合之下,从 1998 年开始 Glide API 的热潮就迅速衰退,而 1999 年 (也就是 3dfx 被 NVIDIA 收购前一年) 更没有任何纯粹使用 Glide API 的游戏推出,即便在同年 3dfx 宣布开放 Glide API 也未能扭转任何情势,在被亲近 Direct3D 阵营的 NVIDIA 收购之后,Glide API 的发展也正式结束。

从 2D 图形加速到 3D 图形加速

「把 3D 图形运算丢给 CPU 做,2D 图形运算给专门的图形加速卡做」,这句话从我们现在的眼光看起来应该是蛮奇怪的吧?照理说 3D 图形运算的数据量应该比起 2D 来说成长了无数倍才是。

不过其实厂商们并不是「不想做 3D 图形加速卡」,而是还没有能力做或正常人还买不起。 (1980 年代以前的 3D 图形加速卡基本上只有服务器或工作站会用,价格极为高昂,地位跟今天的 Xeon Phi、Tesla 差不多),不过科技的发展并不会因为这样而停下脚步。

那些 2D 当 3D 用的显示适配器们

在 1990 年代上半人们开始渐渐对个人计算机 3D 图形有比较明显的需求时,厂商们 (包含 ATI、Trident、S3 Graphics) 一开始想到的方式是将现有的 2D 图形加速卡延伸,让它们能够具备部分 3D 图形加速卡的能力 (通常是先朝着影片硬件译码能力的方向前进),不过这样的作法造成的结果相当明确-这类产品的效能几乎都差到只足以被称之为「笑能」,也因为这样许多在 2D 时代叱咤风云的厂商在进入 3D 时代时都踢到了铁板,甚至一厥不振的例子也不少。

Trident Microsystems, Inc.

显卡的发展史概括(显卡发展史-3D图形)(8)

由于这个时期里 Trident (泰鼎微系统) 的历史已经差不多走到尾声了,所以我就先把它提出来讲吧,在进入 3D 时代的时候 (1995 年附近),Trident 已经被 S3 Graphics 的步步进逼搞到几乎已经失去作为一家显示芯片主流厂商的地位,虽然变得很「边缘」,但一直都没有真正在市场上完全消失,所以接下来要看的可以说是 Trident 在退出主流之后一连串试图救亡图存过程的奋斗史。

3DImage 9750、9850

发布时间:1997 年

这是大多数人认知上第一款由 Trident 推出的 3D 图形加速芯片,不过在开始看这款产品之前,我想先谈谈 Trident 在发展 3D 图形技术的过程。

显卡的发展史概括(显卡发展史-3D图形)(9)

其实 3DImage 9750/9850 并不是 Trident 第一次推出 3D 图形加速芯片,早在 1995 年 Trident 就曾经推出这类产品,型号则是 T3D2000,据说可以支持高达 16 MB 的 WRAM 与 64-bit 3D 图形运算能力与 OpenGL,从规格上看起来在当时可是一款相当有希望让 Trident 重返荣耀的产品,不过不知怎么回事现在能找到的资料就只有 Trident 当时发的新闻稿 (而且还是在澳洲的国家图书馆网站找到的),完全没有任何实体图与纪录可考,似乎是完全没被任何显示适配器厂商采用的样子 (不晓得是不是因为大家对 Trident 的刻板印象就是低阶产品的缘故?)。

而在 T3D2000 之后 Trident 还以其为基础发展了后续的 T3D9692 与 ProVidia 9695,使用较低价的 EDO 内存,每秒可以运算产出超过五十万个三角形,不过与 T3D2000 一样,除了发布新闻稿以外找不到任何数据,让我真的有点怀疑这些东西是不是真的存在过。

回到 3DImage 9750/9850 本身,这款芯片其实没有太多值得大书特书的地方,本质上它仍然只是一款 2D 图形加速芯片,与前面提过的那三款「传说中」的 Trident 产品几乎没有任何血缘关系,反而比较接近上代的 2D 图形加速卡-TGUI9680 (前者与后者的主要差异为前者有 PCI 与 AGP 版本,后者有 AGP2X 版本且速度较快)。

值得注意的是,3DImage 9750/9850 并不支持任何 OpenGL 特性,在 DirectX 5.0 方面的支持度也不算完整,在影片解碼方面则可以处理 MPEG-1、MPEG-2、Indeo、Cinepak 四种格式,整体来说 3DImage 9750/9850 的 3D 图形功能连堪用等级都达不到,在使用过程中会持续有相当明显的破图现象出现,下面这段影片是以 3DImage 9750 执行当时的显示适配器效能测试软件的纪录:

如果你拿 3DImage 9750 来玩游戏的话,画面则会是这样的:

至于较高阶的 3DImage 9850 得到的评价似乎比 3DImage 9750 还要来得好「一些」,举例来说大概有这几种说法:

· 「至少画面是从头到尾都这么烂而不是一直闪烁了,在 3DImage 9750 上闪到我眼睛都快瞎掉了」

· 「比起画面的流畅度,对于这系列来说画出来的图正不正确才是我们真正关心问题」

· 「画面看起来稳定些了,但跳动的多边形与破图问题仍然清晰可见」

不过 3DImage 系列也不是那么一无是处,由于它们确实很便宜,因此在市场上被分为高阶且昂贵的 AGP 3D 图形加速卡与价格仍然偏高却已经是上代产品的 PCI 2D 显示适配器 (主要由 ATI、Tseng Labs 等提供) 两大块时,3DImage 系列作为当时唯一可以压在 100 美元以下的 AGP 「2D」 显示适配器来说确实杀出了一条血路,让 Trident 得以继续活着度过这个时期。

嗯?「2D 显示适配器」?笔者我可没打错字,当时的部分媒体真的就这样直接无视掉这款产品别脚的 3D 图形功能了,当年 Anandtech 给的评语是这样的:So you've bought this expensive AGP motherboard, but you don't really NEED any 3D acceleration…at the same time you don't want to be confined to a piece of shhh…PCI video card, what are you to do? Trident may have the answer.

基本上可以说是 PCI 接口的大厂 2D 显示适配器降价太慢救了 Trident 一命,接下来的 1998 年之中,Trident 没有推出任何产品,静静地准备下次试图用于绝地反攻的武器-真正的 3D 图形加速卡 Blade 3D 系列。

ATI Technologies, Inc.

显卡的发展史概括(显卡发展史-3D图形)(10)

接下来我想谈的是以后几乎在每篇当中都能占有篇幅的 ATI,在收购 Tseng Labs 之前 ATI 就已经进入个人计算机 3D 实时绘图的领域了,最早的相关产品可以追溯至 1995 年,与 Trident 不同,ATI 还是老样子走比较高价位、高等级的路线,因此 Trident 与 ATI 之间的竞争关系不算。

ATI 3D Rage (Mach64 GT)

发布年代:1995 年 11 月理论像素填充率:40 MPixel/s理论材质填充率:40 MTexel/sAPI 支持等级:Direct3D 5.0 (「非常」不完整)、OpenGL 1.0 (仅软件、2D)

显卡的发展史概括(显卡发展史-3D图形)(11)

第一代 3D Rage 是 ATI 旗下第一款可以支持部分 3D 图形加速功能的产品,如同 Trident 一般 ATI 也选择了以原有的 2D 图形加速芯片作为基础来延伸出自家的第一款 3D 图形加速芯片,3D Rage 的核心基本上就只是改进版本的 Mach64 (称为 Mach64 GT),使用此款芯片的首款显示适配器以 ATI 3D Xpression 为名发售,最高提供 2 MB 的 EDO 显示内存。

显卡的发展史概括(显卡发展史-3D图形)(12)

从前面的叙述我们可以知道,3D Rage 本质上其实根本就依然只是一张 2D 图形加速卡,不过当时 ATI 在宣传的时候是特别强调了这款芯片的 3D 处理能力足以「远远将对手甩在后头」,但实际上并无法完整支持 Direct3D API (某种程度上与微软后来将新版 DirectX 延期并纳入许多额外的改变有关),因此 3D Rage 的兼容性表现可说是相当地差劲,许多当时推出的新游戏都无法在 3D Rage 上获得充分发挥 (即便 ATI 在那些后来纳入的功能以外的部分都做得还不错),种种缺点迭加以后几乎可说是与 2D 图形加速卡没两样了,这也造成了初代 3D Rage 的市场表现并不成功。

ATI 3D Rage II (Mach64 GT-B)

发布年代:1996 年 09 月理论像素填充率:60 MPixel/s理论材质填充率:60 MTexel/sAPI 支持等级:Direct3D 5.0 (不完整)、OpenGL 1.0 (仅软件、2D)

显卡的发展史概括(显卡发展史-3D图形)(13)

由于 ATI 自己也很清楚 3D Rage 有着难以解决且无法忽视的兼容性问题,因此在来年 ATI 就推出了第二代的 3D Rage II,同样是以 Mach64 为基础,但经过大幅度的修改与重新设计及运作频率拉高 1.5 倍,在像素与材质的理论填充率上都是上代的 1.5 倍,显示内存容量最高可以高达 8 MB 的 SDR SDRAM,带宽也从原本的 0.32 GB/s 翻倍为 0.664 GB/s,整体下来 3D 图形的性能几乎翻了一倍,是相当明显的提升。

更重要的是在 3D Rage II 上 ATI 针对驱动程序能够调控的部分与支持的 API 进行了补强 (特别是补上了上代产品缺乏的硬件深度缓冲区 Z-buffer),因此在 3D Rage II 上使用 Direct3D 等 API 已经没有太大的问题,也能透过第三方驱动程序来搭配 OpenGL 使用,并纳入了对 MPEG-2 影片硬件译码的支持。

显卡的发展史概括(显卡发展史-3D图形)(14)

之后 ATI 又针对 3D Rage II 陆续推出了 II 、II DVD 与 IIc 等衍伸改进版本,在三角形生成能力上有了一些幅度不小的改进,但在材质对应效率不高与深度缓冲区的改进方面则没有太大长进,要留待下一代 Rage Pro 才有比较大的改变,因此也有不少人认为 Rage Pro 才是 ATI 第一张真正的 3D 图形加速卡。

S3 Graphics

显卡的发展史概括(显卡发展史-3D图形)(15)

接下来本篇要谈的最后一个厂商是在 1990 年代后半扮演个人计算机 2D 图形世界霸主角色的 S3 Graphics,在过去几年内有着爆炸性成长的 S3 Graphics 在进入 3D 时代时踢到了一块非常大的铁板。

S3 ViRGE

发布年代:1996 年 07 月API 支持等级:Direct3D 5.0、OpenGL 1.0 (仅软件)

显卡的发展史概括(显卡发展史-3D图形)(16)

OLYMPUS DIGITAL CAMERA

ViRGE (Video and Rendering Graphics Engine) 是 S3 第一款同时可以作为 2D 与 3D 图形加速芯片的产品,而 S3 也采用了类似 ATI 与 Trident 的作法,也就是使用现有的 2D 图形加速芯片进行延伸以寻求快速发展新的 3D 图形加速器,因此 ViRGE 是使用 S3 Graphics 旗下最具盛名的 Trio64V 改进而来。

在 ViRGE 上,S3 Graphics 使用了与 ATI 与 Trident 相似的作法,而最终 S3 Graphics 也尝到了差不多的结果,那就是这张卡实际上根本只有 2D 图形加速卡的功能,3D 图形的部分根本就不堪用 (不过 S3 Graphics 的状况应该是这三家公司之中最好的,因为 ViRGE 的 3D 图形演算慢归慢但不至于都是破图与错误,也没有发生重大的兼容性问题,再加上 S3 Graphics 在 2D 图形方面的实力确实坚强),最终使得大多数选购这系列显示适配器的人都只把 ViRGE 当成一般的 2D 图形加速卡使用,下面的影片就是以 ViRGE 玩游戏的实际状况:

而在 1996 到 1998 年之间,S3 Graphics 仍然陆续为 ViRGE 系列推出后续的衍生版本,例如 ViRGE/DX 将内建的三线性过滤功能速度提升并改进了透视补正的功能、ViRGE/GX 则是增加对新式 SDRAM 显示内存的支持能力,后续的小改版 ViRGE/GX2 (下图) 则又增加了对 AGP 接口的支持 (算是世界上最早一批支持 AGP 接口的显示适配器,不过由于太早推出因此与正式公告的 AGP 标准有一些出入)。

显卡的发展史概括(显卡发展史-3D图形)(17)

至于 S3 Graphics 真正够格的 3D 图形加速卡,则是要等到 1998 年的 Savage 3D 系列才能见到。

在看完 1990 年代那些「准」3D 图形加速卡之后,现在我们终于要进入「真。3D 图形加速卡」的时代了,首先要看的是 1990 年代末期到 21 世纪初的部分,除此之外在本篇当中还有两家非常重要且众所皆知的公司将首次在本系列中登场。

,