用于几何图形处理的系统与方法

文档序号:6574410阅读:241来源:国知局
专利名称:用于几何图形处理的系统与方法
技术领域
本发明有关一种图形处理的系统与方法,具体地说,尤其关于一种具有组合式着色器的图形处理系统及其方法。
背景技术
着色器(shader)为一种使用在三维空间(D)的计算机绘图程序,用于决定对象或影像的最后性质,这通常包括关于光线吸收与扩散、纹理对映、反射与折射、遮影、表面位移与后处理效应。顶点着色器(vertex shader)是处理与顶点有关的计算。碎片着色器(fragment shader)是处理与像素有关的计算。
通常,图形场景是由许多图形元素所构成,包括点、线、三角形等。图形元素是由一个或多个顶点所构成。为了更有弹性,一些使用者可将程序单元添加至制图系统中,以取代固定功能单元。图1说明了目前可供使用的典型制图管道的系统100。
图1中的制图管道可分割成两个大略级(stage)几何处理级101与碎片处理级102。在几何处理级101中,顶点存/取器103备制顶点资料,顶点着色器104在每一个顶点数据上执行此使用者所设定的微程序,它取代传统固定功能的T&L级,图形元素组合器105从顶点着色器104取得顶点,且将顶点组合成图形元素。作为简单例子,可以将三个顶点组合成一个三角形,然后,将组合的图形元素传送至剪辑/拣选观点单元106,在剪辑/拣选观点单元106中的处理仅可以在图形元素基础上实施,使用剪辑/拣选以抛弃不可见的图形元素,以减轻碎片处理级102的工作负载。其中屏幕化引擎107将上述图形元素转换成二维空间(2D)像素,碎片着色器108在屏幕化引擎107所产生的每一个像素上执行使用者所设定的微程序,最后,将碎片着色器108的执行结果写入一画面缓冲器109中,其中顶点着色器104与碎片着色器108均可以根据OpenGL2.0与DirectX9.0c实施纹理查询,因此,纹理引擎110对于此两者均可接达。
如图1所示,顶点处理可以通过设定顶点着色器程序,而由使用者设定。碎片处理亦可通过设定碎片着色器程序,而由使用者设定。但是所有以图形元素为主的处理是一种固定功能而非一种使用者设定的功能。目前,使用者一般是将程序图形元素着色器添加至制图管道,例如,在微软(Microsoft)下一代绘图器API WGF 2.0中,将“几何着色器”(geometry shader)添加至几何处理级,“几何着色器”可以在各输入图形元素上执行使用者设定的微程序,不同于在单一顶点上操作的顶点着色器,几何着色器在每次引用执行时,会处理整个图形元素(一个顶点用于点、两个顶点用于线、三个顶点用于三角形等),亦可以将选择相邻顶点输入几何着色器(两个相邻顶点用于线、三个相邻顶点用于一个三角形、没有相邻顶点用于点)。
图2说明另一个具有使用者程序“几何着色器”的几何处理结构。系统200的一些组件与系统100相同顶点存/取器103、顶点着色器104、纹理引擎110、剪辑/拣选观点单元106以及碎片处理级102。新添加的单元为几何着色器203,因为几何着色器203是以顶点格式输入图形元素以及输出多个图形元素,因此需要两个图形元素组合单元,第一图形元素组合器202设置在顶点着色器104与几何着色器203之间,第一图形元素组合器202从顶点着色器104取得顶点,且将顶点组合成用于几何着色器203的图形元素,第二图形元素组合器204设置在几何着色器203与在此几何处理级稍后的剪辑/拣选观点单元106之间,几何着色器203将顶点发至第二图形元素组合器204,第二图形元素组合器204将顶点组合成用于其后几何处理单元的图形元素。

发明内容
本发明的主要目的是为了减少图形处理系统的芯片面积。
本发明的另一目的是为提供弹性以容纳各种制图管道组态。
本发明的再一目的是对于不同真实情况,自动平衡顶点着色器与几何着色器之间的工作负载。
为了实现上述目的,本发明采用了以下技术方案一方面,本发明提供一种图形处理系统,包括一第一转换电路,即第一图形元素组合器,其将第一数据格式转换成第二数据格式;一处理器,即顶点/几何着色器,其执行第一着色器程序与第二着色器程序,以该第二数据格式接收输入,且以该第一数据格式输出结果;以及一第二转换电路,即第二图形元素组合器,其将该第一数据格式转换成该第二数据格式,其中该输入来自该第一转换电路,以及该结果输出至该第二转换电路。
其还包括一储存装置,其记录与该第一色器程序有关的状态,而用于该处理器的存取。
该第一数据格式包括一顶点格式。
该第二数据格式包括一图形元素格式。
该第一着色器程序包括一顶点着色器程序。
该第二着色器程序包括一几何着色器程序。
包括一纹理单元,用于提供所述处理器的纹理信息。
另一方面,本发明提供了一种图形处理方法,其包括以下步骤将一图形数据由顶点格式转换成图形元素格式;以该图形元素格式在该图形数据上执行一顶点着色器程序;以该图形元素格式产生第一结果;以该图形元素格式在该第一结果上执行几何着色器程序;以该顶点格式产生第二结果;以及将该第二结果由该顶点格式转换成该图形元素格式。包括当执行该顶点着色器程序时,由一纹理引擎提供一第一纹理存取。
包括当执行该几何着色器程序时,由该纹理引擎提供一第二纹理存取。
包括当执行该顶点着色器程序时,将该着色器程序分解成一第一位准着色器程序与一第二位准着色器程序。
在该图形元素格式中的图形数据包括一位置属性与复数个性质属性;该性质属性包括颜色、亮度、或复数个纹理坐标。
包括当执行该顶点着色器程序时,忽略该图形数据的性质属性。
本发明系统把传统的顶点着色器、几何着色器组合成顶点/几何(VG)着色器,其中第一转换电路提供用于顶点/几何(VG)着色器的图形元素数据,而顶点/几何着色器可以在图形元素数据上执行顶点着色器功能,然后再执行几何着色器功能以输出顶点数据,第二转换电路提供用于顶点/几何着色器的输出的图形元素数据,故与传统技术方案相比,本发明能够减少图形处理系统的芯片面积,并为提供弹性以容纳各种制图管道组态,同时针对不同真实情况,自动平衡顶点着色器与几何着色器之间的工作负载。


下面结合具体实施方式
对本发明作进一步详细的说明。
图1为典型制图管道的方框图。
图2为具有几何着色器的典型制图管道的方框图。
图3为根据本发明一实施例的组合式顶点/几何(VG)着色器的方框图。
图4为根据本发明一实施例的顶点/几何(VG)着色器的硬件结构的方框图。
图5是图4所示的显示顶点/几何(VG)着色器程序的流程图。
具体实施例方式
本发明中所使用的顶点着色器与几何着色器的差异说明以下(1)输入数据不同。顶点着色器是在各输入顶点上实施,而几何着色器是在各输入图形元素上实施。这即是说,顶点着色器藉由各引用实施而输入一顶点;几何着色器藉由各引用实施而输入多个顶点(对于点为一个顶点,对于具有相邻顶点的三角形最多六个顶点)。(2)输出数据不同。对于各输入顶点,有来自顶点着色器的正好一个输出顶点;对于各输入图形元素,可以有来自几何着色器的多个输出图形元素,且此输出的图形元素的型式可以改变。(3)目的不同。顶点着色器是以顶点为基础操作,其原来被添加以取代此Transform and Light(TnL);几何着色器的添加是在以图形元素为主的处理上提供弹性,此需要图形元素信息的任务,只可以在几何着色器中达成。
顶点着色器与几何着色器的相同方面(1)两者均使用相同的指令集,而只有几个例外,其中ALU指令、流程控制指令、以及纹理存取指令均相同。(2)它们最后均在顶点数据上操作。实际上,图形元素是由一或多个顶点所构成。(3)顶点着色器与几何着色器的结构大致类似,例如,Constant/Temp的定义为类似。
本发明主要是关于图形处理,以形成用于顶点着色器与几何着色器的着色器单元。将顶点着色器与几何着色器组合成单一的着色器单元,而具有名称“顶点/几何着色器301”,或简称为“VG着色器”。
图3为根据本发明一实施例的组合式顶点/几何(VG)着色器的方框图。系统300包括顶点存/取器201、第一图形元素组合器202、顶点/几何着色器301、纹理引擎110、第二图形元素组合器204、以及剪辑/拣选观点单元106。与图2相比,第一图形元素组合器202向前移,它从顶点存/取器201直接取得顶点数据,且将此数据组合成图形元素,以及将图形元素传送至顶点/几何着色器301,可以将此在顶点/几何着色器301中使用者设定的程序分成两个阶段顶点处理阶段与几何处理阶段。在顶点处理阶段中,顶点/几何着色器301在目前图形元素中所有顶点上完成执行顶点着色器程序;然后,在几何处理阶段中,在目前图形元素上执行几何着色器程序,由于将两个着色器组合成顶点/几何着色器301,所以其只连接一个纹理引擎110,而提供纹理存取给顶点处理阶段与几何处理阶段,由顶点/几何着色器301发出多个顶点,且第二图形元素组合器204接收多个顶点且将其组合成图形元素,用于稍后的固定功能几何处理阶段。
本发明将实施顶点着色器的方式,从顶点为主改变至以图形元素为主。因此,顶点着色器可以与几何着色器组合成单一着色器单元,即顶点/几何着色器301,而以图形元素为基础进行操作。在一般情形中,一些顶点是由一个以上图形元素使用,在传统方式中,顶点着色器程序仅对各顶点执行一次。对于第一图形元素组合器202的所有顶点数据输入均具有所实施的顶点着色器处理。但是本发明将顶点着色器与几何着色器组合成顶点/几何着色器301,且第一图形元素组合器202从顶点存/取器103直接取得顶点数据,顶点/几何着色器301在输入顶点上执行顶点着色器程序,例如,此由v0、v1、v2、以及v3所代表的四个顶点,从顶点存/取器103传送至第一图形元素组合器202,第一图形元素组合器202将此四个顶点组合成两个三角形t0(v0、v1、v2)与t1(v1、v2、v3),对于此两个三角形t0与t1,两个顶点v1、v2被使用两次,然后,将t0与t1传送至顶点/几何着色器301。当处理t0时,顶点/几何着色器301首先在顶点v0、v1、v2上执行顶点着色器程序,当处理t1时,顶点/几何着色器301首先在顶点v1、v2、v3上执行顶点着色器程序,在v1与v2上的顶点着色器处理确实为冗余且浪费,本发明亦提供某种机构以确定顶点着色器处理仅对各顶点实施一次。
如图4所示,它与在图3中所说明的系统300相比,除了添加了顶点高速缓存401,其它即与图3相同,例如顶点/几何着色器301、第一图形元素组合器202、第二图形元素组合器204以及纹理引擎110。其中第一图形元素组合器202就是第一转换电路,其将第一数据格式转换成第二数据格式,即将顶点数据转换成图形元素数据,同样,第二图形元素组合器204就是第二转换电路,它也用于将顶点数据转换成图形元素数据,上述两个电路都可以具有用于转换数据功能的缓存器,顶点/几何着色器301就是处理器。第一图形元素组合器202将用于遗失顶点的顶点数据写至顶点高速缓存401,由第一图形元素组合器202传送至顶点/几何着色器301的图形元素,是由顶点的ID所描述,例如,如果第一图形元素组合器202想要将图形元素t0(v0、v1、v2)传送至顶点/几何着色器301,其将v0/v1/v2的欠缺顶点数据传送至顶点高速缓存401,且将(v0,v1,v2)的顶点ID传送至顶点/几何着色器301以代表图形元素t0。
顶点高速缓存401可以由顶点/几何着色器301读取与写入,在顶点高速缓存401与顶点/几何着色器301之间的接口404为双向的,在第一图形元素组合器202将未经处理的顶点数据写入于顶点高速缓存401中后,顶点高速缓存401担任三个角色顶点着色器(VS)的输入、输出,以及几何着色器(GS)的输入,这即是说,顶点/几何着色器301在顶点着色器阶段会从顶点高速缓存401读取此未处理顶点数据,在此数据上执行顶点着色器程序,将此结果写入于顶点高速缓存401中相同位置中,然后,顶点/几何着色器301在几何着色器阶段,会从此顶点高速缓存401读取此经处理顶点数据,而执行几何着色器程序,在此之后,顶点/几何着色器301将顶点输出至第二图形元素组合器204。
如图4所示,在顶点高速缓存401中各项目导入具有名称为“VS-Ready”的额外属性。当“VS-Ready”为伪时,意味着顶点着色器程序并未在此项目中的顶点数据上执行,此值“真”显示此储存于目前项目中的顶点数据为顶点着色器程序的执行结果,在第一图形元素组合器202中将所欠缺的顶点写入顶点高速缓存401中后,它的“VS-Ready”被初设为“伪”,顶点/几何着色器301的顶点着色器阶段会检查在目前图形元素中顶点的所有“VS-Ready”属性。如果任何顶点的“VS-Ready”为伪,则执行在其上的顶点着色器程序,且将“VS-Ready”设定为“真”;如果任何顶点的“VS-Ready”为“真”,则忽略此顶点着色器程序。当图形元素的所有顶点具有用于“VS-Ready”的“真”值时,则图形元素可以进入几何着色器阶段。在先前所提及的例子亦可使用于此。假设将两个三角形t0(v0、v1、v2)与t1(v1、v2、v3)从第一图形元素组合器202传送至顶点/几何着色器301,将所有“VS-Ready”值初设为“伪”,在取得t0(v0、v1、v2)的后,顶点/几何着色器301首先在v0、v1、以及v2上执行顶点着色器程序,因为v0、v1、v2的“VS-Ready”值均为“伪”,在此之后,v0、v1、v2的“VS-Ready”值将被设定为“真”,正如图4中所示的情况。在下一次当顶点/几何着色器301处理t1(v1、v2、v3)时,它将跳过而不在v1、v2上执行顶点着色器程序,因为其“VS-Ready”值均为“真”。然而,无论如何,并不可以跳过而不在v3上执行顶点着色器程序。
为了处理执行ALU指令的等候延迟、或纹理存取的等候延迟,可以在一个顶点/几何着色器301中执行多个VG着色器线,顶点高速缓存401应处理此种情况,而以多个VG着色器线存取在顶点高速缓存401中相同项目,此目标可以通过将另一控制属性“VS-Busy”加入于顶点高速缓存401的各顶点项目中而达成。此属性显示是否有某线正在目前顶点项目上执行顶点着色器程序,伴随者某种硬件互斥锁(mutexmutualexclusion lock)机构,此额外控制属性可以支持在一顶点/几何着色器301中的多个VG着色器线。
制图API将顶点着色器内容与几何着色器内容分别发出至驱动器,驱动器的责任为将两种着色器内容编辑与组合成一种单一VG着色器内容,然后将此内容安装在VG着色器单元上,即将此内容安装在顶点/几何着色器301上。此种组合包括将固定缓冲器组合,将缓冲器程序组合等,当组合着色器程序时,会加入一些特定着色器指令。以下的拟似(pseudo)码显示在此驱动器编辑与组合后的VG着色器程序。
(1)//顶点着色器阶段(2)检查_旗标=伪;//将检查_旗标初设为伪(3)For在图形元素中的各顶点{(4) If(顶点.VS-Ready为真)(5)Continue;//跳过此已经由顶点着色器程序处理过的顶点(6) else if(顶点.VS-Busy为真){(7) //某其它线在目前顶点上正在执行顶点着色器程序(8) 检查_旗标=真;(9) continue;//跳过正由其它线所处理的顶点(10) }(11) else{//在未处理的顶点上执行VS程序(12) //在目前顶点上的原始VS程序(13) ……
(14) }(15) }(16)//几何着色器阶段(17)if(检查_旗标=真)(18) 沉睡一直至在图形元素中的所有顶点均具有用于VS-Ready的“真”值(19)//在目前图形元素上的原始GS程序(20)……(21)发出(22)……在此拟似VG着色器程序中,行(13)代表原始顶点着色器程序,行(20~22)代表原始几何着色器程序。添加除了批注以外的其它指令,以避免冗余的VS处理且支持多个VG着色器线。
在图形元素基础上执行顶点着色器为本发明的重要特征。这即是说,即使在预-顶点处理期间,此图形元素信息可供使用。可以使用此非传统特性以实施“两个位准VS”。将原始顶点着色器程序分解成两个位准,第一位准VS产生位置与其所属性,第二位准VS产生由此第一位准所算出的其它属性。在所给定顶点上实施第一位准VS后实施剪辑/拣选,以决定是否要将此顶点舍弃。对于例如墙后的对象的整个舍弃的顶点而言,忽略其第二位准VS与GS。
顶点着色器程序典型地计算用于每个顶点的许多属性,例如位置、颜色、纹理坐标等。在顶点属性中,使用位置用于剪辑/拣选而将不可见的图形元素舍弃。如果将顶点完全舍弃,则仅其位置有用于剪辑/拣选。其它属性例如颜色、纹理坐标等,则永不使用。可以跳过计算无用属性的顶点着色器指令,可以节省某顶点计算,且可以大幅增加几何性能表现。
在传统制图管道中难以实施“两个位准VS”,因为顶点着色器程序是在顶点基础上执行而并不知晓图形元素信息,而图形元素信息为舍弃不可见的图形元素所必须。但是当给定本发明的顶点/几何着色器301结构时,则可以容易地执行“两个位准VS”。在顶点/几何着色器301结构中“两个位准VS”的流程图,见图5。如果在顶点/几何着色器301中实施“两个位准VS”,则可以将VG着色器程序分解成四个阶段。第一阶段510执行第一位准VS,计算出所需的顶点与属性;其次,第二阶段520将不可见的图形元素舍弃然后,第三阶段530执行第二位准VS,计算其余顶点与属性;最后,第四阶段540执行GS。例如,有两个三角形(t0,t1)共享一顶点v0,在第一位准VS后,由于t0为不可见而被舍弃,另一个VGS线处理t1,它跳过v0的第一位准VS(此v0的属性VS-Ready为真),但它仍需要处理用于v0的第二位准VS(此v0的属性VS-Ready1为伪),这是因为将t0舍弃而没有处理第二位准VS与GS。
需要用在顶点高速缓存401中顶点项目的更多控制属性,以支持“两个位准VS”。例如,需要“VS-Ready”/“VS-Busy”用于第一位准VS,以及“VS-Ready1”/“VS-Busy1”用于第二位准VS。如图5中所示,如果在第二阶段520中可以将一个图形元素舍弃,则可以将第二位准VS与几何着色器指令均跳过,这对于性能表现非常有帮助。
总之,由上述描述可知,本发明已完全且有效地达成其目的,相应地,上述实施例的目的在于说明本发明的功能与结构原理。故本发明虽然列举了上述优选实施方式,但是应该说明,显然本领域的技术人员可以进行各种变化和改型。因此,除非这样的变化和改型偏离了本发明的范围,否则都应该包括在本发明的保护范围之内。
权利要求
1.一种图形处理系统,其特征在于其包括一第一转换电路,将第一数据格式转换成第二数据格式;一处理器,执行一第一着色器程序与一第二着色器程序,以该第二数据格式接收输入,且以该第一数据格式输出结果;以及一第二转换电路,将该第一数据格式转换成该第二数据格式,其中该输入来自该第一转换电路,以及该结果输出至该第二转换电路。
2.根据权利要求1所述的图形处理系统,其特征在于其还包括一储存装置,其记录与该第一色器程序有关的状态,而用于该处理器的存取。
3.根据权利要求1所述的图形处理系统,其特征在于该第一数据格式包括一顶点格式。
4.根据权利要求1所述的图形处理系统,其特征在于该第二数据格式包括一图形元素格式。
5.根据权利要求1所述的图形处理系统,其特征在于该第一着色器程序包括一顶点着色器程序。
6.根据权利要求1所述的图形处理系统,其特征在于该第二着色器程序包括一几何着色器程序。
7.根据权利要求1所述的图形处理系统,其特征在于包括一纹理单元,用于提供所述处理器的纹理信息。
8.一种图形处理方法,其特征在于其包括以下步骤将一图形数据由顶点格式转换成图形元素格式;以该图形元素格式在该图形数据上执行一顶点着色器程序;以该图形元素格式产生第一结果;以该图形元素格式在该第一结果上执行几何着色器程序;以该顶点格式产生第二结果;以及将该第二结果由该顶点格式转换成该图形元素格式。
9.根据权利要求8所述的图形处理方法,其特征在于包括当执行该顶点着色器程序时,由一纹理引擎提供一第一纹理存取。
10.根据权利要求8所述的图形处理方法,其特征在于包括当执行该几何着色器程序时,由该纹理引擎提供一第二纹理存取。
11.根据权利要求8所述的图形处理方法,其特征在于包括当执行该顶点着色器程序时,将该着色器程序分解成一第一位准着色器程序与一第二位准着色器程序。
12.根据权利要求8所述的图形处理方法,其特征在于在该图形元素格式中的图形数据包括一位置属性与复数个性质属性。
13.根据权利要求12所述的图形处理方法,其特征在于该性质属性包括颜色、亮度、或复数个纹理坐标。
14.根据权利要求8所述的图形处理方法,其特征在于包括当执行该顶点着色器程序时,忽略该图形数据的性质属性。
全文摘要
一种图形处理系统,包括第一转换电路,将第一数据格式转换成第二数据格式;处理器,执行第一着色器程序与第二着色器程序,以该第二数据格式接收输入,且以该第一数据格式输出结果;第二转换电路,将该第一数据格式转换成该第二数据格式。一种图形处理方法,其将图形数据由顶点格式转换成图形元素格式;以该图形元素格式执行顶点着色器程序;以该图形元素格式产生第一结果;以图形元素格式在第一结果上执行几何着色器程序;以顶点格式产生第二结果;及将第二结果由顶点格式转换成图形元素格式。本发明能够减少图形处理系统的芯片面积、容纳各种制图管道组态,并且对于不同真实情况,自动平衡顶点着色器与几何着色器之间的工作负载。
文档编号G06T15/00GK101017566SQ20071008583
公开日2007年8月15日 申请日期2007年2月26日 优先权日2006年10月24日
发明者尹小勤, 郑金山, 夏芳, 邵平平, 张剑波 申请人:图诚科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1