安徽理工大学电气与信息工程学院 鲁孝平
显卡的工作原理
安徽理工大学电气与信息工程学院 鲁孝平
本文介绍了显卡的工作原理,详细阐述其四个工作步骤几何处理、光栅化、像素渲染、ROP后端输出的概念及工作原理。提出显卡工作过程中出现的问题并给予解决方案。通过图像清晰明了地表达了其工作原理。
显卡;几何处理;光栅化;像素渲染;后端
显卡简称GPU,是组成计算机硬件系统的重要一环,主要负责计算机显示图像输出。它通过与CPU的精密配合,绘制出一幅幅精美的画面。现代GPU工作任务主要包括几何处理,光栅化,像素渲染,ROP输出这四个步骤。本文就通过对这四个步骤的详细阐述来展示GPU是如何工作的。
整个流程的第一步是几何处理,它的作用是把抽象的数学公式转化为电脑屏幕前栩栩如生的形象轮廓。对于编程者来说,任何显示在电脑屏幕上的图像信息。都使由诸多复杂的数学公式来表示的,通过这些数学公式可以将程序员脑海中的复杂图像,在一个三维坐标系中展现出来,把物体表面一些重要的关键点在通过数学公式映射在坐标系中,并通过一定的规则将这些离散的坐标点连起来,这样就形成了一个在虚拟空间中的物体几何轮廓,最后在通过对相应坐标点的位置变换,从而实现物体运动的表现。[1]
这些处于虚拟空间中的坐标点我们称之为多边形顶点,而GPU的工作就是将代码中所描述的顶点参数映射到虚拟空间的坐标系中。首先CPU通过数学运算将程序中抽象的数学运算,翻译成具体的顶点坐标,之后GPU则将这些顶点坐标一一描绘到虚拟空间的坐标系中,再根据预先设定的规则讲这些顶点连接起来从而实现对物体外形的重现,这个过程由GPU中的几何来完成。[2]
经过上面的步骤,物体的大致轮廓就已经确定下来了。之后依据不同程序的要求,对模型进行更加精细化的处理,如曲面细分Tesselation,就是利用GPU硬件加速,将现有3D模型的三角形拆分得更细小、更细致,也就是大大增加三角形数量,使得渲染对象的表面和边缘更平滑、更精细。[3]最终物体的外形轮廓被精准的确定下来,一个生动鲜活的物体形象在虚拟世界中被GPU的几何单元创造出来。
但是由于电脑屏幕显示的均是二维图像信息,因而接下来的步骤就是如何将复杂的三维世界物体模型映射到二维平面中表达出来,这就是GPU中另一个单元Rasterizer所要完成的工作。
到这里为止,所有关于图像的三维操作都将结束。Rasterizer光栅化是通过透视原理将分布散三维空间的立体坐标信息映射到二维平面直角坐标系中。由于电脑所使用的显示器是一个二维平面结构,无法直接展示出三维空间的全部信息,所以需要通过透视原理将三维空间中的景深信息表达出来,这也就是我们所说的图像立体感。同时为了实现物体信息的像素化,Rasterizer这个步骤也是必不可少的。Rasterizer通过一系列的数学变换将三维坐标转换为平面二维坐标,这个过程中图像原本的Z轴坐标信息将会被单独提取出来存放入Z-Buffer中,作为景深值。[4]
经过光栅化操作后物体的轮廓信息就已经被定格在平面像素中,那么接下来的工作就是将物体的颜色信息填充到图像中,这个部分的工作又称为材质操作,而这一过程将由GPU中的PixlShader完成,它将赋予图像鲜活的生命力。[5]
材质操作就是GPU给物体填色的过程,但是由于硬件限制,实际操作中无法象现实生活中那样直观地操作,需要借助代码去完成,而GPU的工作就是讲这些代码转换为人们能够识别的颜色信息,继而填充在图像上,最终呈现在显示屏上。
在实际操作中,对图像上色的过程是有材质库来完成的,在3D图形的设计过程中,已经包含了其本身的材质信息,这些材质信息会与相应的坐标关联起来,从而还原出物体本身的色彩及图案。这些材质库中的信息会在光栅化处理后重新还原到物体表面,由于物体由3维坐标转化为2为坐标,因而需要对材质库中的信息进行筛选,根据新的形状范围进行裁剪,再将裁剪后的材质填充在对因区域中,也就完成了对物体上色的过程。[6]-[7]在整个过程中GPU的工作就向搬运工一样,通过材质库寻找并提取物体的色彩和图案信息,之后将其填充到物体表面,整个过程简单高效。
图2 材质操作的过程
整个3D图像生成过程到这里好像结束了,然而这样的图像展现在屏幕上会非常的死板。为了解决这样的问题,我们需要将真实世界的光影信息添加到我们的物体上,将物体的实时动态效果展示出来,从而满足人们越来越高的视觉要求,这项任务将由Pixel Shader来完成。
Pixel Shader的主要工作就是还原物体被光线照射之后所呈现出来的色彩信息,这些色彩信息GPU都将在像素上进行操作,所以也就是对像素的色彩进行修改。对于一个3D图像中的物体来说,其本身的色彩信息将会被拆分为红绿蓝三原色不同的组合来表达,而在电子计算机中,红绿蓝三原色的不同组合是通过一个三维矩阵来实现的。所以要想改变像素的颜色信息,就需要对这个三维矩阵进行修改。
到这里,shader与材质操作的关系已经非常明了了。材质单元与shader/ALU同时描绘了物体表面的图像,当两者分开操作时,材质操作对于场景和物体光影的描述无法达到较高的自由度,而Pixel Shader对像素没有实时创造力只能进行修饰,所以若想达到较好的视觉效果,材质单元与shader/ALU两者缺一不可。
图像处理的过程是利用编程图像拆分成几个基本的部分,再通过硬件合并和表达。从最开始的几何处理,到最后的材质操作和Pixel Shader操作,处理的过程严格执行操作步骤,最后形成了基本组成部分的“制造”过程。最后ROP将所有的工作合并在一起,图像处理就完成了。
ROP的处理过程如下:拾取好的材质和shader处理结束的像素会被传送到z/stencil buffer中。经过光栅化处理之后的模型虽已没有真正的Z轴,但存在Z-buffer中的深度信息能够让ROP决定哪些像素可被显示出来,ROP单元会对这些像素进行检查,这样做可避免在前面显示出被完全遮挡的像素,也能为color output的操作减轻压力。
特定范围内的深度值,在像素深度检查操作完成后将被输送到alpha单元进行透明度检查。ROP会根据程序需要通过Blend单元对特定的像素进行alpha Blending操作。剩下的像素在以上步骤结束后将被填充进2D化模型需要的范围内,即Pixel Fillrate过程。
当shader以数学形式处理完像素效果后,若没有AA操作,图像渲染工作到这里就已彻底完成了,所有效果的混合填充会让画面正确的实现。画面会被送入output buffer等待输出。若程序要求类似MSAA这样的AA操作,则ROP中的AA单元还需再多次进行多重采样在将采样后的像素点进行color Blending操作,最后的画面将通过帧缓存输出到屏幕上。[8]
由此可见ROP单元是整个GPU工作流程中最为重要的一环,其工作效率的高低将直接影响到整个流程的效率,负责将之前其他单元的工作成果最终转化为一幅幅精美的画面。ROP单元的性能将直接影响到整个GPU的实际表现,作为整条STREAM中的最后一个环节,完美的结束GPU的工作。
到此为止整个GPU的工作过程已经详述完成,正是通过以上这些复杂而有趣的工作,那些精美的想象中的画面才能展现出来,而这也是推动GPU发展的动力源泉,在此希望在未来的世界中,可以伴随GPU的发展为大家带来更加真实的世界。
[1]姜晓丽,王伟,隋毅.GPU工作流程简介[J].科技创新导报,2010(24):46-46.
[2]月之茧.演绎视觉精彩——GPU工作原理简析(上)[J].大众硬件,2004(9):106-108.
[3]张琴,李芳.可编程GPU技术的应用研究[J].泰山学院学报,2008,30(6):20-23.
[4]洪伟.显卡的结构和工作原理[J].电脑界:应用文萃,2000(3):13-15.
[5]斯佳丽,laoshu.缤纷色彩竞妖娆——显卡综述[J].电脑爱好者,2004(9):75-79.
[6]赵中秋.显卡维修知识精解[M].电子工业出版社,2010.
[7]马恕.硬件原理篇之二——画面是怎样显示出来的?[J].电脑自做,2003(8):127-129.
[8]毛华庆.基于GPU优化的三维实时渲染技术的研究[D].武汉大学,2010.
鲁孝平(1991—),女,现就读于安徽理工大学山南校区电气与信息工程学院。