从固定图形管线到可编程流处理器

计算机图形系统的发展以提供更快的图形数据处理和更真实的视觉效果为目标!

基于光栅化(Rasterization)图形管线如图-2所示,图中下部虚线部分数据流向代表固定图形管线。应用程序通过点、线、多边形等几何图元构建出物理模型或可视化的数据结构,这些模型最后表示成具有对象空间坐标、法向量、颜色、纹理坐标等属性的顶点集(Vertex)。对顶点进行坐标变换、光照计算后,图元装配和光栅化操作对几何图元进行纹理和颜色的插值,生成和窗口屏幕像素相对应的片元集(Fragment)。片元集具有窗口坐标、颜色、纹理坐标、雾化坐标等属性,每个片元经过纹理应用颜色混合以及雾化等操作后计算出片元最终颜色和深度。通过模板、深度、透明混合等测试的片元最终写入帧缓存中显示出来。   

从固定图形管线到可编程流处理器_第1张图片


图-2


从图形学算法到图形库函数再到硬件图形管线,图形处理器用硬件固化算法,加速数据流处理;从固定图形管线到可编程图形管线,图形处理器不断提高其数据处理的灵活性以满足更复杂但更真实的图形效果。经过大致三个阶段的演变,图形处理器已发展成计算机系统中专注图形应用而兼顾数据流处理的高性能协处理器。

大致在1998 年后期, 以Nvidia TNT2、ATI Rage 和3DFX Voodoo3为代表的图形芯片支持多纹理操作,在光栅化过程中完成多幅纹理的融合操作。1999 年后期,以Nvidia GeForce256、GeForce 2 和ATI Radeon 7500为代表的图形芯片可以处理顶点的矩阵变换和进行光照计算。这一时期,图形特性的固化和硬件加速是图形处理器设计的方向,这一阶段的图形处理器特点是“固定图形管线(Fix Function)”。

但很快就发现,照这样的方向发展下去,不断增加的图形新特性将会使得图形库和图形处理器设计不堪重负。同时,有限的特性终究束缚了图形应用开发者的手脚,不能满足人们对更真实的场景和更绚丽的动画效果的需求。2001年底和2002年初,以Nvidia和ATI为代表的主流图形处理器厂商将硬件图形管线的流水线作为流处理器来解释,顶点级出现可编程性,片元级出现有限的可编程能力。这一重要的变革使图形芯片成为真正意义的图形处理器,这一时期的处理器有Nvidia GeForce3、GeForce4和ATI Radeon 8500。2003年Nvidia GeForce FX 系列和ATI Radeon 9700/9800最终通用化了顶点和片元级可编程能力。固定的图形管线中顶点的光照和坐标变换由顶点程序取代,片元的颜色融合及纹理操作由片元程序取代,固定图形管线演变为可编程图形管线,如图-2上部实线所示。人们可以在顶点和片元两个级别上编程实现灵活的处理,满足不同的要求。顶点和片元程序在图形应用中统称为渲染程序(Shader)。以及后来的GeForce 6x、7x系列和相应的ATI 5xx核心的处理器都是沿着扩展图形可编程能力的方向发展,这一阶段图形处理器的特点是“可编程图形管线(Programable Pipleline)”。

随着通用可编程能力的提高,图形处理器迎来新的变革与发展,顶点处理和片元处理在统一的硬件处理单元上执行,体系结构更加通用化,如Nvidia G8x 和 AMD/ATI R6xx。由图形处理器衍生出的协处理器,将会提升个人电脑的并行计算能力。这个阶段的图形处理器的特点是“数据流通用计算(GPGPU)”。

你可能感兴趣的:(数据结构,编程,算法,图形,GPGPU,shader)