入门图形学:图形学原理(二)

Source
转载自: https://blog.csdn.net/yinhun2012/article/details/79984729


这篇我们了解一下“ 显示处理器”,也称为GPU,显卡,视觉处理器等等,也就是做图像处理工作的微处理器芯片。我们对显卡应该不陌生,毕竟我们玩游戏都需要购买显卡,那么选购显卡就成了需要考虑的问题,即想价格便宜又想性能高,价格看下标价就行了,性能就不那么好判断了,我们必须了解显卡所有的参数以及参数后面的作用才能判断,比如通俗一点的显卡参数如下:

        1.显卡构架,越是先进的构架效能越高,比如nvidia的显卡构架比较有名的就是gtx750ti和gtx9系列的maxwell构架,和目前gtx10系的pascal构架(顺便说一下gtx750ti简直神卡,匹配9系性能,价格却低一大截,目前steam平台统计gtx750ti使用者最多)。

        2.流处理器(stream processors简称sp)数量,同代同构架下显卡流处理器越多性能越好,比如当年的hd4830就有800sp和640sp的数量差别,800sp就更好(我当年买的hd4830 640sp,因为800sp的贵100,js开核后炒的)。

        3.核芯频率,这个其实跟cpu的核芯频率一样,同代同构架下,频率越高越好,当然这个还可以超频。

        4.显存和位宽,前面我们谈到了帧缓存,就是需要存储器进行储存,这里显存就起到了这个作用,显存当然是必须要大到游戏够用才好了,同时GDDR5显存也有位宽之分,目前主流的256位宽允许一个时钟周期传送256bit数据,这就决定着显存的速度,当然是越高越好。

        5.光栅处理单元,前面我们形象的表示一根斜线就是进过光栅化后的像素点数组,光栅单元就是用来处理这种事情的。

        顺便放一张gpuz的图片,以便大家详细观察下显卡的参数,如下图:

        

        接下来说下显卡的发展史,看一下显卡从无到有再到现在如此标准化的进程。

        中央处理器CPU大家都知道,很早期电脑基本上就靠这个东西做运算,不论是数据运算,还是图形显示都靠这个。早期的显示器像素信息更新都是靠着cpu来计算每个像素的变化,计算完毕后通过I/O总线传递到视频卡的帧缓存中,然后刷新图像。这么一来,可以想象假如帧缓存数据非常大(分辨率高颜色位数高),那么CPU处理起来比较耗时,那刷新率就非常低了。这时候设计一个解放CPU耗时运算的专门处理图形的处理芯片就很有必要了,图形加速处理器GPU就应运而生,我们只需要通过高速I/O总线将数据传递给GPU,然后GPU进行像素变化计算后刷新图像。这样一来,CPU和GPU就各自分工明确,一个专门处理复杂逻辑运算,一个专门处理帧缓存图形数据,以后的PC硬件发展基本就沿着这个路线。

        图形处理器GPU是专门设计处理图形的,它执行图形任务比CPU快许多,现在一般图形处理器一秒钟可以处理几千万顶点和光栅化几亿甚至几十亿的片段(ps:这里我解释一下这两个参数的意义,一个游戏中各种模型场景都是顶点和贴图构成的,比如我们操作一个角色不断奔跑和打怪,那么这个模型的顶点就是不断的运动的,假设一个角色有10000个顶点,1s中运动了1m那么顶点插值运算中就必须依靠处理器的定点处理能力对角色的每个顶点的坐标进行变换,再说下片段(现阶段你就认为是像素点),一个1000*1000分辨率的屏幕1s中刷新60帧,那么就必须更新60000000像素点,假如分辨率更好刷新率更好,那么光栅几亿甚至几十亿的片段能力就很必要了)。

        下面列举一下每一代图形处理器的能力:

        1.第一代图形处理器(nvidia的tnt2,ati的rage和3dfx的voodoo3),这些图形处理器能够光栅化变换前的三角形和使用一两个纹理,但是并没有变换三维顶点的能力,顶点变换的计算还是得CPU处理。

        2.第二代图形处理器(nvidia的geforce255和geforce2,ati的radeon7500和s3的savage3d),这些图形处理器从CPU那里承担了顶点变换和光照的工作(Transformation and lighting),opengl和directx7都支持硬件顶点变换。

        3.第三代图形处理器(nvidia的geforce3和geforce4ti,ms的xbox和ati的radeon8500),这一代处理器提供了顶点编程能力,这些GPU让应用程序指定一系列的指令来处理顶点,而不是由opengl和directx7指定的传统变换和光照模型,但是这些指令并没有强大到被认为是真正的可编程,因为这些GPU虽然支持顶点指令编程,但是却不支持片段(像素)编程,但是就目前来说,已经成功一半了。

        4.第四代图形处理器(nvidia的geforcefx和ati的radeon9700),这些图形处理器同事提供了顶点和片段(像素)的可编程能力,这个级别的可编程能力使得复杂的顶点变换和像素着色操作从CPU转移到GPU成为可能,同时directx9和opengl显示了这些图形处理器的顶点和片段的可编程能力。

        顺便来一张各个时代nvidia GPU的特点和性能,如下图:

        

        制程:半导体芯片中电路与电路之间的距离,制程越小,代表单位面积内电路密度越高,性能越好。

        晶体管数量(百万):半导体元器件数量,越多代表着性能越好。

        反走样率(百万):光栅处理器处理图形生成离散的像素点会导致信息失真,这个叫做走样,用来减少或者消除这种效果的技术,称为反走样,这个速率也就是每秒钟填充32位RGBA像素的数量。

        多边形填充率(百万):也称为三角形生成率,前面我们在辅助工具中讲解了图形其实是由网格点组成的三角形经过拓扑结构组合而成,这个填充率也就是生成三角形的速率,越高越好。

        到这里我们基本上对图形处理器GPU有个大致的了解了,接下来我们就来学习学习图形处理器GPU具体做什么工作,到底GPU是怎么样把一串串数据处理成显示器上的一幅幅画面。

        

        

这篇我们了解一下“ 显示处理器”,也称为GPU,显卡,视觉处理器等等,也就是做图像处理工作的微处理器芯片。我们对显卡应该不陌生,毕竟我们玩游戏都需要购买显卡,那么选购显卡就成了需要考虑的问题,即想价格便宜又想性能高,价格看下标价就行了,性能就不那么好判断了,我们必须了解显卡所有的参数以及参数后面的作用才能判断,比如通俗一点的显卡参数如下:

        1.显卡构架,越是先进的构架效能越高,比如nvidia的显卡构架比较有名的就是gtx750ti和gtx9系列的maxwell构架,和目前gtx10系的pascal构架(顺便说一下gtx750ti简直神卡,匹配9系性能,价格却低一大截,目前steam平台统计gtx750ti使用者最多)。

        2.流处理器(stream processors简称sp)数量,同代同构架下显卡流处理器越多性能越好,比如当年的hd4830就有800sp和640sp的数量差别,800sp就更好(我当年买的hd4830 640sp,因为800sp的贵100,js开核后炒的)。

        3.核芯频率,这个其实跟cpu的核芯频率一样,同代同构架下,频率越高越好,当然这个还可以超频。

        4.显存和位宽,前面我们谈到了帧缓存,就是需要存储器进行储存,这里显存就起到了这个作用,显存当然是必须要大到游戏够用才好了,同时GDDR5显存也有位宽之分,目前主流的256位宽允许一个时钟周期传送256bit数据,这就决定着显存的速度,当然是越高越好。

        5.光栅处理单元,前面我们形象的表示一根斜线就是进过光栅化后的像素点数组,光栅单元就是用来处理这种事情的。

        顺便放一张gpuz的图片,以便大家详细观察下显卡的参数,如下图:

        

        接下来说下显卡的发展史,看一下显卡从无到有再到现在如此标准化的进程。

        中央处理器CPU大家都知道,很早期电脑基本上就靠这个东西做运算,不论是数据运算,还是图形显示都靠这个。早期的显示器像素信息更新都是靠着cpu来计算每个像素的变化,计算完毕后通过I/O总线传递到视频卡的帧缓存中,然后刷新图像。这么一来,可以想象假如帧缓存数据非常大(分辨率高颜色位数高),那么CPU处理起来比较耗时,那刷新率就非常低了。这时候设计一个解放CPU耗时运算的专门处理图形的处理芯片就很有必要了,图形加速处理器GPU就应运而生,我们只需要通过高速I/O总线将数据传递给GPU,然后GPU进行像素变化计算后刷新图像。这样一来,CPU和GPU就各自分工明确,一个专门处理复杂逻辑运算,一个专门处理帧缓存图形数据,以后的PC硬件发展基本就沿着这个路线。

        图形处理器GPU是专门设计处理图形的,它执行图形任务比CPU快许多,现在一般图形处理器一秒钟可以处理几千万顶点和光栅化几亿甚至几十亿的片段(ps:这里我解释一下这两个参数的意义,一个游戏中各种模型场景都是顶点和贴图构成的,比如我们操作一个角色不断奔跑和打怪,那么这个模型的顶点就是不断的运动的,假设一个角色有10000个顶点,1s中运动了1m那么顶点插值运算中就必须依靠处理器的定点处理能力对角色的每个顶点的坐标进行变换,再说下片段(现阶段你就认为是像素点),一个1000*1000分辨率的屏幕1s中刷新60帧,那么就必须更新60000000像素点,假如分辨率更好刷新率更好,那么光栅几亿甚至几十亿的片段能力就很必要了)。

        下面列举一下每一代图形处理器的能力:

        1.第一代图形处理器(nvidia的tnt2,ati的rage和3dfx的voodoo3),这些图形处理器能够光栅化变换前的三角形和使用一两个纹理,但是并没有变换三维顶点的能力,顶点变换的计算还是得CPU处理。

        2.第二代图形处理器(nvidia的geforce255和geforce2,ati的radeon7500和s3的savage3d),这些图形处理器从CPU那里承担了顶点变换和光照的工作(Transformation and lighting),opengl和directx7都支持硬件顶点变换。

        3.第三代图形处理器(nvidia的geforce3和geforce4ti,ms的xbox和ati的radeon8500),这一代处理器提供了顶点编程能力,这些GPU让应用程序指定一系列的指令来处理顶点,而不是由opengl和directx7指定的传统变换和光照模型,但是这些指令并没有强大到被认为是真正的可编程,因为这些GPU虽然支持顶点指令编程,但是却不支持片段(像素)编程,但是就目前来说,已经成功一半了。

        4.第四代图形处理器(nvidia的geforcefx和ati的radeon9700),这些图形处理器同事提供了顶点和片段(像素)的可编程能力,这个级别的可编程能力使得复杂的顶点变换和像素着色操作从CPU转移到GPU成为可能,同时directx9和opengl显示了这些图形处理器的顶点和片段的可编程能力。

        顺便来一张各个时代nvidia GPU的特点和性能,如下图:

        

        制程:半导体芯片中电路与电路之间的距离,制程越小,代表单位面积内电路密度越高,性能越好。

        晶体管数量(百万):半导体元器件数量,越多代表着性能越好。

        反走样率(百万):光栅处理器处理图形生成离散的像素点会导致信息失真,这个叫做走样,用来减少或者消除这种效果的技术,称为反走样,这个速率也就是每秒钟填充32位RGBA像素的数量。

        多边形填充率(百万):也称为三角形生成率,前面我们在辅助工具中讲解了图形其实是由网格点组成的三角形经过拓扑结构组合而成,这个填充率也就是生成三角形的速率,越高越好。

        到这里我们基本上对图形处理器GPU有个大致的了解了,接下来我们就来学习学习图形处理器GPU具体做什么工作,到底GPU是怎么样把一串串数据处理成显示器上的一幅幅画面。