T&L技术是最近在图形加速卡上都可以看得到的规格名称之一,这个名词的原来意义是:Transforming以及Lighting,光影转换。在图形加速卡中,T&L的最大功能是处理图形的整体角度旋转以及光源阴影等三维效果。
现在的图形加速卡大部份都是在处理3D立体图像等画面,为了要求图像的拟真品质能更加精细,在图形卡上的T&L功能,就能透过角度运算后,将3D对象上所有的点,精确清楚地表现在屏幕上。
如果我们把自己当成是图形芯片的话,那么当中央处理器(CPU)要我们画出一张完整的3D图案时,CPU便要让我们对画出什么东西有个基本的概念,特别是那些东西在我们的脑中并没有最根本的印象时,CPU只能给我们一个类似建筑工地用的设计图。
这个3D设计图上有许多的连结点,每一个连结点都可视为一条线的转折点,通过这些连结点,图形芯片可以很清楚地将整个对象的结构辨识出来。然而,这些连结点在这张3D设计图上的位置是固定不动的,换句话说,不管我们从任何一个角度来看这个对象,连结点的位置并没有变动,变动的只有角度的不同。不过,对象图案若只进行到Transforming的阶段,在对象的表面也只有连结点而已,并没有加上颜色色块或任何材质的贴图表现,因此,很像是立体的3D透视图。
就好象画工地设计图的工程师与画平面立体图案的画家一样,画家只画眼前所看到的立体图案,虽然也是立体图案,但是角度却固定不动;而工程师却必须仔细地将所有重要的细节描绘仔细,才能让按设计图工作的施工人员不管从那个方向切入都能清楚施工方向。这个由CPU送来的蓝图便与工程师那张施工蓝图一样,让使用者不管从那一个角度来观察,都能看到对象整体的3D变化,而这就是Transforming的精髓。
若真要细究Transforming到底在图形芯片里做些什么事情的话,可能就是在控制上述的连结点吧。要将这些构成3D立体对象的连结点,换算成我们从屏幕上所看见的角度,图形芯片中的Transforming机制便必须要「假装移动」这些连结点,因此,即使假装移动连结点后,原来的3D对象结构仍旧未有改变。而屏幕上的角度只要有任何改变,Transforming机制便要再「假装移动」一次,在3D动画的运算中,这是相当频繁的动作,也因此Transforming功能对图形芯片而言,在这几年内相当受人重视。
一个具有Transforming机制的图形芯片,除了不需再透过系统的平台(处理器、主存储器以及芯片组等)来进行数据处理,能有效减轻系统的负担;而且也扮演专为处理上述资料的运算机制,能做出比同时需处理多项资料的系统更加强大,因此,图形芯片所能画出的连结点比单靠处理器画出的要多许多,结构所呈现出来的影像也更加精细。
对于人脑而言,要去理解一个透过连结点所表现的图案,有点像是小时候的「连连看」游戏一样模糊,不过,透过连结点与连结点之间联机的动作,3D立体对象的表面,便会形成许多个多角形(polygon),而且大部份的多角形皆属三角形,之后,图形芯片会在每一个多角形上贴一块材质贴图,包含半透明的材质颜色在内,于是一幅清楚而明显的拟真画面,就这样被产生出来了。
另一方面,Lighting的意义则是在光源的投射角度上做出反应。除了固定光源切入的角度外,再配合使用者的观察角度进行阴影以及反光面的光源变化运算,而透过这两项功能,一个相当拟真的3D对象就可以呈现在我们眼前。
一般来说,T&L的效能常用「单位时间内所能处理多少个多边形的连结点变化以及光源运算」为基准。像nVidia的GeForce 2便能在每秒钟处理2500万个多边形,而有的产品甚至能达到3000万个多边形的效能。
Vertex SKINning功能 一般人应该不太有机会看到Vertex Skinning这个词,因为大部份的图形显示卡规格说明书中未将此规格说明给列出来,通常只用T&L里的多边形处理数目来做主要规格介绍。不过,随着3D动画软件与资料与日俱增,Vertex Skinning的重要性也跟着水涨船高。
爱玩电玩的网友不妨回想一下,现在手边的电玩一定不乏怪兽、英雄、运动球员与角色扮演等的3D动作游戏,而这些游戏角色的3D立体图像要在屏幕上完整呈显,便需要透过图形芯片更强大的运算机制。
动画电影制作技术中,有一种是借由贴有人骨图案的衣服来记录真人动作时的运动角度,以及关节变化情形。相同的情形也常发生在图形芯片的运作中,尤其是借由人骨运动的概念来仿真3D对象在动画上的呈现。换句话说,一个完整的3D对象,若找出其运动的主要架构(以人为例即是人骨),那么图形芯片便能借由架构的呈显,运作出包在架构外的轮廓以及图形,并借由运动模式来运算出动作与动作之间的影像变化关系。
然而,若真要以“人骨”模式来反推3D对象的影像,那么在影像上会有许多部份的资料,是由图形芯片自行加上去的,而这个加上去的技术,便称之为Vertex
Skinning。Vertex Skinning这个功能最早是由nVidia所提出,但后来也有其它的图形芯片制造商跟进采用相同的概念。我们从字面上来看这个名词,也就是“连结点的加皮动作”。换句话说,连结点与连结点所构成的骨干,与另一个部位的骨干间常会有难以连结的距离,而这距离会使得呈现出来的对象无法做到平顺圆滑的真实图像,此时,图形芯片中的Vertex
[1] [2]
Skinning机制,便会自动加上连结机制,让画面整体呈现起来能更加平顺。
一般来说,系统或图形芯片要处理类似Vertex Skinning技术需要靠中央处理器来执行应用软件以达成上述效果,不过,也有采用图形芯片中的运算机制(硬件运算)就可以达成的,例如,ATI便曾对外表示其所采用的4-Matrix Skinning便是以硬件运算的方式达成。
Keyframe Interpolation功能
我们先前提到在人骨上生肉成形的显像技术,现在我们来认识一下,没办法透过骨干显像的部份,图形芯片是怎么达成的。而这个技术,我们常称之为Keyframe Interpolation(关键图框的添写技术)。
实际上3D动画技术需要用到Keyframe Interpolation的地方可多可少,运作执行时,只需要找出起始动作以及终止动作后,在一定的改变流程下,由软件或硬件来制作出其余的连结动作。而这就是Keyframe Interpolation的主要精神。
例如人物动画的脸部表情,不管你再怎么用力去拚凑人脸骨干,但就是没办法透过骨干架构来描绘微笑或是沮丧等表情。这个时候Keyframe Interpolation便派上用场。其实这一点也不难,你只需让系统找到起始点与终结点等两个动作的静止图案(这两个画面便是所谓的Keyframe),再依必要性添写这两个画面之间的主要画面,那系统便能按照你添写的方向,完成其余细部的变化图案。而这个时候,我们就能再屏幕上看到栩栩如生的人物动画了 多边形的处理
对图形芯片而言,多边形的处理是最主要的工作之一。包括所有连点必须被解读成多边形后,将资料传回图形芯片后再传到屏幕上面,或者是在运算骨干后,将运算后的多边形数据,重新回到图形芯片的运算流程中,以便求出最完美的3D动画。而T&L的工作,也几乎都在这些多边形上一块一块地执行,因此,我们若能了解多边形的处理,也就能清楚认识图像成形的简单的步骤了。
一般来说,在屏幕或3D对象上的多边形,大部份都是三角形所组成的,因此,有的图形芯片会说明三角形的处理数量来取代多边形的处理数量。不过,不是三角形数量能够处理的愈多就是愈好。
我们在先前曾经提到过,工程师所画出的蓝图必须将所有连结点都画得一清二楚,而这样清楚的结构资料,主要是为了让3D立体对象在任何一个角度,都能有清晰的呈显以及基本的资料。不过,也就因为屏幕只会呈显对象局部角度的影像,因此,这个完整的3D对象中,会有许多三角形或多边形是被其它较前面的三角形或多边形所掩盖住的。
我们以3D立体房屋为例,一间3D立体房屋的资料,是需要包含房内所有家俱,以及对象的3D对象信息,但若我们只能从侧面门的角度往屋内看去,则屋内其它3D对象,都会被门旁边的墙所掩盖,虽然图形芯片仍是会运算完整的3D对象所有资料的转换,但对屏幕来说,真正被用到的(或者说被使用者眼睛看到的)只有一小部份。
因此,人们也开始好奇:既然图像的成形需要靠许多多边形来完成,包括多边形的连结点在内,在某些角度下这些多边形与连结点是无法在屏幕上显现的,那这么完整的资料在计算机里进行传输,会不会拖垮图形芯片的处理效能呢?为了让图形芯片的效能发挥到极致,当然,许多厂商也开始重视这个课题,并作出许多解决方案。例如:ATI的Hyper-Z便是针对此种问题,所提出的解决方案之一。而我们会在接下来的几个单元里,稍微介绍一下这种关系。
多边形与Fill Rate的关系
另一个重要的话题是三角形的处理与所谓Fill Rate间的关系。要了解这个话题,我们必须先知道在图形芯片中,专门针对三角形做处理动作的机制又称为Pixel rendering(“像素绘描”功能),而这个机制每次只能处理一个三角形或多边形。
上述这段话是一个相当重要的概念,因为Pixel rendering中包含数条管线(pipeline)来处理同一个三个形,如果说三角形或多边形的像素点比管线数目还要少的话,那这个Pixel Rendering就会有数条管线是处于闲置状态的。
对3D立体图像而言,当它所形成的连结点数目愈多,三角形或多边形的数目也相对增加许多。而这些三角形会因为连结点距离愈来愈近,让像素点小于Pixel Rendering的pipeline总数的三角形,也跟着变多。而这个情况对图形芯片的效能是很严重的损失。结果,具有许多小三角形的图案便会让高Fill Rate规格的图形芯片无法显现出它真正的效能。而这也正是为什么高Fill Rate的图形芯片,必须搭配正确的显示设定,才能真正表现出图形芯片的效能。
(出处:http://www.sheup.com)
上述这段话是一个相当重要的概念,因为Pixel rendering中包含数条管线(pipeline)来处理同一个三个形,如果说三角形或多边形的像素点比管线数目还要少的话,那这个Pixel Rendering就会有数条管线是处于闲置状态的。
对3D立体图像而言,当它所形成的连结点数目愈多,三角形或多边形的数目也相对增加许多。而这些三角形会因为连结点距离愈来愈近,让像素点小于Pixel Rendering的pipeline总数的三角形,也跟着变多。而这个情况对图形芯片的效能是很严重的损失。结果,具有许多小三角形的图案便会让高Fill Rate规格的图形芯片无法显现出它真正的效能。而这也正是为什么高Fill Rate的图形芯片,必须搭配正确的显示设定,才能真正表现出图形芯片的效能。
(出处:http://www.sheup.com)