计算三维图形中各顶点的属性的方法

文档序号:6419858阅读:412来源:国知局
专利名称:计算三维图形中各顶点的属性的方法
技术领域
本发明提供一种计算三维图形中各顶点的属性(attribute)的方法,尤指一种使用顶点着色程序(vertex shader)计算该三维图形中各顶点的属性的方法。
背景技术
近年来,顶点着色程序已成为计算机游戏家们在处理计算机中的三维图形时不可或缺的基本配备,顶点着色程序可以软件形式出现,例如由软件巨人微软所生产的DirectX 8,也可以内置于图形芯片的硬件形式出现,例如由NVIDIA所推出的GeForce3芯片及由ATI所发表的Radeon芯片。顶点着色程序的主要功能为坐标转换与照明运算(transform & lighting,T&L)。
计算机屏幕上的三维图形可看作由多个三角形构成,当游戏程序将计算机屏幕上的三维图形传送给图形芯片(或顶点着色软件)作T&L运算时,该游戏程序所传送的数据是对应于该三维图形中多个三角形的顶点数据,亦即顶点的属性。在顶点着色程序的标准中,每个顶点都包含16种属性,除了包括用来表示该顶点在空间所处的位置的x、y及z位置坐标属性外,还包括w(权重属性)、在聚光源或散光源下该顶点所显示的颜色属性以r(red)、g(green)、b(blue)、及a(alpha,透明度)的格式编排于该顶点的属性中、垂直于该顶点所在的三角形面上的法向量、材质纹理(texture)坐标,其包含分别代表该顶点在材质纹理上的相对位置的s、t、r及q等四个材质纹理坐标属性、雾特效坐标属性、以及该顶点的尺寸属性等各种不同的属性。
顶点着色程序所处理的每个顶点所包含的多个属性都为4×32位的浮点数,再加上顶点着色程序的运算方式为单指令多数据(single instructionmultiple data,SIMD),亦即顶点着色程序利用内置的12个SIMD缓存器同时存放及运算4×4(同时计算x、y、z及w或r、g、b及a)或3×3(同时计算x、y及z或r、g及b)矩阵形式的数据,以执行坐标转换及照明运算,因此,计算机屏幕上的三维图形中构成每一个三角形的顶点所内含的数据量非常大。

发明内容
如前所述,由于三维图形中每个顶点都包含16个属性,而每个属性的长度都为4×32位,因此每个顶点的数据量都非常大。不仅如此,顶点着色程序花费在照明运算的时间大大长于花费在坐标转换的时间,因为顶点着色程序在执行坐标转换过程中只需考虑到视点(viewing point)的坐标,也就是依据视点坐标的不同,透过旋转、放大/缩小、上升、下降、左偏、及右移等方式改变基础三角形的顶点坐标;反之,顶点着色程序在执行照明运算的过程中除了需考虑到在执行坐标转换时的视点外,尚需考虑到如光源的数目、形态(环场光、单一光、方向光、或投射光等)、以及处理的形式(环境式、漫射式、或聚光灯式等)。举例来说,坐标转换中最常见的内积运算所需的时间长度为两个周期,而照明运算中一个17道单点光源所需的运算时间竟为126个周期。
因此本发明的主要目的在于提供一种使用顶点着色程序来计算三维图形中各顶点的属性的方法,以解决现有技术的缺点。
本发明公开一种使用顶点着色程序来计算三维图形中各顶点的属性的方法,该三维图形包含多个基础三角形(triangular primitive),每基础三角形都包含三个顶点,而每个顶点都包含多个属性,该方法包含下列步骤以该顶点着色程序中的部份指令构成的坐标转换程序计算该基础三角形所转换的转换三角形,该坐标转换程序依据该基础三角形的三个顶点中的位置属性以计算出该转换三角形的三个顶点中的位置属性、根据该转换三角形的三个顶点中的位置属性进行判别运算,以决定该转换三角形是否为可见或不可见状态、以及若该转换三角形为可见状态,则进行该转换三角形的三个顶点其它属性的运算,反之,若该转换三角形为不可见状态,则直接剔除该转换三角形,不作三个顶点其它属性的运算。
由于三角形的照明计算过程远比其坐标转换过程复杂,所以,本发明的方法将可省却相当可观的计算量,同时也增加了处理器的运行速度。


图一为本发明的方法中将原始三维图形转换成转换三维图形的示意图。
图二为本发明的较佳实施例中方法的流程图。
图中标记说明10.原始三维图形12.转换三维图形14、16.基础三角形18、20.转换三角形22、24、26、28.法向量30.视点具体实施方式
请参阅图一,其为本发明的方法中由顶点着色程序将原始三维图形10转换成转换三维图形12的示意图。原始三维图形10包含两个基础三角形(triangular primitive)14、16,而转换三维图形12亦包含两个转换三角形(triangular transform)18、20,其中基础三角形14、16及转换三角形18的法向量22、24、26为外指的(outward directing),亦即基础三角形14、16及转换三角形18为可见的(visible),而转换三角形20的法向量28则为内指的(inward directing),亦即转换三角形20为不可见的(invisible)。也就是说,视点30除了可看到原始三维图形10上的基础三角形14、16外,还可完全看到转换三维图形12上的转换三角形18,然而,视点30却无法看到转换三维图形12上的转换三角形20,因为转换三角形20在原始三维图形10的转换过程中,已转换至转换三维图形12上相对于视点30的背面。在这种情形之下,转换三角形20中三个顶点的颜色、材质纹理坐标、以及雾特效坐标属性是什么也就无关紧要了。因此,本发明在执行顶点着色程序时,只需计算其上的法向量为外指的转换三角形中除了位置坐标属性外的其余属性。
就程序而言,本发明的方法在执行顶点着色程序时,先计算原始三维图形10中每个基础三角形转换成转换三角形的三个顶点的坐标属性,再据此判定转换三角形为可见或不可见,以决定是否接着计算对应于该转换三角形中三个顶点的其余属性。也就是,若转换三角形为不可见,因而无法被视点30所看见,顶点着色程序也就毋需接着计算对应于该转换三角形中三个顶点的其余属性;反之,若转换三角形的法向量为外指的,亦即该转换三角形为可见,因而可被视点30所看见,顶点着色程序就接着计算对应于该转换三角形中三个顶点的其余属性,如材质纹理坐标s、t、r及q、颜色r、g、b及a、以及雾特效坐标等属性。
请参阅图二,为本发明的较佳实施例中方法100的流程图,方法100包含下列步骤步骤102开始;(原始三维图形10将被转换成转换三维图形12)步骤104由顶点着色程序中的部份指令,将原始三维图形10中的每一个基础三角形的三个基础顶点依序转换成转换三角形的三个转换顶点;步骤106判定该转换三角形为可见或不可见,若该转换三角形为可见的,则进行步骤108,否则,剔除该转换三角形,并进行步骤130;步骤108计算该转换三角形的其余属性;步骤130判定该转换三角形所转换自的基础三角形是否为原始三维图形10中的最后一个基础三角形,若否,则继续回到步骤104,若是,进行步骤200;(一直将原始三维图形10中的所有基础三角形计算完毕为止)步骤200结束。
在方法100的步骤106中,判断该转换三角形为可见或不可见,可简单地由判别式x1-x0x2-x0y1-y0y2-y0]]>的正负值来决定,其中(x0,y0)、(x1,y1)及(x2,y2)分别为该转换三角形的三个顶点坐标。至于是判别式的正值或负值对应于可见转换三角形由应用程序(application program,AP)决定。当然,如图一与图二所示,亦可用法向量的外指与内指来判断转换三角形为可见或不可见。举例来说,在决定三角形A’B’C’为可见的而三角形A’D’C’为不可见之后,顶点着色程序便可不需计算三角形A’D’C’中三个顶点的其余属性,并进而将三角形A’D’C’从转换三维图形12中剔除,而仅计算三角形A’B’C’中三个顶点的其余属性。
相对于现有顶点着色程序,本发明的顶点着色程序先依据基础三角形的三个顶点以计算转换三角形的三个顶点,再判定该转换三角形为可见或不可见,若该转换三角形为可见的,则接着计算对应于该转换三角形的其余属性,反之,若该转换三角形为不可见的,由于在视点30处并无法看到该转换三角形,所以接着坐标转换后对应于该转换三角形的照明计算就可省略了。前已述及,三角形的照明计算过程远比该三角形的坐标转换过程复杂,所以,本发明的方法将可省却相当可观的计算量,同时也增加了处理器的运行速度。
以上所述仅为本发明的较佳实施例,在不脱离本发明的精神和所附权利要求范围的前提下所做的变化与修饰,都属本发明专利的涵盖范围。
权利要求
1.一种使用顶点着色程序来计算三维图形中各顶点的属性的方法,该三维图形包含多个基础三角形,每基础三角形都包含三个顶点,而每个顶点都包含多个属性,该方法包含由该顶点着色程序的坐标转换程序计算该基础三角形所转换的转换三角形,该坐标转换程序依据该基础三角形的三个顶点中的位置属性来计算出该转换三角形的三个顶点中的位置属性;根据该转换三角形的三个顶点中的位置属性进行判别运算,以决定该转换三角形是否为可见或不可见状态;以及若该转换三角形为可见状态,则进行该转换三角形的三个顶点其它属性的运算,反之,若该转换三角形为不可见状态,则直接剔除该转换三角形,不作该转换三角形的三个顶点其它属性的运算。
2.如权利要求第1项所述的方法,其中该判别运算为由判别式x1-x0x2-x0y1-y0y2-y0]]>的正负值来决定可见或不可见状态。
3.如权利要求第1项所述的方法,其中该判别运算为利用依法向量的外指或内指来决定可见或不可见状态。
4.如权利要求第1项所述的方法,其中三个顶点其它属性的运算包括照明运算程序。
5.如权利要求第4项所述的方法,其中每个顶点都另包含至少一个颜色属性,而该照明运算程序为用来计算该转换三角形的三个顶点的颜色属性。
6.如权利要求第5项所述的方法,其中每个顶点都包含四个颜色属性。
7.如权利要求第6项所述的方法,其中该四个颜色属性依序为红、绿、蓝、及透明度。
8.如权利要求第4项所述的方法,其中每个顶点都另包含四个材质坐标属性,而该照明运算程序用来计算该转换三角形的三个顶点的材质坐标属性。
9.如权利要求第1项所述的方法,其中每个顶点都包含16个属性。
10.如权利要求第1项所述的方法,其中每个顶点所包含的属性的数据长度为4×32位。
全文摘要
本发明提供一种使用顶点着色程序来计算三维图形中各顶点的属性的方法,该三维图形包含多个基础三角形,每基础三角形都包含三个顶点,而每个顶点都包含多个属性,该方法包含以该顶点着色程序中的部份指令所写成的坐标转换程序计算该基础三角形所转换的转换三角形、根据该转换三角形的三个顶点中的位置属性进行判别运算,以决定该转换三角形是否为可见或不可见状态;以及若该转换三角形为可见状态,则进行该转换三角形的三个顶点其它属性的运算;反之,若该转换三角形为不可见状态,则直接剔除该转换三角形,不作该转换三角形的三个顶点其它属性的运算。
文档编号G06F19/00GK1529288SQ200310101010
公开日2004年9月15日 申请日期2003年10月10日 优先权日2003年10月10日
发明者庄荣城 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1