20 世纪六、七十年代,受硬件条件的限制,图形显示器只是计算机输出的一种工具。限于硬件发展水平,人们只是纯粹从软件实现的角度来考虑图形用户界面的规范问题。图形用户界面国际标准GKS(GKS3D),PHIGS就是其中的典型代表。
20世纪80年代初期,出现GE(Geometry Engine)为标志的图形处理器。GE芯片的出现使得计算机图形学的发展进入图形处理器引导其发展的年代。GE的核心是四位向量的浮点运算。它可由一个寄存器定制码定制出不同功能,分别用于图形渲染流水线中,实现矩阵,裁剪,投影等运算。12个这样的GE单元可以完整地实现三维图形流水线的功能。芯片设计者James Clark以此为核心技术建立的SGI公司,基于SGI图形处理器功能的图形界面GL及其后的OpenGL,成为图形用户界面事实上的工业标准。
20世纪80年代和90年代,GE及其图形处理器功能不断增强和完善,使得图形处理功能逐渐从CPU向GPU转移。现代图形处理的流水线主要功能分为顺序处理的两个部分:第一部分对图元实施几何变化以及对图元属性进行处理(含部分光照计算);第二部分则是扫描转换进行光栅化以后完成一系列的图形绘制处理,包含各种光照效果和合成、纹理映射、遮挡处理、反混淆处理等。
20世纪90年代,NVIDIA进入个人电脑3D市场,并于1999年推出具有标志意义的图形处理器——GeForce 256,第一次在图形芯片上实现了3D几何变换和光照计算。此后GPU进入高速发展时期,平均每隔6个月就出现性能翻番的新的GPU。
从SGI的GE到NVIDIA的GeForce,GPU经历了20年,芯片的线宽从3μm缩小到90nm(2007年的GeForce 8800集成了6.81亿晶体管),集成电路的逻辑设计能力提高几千倍,但处理器数据通道接口带宽仅提高十几倍。同时对图形处理器计算能力的需求不断增长,出现了可编程的图形处理器,以NVIDIA和ATI为代表的GPU技术正是适应这种趋势。
而到目前为止,GPU已经过了六代的发展,每一代都拥有比前一代更强的性能和更完善的可编程架构。
第一代GPU(到1998为止)包括NVIDIA的TNT2,ATI的Rage和3dfx的Voodoo3。这些GPU拥有硬件三角形处理引擎,能处理具有1或2个纹理的像素,能够大大提高CPU处理3D图形的速度。但这一代图形硬件没有硬件T&L引擎,更多只是起到3D加速的作用,而且没有被冠以“GPU”的名字。
第二代GPU(1999-2000)包括NVIDIA的Geforce256和Geforce2,ATI的Radeon7500,S3的Savage3D。它们将T&L功能从CPU分离出来,实现了高速的顶点变换。相应的图形API即OpenGL和DirectX7都开始支持硬件顶点变换功能。这一代GPU的可配置性得到了加强,但不具备真正的可编程能力。
第三代GPU(2001)包括NVIDIA的Geforce3和Geforce4 Ti,微软的Xbox,及ATI的Radeon8500。这一代GPU首次引入了可编程性,即顶点级操作的可操作性,允许应用程序调用一组自定义指令序列来处理顶点数据,并可以将图形硬件的流水线作为流处理器来解释。也正是这个时候,基于GPU的通用计算开始出现。但是片段操作阶段仍然不具备可编程架构,只提供了更多的配置选项。开发人员可以利用DirectX8以及OpenGL扩展(ARB-vertex-program,NV-texture-shader 和 NV-register-combiner)来开发简单的顶点及片段着色程序。
第四代GPU(2003)包括NVIDIA的GeforceFX(具有CineFX架构),ATI的Radeon9700。相比上一代GPU,它们的象素级和顶点级操作的可编程性得到了大大的扩展,可以包含上千条指令,访问纹理的方式更为灵活,可以用做索引查找。最重要的是具备了对浮点格式的纹理的支持,不在限制在[0,1]范围内,从而可以做任意数组,这对于通用计算而言是一个重要突破。DirectX9和各种OpenGL扩展(ARB-vertex-program、ARB-fragment-program、NV-vertex-program2、NV-fragment-program)可以帮助开发人员利用这种特性来完成原本只能在GPU上进行的复杂顶点像素操作;Cg语言等其他高级语言在这一代GPU开始得到应用。
第五代GPU(2004)主要以NVIDIA GeForce6800为代表。NVIDIA GeForce 6800集成了2亿2千2百万晶体管,具有超标量的16条管线架构。功能相对以前更加丰富、灵活。顶点程序可以直接访问纹理,支持动态分支;象素着色器开始支持分支操作,包括循环和子函数调用,TMU支持64位浮点纹理的过滤和混合,ROP(象素输出单元)支持MRT(多目标渲染)等。
第六代GPU(2006)主要以NVIDIA GeForce 7800为代表。GPU内建的CineFX 4.0引擎,做了许多架构上的改良,提高许多常见可视化运算作业的速度,藉此支持更复杂的着色效果,且仍能维持最高的影像质量。新方案在每个管线层面运用许多创新技术:
· 重新设计的顶点着色单元,缩短几何坐标处理的设定与执行流程;
· 新开发的像素着色单元提供高出两倍的浮点运算效率,大幅提升其它数学运算的速度,提高处理流量;
· 先进的材质运算单元结合许多新型硬件算法以及更优异的快取机制,加快过滤与混色等运算作业。
NVIDIA CineFX 4.0引擎将许多突破性绘图技术融入顶点着色器、像素着色器、以及材质引擎的核心。藉由加快三角模型元素设定、像素着色器的关键数学元素、以及材质处理等方面的作业,最新引擎让3D绘图研发业者能达到更上一层楼效能与视觉质量。
而今年初NVIDIA发布的GeForce 8800正在引领下一代GPU的疾速风暴,G80核心拥有空前规模的6.81亿晶体管,是G71的2.5倍,而且依然采用90nm工艺制造,再加上高频率的12颗显存,使8800GTX拥有超强的性能。
上图就是NVIDIA为GeForce 8所设计的三大演示Demo之一的Water World,必须在Vista系统DX10模式下才能运行,通过这个Demo主要展示了G80完美的纹理渲染效果。岩石表面采用了多种变幻莫测的高精度纹理贴图,这些贴图还可以被流水润湿,即便是将镜头放大N倍,层次感强烈的贴图也不会出现失真的情况。这个Demo结合了G80强大的纹理渲染能力以及高效的全新各项异性过滤技术。