CN101067869A - 处理图形的方法和设备 - Google Patents
处理图形的方法和设备 Download PDFInfo
- Publication number
- CN101067869A CN101067869A CNA2006101309450A CN200610130945A CN101067869A CN 101067869 A CN101067869 A CN 101067869A CN A2006101309450 A CNA2006101309450 A CN A2006101309450A CN 200610130945 A CN200610130945 A CN 200610130945A CN 101067869 A CN101067869 A CN 101067869A
- Authority
- CN
- China
- Prior art keywords
- pel
- child partition
- tabulation
- draw
- child
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 177
- 238000012545 processing Methods 0.000 title claims abstract description 81
- 238000005192 partition Methods 0.000 claims description 670
- 230000008569 process Effects 0.000 claims description 84
- 238000009826 distribution Methods 0.000 claims description 25
- 238000003860 storage Methods 0.000 claims description 15
- 238000002360 preparation method Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 6
- 238000013459 approach Methods 0.000 claims description 3
- 230000015654 memory Effects 0.000 description 49
- 238000005516 engineering process Methods 0.000 description 26
- 238000006243 chemical reaction Methods 0.000 description 19
- 230000002349 favourable effect Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 230000008859 change Effects 0.000 description 10
- 238000012360 testing method Methods 0.000 description 10
- 238000005457 optimization Methods 0.000 description 6
- 241001269238 Data Species 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 230000001174 ascending effect Effects 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000004321 preservation Methods 0.000 description 3
- 230000000630 rising effect Effects 0.000 description 3
- 238000004148 unit process Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005520 cutting process Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000001788 irregular Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000011112 process operation Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 210000003818 area postrema Anatomy 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- KAATUXNTWXVJKI-UHFFFAOYSA-N cypermethrin Chemical compound CC1(C)C(C=C(Cl)Cl)C1C(=O)OC(C#N)C1=CC=CC(OC=2C=CC=CC=2)=C1 KAATUXNTWXVJKI-UHFFFAOYSA-N 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Geometry (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提供了一种处理图形的方法和设备,特别是在基于区块的图形处理***中使用的方法和设备。在该方法中,要绘制的场景的子分区集合的方案的一种实施例是:要绘制的场景50被划分为多个子分区或区块51。单独子分区51也组合为不同组的多子分区集合。存在顶级层,其包括包含整个场景区域50的8×8子分区的集合54。然后有一组4个4×4子分区的集合53,然后有一组16个2×2的子分区集合52,并最后是包括64个单个子分区51的层。图元列表构造单元依次获取每个图元80,确定该图元的位置,比较该图元位置和子分区51的位置和子分区的集合52、53和54的位置,并从而将该图元分配给子分区和子分区集合的相应图元列表。
Description
技术领域
本发明涉及一种处理图形的方法和设备,尤其涉及这样的一种在基于区块(tile-based)的图形处理***中使用的方法和设备。
本发明将特别参照三维图形的处理进行描述,虽然本领域技术人员将会理解,本发明同样适用于二维图形的处理。
背景技术
作为本领域公知的,图形处理通常通过首先将要显示的场景划分为许多类似的基本组份(component)或者“图元(primitive)”来进行,接着对图元进行期望的图形处理操作。图形的“图元”通常是简单多边形的形式,例如三角形,而且通常通过定义它们的顶点进行描述。
对图形处理操作而言,作为本领域公知的,每个图形图元通常都进一步划分为离散图形实体或者元素,通常叫做“片断(fragment)”,在其上执行实际图形处理操作(例如绘制(rendering)操作)。每个这样的图形片断都表示并且符合图元中的给定位置,并且实际上包括一组所关注的(inquestion)位置的数据(例如颜色和深度值)。
每个图形片断(数据元素)通常对应最后显示中的单一像素(象元)(由于像素是要显示的最后图片中的奇点,通常在图形处理器操作的“片断”和显示中的像素之间有一对一映射)。但是,可能有“片断”和“像素”之间不存在直接对应的情况,例如在显示最后图像之前,在绘制图像上执行了诸如按比率缩小的特殊形式后处理。
因此,典型执行的图形处理的两方面是将图形“图元”(多边形)位置数据“栅格化(rasterising)”为图形片断位置数据(即确定用于在要显示的场景中表示每个图元的图形片断的(x,y)位置),并然后“绘制”该“栅格化的”片断(即着色、阴暗处理该片断等)用于在显示屏幕上显示。
(在图形学文献中,术语“栅格化”有时用于指图元转换为片断并绘制。但是,这里“栅格化”仅用于指将图元数据转换为片断地址。)
许多图形处理***使用所谓的“基于区块”绘制。在基于区块绘制中,要显示的二维场景被再分或者划分为多个更小的子分区,通常叫做“区块”。所述区块(子分区)都分别各自绘制(典型地一个接一个的)。接着绘制的子分区(区块)重新组合以提供用于显示的完整帧。在该方案中,场景被典型地划分为规则尺寸和形状的子分区(区块)(它们通常例如是正方形或者长方形),但是这并不是必需的。
其他一般用于“分块(tiling’)”和“基于区块”绘制的术语包括“程序分块(chunking)”(子分区叫做“程序块(chunk)”)和“桶(bucket)”绘制。方便起见,下文中使用术语“区块”和“分块”,但应当理解的是这些术语意在包括全部可替代的和等价的术语和技术。
这种基于区块绘制的优点在于在给出的区块中没有出现的图元不必为该区块处理,并因此当处理该区块时可以忽略。这使得给定场景所必需的图形处理的总量减少了。
因此,在基于区块绘制的***中,通常希望可以识别和得知实际上出现在给定的子分区(区块)中的那些图元,以便于,例如,避免不必要地绘制区块中没有实际出现的图元。为了帮助实现这一点,已知为每个子分区(区块)准备该子分区的要绘制的图元(例如将出现在子分区中)列表。这样的“区块-列表”(同样也可以称作“图元列表”)标识(例如,由图元指示符引用)要为所关注的区块(子分区)绘制的图元。
因此为要绘制的每个子分区(区块)准备区块列表的过程基本上包括确定为给定的子分区(区块)应当绘制的图元。该过程通常通过确定(以期望的精确度级别)与所关注的区块相交(即(至少部分)出现在其中)的图元并且随后准备这些图元的列表以供图形处理***未来使用而执行。。(这里应当注意,在一个图元落入多于一个区块的情况下(如同经常出现的情况),该图元被包括在它所落入的每个区块的列表中)事实上,可以认为每个子分区(区块)都具有一个箱(区块列表),任何发现落入(即相交)该子分区的图元都放入该箱中(并且,实际上,以这种方式在逐区块的基础上分类图元的过程通常称为“装箱”)。
如本领域公知,确定应该为任何给定区块列出(绘制)的图元的过程可以以不同的精确度级别执行,例如取决于分块和绘制过程的不同部分的效率最佳化。例如,在最精确的级别,能够准确地确定给定图元将至少部分出现在哪些区块中,并且该图元随后将只包括在这些区块的区块列表中。这通常称做“准确”装箱。
图1示出了准确装箱过程。如图1所示,将要显示的场景1划分为十六个规则尺寸的子分区或者区块2。接着为该场景中的每个图元确定该图元实际上出现在(落入)哪个或者哪些区块中。将该图元加入到发现其落入的每个区块的区块列表中。因而采用图1中所示的例子,图元3被加入到区块4的区块列表中,图元5被包括在区块6和7的区块列表中,图元8包括在区块9,10,11和12的区块列表中,且图元13包括在区块12的区块列表中。(这里应当注意,为了清晰起见,图1只是示出了若干区块和图元。本领域技术人员应当理解,在实际图形处理操作中,通常存在多得多的图元和区块。)
同样已知对具有比准确装箱实现的更低精确度的区块列表的准备。这可能对例如简化区块列表的准备有用。一个普通“较低精确度”装箱技术是“边界框”装箱。在这种情况下,围绕一个图元或者一组图元绘制所谓“边界框”,然后确定由该边界框覆盖的区块。接着为每个已经发现要被该边界框覆盖(至少部分)的区块列出(装箱)该边界框代表(即由该边界框包围)的一个图元或者多个图元。
因而这种方案使用边界框,而不是图元本身,来确定一个给定图元应该为哪些区块列出以绘制。这可能意味着,例如,一个图元可能为其没有实际落入的区块列出以绘制(例如,如果边界框并非充分紧密的或者精确的环绕该图元),但是另一方面,在这种方式中边界框的使用可以简化区块列表的准备。
一旦以这种方式为每个子分区(区块)准备了要绘制的图元的列表(区块列表),就存储该(区块)列表,用以,例如,允许***当绘制所关注的区块时识别需要考虑(和绘制)哪些图元。
已经发现该基于区块的绘制方案工作良好,因为它们能,例如,帮助避免图元被为其没有出现在其中的场景分区而进行处理。
但是,需要准备和存储标识要为每个区块绘制的图元的区块列表的一个缺点是,取决于这些图元在一个场景中的分布,一个场景中不同区块的区块列表可能具有非常不同的尺寸,不同场景中的区块的区块列表也是如此。这意味着,例如,与其他场景或者区块相比,给定场景或者区块为了存储它的(多个)区块列表具有显著不同的存储要求。这意味着,例如,区块列表的存储要求不能可靠地预计,并且将例如依赖于给定场景中的图元的分布而改变。但是,在图形***中,特别是在诸如移动设备(移动电话、PDA、手持装置等)的具有更多限制的设备上实现的图形***中,已知或者通常能够预计存储器使用需求是有利的。
因此申请人相信仍有余地改进现存基于区块绘制的***。
发明内容
根据本发明第一方面,提供一种分类图形图元以便在图形处理***中绘制的设备,在所述***中,要绘制的场景被划分为多个要绘制的子分区,该设备包括:
用于为场景的单个子分区准备用于绘制的图元列表的装置;以及
用于为包括场景的一个以上子分区的一组子分区准备用于绘制的图元列表的装置。
根据本发明的第二方面,提供一种分类图形图元以便在图形处理***中绘制的方法,在所述方法中,将要绘制的场景划分为多个要绘制的子分区,该方法包括:
为场景的单个子分区准备用于绘制的图元列表;以及
为包括场景中一个以上子分区的一组子分区准备用于绘制的图元列表。
本发明指一种基于区块的绘制***(即其中要绘制的场景被划分为多个子分区),其中,如同现有技术中基于区块绘制的***,可以(并且)为场景的给定的子分区(区块)准备用于绘制的图元列表。但是,与现有技术的***中不同,同样可能在本发明的***中准备用于绘制场景中多子分区(区块)的集合的图元列表(即拥有该场景的多个子分区(区块)的区块列表(以及,事实上,更大的子分区))。
换句话说,在本发明中,可以(并且优选)为场景的单个子分区(区块)和包括多于一个场景子分区(区块)的子分区集合,准备独立(不同)的图元列表。因而,例如,并且优选,将为场景的单个子分区准备一个用于绘制的图元列表(一个区块列表),并且将为包括多于一个场景子分区的子分区集合准备用于绘制的独立(不同)的图元列表(区块列表)。
如本发明中准备不同场景“区域”区块列表的可能性具有许多优势。例如,如同下面会进一步讨论的,通过可选择的存储单个子分区中的图元和/或多个子分区区块列表,可以改变用于区块列表的存储器的数量。因此本发明促进更好的控制和知晓区块列出处理的存储器使用需求。将图元分类到不同区域区块列表同样可用于提供,例如,关于场景中图元分布的信息。这可能是有用的,例如,当考虑诸如顶点数据缓存的操作时(因为它可以帮助,例如,确定是否缓存给定的顶点数据)。
本发明的方案意味着,除了准备只为单个区块专有的图元的区块列表,还可以并且准备将共同用于多个区块(子分区)的区块列表。。
换句话说,本发明帮助实现(选择性的)分类或者包含用于在具有不同分辨率的区块列表中绘制的图元(即用于不同尺寸区域),即,例如,在只为单个子分区(区块)专用的区块列表中,和/或在通常用于一个以上子分区(区块)的区块列表中。这有助于改变和控制准备和存储区块列表的场景“分辨率”,并且从而改变和控制所述区块列表的存储要求等。
因而,根据本发明第三方面,提供一种分类图形图元以便在图形处理***中绘制的设备,在所述图形处理***中,要绘制的场景被划分为多个用于绘制的子分区,该设备包括:
用于将要绘制的图元至少包括在用于绘制单个子分区的图元列表中,或者由多于一个的场景子分区共同使用的要绘制的图元列表中的装置。
根据本发明的第四方面,提供一种分类图形图元以便在图形处理***中绘制的方法,在所述图形处理***中,要绘制的场景划分为多个子分区进行绘制,该方法包括:
将要绘制的图元选择性地至少包括在用于绘制场景的单个子分区的图元列表中,或者由多于一个的场景子分区共同使用的要绘制的图元列表中。
因而,根据本发明第五方面,提供一种分类图形图元以便在图形处理***中绘制的设备,在所述图形处理***中,要绘制的场景被划分为多个用于绘制的子分区,该设备包括:
用于将要绘制的图元包括在一个或者多个要绘制的图元列表中的装置,其中要绘制的图元列表可以只为单个子分区专有或者可用于场景的一个以上子分区。
根据本发明的第六方面,提供一种分类图形图元以便在图形处理***中绘制的方法,在所述图形处理***中,要绘制的场景划分为多个子分区进行绘制,该方法包括:
将要绘制的图元包括在一个或者多个要绘制的图元列表中,其中要绘制的图元列表可以只为单个子分区专有或者可用于场景的一个以上子分区。
如本领域的技术人员将会理解的,本发明的这些方面可以适当地包含这里公开的本发明的任何一个或者多个或者全部优选或者可选特征。
要绘制的场景被划分的子分区(区块)可以是任何适合的或者期望的这种子分区。如本领域公知的,它们优选地全部是相同尺寸和形状(即优选使用规则尺寸和形状的区块),虽然这不是必要的。子分区优选是正方形或者长方形。子分区的尺寸和数量可以按照需要选择。在一个优选的方案中,每个子分区(区块)在尺寸上都是16×16或者32×32片断(然而,然后该场景被划分为所使用的显示(帧)尺寸所需的许多这样的子分区)。
为其准备图元列表的包括一个以上子分区的一个或者多个子分区的集合可以是任何期望的或者适合的一组或多组场景子分区。每个一个以上子分区的集合优选的包括整数个子分区。但是,这不是必要的,有可能为一个包括子分区部分的集合准备图元列表,例如包括一又二分之一子分区,或者三又四分之三个子分区等。这样的包括子分区的几分之一的子分区集合可能需要特定的(例如不寻常或不规则)的图元形状和/或尺寸,因为它们可以允许这样的图元更有效地列出在区块列表中。
在优选的实施例中,所述多子分区的集合,以及优选的每个多子分区的集合,包括一组相邻的子分区。更优选的,该子分区的集合或者每个子分区的集合形成规则形状的屏幕区域,例如正方形或者长方形。更优选的,该多子分区的集合或每个多子分区的集合形成正方形。但是,这也不是必要的,而且如果需要的话可以使用多子分区的更加不规则的分组(形状),例如“L”型分组或者三角形分组。这种不规则形状也可能对列出更不寻常或者不规则形状和/或尺寸的图元有用。
在优选的实施例中,可以选择和在使用中改变包括在一个或者一个以上多子分区的集合中的子分区。这允许***根据例如要绘制的图元的尺寸和/或形状设计列出多个子分区的图元。
在具体的优选实施例中,可以为多个多子分区的集合准备图元列表(即,使得存在多个这样的图元列表,每个相应于场景的一个以上子分区的集合)。每个多子分区的集合都可以是不同的(例如,在它们的尺寸和/或形状上),但是在优选的该方案中,每个多子分区的集合都与其它的多子分区的集合相比具有相应的和/或相似的尺寸和/或形状,和/或具有相似的和/或相应的子分区数量(且优选子分区的排列)。例如,一些或者全部多子分区的集合都可以是,而且实际上优选的是正方形的形状。
在这些方案中,每个多子分区的集合都优选的包括与其它的多子分区集合不同的场景子分区的集合。多子分区的每个或者每一个集合可以包含不同子分区,或者多子分区的不同集合能例如共同具有,它们的一些子分区,但是不是全部。
在这些方案中,所述多子分区的集合优选的一起覆盖整个场景,即,拥有场景划分的所有单独子分区。这种方案有效地提供场景被划分的另一层或者多层区域(所述多子分区的集合),每个这样的区域拥有多个该场景被划分为的“基本”子分区或区块。在这种类型的方案中,图元列表可以由此以两种(或更多)不同分辨率准备,以单个子分区级别,或者以多子分区集合的级别。
在具体的实施例中,整个场景区域划分为一组多个多子分区的集合,以便于该组中的多子分区的集合共同拥有该场景被划分的全部单独子分区,并且该组中的每个多子分区的集合优选包括相同数目的子分区,并且优选具有相同的形状。这种多子分区集合的分组优选的提供子分区集合层,可以为该子分区集合列出覆盖基本、单个子分区“层”的图元。最优选的,提供一个以上这种多子分区集合的分组,即,使得如果期望的话,可以在不同层(级别)列出图元。
在具体的优选实施例中,可以为包含不同数量子分区的多子分区的集合准备图元列表。因而,例如,可以为4个子分区的集合或者为16个子分区的集合等等准备列表。这样允许进一步改变和控制准备图元列表的分辨率。在优选的实施例中,有两种或者更多,优选三种或者更多为其准备图元列表的多子分区的不同尺寸的集合,最优选的具有逐渐减少的分辨率级别(即,包含数量增多的子分区)。
在具体的优选实施例中,安排可以为其准备图元列表的多子分区的集合,使得该场景可以由一层或多层(多组)子分区的集合覆盖,并且最优选由多层子分区集合覆盖。因而,例如可能有一层子分区的集合,所述集合每个都包含覆盖基础“层”的单个子分区的四个子分区。然后,可能例如优选还有一层子分区的集合,每个集合都包含覆盖基础单个子分区层和“四个子分区”层等的16个子分区。
在这样的方案中,给定层的子分区集合优选的全部包含相同数量的单独子分区,但是每个不同层(假如提供的话)中的子分区集合对其他层中的集合而言,优选的包括不同数量的子分区。
因而,在优选的实施例中,优选存在一个或多个并且优选多组的多子分区的集合(每个这样的组,例如并且优选形成覆盖要绘制的整个场景的一层(即包含该场景被划分和可以划分的所有子分区)),并且每组中的子分区集合优选都包括相同数目的子分区,并且不同组中的子分区集合包括不同数目的子分区。
这些方案可以允许,例如,由多子分区集合的多个不同分辨率的层有效覆盖要绘制的场景,每个这样的“层”,由都包含相同数目子分区的多子分区集合的一个分组(一个方案)构成,并且不同“层”的多子分区集合包含不同数量的子分区。
在一个具体优选的这种方案中,子分区集合的组(层)以分级方式排列,即,使得当在这些组或层中移动时,每个组中的每个集合里的子分区的数目逐渐改变。它们最优选被排列为,当沿所述层上升时,它们有效形成基于正方形的角锥体结构。包括在任何给定的层(组)的子分区集合中的子分区的数量,都优选的随着从基础、单子分区层上升而逐渐增加。优选的,安排子分区的集合,使得每个连续层中子分区的集合中具有4倍于紧前面一层的集合中的子分区,也就是说,使得基本层是单个子分区的,然后有包含四个子分区的集合的层,然后是16个子分区的集合的层,等等,优选的一直到包含要绘制的整个场景的子分区的单个集合。实际上最优选的有三个或者更多这样的层(组)(包括“基础”、单子分区层)。
这种方案有效允许为要绘制的场景的逐渐减少的分辨率级别(即,子分区的划分)准备图元列表。
在具体优选的这种方案中,可以为每个子分区(区块)、为子分区的每个2×2分组、为子分区的每个4×4分组、为子分区的每个8×8分组等准备图元,直到要绘制的整个场景的图元列表(即整个帧缓冲器的列表)。
如本领域技术人员应当理解的,在整个显示区域(场景)不是正方形的情况下(通常将是如此),对于该方式的子分区的最大分组的情况,一些子分区的集合实际上可能超越该场景(或显示器)的范围。这没有问题,因为***无论如何不会尝试准备或者绘制不在要绘制的场景内(即位于场景或者显示器之外)的子分区的图元列表,并且因而给定的子分区集合可能包括位于场景边界之外的子分区的事实不会也不将影响图元列出过程。
在优选的实施例中,优选的分级安排子分区的集合,以使得实际上可以为整个场景、为划分为4个分区的场景、为划分为16个分区的场景、为划分为64个分区的场景等等准备图元列表,直到它划分为单个子分区。
使用上面的方案,可以例如确保(通过以适当分辨率级别,即适当子分区分组来分类给定的图元)任何给定的图元永远不需要包括在四个以上的图元列表中。这会允许,例如,更可靠地涵盖图元(区块)列表的存储要求(以及将知道的最大可能存储要求(例如,从要绘制的图元数量中知道))。
尽管不必为给定场景被划分和可以划分的每一个子分区或多子分区的集合准备图元列表,但是在特别优选的实施例中,为场景被划分的每个子分区(区块)准备图元列表,并且可以为每个多于一个子分区的集合准备图元列表。(但是,应当注意在某些情况下本方案中图元列表可以是并且可能是空(即不包含图元),例如根据图元如何在场景中分布,以及确定将这些图元存储在哪些(区块)列表中。)
因而,根据本发明的第七方面,提供一种分类图形图元以便在图形处理***中绘制的设备,其中要绘制的场景划分为用于绘制的多个子分区,并定义一个或者多个都包括该场景的一个以上子分区的子分区的集合,该设备包括:
用于为场景的每个子分区准备用于绘制的图元列表的装置;以及
用于为场景的每个一个以上子分区的集合准备用于绘制的图元列表的装置。
根据本发明的第八方面,提供一种分类图形图元以便在图形处理***中绘制的方法,该方法包括:
将要绘制的场景划分为用于绘制的多个子分区;
定义该场景子分区的一个或者多个集合,每个集合包括该场景的一个以上子分区;以及
为该场景的每个子分区和每个一个以上子分区的集合准备用于绘制的图元列表。
本领域技术人员将会理解,本发明的这些方面可以包括这里所公开的本发明的任何一个或者多个或者全部优选的和可选的特征。因而,例如优选准备包含场景的不同数量子分区的多子分区的集合(且具有为其准备的图元列表)。
为每个子分区和子分区集合列出一个或者多个图元的过程,以及为每个子分区或者多子分区的集合准备图元列表的过程,都可以以任何适当的和期望的方式执行。例如,任何已知并且用于向区块列表中分类和装箱图元的技术,例如精确装箱或者边界框装箱,或者在中间的任何技术,都可以在这个过程中使用。
因而,例如,可以基于一个图元在场景中的确定位置(如当前技术已知的,该位置可以是该图元的精确位置或者是基于围绕该图元的边界框确定的该图元的大约位置)对应该绘制该图元的子分区和子分区的集合进行初始确定,接着在其确定位置表明应该绘制该图元的一些或所有子分区或多子分区的集合中列出该图元。然后为场景中的每个图元重复这个过程,以便能够准备该场景的图元列表的完整集合。
因而,在优选的实施例中,确定场景中给定图元的位置并将之与场景所划分的子分区和/或多子分区的集合进行比较,以确定可以或者应当为哪些子分区或多子分区的集合绘制该图元(例如,出现在(落入)其中)。
可以以任何适合的方式执行这种比较和确定一个图元出现的子分区等的过程,例如使用用于此目的的现有技术中已知的技术。因而,例如,可以使用上述“精确”装箱技术(在这种情况下将确定图元出现的实际子分区(区块)等),或者可以使用边界框技术(在这种情况下将确定边界框覆盖的子分区(区块),因而如当前技术已知的,图元列表可能不太精确并且包括该图元没有时间出现的子分区),或者按照需要使用介于“精确”装箱和最通用边界框技术之间的任何方案等。然后为场景中的每个图元重复这个过程。
在使用边界框技术的情况下,可以按照需要产生边界框。例如,如本领域已知的,可以在每个图元基础上产生边界框,或者为一个或者多个多图元的集合产生边界框。该边界框可以例如通过主***的图形处理器API或者驱动器产生。
在优选的实施例中,在使用边界框的情况下,通过图形处理器或者处理单元(优选是准备图元列表的处理器),例如通过适合的软件或者硬件例程,在所述图元列出阶段产生边界框。这允许在图形处理器本地产生边界框,然后一旦用于图元列出过程就删除。如本领域已知的,这样的方案可以例如采用所关注的一个或多个图元的顶点,并且从中确定该一个或多个图元的最大和最小的x,y位置,并且然后相应地产生边界框。
根据本发明的第九方面,提供一种分类图形图元以便在图形处理***中绘制的设备,该***中,要绘制的场景划分为用于绘制的多个子分区,所述设备包括:
用于确定可以或者应当绘制一个图元的一个或者多个子分区的装置;
用于将该图元包括在子分区的要绘制的图元列表中的装置,该子分区是所确定的可以或者应当绘制该图元的子分区;以及
用于将该图元包括在子分区集合的要绘制的图元列表中的装置,所述子分区集合包括一个以上的子分区,其中包含所确定的可以或者应当绘制该图元的子分区。
根据本发明的第十方面,提供一种分类图形图元以便在图形处理***中绘制的方法,该图形处理***中要绘制的场景划分为用于绘制的多个子分区,所述方法包括:
确定可以或者应当绘制一个图元的一个或者多个子分区;以及
将该图元包括在子分区的要绘制的图元列表中,该子分区是所确定的可以或者应当绘制该图元的子分区;或者
将该图元包括在子分区集合的要绘制的图元列表中,所述子分区集合包括一个以上的子分区,其中包含所确定的可以或者应当绘制该图元的子分区。
本发明的这些方面可以再次包括这里描述的本发明的一个或者多个或者全部优选和可选的特征。因而,例如,可以或应当绘制一个图元的子分区可以使用“精确”装箱技术来确定(在这种情况下,可以或应当绘制该图元的子分区将准确包括该图元将出现在其中(或落入其中)的那些子分区),或者可以使用边界框技术来确定(如本领域已知的,在这种情况下所确定的可以或应当绘制该图元的子分区应当包括该图元将出现在其中(或落入其中)的那些子分区),但是还可以包括该图元没有实际出现在其中的其它子分区(但是该子分区由该边界框围绕),或者可以由其它任何适合的和需要的技术来确定。
给定的图元可以例如包括在所确定的应当绘制该图元的(例如,在精确装箱的情况下,发现其出现在其中的)各个和每个子分区和多子分区的集合的图元列表中。但是,在特定的优选实施例中,给定的图元仅包括在所选的(所选数量的)确定的可以或者应当为其绘制该图元的子分区和多子分区的集合的图元列表中,即,该图元选择性的包括在确定的应当绘制该图元的(例如,发现该图元已经落入的)子分区和多子分区的集合的图元列表中。
因而,例如,图元应当包括在要绘制该图元(例如,已经发现落入其中)的子分区的图元列表中(或者多个单独子分区的独立图元列表),和要绘制该图元(例如,已经发现落入其中)的多子分区的集合的图元列表中。
这种将图元选择性的包括在图元列表中的特征有助于在例如存储图元列表的存储使用和要求方面实现更大的灵活性。
因而,根据本发明的第十一方面,提供一种分类图形图元以便在图形处理***中绘制的设备,在所述图形处理***中将要绘制的场景划分为多个要绘制的子分区,所述设备包括:
用于选择性的将图元包括在对应于要绘制的场景的单个子分区的图元列表中,和/或在对应于要绘制的场景的一个以上子分区的图元列表中的装置。
根据本发明的第十二方面,提供一种分类图形图元以便在图形处理***中绘制的方法,在所述图形处理***中将要绘制的场景划分为多个用于绘制的子分区,所述方法包括:
用于选择性的将图元包括在对应于要绘制的场景的单个子分区的图元列表中,和/或在对应于要绘制的场景的一个以上子分区的图元列表中。
此外,本发明的这些方面可以包括这里公开的本发明的任何一个或多个或全部的优选和可选特征。因而,例如,优选存在多个图元列表,每个对应于可在其中有选择地列出图元的场景的不同子分区或者子分区的集合。
在本发明的这些方面和实施例中,该方案是优选的,以便于图元不包括在初始确定的可以或者应当绘制该图元的全部子分区和多子分区的集合的图元列表中(例如,图元或者其边界框落入或者相交或者相切),但是包括在少于初始确定的可以或者应当绘制该图元的全部子分区或者子分区的集合的图元列表中。
换句话说,该方案优选使得图元可以并且优选只列出在一些而不是全部的可以或应该列出该图元的独立图元列表中(即,初始确定的可以或者应该为其绘制该图元(例如发现该图元或其边界框落入其中或与之相交或接触)的所有子分区和多子分区集合的图元列表)。因而,优选将图元列出在至少一个,但不是所有的确定可以或应当为其绘制该图元的子分区和子分区集合的独立图元列表中。
图元可以以任何适合的和期望的方式、选择性的存储在确定其可以或者应当绘制的(例如,发现它们或者它们的边界框落入的)子分区和子分区的集合的图元列表中。例如,优选列出多子分区的集合的图元,而不是通过子分区基础在子分区上列出图元,将减少用于存储图元(区块)列表的存储要求(由于场景将需要更少的图元列表),反之亦然。因而,例如选择性的在子分区级别或者子分区集合的级别(或者多个级别)列出图元,可以用于改变和控制区块列出过程的存储器使用需求。本发明因此帮助实现了更灵活和可控制的(至少在存储器使用需求方面)区块列出过程。
优选给定图元仅被包括在足以使得为所确定的应该绘制该图元的所有场景区域(例如,该图元或其边界框出现的地方)绘制该图元的图元列表中。这可以帮助避免不必要的重复列出用于相同场景区域的图元。因而,在具体的优选实施例中,关于要绘制一个图元的每个子分区,只在一个图元列表中列出该图元。这个列表可以是单独子分区的图元列表,或者是包括所关注的子分区的多子分区的集合的图元列表。
因而,当图元包括在多子分区的集合的图元列表中时,优选的该图元不同时包括在该多子分区的集合中的任何子分区的独立图元列表中。
类似的,在存在都覆盖相同场景区域的多个多子分区集合的情况下,优选的图元也不包括在其图元列表包括该图元的多子分区集合所包围的任何多子分区集合的图元列表中。
因而,最优选的,当图元被包括在一个多子分区集合的图元列表中的时候,该图元不包括在该集合完全包围(覆盖)的任何子分区或多子分区集合的图元列表中。
这里应当注意的是,给定的图元可以列出在,并且实际上可以包括在场景的不同分区的不同分辨率级别(即场景区域(子分区不同尺寸的集合))的图元列表中。例如,图元可以包括在其位于的部分场景的单个场景子分区(区块)的图元列表中,但是包括在其出现的场景的另一部分的多子分区的集合(即以更高级别)的图元列表中。但是,在优选的实施例中,给定的图元仅以一个分辨率级别列出,即,对于要列出(绘制)该图元的所有场景分区只为相同级别(尺寸)的子分区集合(或只为单个子分区)列出该图元。
在安排多子分区的集合以使场景被多层不同分辨率(尺寸)的场景区域覆盖的情况下,如上所述,那么在特定的优选实施例中,通过测试图元将图元分配给子分区或子分区集合的图元列表中,并且优选对于每个图元在每个连续的子分区集合级别(层)进行测试,从最高层开始(即子分区的一个或多个集合包括最多子分区的级别),来确定在所关注的级别该图元将需要被包括在多少不同图元列表中。这个过程优选的继续通过所述层向下重复,直到确定在给定级别(层)应该列出该图元的图元列表的数目超过了列表的阈值数目(优选是预定的),或者到达了底部的单子分区级别层。
更优选的,一旦到达图元要包括在比该级别需要列出该图元的阈值数目更多的图元列表中的层,那么将图元实际上“列出”,即,放置在前一级别(层)的子分区集合的图元列表中(即,需要包括该图元的图元列表的数量不超过阈值数目的最后一层)。这保证了图元或者每个图元应当永不包括在比图元列表的阈值数目更多的图元列表中,由此易于例如更精确的控制和知晓图元(区块)列表的存储器使用需求。
因而,在具体的优选实施例中,图元,并且优选的每个图元,都不列在多于选择的,优选地是预定的,图元列表的(阈值)数量中。
在这些方案中可以按照需要选择要使用的图元列表的阈值数目。由于,如上所述,阈值数目实际上将作为将列出图元的图元列表的最大数目,在该***中阈值数目实际上可以用于在必须存储更多和更长的图元列表(通过选择更高的阈值)但是随后在绘制阶段对图元的处理量减少和与此相反的情况之间设置期望的优化和折衷(妥协)。
该阈值数目优选的是大于一的整数,优选的大于二,且最优选的大于三。在具体的优选实施例中,图元列表的阈值数目为四。可以优选的改变并在使用中设置阈值数目。
在具体的优选实施例中,阈值数目对应于在该子分区集合分级结构中在相邻的连续层之间子分区集合中的子分区数目的比值(即,每个连续层中子分区集合数量的放大系数)。因此,例如,在安排子分区集合使得它们在连续层中是1×1、2×2、4×4、8×8个等覆盖该场景的子分区,即,使得每层中子分区的数量每次增加四倍的情况下,该阈值数目优选为四。
在具体的优选实施例中,在发现从图元需要被列出在超过图元列表的阈值数目的级别(层)步进上升的级别(层),将列出该图元的图元列表的数量等于该阈值(例如4),然后测试在紧邻的前一层该图元是否只需要列出在单个图元列表中,并且如果是这样的话,在该较高的级别,而不是需要在阈值数目的图元列表中列出该图元的级别,在单个列表中列出该图元。
换句话说,在图元在一个级别可以列出在单个图元列表(即只有单个子分区集合的图元列表)中,但是在下一个下降的级别必须列出在阈值数目的图元列表中的情况下(即子分区集合或子分区的阈值数目的图元列表(在最低的单个子分区级别)),(并且下一个下降的级别多于阈值数目的图元列表),然后优选在单列表级别列出该图元,即只将其包括在单个列表中。换句话说,如果必须列出图元的图元列表的数量在递降的连续级别上从一改变为图元列的阈值数目(例如,四),该图元优选在单个列表级别列出。这是有利的,因为其允许图元仅包括在一个列表中,同时保证为所有需要绘制该图元的子分区处理该图元。
因而,从上面可以看出,在具体的优选实施例中,在子分区集合分级结构的每个级别测试给定的图元,在从顶层下数的第二层开始(因为顶层将是覆盖整个场景的单个列表),并且随后是从顶层下数的第三层,等等,直到发现在给定层该图元需要被包括在超过阈值数目的图元列表中。那么将把该图元列出在紧邻的前一层,即最后一个需要阈值数目的或更少的图元列表列出该图元的层,除非在下一个上升层(即超过图元列表的阈值数量的层之上两层的层)可以将图元列出在单个图元列表中的特殊情况下,在这种情况下将把图元列出在该单个图元列表中。
接着将为场景中的每个图元重复这个过程,直到已经列出该场景的所有图元,而且已经准备了该场景被划分或者可以划分为的所有子分区和子分区集合的图元列表。
当然,将可能使用其他方案决定在哪里(在子分区集合的分级结构中的哪个级别)列出给定的一个或者多个图元。例如,不是考虑在给定级别需要列出一个图元的图元列表的绝对数量(或者也考虑该绝对数量),而是可以考虑在例如两个连续的层(级别)需要包括一个图元的图元列表的数量的差,并且使用该差值来确定在哪里(在哪个级别)列出该给定图元。例如,可以将该差值与阈值相比较,并且在比较结果的基础上列出该图元。当然其他方案也是可能的。
独立图元列表和它们之中的图元可以任何期望的和合适的方式安排并且包括任何期望的和合适的数据。这些列表优选以本领域中已经用于这些的列表的方式来安排和包含数据。因而,它们优选包括,例如,列表中的每个图元的顶点的标识符或指向该顶点的索引和指针。这些图元优选在每个列表中以期望的绘制顺序(第一个到最后一个)列出(排序),这使得这些图元能够以先入先出的基础从列表中读取。如本领域已知的,通常以将绘制图元的顺序来产生图元。在这种情况下,在每个列表中图元可以简单地并且优选地以它们被产生的顺序列出。
一旦已经如上所述分类了所有图元和为子分区和子分区集合准备了图元列表,然后就可以处理和绘制这些子分区(区块)了,使用该图元列表以确定需要为每个子分区处理哪些图元。
这个绘制过程可以是并且优选地是以类似于已知的基于区块绘制***的方式执行。因而,优选地,分别处理和绘制每个子分区(区块),即,一个接一个地绘制各个单独子分区。这种绘制可以以任何期望的方式执行,例如,通过以连续或者并列方式来绘制各个子分区。一旦已绘制了所有的子分区(区块),然后就可以重新组合它们,例如在本领域已知的用于显示的帧缓冲器中。
本领域技术人员将理解,随着处理和绘制每个子分区,为了确定为该子分区必须处理和绘制的图元,必需检查唯一用于该子分区的图元列表和所有包括该子分区的多子分区集合的图元列表。
申请人已认识到,这可能意味着在一个多子分区集合的图元列表中列出的图元将为了该多子分区集合的每个子分区被进行处理,而不管该图元是否实际出现在该集合的给定的单独子分区之中,并且结果是为实际上没有出现该图元的子分区处理该图元。但是,尽管这样,申请人仍相信本发明具有优势,因为其允许,例如现对于当前技术***,***设计者和应用程序编程者能够更好和更容易地控制在例如存储器使用需求和图形处理需求之间的期望优化和折衷。
该图元列表检查和对给定子分区要绘制的图元的识别按照期望执行。但是,在优选的实施例中,将图元列表提供给图元选择单元,该单元从该图元列表中选择下一个要绘制的图元,然后将该图元提供给用于绘制的绘制单元(例如流水线)。
该图元选择单元可以采取任何适当形式。在优选的实施例中,其包括区块读取单元。
最优选地,将不同图元列表,例如覆盖给定的子分区(区块)的不同级别(分辨率)的列表并行地(即同时地)提供给图元选择单元,然后使用图元选择单元从列表之一中选择下一个要处理的图元。换句话说,图元选择单元将接收并提供多个图元(区块)列表,并从那些多个列表中选择用于绘制的图元。
相信这样的方案是新颖的并且在其本身的权利中是有利的。因而,根据本发明的第十三方面,提供一种设备,其用于选择用于在图形处理***中绘制的图元,该设备包括:
图元选择单元,用于选择用于绘制的图元;以及
用于并行地为图元选择单元提供多个图元列表的装置;其中
该图元选择单元包括用于从提供给它的图元列表之一中选择要绘制的图元的装置。
根据本发明的第十四方面,提供一种方法,其用于选择在图形处理***中绘制的图元,该方法包括:
并行地向图元选择单元提供多个图元列表;以及
该图元选择单元从提供给它的图元列表之一中选择要绘制的图元。
本领域技术人员应当理解,本发明的这些方面和实施例可以并且优选地包括这里描述的本发明的任何一个或多个或全部优选和可选的特征。因而,例如,图形处理***优选的是基于区块的绘制***(在这种情况下,图元选择单元将,例如,(并且优选的)包括区块读取单元)。
可以从所有图元列表中并行地选择下一个用于绘制的图元(例如,可以简单的向图元选择单元并行地提供其可以从中选择用于绘制的下一个图元的所有图元列表)。但是,在优选的实施例中,仅从所选择的图元列表的集合(典型地和优选地少于全部的)(即,在使用图元列表选择单元的情况下给该选择单元提供的集合)中选择下一个用于绘制的图元。最优选地,从已知包括或者覆盖所关注的子分区(即,该当前正在绘制的子分区)的全部图元列表(给图元选择单元提供的图元列表)中挑选图元,且最优选只从(提供给图元选择单元的)那些图元列表选择。在具体的优选实施例中,图元是从(同时提供给图元列表选择单元)每个分辨率级别的单个图元列表中适当挑选的,即,所关注的单个子分区的列表,包括所关注的子分区的2×2的子分区集合的列表,包括所关注的子分区的4×4的子分区集合的列表,包括所关注的子分区的8×8的集合的子分区列表等等。
要为给定区块从中选择图元的图元列表的集合(即图元选择单元应该读取的图元列表集合,以便确定要为给定区块绘制的图元)可以任何需要的方式表明(例如,向图元选择单元表明),例如通过将给该数据发送给图形处理器(例如,图元选择单元)。在优选的实施例中,当要绘制新区块时发送该信息,例如,作为与“新区块”命令(告知绘制单元开始绘制新区块的命令)相关的命令或其一部分。因而,每个子分区(区块)都优选的具有与其在某些方面相关的,用于该子分区(区块)的图元列表的集合。当然其他方案也是可行的。
表明将为给定的子分区(区块)使用哪些图元列表的信息可以以任何适合的和期望的形式提供。在一个优选的实施例中,提供指向相关图元列表的指针或者索引的集合。在另一个优选的实施例中,提供指向该图元列表的指针或者索引的集合的变化,以允许***识别和改变在绘制新的子分区(区块)的时候需要改变的图元列表。同样可能,例如准备在使用的图元列表和子分区(区块)的x-y位置之间的关系的预定集合,然后可以使用该关系来根据子分区的(区块的)x,y坐标,确定用于该子分区(区块)的图元列表。例如,子分区的x,y位置可以用于索引到指定为每个子分区位置要使用的图元列表的查找表中。当然可以使用其他方案。
可以以任何期望的和适合的方式从提供的(用于子分区的)图元列表中选择(例如,由图元选择单元)下一个要绘制的图元。例如,可以总是优选从最低分辨率的列表(例如,单个子分区的列表)选择图元,直到该列表取尽为止等等,反之亦然。
但是,申请人已经认识到在图形处理中确保图元以期望的顺序(典型的以其最初产生的顺序)绘制是重要的。对于只有单个图元列表用于给定子分区(区块)的情况,这并不是困难的,因为可以正确的顺序,即在先入先出的基础上按照它们产生的顺序一个接着一个的将图元添加和列出在图元列表之中。
实际上,如前所述,在依照本发明产生的各区块列表中,优选以图元产生的顺序将它们列出,并且在采用该方案的情况下,对于任何给定的图元列表,无论如何所述图元以正确顺序在各图元列表中列出。
但是,将希望能够保证,在例如为图元选择单元同时提供多个从中选择用于绘制的下一个图元的图元列表的情况下,该选择单元能够以正确的、期望的顺序从该不同的列表中选择图元。
因而,在具体的优选实施例中,图元的产生和分类过程能够索引图元或者给图元添加索引,优选的当这些索引包括在图元列表中时,可以随后由图元选择单元使用该索引来选择下一个要处理的图元。这优选的通过将图元连续地编号来实现,优选的在它们包括在图元列表中时。最优选的每个图元具有与其相关的分类索引,当将图元包括在图元列表中时优选分配该索引(即在图元列出(装箱)的阶段)。在将图元添加到(列出在)所确定的要列出该图元的一个和多个图元列表中时,优选将分配给一个图元或每个图元的编号(分类索引)包括在具有图元标识符的图元列表中。
可以以任何合适的和期望的方式实现索引。例如,每次处理一个新图元以将其列出在图元列表中(即每次“装箱”一个新图元)并且将当前计数值分配给该图元的时候,将计数器加1。其它加索引方案,比如使用分段索引按照组或者集合来为图元加索引并且随后在每个组或集合中加索引的方法等等,当然也是可行的。
这种在列出(装箱)图元的时候给图元加索引的方法有助于子分区(区块)的绘制过程,因为其将,例如,帮助实现以正确的顺序绘制图元。特别地,可以使用为每个图元给定的(分类)索引来选择下一个要绘制的正确(期望)的图元,从而允许,例如,当要绘制这些图元时重构期望的图元顺序,并且帮助保证这些图元可以以期望(正确)的顺序来自或取自不同的图元列表以进行绘制。
在这个方案中,下一个要处理的图元优选的例如由图元选择单元根据每个列表中的(下一个)图元的索引(例如,优选的,有效地在每个列的最前面的图元的下一个图元的索引)从多个图元列表中选择。例如,在图元以升序索引(这样先处理最低编号图元)的情况下,图元选择单元例如优选的确定(读取)在每个列表中的下一个图元的索引,并选择索引号最低的图元来下一个进行绘制。
相信图元的这样的索引方案在其自己的权利要求内可能是新的和有利的。因而,根据本发明的第十五方面,提供一种图形处理***,包括:
用于列出用于绘制的图形图元的装置;
用于使每个列出的图形图元与图元索引结合的装置;以及
用于使用与图形图元相关的索引来分类图元的装置。
根据本发明的第十六方面,提供一种图形处理***的操作方法,包括:
列出用于绘制的图形图元;
使每个列出的图形图元和图元索引结合;以及
使用与图形图元结合的索引来分类图元。
本领域技术人员将理解,本发明的这些方面可以并且优选包括这里所描述的本发明的一个或多个或全部优选的和可选的特征。因而,例如,分配给图元的索引优选的用于排序(分类)用于绘制的图元(即,用于控制绘制图元的顺序),且优选在将图元列出(装箱)在用于绘制的图元列表中的时候分配给图元。类似的,如上所述,图元可以优选的在只为要绘制的场景的单个子分区专有的图元列表中列出,而且在共同用于场景的多个子分区的图元列表中列出。
申请人已经进一步认识到,以上述方式为图元加索引以便于当要绘制图元时能够再造图元的正确顺序的方法,可以用来帮助实现图形处理的其它有利过程和操作。
例如,特别的,以这种方式为图元加索引可以帮助实现以分布式方式处理各个图元,例如通过多个不同处理器或者处理单元,因为当要绘制图元时可以使用这些索引来将分布的图元聚集(重新组合)为正确的顺序。这会允许,例如,来自要绘制的图元流的不同图元分布在并行运行的多个不同几何结构处理器或处理单元之中,并且随后图元重新组合为它们的原始“流”以进行绘制。
因而,上述类型的图元索引方案可以用于,例如,支持和帮助实现多个几何结构和/或装箱(图元列出)引擎在给定图元流(集合)上并行操作,在处理速度等能够比较的方面获得成比例的增加。
相信这样的方案在其自身权利要求中是新的和有利的。因而,根据本发明的第十七方面,提供一种处理一组用于绘制的图形图元的方法,包括:
将来自该图元组的图元分布到多个处理单元;以及
将所述分布的图元重新组合为一组图元。
根据本发明的第十八方面,提供一种处理一组用于绘制的图形图元的设备,该设备包括:
用于将来自该图元组的图元分布到多个处理单元的装置;以及
用于将所述分布的图元重新组合为一组图元的装置。
本领域技术人员可以理解,本发明的这些方面和方案可以且优选的适当包括在这里描述的本发明的任何一个或多个或全部优选的和可选的特征。
因而,例如,所述图元的组或集合优选的包括图元流,例如特定顺序的图元的线性序列。类似的,所述图元组优选的重新组合为单个图元组(例如,优选的,单个图元流)。如本领域已知的,有可能所述图元组不必在***输入的更高级别上提供为流,但是,对于***的一些或所有基础处理要配置为流(并且当是流或者不是流的形式的时候,以所述的本发明这些方面和实施例的方式分布)。
因而,在具体的优选实施例中,图元组是图元流,来自该流的图元被分布在多个处理单元,且分布的图元被重新组合为单个图元流。
类似的,图元优选的都具有在被分配给处理单元之前关联或者分配给它们的索引,当将该分布的图元重新组合为例如单个流时,优选的使用该索引。该索引优选的用于排序或者分类图元(例如,将它们以期望的顺序放置在重新组合的流中)。
同样的,将图元分配给的处理单元优选的是类似单元(例如,在其可以执行的功能和/或操作方面类似),且优选的都在分配的图元上执行类似操作(功能)(当然这不是必须的,如果需要或者合适的话可以使用不同的处理单元和操作)。(这里应当理解,通过“相同操作”是指在图元上执行相同形式或者类型的操作或者处理,虽然,实践中执行的实际操作会发生变化和,例如,依赖于每个独立图元的特性和需求。)处理单元优选并行操作,例如,使得它们可以都在(不同的)图元上同时操作(处理)。
在优选的实施例中,处理单元是几何结构处理器,和/或最优选的执行一个或者多个几何操作,例如变换、裁剪、和/或照明(lighting)图元,和/或执行图元装箱处理(即将图元放置在用于标识为要绘制场景的给定的一个或多个子分区绘制哪些图元的图元列表中)。
类似的,本发明的这些方面和实施例的方法和设备优选的包括用于绘制图元的步骤或者装置。最优选的在这样的方案中,将分布的图元重新组合为公共流发生在发送图元进行绘制之前,或者发送图元进行绘制的时候(同时)。
根据本发明的第十九方面,提供一种处理用于显示的图形图元组的方法,包括:
将索引分配给图元组中的图元;
将来自图元组的图元分布到多个处理单元;以及
在图元由处理单元进行处理之后,使用该分配给图元的索引分类图元。
根据本发明的第二十方面,提供一种处理用于显示的图形图元组的设备,包括:
用于将索引分配给图元组中的图元的装置;
用于将来自图元组的图元分布到多个处理单元的装置;以及
用于在图元由处理单元进行处理之后,使用该分配给图元的索引分类图元的装置。
本领域技术人员将会理解,本发明的这些方面和方案可以并且优选的适当包括这里描述的本发明的任何一个或多个或全部优选的和可选的特征。
因而,例如,图元组优选的包括图元集合,且最优选是图元流。
类似的,图元优选的都具有在被分配给处理单元之前关联或者分配给它们的索引,并且该索引优选用于在由多个处理单元处理之后排序图元以便随后进行对图元的处理,并且最优选(在合适的情况下)将分布的图元重新组合为单个图元流(具有期望的图元顺序)。
同样的,将图元分配给的处理单元优选的都执行类似操作(功能),优选并行操作,并且最优选执行一个或多个几何结构处理操作和/或图元装箱处理。
类似的,本发明的这些方面和实施例的方法和设备优选的包括用于绘制图元的步骤或装置,且分配给图元的索引优选的用于排序要绘制的图元。
因而,根据本发明的第二十一方面,提供一种处理用于显示的图形图元组的方法,包括:
向图元组中的图元分配索引;
将来自图元组的图元分布到多个处理单元;
绘制来自图元组的图元;以及
使用分配给图元的索引来控制绘制图元的顺序。
根据本发明的第二十二方面,提供一种处理用于显示的图形图元组的设备,包括:
用于向图元组中的图元分配索引的装置;
用于将来自图元组的图元分布到多个处理单元的装置;
用于绘制来自图元组的图元的装置;以及
用于使用分配给图元的索引来控制绘制图元的顺序的装置。
本领域技术人员将会理解,如果合适的话,本发明的这些方面和方案可以并且优选的确实包括这里描述的本发明的任何一个或多个或全部优选的和可选的特征。因而,例如,图元优选的以图元流的形式进行绘制,图元优选的都具有在将它们分配给处理单元之前关联或分配给它们的索引,且将图元分布到的处理单元优选的执行相同(类似)的操作(功能),优选并行操作,且最优选的执行一个或者多个几何处理操作,和/或执行图元装箱处理。
在使用分布式图元处理方案的情况下,图元组(例如,流)中的图元可以以任何期望的方式分配给各个处理单元。例如,图元可以简单的一个接一个的分配给可用的处理单元。在优选的实施例中,将从该组选择的一个图元集合或一批图元发送到一个处理单元,并且将该组中的下一个集合或下一批发送到下一个处理单元,如此类推。该方案优选使得图元组中的任何给定图元都只发送给一个处理单元,虽然这不是必须的。
在一个具体的优选实施例中,图元组(例如,流)中的图元在绘图调用(drawing call)的基础上分配给多个例如并行的处理单元,优选使得用于给定的绘图调用的所有图元都发送到相同的处理单元(但是不同的绘图调用可以发送到,且如果可能的话优选的发送到,不同的处理单元)。如本领域已知的,在图形处理中图元通常分组为集合,一起作为一组,例如,用于编程者打算一次绘制的特定场景区域。这样共同处理的图元组通常称为“绘图调用”。因而,在绘图调用的基础上分配图元进行处理,例如,有利的保证用于一个绘图调用的图元被处理时保持“在一起”。
在这些方案中,图元可以以任何合适的方式加索引(如果使用索引的话)(即,只要索引允许要创建的(例如当绘制图元时)期望图元顺序(例如流))。因而,例如,全部图元可以简单的连续编号,例如,当它们以上述的类似方式分布。
但是,在优选的方案中,尤其是以逐批(逐个集合)为基础(例如以绘图调用为基础)分配图元的时候,使用组合的或者分段的索引(编号)方案。最优选的,编号这些批(例如,绘图调用),优选连续的编号,然后(再一次优选连续地)编号每批(之内的)图元。因而,例如,对于绘图调用编号1,然可能有图元1至n,然后在绘图调用编号2下,有图元1至m,等等。换句话说,例如,索引绘图调用,然后索引每个绘图调用中的图元。当将所述图元重新组合时,***会顺序的、一个接一个的取这些绘图调用(批),并且对给定的绘图调用以每个绘图调用(批)中的顺序取图元。
在优选的该实施例中,排列索引以便于索引的较高顺序位(选择的最高顺序位的集合)用于所述批,例如,绘图调用编号,然后(剩余)较低顺序位用于该批(例如,绘图调用)内的图元编号。这提供了在每批(例如,绘图调用)的基础上索引图元的特别方便的方式,并因此用于将图元以批分配给多个并行操作的处理器。换句话说,优选的使用分段的索引编号,具有表示该批(例如,绘图调用)编号的较高顺序位,和表示该批(例如,绘图调用)中图元编号的较低顺序位。
本领域技术人员将会理解,在上面的方案中,在给定的批之中,有可能不是所有的可用图元索引被需要因而被使用。在这样的情况下,当使用索引来排序图元用于例如绘制的时候,该***一旦已经处理(例如绘制)了给定批的所有图元,则步进到下一个批(绘图调用)并且开始从那里绘制图元。为了帮助实现这一点,可以在需要的情况下在索引中包括诸如跳转或链接命令的指示器,以允许***认识到给定的批(例如,绘图调用)中的图元何时耗尽,从而***知道随后移动到索引顺序中的下一个批(绘图调用)。
因而,可以看到在本发明的这些方案和方面的优选的实施例中,(例如,为一个场景)要绘制的图元的流或者集合将划分为分离的批(每批图元优选的对应于绘图调用),这些批图元被分配给多个并行操作的几何和装箱引擎,该引擎将执行几何操作,例如对图元的变换,它们接收图元并且在该屏幕的子分区或子分区集中的图元列表中列出图元。此后,当开始绘制图元时,该绘制过程可以如上所述使用存储在图元列表中的与图元关联的索引,以再创建期望的和正确的绘制图元的顺序。
以此方式,本发明的这些方案可以用于,例如,允许几何和图元装箱操作以分布的并行方式执行,其可以例如用于提高该过程的效率。
在上述方案中,要将索引分配给图元,这可以以任何适合的和期望的方式实现。优选的在将图元分配给处理单元之前完成,最优选的在分配它们时完成。可能(例如,在分配时间)向一次处理中的每个图元分配完整的索引,或者例如该索引可以在多个阶段中分配。例如,在如上所述以绘图调用为基础分配图元的情况下,可以在分配绘图调用进行处理的时候分配“绘图调用”的索引,而为绘图调用中的各个图元加索引的过程(或不是全部)可以在稍后执行,例如在处理该绘图调用的时候。
本领域技术人员将会理解,有可能在上面的方案中简单的允许足够的索引(例如,编号),使得能够索引可能为任何给定场景产生的各个和每一个图元。但是,申请人已经认识到可能不是总希望如此。例如,向场景提供在实际中很少或从来不会达到的特别大量的图元索引的可能性也许是低效的。另一方面,如果没有安排索引使得其能够应付任何场景可能要求的最大图元数量,那么有可能一个场景的图元数量超过能够分配给这些图元的索引的容量。
在这种情况下可能返回索引的开始(即,“回绕”图元编号)。但是,申请人认识到,这不是总是期望和合适的,因为这可能产生两个具有相同索引的仍然都“活着”(即仍然正被绘制或将被绘制)的不同图元。
因而,在具体的优选实施例中,***可以认识到何时达到或耗尽图元索引容量,并且响应于此列出图元,使得从那时开始,对于给定的子分区只存在单个图元列表从中选择图元,例如,使得在索引耗尽之后图元选择单元对于给定子分区只从单个图元列表读取图元。这将确保,例如,一旦索引容量已经耗尽,图元选择单元对于任何给定子分区只有单个图元列表用于从中选择图元进行绘制,并且因而保证一旦该***的用于连续索引图元的容量被耗尽,该***仍然能够处理图元(因为,从那时开始,对于任何给定子分区只有单个图元列表用于从中选择图元进行绘制,并且因而不再需要在两个或更多列表的图元之间进行选择)。
因而这个方案提供一种在图元的可用索引用尽的事件中自动防故障操作模式。
上面的方案可以以任何期望的和合适的方式实现。在优选的实施例中,通过在索引容量已经耗尽之后***在相同、选择的、优选预定的分辨率级别(层)列出产生的全部图元来实现,例如,总是在单个子分区列表中,或者总是在2×2子分区列表中,或者总是在4×4子分区列表中等等。
因而,在具体的优选实施例中,***能够认识到索引已经达到最高可用索引(例如,计数器已经达到其最大值),且响应于此***从那时起总是在给定、选择、优选预定的相同分辨率级别(层)列出图元。
在这些方案中,优选的最高索引编号可用于保留和分配给在已经产生倒数第二个索引图元后产生的所有图元,以便于***容易识别何时已经达到“索引-被耗尽”状态且处于其中。
在优选的实施例中,***(例如,图元选择单元)可以识别它是否已经绘制过其当前选择进行绘制的图元,并且如果已经绘制过则能够忽略该图元并且试图选择一个不同的图元。这种情况可能发生,例如,如果相同图元出现在覆盖给定的子分区(区块)的两个不同图元列表中,并且当***到达包括该图元的其它一个或多个列表的头部的时候已经从所述列表之一绘制了该图元。认识到这种事件允许***避免绘制相同图元两次。
因而,在优选的实施例中,***能认识到(例如,图元选择单元可以认识到)要从中选择图元以进行绘制的图元列表何时包括相同的图元多于一次(例如,相同图元在同时提供给图元选择单元的两个或更多图元列表的头部),以使得,例如并且优选,能够避免两次发送相同的图元进行绘制。
在这种方式下对图元的重复的识别可以以任何合适的和期望的方式执行。例如,图元选择单元或者另一个单元可以使用图元的图元索引(例如,比较它们),以了解其是否重复(例如,匹配)。如果识别到双重的或者重复的图元,则该***(例如,图元选择单元)优选的选择一个用于绘制并且丢弃其他的。
在本发明的具体的优选实施例中,一个或者多个图元列表可以且优选的由图形处理器缓存或者在图形处理器中缓存,最优选的由图元选择单元缓存,即图元列表可以且优选存储在图形处理器的本地的、更快速的可访问存储器。因而,本发明的设备和方法优选的包括用于缓存一个或者多个图元列表的装置或步骤。这样的缓存可以减少关于图元列表的带宽的使用。
优选缓存较高级别(较低分辨率)图元列表,即,用于场景的多子分区的列表。缓存这样的图元列表是有利的,因为当处理不同子分区(区块)时该图元列表将被再次使用,不象为单个子分区专有的图元列表(其因而将只使用一次),并且通过缓存这些图元列表,可以获得更有效的处理。事实上,本发明的优点在于它促进缓存图元列表,并因此更有效的缓存图元数据。
和上述缓存图元列表一样,在需要时也可以缓存其他数据。事实上,在具体的优选实施例中,以上面的形式缓存顶点数据(顶点),以及(或取代)图元列表。这也具有优点,能够将可能用于一个以上的子分区的顶点数据本地存储(缓存)以备使用,而不是每次需要时从外部存储器检索。
如本领域所公知的,该缓存的数据可以存储在相同或不同的缓冲存储器中。
当以该方式缓存图元列表和/或顶点(或其他)数据,缓冲存储器中数据的存储(并且特别是置换)优选的根据数据应用到的“子分区集合”分级结构中的级别(例如,数据是为单个子分区或多子分区的集合(以及,例如,集合中有多少子分区)存储),而不是例如根据简单的先进先出的准则。这有助于优选保留多个子分区可能需要的缓冲数据。优选的,保存的数据的所用的级别越高,它的置换优先权越低。因此,该“层”(级别)结构优选的用于区分缓冲存储器中数据的置换优先次序。
在具体的优选实施例中,选择并优选的预定各个子分区的绘制顺序,以便提高任何缓存数据的有效使用。最优选的,选择绘制顺序以便以如下形式绘制子分区,在完全绘制了一层中的一个给定子分区集合之后才开始绘制该层中的另一个子分区集合。这将帮助确保可以使用给定的子分区集合的所有数据并接着在开始绘制下一个子分区的集合之前安全丢弃这些数据。
换句话说,优选以如下顺序绘制各个子分区,确保在给定层中不同子分区集合之间的边界没有交叉,直到已绘制第一子分区集合的所有子分区。这有助于保证为相应子分区集合保存的数据只需要缓存最小的时间段。
如上所述,在所述方案是使得连续的层在它们的子分区集合中具有1×1,2×2,4×4,8×8等子分区的情况下,这可以通过以莫顿(Morton)顺序绘制子分区实现。
虽然上面已参考存储用于各个子分区或一个以上子分区的集合的图元列表描述了本发明,但是在类似基础上保存其他图形数据也是可能的。例如,存在其他形式的图形数据,诸如图形绘制、设置,诸如剪裁参数或图元类参数(例如,图元是否是点、线、三角形或四边形)和可以在每个子分区(区块)或子分区组的基础上指定的子分区(区块)命令(例如,最后区块命令)。
申请人已认识到,以类似于上面讨论的图元列表的形式,能在每个子分区基础上或为多个子分区共同的保存(选择性的)这些数据类型是同样有利的。
例如,如果特定参数或命令要用于每一个子分区,优选的将其保存在为整个场景共同使用的单个图元(或其他)列表中。另一方面,对于只有一个或若干子分区需要的命令或数据,优选将其只针对那些子分区保存,例如只在所述分级结构中包含相关子分区的较低的级别。
因此,除了以上述方式保存图元用于准备图元列表,本发明的***可以优选的还保存数据和命令(例如,优选在该场景的单独子分区和多子分区集合的独立“列表”中)。优选的,这些命令和数据以子分区和子分区集合的分级结构中将使用或需要它们的级别来保存,如上面的示例。
在这些方案中,图形数据(例如,命令和设置)可以例如保存在用于子分区和子分区集合的独立“命令”列表中。然而,在特别的优选实施例中,该图形数据被包括在用于子分区和子分区集合的图元列表中,即,使得一个和优选每一个图元列表可以并将包括与其他图形数据一起的图元列表,其它图形数据例如在图元列表中散布的命令、设置和/或参数。
在具体的优选实施例中,该其他图形数据以类似于图元的形式索引,同样,这将允许数据以正确的顺序使用。同样,对于该数据可以使用独立的索引,但是最优选的,在图元的索引中为它加索引,即,使得,例如,***将(例如,在已绘制前三个图元之后执行命令)绘制图元1,2,3,然后执行命令4,然后绘制图元5,6,……,等等。
我们相信,以该形式保存数据在其本身的权利要求中会是新的并有利的。
因此,根据本发明的第二十三个方面,提供一种分类数据和/或命令以便在图形处理***中用于绘制的设备,在该图形处理***中,将要绘制的场景划分为多个用于绘制的子分区,该设备包括:
用于为场景的单个子分区准备在绘制该子分区时使用的数据和/或命令集合的装置;以及
用于为场景的包括多于一个子分区的子分区集合准备在绘制该子分区集合的子分区时使用的数据和/或命令集合的装置。
根据本发明的第二十四个方面,提供一种分类数据和/或命令以备在图形处理***中用于绘制的方法,在该图形处理***中,将要绘制的场景划分为多个用于绘制的子分区,该方法包括:
为场景的单个子分区准备在绘制该子分区时使用的数据和/或命令集合;以及
为场景的包括多于一个子分区的子分区集合准备在绘制该子分区集合的子分区时使用的数据和/或命令集合。
根据本发明的第二十五个方面,提供一种分类数据和/或命令以备用于在图形处理***中绘制的设备,在该图形处理***中,将要绘制的场景划分为多个要绘制的子分区,该设备包括:
将用于绘制的数据或命令至少包括在用于绘制场景的单个子分区的数据和/或命令集合中,或包括在用于绘制该场景的多于一个子分区的数据和/或命令集合中的装置。
根据本发明的第二十六个方面,提供一种分类数据和/或命令以备用于在图形处理***中绘制的方法,在该图形处理***中,将要绘制的场景划分为多个要绘制的子分区,该方法包括:
选择性的将用于绘制的数据或命令至少包括在用于绘制场景的单个子分区的数据和/或命令集合中,或包括在用于绘制该场景的多于一个子分区的数据和/或命令集合中。
根据本发明第二十七个方面,提供一种分类数据和/或命令以备用于在图形处理***中绘制的设备,在该图形处理***中,将要绘制的场景划分为多个要绘制的子分区,该设备包括:
将用于绘制的数据或命令包括在一个或更多用于绘制的数据和/或命令集合中的装置,其中该用于绘制的数据和/或命令集合可以只为单个子分区专有或者可以用于多于一个场景子分区。
根据本发明第二十八个方面,提供一种分类数据和/或命令以备用于在图形处理***中绘制的方法,在该图形处理***中,将要绘制的场景划分为多个要绘制的子分区,该方法包括:
将用于绘制的数据或命令包括在一个或更多用于绘制的数据和/或命令集合中,其中该用于绘制的数据和/或命令集合可以只为单个子分区专有或者可以用于多于一个场景子分区。
根据本发明第二十九个方面,提供一种分类数据和/或命令以备用于在图形处理***中绘制的设备,在该图形处理***中,将要绘制的场景划分为多个要绘制的子分区,该设备包括:
用于选择性的将用于绘制的数据或命令包括在对应于场景的单个子分区的用于绘制的数据和/或命令集合中,或包括在对应于该场景的多于一个子分区的用于绘制的数据和/或命令集合中的装置。
根据本发明第三十个方面,提供一种分类数据和/或命令以备用于在图形处理***中绘制的方法,在该图形处理***中,将要绘制的场景划分为多个要绘制的子分区,该方法包括:
选择性的将用于绘制的数据或命令包括在对应于场景的单个子分区的用于绘制的数据和/或命令集合中,或包括在对应于该场景的多于一个子分区的用于绘制的数据和/或命令集合中。
根据本发明第三十一个方面,提供一种处理图形数据元素流的方法,该方法包括:
将来自图形数据元素流的数据元素分布到多个并行操作的处理单元中;以及
将分布的数据元素重新组合为图形数据元素的单个流。
根据本发明第三十二个方面,提供一种用于处理图形数据元素流的设备,该设备包括:
用于将来自图形数据元素流的数据元素分布到多个并行操作的处理单元中的装置;以及
将分布的数据元素重新组合为图形数据元素的单个流的装置。
根据本发明第三十三个方面,提供一种处理图形数据元素流的方法,该方法包括:
将索引分配给图形数据元素流中的数据元素;
将来自图形数据元素流的数据元素分布到多个并行操作的处理单元中;
在数据元素已由并行操作的处理单元处理之后,使用分配给数据元素的索引分类这些数据元素。
根据本发明第三十四个方面,提供一种处理图形数据元素流的设备,该设备包括:
用于将索引分配给图形数据元素流中的数据元素的装置;
用于将来自图形数据元素流的数据元素分布到多个并行操作的处理单元中的装置;
用于在数据元素已由并行操作的处理单元处理之后,使用分配给数据元素的索引分类这些数据元素的装置。
根据本发明第三十五个方面,提供一种处理图形数据元素流的方法,该方法包括:
将索引分配给图形数据元素流中的数据元素;
将来自图形数据元素流的数据元素分布到多个并行操作的处理单元中;
处理来自图形数据流的数据元素;以及
使用分配给数据元素的索引控制其中处理数据元素的顺序。
根据本发明第三十六个方面,提供一种用于图形数据元素的设备,处理图形流的该设备包括:
用于将索引分配给图形数据元素流中的数据元素的装置;
用于将来自图形数据元素流的数据元素分布到多个并行操作的处理单元中的装置;
用于处理来自图形数据流元素的数据元素的装置;以及
用于使用分配给数据元素的索引控制其中处理数据元素的顺序的装置。
本领域技术人员将能理解,本发明的以上方面可以并优选包括这里所述本发明的一个或多个或全部优选和可选特征。因此,例如,保存用于子分区或用于一个以上子分区集合的数据和/或命令优选的包括用于绘制该子分区或子分区集合的图元列表,和/或用于该子分区或子分区集合的其他数据或命令。在优选实施例中,它既包括要绘制的图元列表,也包括用于子分区或子分区集合的其他数据和命令。类似的,图形数据元素优选的包括图形图元和/或其他图形数据和/或命令。
应该认识到,尽管这里对“图元”的引用主要涉及“简单”多边形形式的图形图元,如本领域公知的,比如三角形、格栅、线或点等,(并且,在优选实施例中,确实涉及“简单”多边形形式的图形图元,比如三角形、格栅、线或点等),但是本发明也适用于较大的图形对象或图元,诸如用于表示场景中的较大对象和/或较小多边形的组(比如一组邻接三角形)的图形组件或图元。例如,可能需要将一组多个单独的多边形作为单个图形对象或图元来处理和分类。这样的较大的、“复杂的”图元(“元图元”(meta-primitives))同样可以以本发明的方式为子分区和子分区集合列出。因而,除非上下文另外要求,这里对“图元”等的引用应该如此解释。
可以以任何所需或适合的形式执行本发明的各种功能。在具体的优选实施例中,在产生并输出图形数据的单个图形处理平台上执行它们,该图形数据被写入用于显示装置的帧缓冲器。按需要在硬件或软件中实施上述功能。在优选实施例中,将***实施为硬件元件(例如,ASIC)。因此,在本发明的另一方面包括硬件元件,该硬件元件包括这里所述本发明任何一个或多个方面的设备或依照这里所述本发明任何一个或多个方面的方法来操作。
这里也应该注意,如本领域技术人员将理解的,可以在给定处理器上重复和/或并行执行本发明的各种功能等。例如,可以存在并行操作的多个图元选择单元。
本发明可以应用于任何形式或配置的图形处理器和绘制仪(renderer),诸如具有“管线(pipeline)”结构的绘制仪(在该情况中,绘制仪将是绘制管线的形式)。
正如从上面可以理解的,本发明特别,虽然不是唯一的,应用于3D图形处理器和处理装置,并相应扩展到包括这里所述发明的一个或多个方面的设备或依照这里所述本发明的一个或多个方面的方法来操作的3D图形处理器和3D图形处理平台。对于执行上述特定功能所需的任何硬件,这样的3D图形处理器可以另外包括3D图形处理器包括的一个或多个或所有的常用功能单元等。
本领域技术人员也可以理解,当合适时,本发明的所有所述方面和实施例可以包括任何一个或多个或所有这里所述的优选和可选特征。
可以使用例如计算机程序的软件至少部分实施根据本发明的方法。因此,可以看到,当从其它方面看,本发明提供在数据处理装置上安装时特别适用于执行这里所述的方法的计算机软件,包括当在数据处理装置上运行时用于执行这里所述的方法的计算机程序代码部分的计算机程序元件,和包括当在数据处理***上运行时适用于执行这里所述的一个或多个方法的步骤的代码措施的计算机程序。本发明也扩展到包括这样的软件的计算机软件载体,当这样的软件用于操作包括所述数据处理装置的图形处理器、绘制仪或微处理器***时,联合所述数据处理装置使得所述处理器、绘制仪或***执行本发明的方法的步骤。该计算机软件载体可以是诸如ROM芯片、CD ROM或光盘的物理存储介质,或可以是诸如有线电子信号、光信号或诸如卫星的无线电信号等的信号。
可以进一步理解,不是本发明的方法的所有步骤需要由计算机软件执行,并因此从更广的方面,本发明提供计算机软件,安装在计算机软件载体上的该软件用于执行这里提到的方法的至少一个步骤。
本发明因此适合实现为与计算机***一起使用的计算机程序产品。这样的实施可以包括固定在诸如计算机可读介质(例如磁盘、CD-ROM、ROM、或硬盘)的有形介质上或可以通过调制解调器或其它接口设备(在包括但是不限于光学或模拟通信线的有形介质上,或使用包括但是不限于微波、红外或其它传输技术的无线技术无形的)传输到计算机***的计算机可读指令序列。该计算机可读指令序列包括有这里以上所述的所有或部分功能。
本领域技术人员将理解,这样的计算机可读指令可以由多种编程语言编写,以便与许多计算机结构或操作***一起使用。而且,这样的指令可以使用目前或未来的任何存储技术保存,包括但不限制于半导体、磁性或光学的技术,或者使用目前或未来的任何通信技术传输,包括但不限制于光学的、红外或微波。可以设想,这样的计算机程序产品可以作为具有随附的打印或电子文档的可移动介质分发,例如,用收缩性薄膜包装的软件、计算机***预加载的软件(例如在***ROM或固定盘上),或通过网络(例如,因特网或万维网)从服务器或电子公告板分发。
附图说明
将参考附图描述本发明的多个优选实施例,其只作为例子,其中:
图1示意性的表示基于区块的图形处理方案;
图2示意性的表示可以根据本发明操作的图形处理器的结构;
图3示意性的表示向图元列表分配图元的过程的实施例;
图4示意性的表示在要绘制的场景中的图元集合;以及
图5示意性的表示要绘制的场景的子分区集合的方案的实施例。
具体实施方式
将参考图2、3和4描述本发明的优选实施例。
图2示意性的表示可以根据本发明操作的图形处理器20。图形处理器20包括几何结构处理器21和绘制仪22,两者都可以访问存储器23。如本领域公知的,存储器23可以与几何结构处理器21和绘制仪22一起“在片内(on-chip)”,或是可以由几何结构处理器21和绘制仪22访问的外部存储器。
如图2所示,存储器23特别存储原始几何结构数据24的集合(例如,如本领域公知,其由图形处理器驱动器或在图形处理器20的主***(微处理器)上运行的API提供),转换的几何结构数据25的集合(又如本领域公知,其是在原始结构24上执行的各种转换和处理操作的结果)和图元列表26的集合。根据本发明准备图元列表26。下面将更详细的描述该过程。
如本领域公知,转换的几何结构数据25包括例如转换的顶点(顶点数据)等。
此外,几何结构处理器21特别包括可编程顶点渐变器(shader)27和图元列表构造单元28。可编程顶点渐变器27以保存在存储器23中的原始几何结构数据24为输入,并处理该数据以提供转换的几何结构数据25(然后其保存在存储器23中),该几何结构数据25包括适于要显示的帧中的2D布局的形式的几何结构数据。可编程顶点渐变器27和它执行的处理可以采取任何合适的形式并可以是本领域公知的合适的和所需的任何处理。
图元列表构造单元28执行本发明的向图元列表分配图元的过程,然后图元列表由绘制仪22使用,以识别应该为要绘制的场景的每个子分区绘制的图元。为此,图元列表构造单元28以来自可编程顶点渐变器27的已转换和处理的顶点数据(即,场景中图元的位置)为输入,使用该数据构造图元(区块)列表,并将这些列表保存为存储器23中的图元列表26。下面将更详细的描述该过程。
绘制仪22包括图元选择单元29、图元列表缓冲存储器30、顶点选择单元31、顶点数据缓冲存储器32、栅格化单元33、绘制单元34和区块缓冲器35。
在本实施例中,栅格化单元33、绘制单元34、区块缓冲器35以与现存图形处理***中这些单元相同的形式操作。因此,栅格化单元33以一个图元和它的顶点作为输入,将图元栅格化为片断,并将这些片断提供给绘制单元34。然后绘制单元34对该片断执行若干绘制处理,诸如纹理映射、混合、渐变等,并产生绘制的片断数据,该数据保存在区块缓冲器35中以提供给帧缓冲器用于显示。
绘制仪22的图元选择单元29确定接下来绘制哪个图元。该处理如下实现,通过考虑保存在存储器23中的图元列表26,并从这些列表的一个中选择将绘制的下一个图元。下面将更详细的再次描述该选择处理。
图元选择单元29也可以将一个或多个图元列表放入图元列表缓冲存储器30中。
图元选择单元29将它已选择用于接下来绘制的图元提供给顶点选择单元31。对此响应,顶点选择单元31从保存在存储器23中的转换的几何结构数据25检索合适的转换的顶点数据用于所关注图元,并然后将该图元(即,它的转换的顶点数据)提供给栅格化单元33进行处理。需要时,顶点选择单元31可以将它已从存储器23检索的顶点数据缓存在顶点数据缓冲存储器32中。
现在将参考图3、4和5更详细的描述图元列表构造单元28的操作和图元列表26的准备。
如上所述,本发明适用于其中将要绘制的场景划分为多个子分区或区块的绘制***。而且,除了场景被划分为单独子分区,子分区可以组合为一个子分区以上的集合,其因此能有效覆盖比单独子分区更大部分的场景区域。而且,独立(不同)的图元列表(即,要绘制的图元的列表)可以从每个单独子分区准备,并为***支持的每个多子分区的集合准备。
图4和5表示本发明可以使用的要绘制的场景的子分区和子分区集合的方案的优选实施例。
如图4所示,将要绘制的场景50划分为多个单独子分区或区块51。(这里应该注意,图4并没有示出场景50划分的所有单独子分区51,而仅是这些子分区的一些。这是为了清楚起见。然而,在实际中整个场景50被划分为相等的子分区51。)
单独子分区51也可以组合为不同组的子分区集合,这些组集合实际上覆盖场景50以提供具有整个场景区域的不同划分的不同层。因此,如图4所示,存在十六个子分区52的集合的“层”,每个集合包括2×2个子分区52。然后有包括四个4×4子分区的集合53的另一较低分辨率层。最后,有包含整个场景区域的8×8子分区的一个集合54。
从图4可以看出,该方案的效果在于,用逐渐增加的屏幕区域划分的分级结构覆盖场景50。这在图5中示意性地表示。因此,存在包含覆盖整个场景区域50的8×8子分区的集合54的顶级层。然后有一组四个4×4的子分区集合53,然后是一组16个2×2的子分区集合52,以及最后包括64个单个子分区51的层。为举例说明起见,图5也用粗体表示在分级结构的每一层(级别)上认为图元80会落入其中的子分区或子分区的集合。
为举例说明起见,图4也示出了要绘制并因此需要分配给图元列表用于绘制的三个图元55、56和57。
(同样,本领域技术人员将会理解,实际中任何要绘制的给定场景将一般包括比图4所示三个图元更多的图元。然而,为了简化和清楚起见,图4只示出三个图元。)
如上所述,并如本领域公知,在为绘制目的将要绘制的场景50划分为更小子分区51的***中,***必须能够识别为了每个子分区应该绘制哪些图元。如本领域公知,这通过提供所谓的图元或区块列表实现,该列表为每个子分区标识为该子分区应该绘制的图元。
如上所述,本实施例对现有的图元列表准备过程提供改进,因为除了允许为场景被划分的单独子分区准备图元列表,本实施例还为多于一个子分区的集合准备单独的图元列表,即由多个子分区共同使用的图元列表。
在本实施例中,图元列表构造单元28为每个单独子分区51准备图元列表,为每个2×2子分区的集合52准备独立的图元列表,为每个4×4子分区的集合53准备独立的图元列表,以及为覆盖整个场景50的8×8子分区的集合54准备独立的图元列表。为此,图元列表构造单元28依次获取每个图元,为该图元确定位置,比较图元的位置和子分区51(覆盖的场景区域)的位置以及子分区的集合52、53和54(覆盖的场景区域)的位置,并相应为子分区和子分区集合将图元分配给对应图元列表26。
图元列表构造单元28确定每个图元的位置并且使用(在本实施例中)精确装箱技术确定给定图元落入其中或与之相交的子分区和子分区集合。因此,如本领域公知,图元列表构造单元28使用由可编程顶点渐变器27为其提供的用于给定图元的确定的变换顶点位置,以识别该图元落入(相交于)哪些子分区和子分区集合。可以以任何合适的和所需的形式执行该过程,诸如使用本领域中用于该目的已知的技术。
如本领域技术人员能理解的,如果需要可以使用用于确定和定位场景中的图元并且与子分区或子分区集合相关联的其它技术。例如,如本领域公知,可以同样的采用边界框技术。(在使用边界框技术的情况下,优选产生边界框作为图元列出过程的一部分,例如由图元列表构造单元来产生边界框,但是其它方案也是可行的。)
现在将参考图3描述图元列表构造单元用于将给定图元分配给用于子分区和子分区集合的图元列表26的实际过程。
如图3所示,图元列表构造单元28在其输入获取来自可编程顶点渐变器27的用于所关注图元的转换的图元位置数据(步骤S60)。
然后,继续到在场景划分的每个不同级别(层)相对于子分区集合与子分区测试图元的位置。为此,在子分区集合分级结构中在顶级之下的一个级别开始(步骤S61)。因此,在本实例中,将在图4所示的4×4子分区的集合53的级别测试图元。
然后,图元列表构造单元28使用提供的图元位置,确定在子分区集合的分级结构中的当前层需要为多少子分区集合列出该图元(步骤S62),并比较所确定的子分区集合的数量和子分区集合的阈值,在本实施例中的该阈值被设置为4(步骤S63)。
如果在这个阶段确定,在子分区集合分级结构中的当前级别,需要为其列出所述图元的子分区集合的数量低于阈值(即,本实施例中的4),那么图元列表构造单元28检查它是否在子分区集合分级结构中的底层(即,单个子分区层)(步骤S64),并且,如果不是,则步骤进行到分级结构中的下一级(步骤S65),确定在该层多少子分区集合需要列出该图元(步骤S62),依此类推,直到确定在分级结构的给定级别所述子分区集合的数量超过阈值,或在步骤64确定无论如何已经到达该分级结构的底层(即单个子分区层)。
当确定在分级结构中的给定层需要在多于阈值的子分区集合中列出给定图元的时候,该***随后上升到该分级结构中的前一级别(步骤S66)。然后图元列表构造单元28测试在分级结构的该上面一级中是否满足该图元只需要包括在单个图元列表中的特殊情况(步骤S67)。如果满足该特殊情况,那么图元列表构造单元28接着进行到分级结构中下一个更高级别(步骤S68),并接着在该层的图元列表列出图元(步骤S69),即,对于其中图元只需要包括在单个图元列表中的层。
另一方面,如果在步骤S67确定在所述上升的一层图元仍需要列在一个以上的图元列表,在超过图元列表的阈值的层的紧邻的上一层简单列出该图元(步骤S69)。
如果在步骤S64确定无论如何已达到分级结构的底层,即使还没有达到图元列表的阈值,也立即在底层列出图元(步骤S69)。
然后依次对每个图元重复该过程。
此外,该方案确保,任何图元都不会包括(列出)在比图元列表的指定阈值数量更多的图元列表中。而且,它还确保在需要将图元包括在阈值数量的图元列表的级别的紧上一级别该图元可以被包括在单个图元列表中的特殊情况下,然后将该图元包括在单个列表中(这使得图元在图元列表中被存储一次,并且仍然可以被有效的处理用于必须绘制该图元的子分区)。
换句话说,图元列表构造单元28将从子分区集合的分级结构中第二最高层开始,沿着子分区集合的分级结构重复向下处理,直到发现图元需要被包括在超过阈值数量的图元列表中,并且随后向上返回一层且在该层列出该图元,除了在向上两层允许该图元只列出在单个列表中的特殊情况。申请人发现该方案用以提供为绘制场景的子分区准备图元列表的特殊有效方式。
为了举例说明的目的,现在将参考图4所示的图元描述该过程的操作。在该方案中,将假设使用精确装箱技术来确定和定位场景中的图元,虽然如上所述如果需要的话也可以使用其它技术,比如边界框技术。在该示例中,假设用于确定在哪一级别列出图元的图元列表的阈值数量是4(当然,如果需要的话,不同的阈值也是可行的)。
首先考虑图4所示的图元55,图元列表构造单元28会首先确定图元55会需要列出在多少个4×4子分区的集合53中。
在该例中,图元列表构造单元28将确定图元55会需要列在两个4×4子分区的集合53中。
因为这没超过图元列表的阈值数量四,图元列表构造单元就接着进行到分级结构的下一级别,也就是2×2子分区的集合52的级别。在该例中,图元列表构造单元再次确定图元55会需要列在两个2×2子分区的集合52的图元列表中,其又没有超出四个图元列表的阈值数量。
因此,图元列表构造单元28进行到分级结构中的下个级别,其是单个子分区51的级别。在该例中,将确定图元55会需要列在五个单个子分区图元列表中,其超过4个列表的阈值数量。因此,一旦确定这一点,图元列表构造单元28将向上返回2×2子分区的集合52的级别,并在该级别列出图元55,也就是将图元分配给合适的两个2×2子分区的集合52的每一个的图元列表中。也应该注意到,在该例子中,当图元列表构造单元28测试所述特殊情况时,将确定在图元55在现在被列出的级别没有被包括在阈值数量的图元列表中,并且因而不落入上述的特殊例子。
现在转向图元56,图元列表构造单元28同样将首先在4×4子分区集合53的级别测试该图元,并因此确定该图元将需要列出在一个这样的子分区集合的图元列表中。
因此图元列表构造单元28将进行到下一级别,即2×2子分区的集合52的级别工作,并再次确定在该级别,图元56会需要包括在一个2×2子分区的集合52的列表中。
图元列表构造单元28将因而进行到最后的单个子分区51的级别,并确定在该层图元56会需要列出在四个单个子分区51的图元列表中。
然后,图元列表构造单元会测试图元56是否满足上述的特殊情况。
在这种情况下,在单个子分区51的级别,图元56确实需要列出在阈值数量的图元列表(即,四个图元列表)中,并因此图元列表构造单元28将进行到下个更高级别,即2×2子分区的集合52的级别,以确定在分级结构中的该层图元56是否需要只需要包括在单个图元列表中。在图元56的情况下,会满足该测试,即图元56会只需要列出在2×2子分区的集合52的该层的单个图元列表中。因此,图元列表构造单元28将在2×2子分区的集合52的级别列出图元56,而不是在单个子分区51的级别。
最后,关于图元57,图元列表选择单元再次首先在4×4子分区的集合53测试图元,并确定在该层它只需要包括在单个图元列表中。因此然后再次在2×2子分区的集合52测试图元57,并发现在该层它需要列在四个2×2子分区集合的图元列表中。
因此,然后,图元列表选择单元会在单个子分区集合51的级别测试图元57,并再次发现在该级它需要包括在四个图元列表中。
然后图元列表构造单元28会测试图元57是否满足上述的特殊情况标准。在这个例子中,图元57在单个子分区集合51的级别之上的级别需要被包括在四个2×2子分区的集合52的图元列表中,并且不满足所述特殊情况。图元列表构造单元28因此在单个子分区51级列出图元57,即在图元57落入的四个单个子分区51的图元列表中。
如本领域技术人员所能理解的,图元列表构造单元28对将要绘制的场景的每个及每一个图元依次重复上述过程,直到已为要绘制的场景可以被划分的每个单个子分区和每个多于一个子分区的集合产生完整的区块列表26。
图元列表构造单元28按它从可编程顶点渐变器27接收图元的顺序将图元放入图元列表26中。这意味着,关于每个独立图元列表26,列中的图元顺序是它们产生的顺序,如本领域公知,该顺序典型地对应绘制图元所需的顺序。(如本领域公知,当产生用于绘制的图元时,它们一般由主驱动器或API按需要绘制图元的顺序产生并以该顺序提供给图形处理器。因此,图元列表构造单元28当接收图元时依次获取它们时,只要涉及每个独立图元列表,它将按绘制顺序将图元放入独立区块列表中)。
当图元列表构造单元28将图元放入合适的图元列表中的同时,它也将用于图元的索引分配给图元列表26中的图元并与之相关联。图元列表构造单元28具有用于此目的的计数器,并且将绘制图元时计时器的当前计数分配该图元。这样,以图元列表构造单元28接收图元的顺序对每个图元编号(在该实施例中是升序)(即,以主驱动器或API等提供图元的顺序,即,希望绘制图元的顺序)。下面将进一步讨论,由图元列表构造单元28分配给每个图元的索引由图元选择单元29使用,从存储器23中的图元列表26识别并选择下一个用于绘制的图元。
将图元放入图元列表26的时候为图元加索引的操作是需要的,因为,如本领域公知,并如上所述,在图形处理***中经常希望以特定顺序绘制图元。这不是只存在单个图元列表从中获取用于绘制的图元的问题,因为在该情况下,如上所述,图元会按照他们被提供给图形处理器的顺序包括在图元列表中,即,按照绘制所希望的顺序。然而,在本实施例中,可能需要从一个以上的图元列表选择用于绘制的下个图元,以准确顺序选择图元用于绘制不是如此简单的。以上述形式索引图元有助于降低该困难性,因为如下文将进一步讨论的,它允许图元选择单元29识别图元被提供给图形处理器进行绘制的顺序,并因此,按该顺序选择下一个图元。
虽然在本实施例中,以升序简单的索引图元,但是如果需要,则选择其他索引方案也是可能的。例如,在以绘图调用安排要绘制的图元的情况下,各个绘图调用可以连续编号,并且然后每个绘图调用中的图元连续编号。该方案会有助于,例如并行处理不同绘图调用。
图元列表构造单元28也配置为能够识别它可以分配给图元的索引何时已经或即将用尽。特别的,它能识别何时已经达到倒数第二个索引值(即,倒数第二个计数器值)。响应于该事件,图元列表构造单元转向一个方案,其中它将从那时开始接收的所有图元都在该子分区集合的分级结构的相同级别列出(例如,总在单个子分区级别,或总在2×2子分区集合的级别,等等)。这确保当按序索引图元的可能性已用尽时,图元选择单元29随后将只被提供在子分区集合的分级结构的相同级别的图元,以便于它仍能以正确顺序选择图元(因为随后它将不需要在分级结构的不同级的图元列表26之间选择图元)。
一旦索引已经用尽,就可以按需要选择在该方案中列出图元的实际级别。这可以基于,例如如果在分级结构中的较低级(即,对较小场景区域)列出图元则必须保存更多的图元列表(其会需要更多的存储器)和如果在分级结构的较高级(即,对更大的场景区域)列出图元则在绘制阶段必须执行更冗余和不必要的图元处理两种情况之间所需要的妥协和折衷。
在这些情况下,图元列表构造单元28还给它随后接收的要列出的每个图元分配最高索引(最高计数值),因此随后允许***识别已达到“索引耗尽”状态。
对于要绘制的场景,一旦图元列表构造单元28已完成图元列表26的构造并将这些列表保存在存储器23中,并且可编程顶点渐变器27已完成对几何结构数据的转换以提供在存储器23中的转换的几何结构数据25的完整集合,然后绘制仪22可以绘制该场景。下文将描述该过程。
如上所述,在本实施例中,以子分区为基础在子分区上执行绘制过程,即,单独依次绘制场景的每个子分区(区块)51,然后组合绘制的子分区(区块)用于显示。
因此,首先为绘制仪22提供要绘制的子分区的身份,并使用其适当配置自身。特别的,在本实施例中,识别应用于要绘制的子分区的所存储的图元列表26,即,在本实施例中,要绘制的单个子分区专有的图元列表,包括要绘制的子分区的2×2子分区集合的图元列表,包括要绘制的子分区的4×4子分区的集合的图元列表,以及覆盖要绘制的整个场景(并因此,必定覆盖当前要绘制的单个子分区)的8×8子分区的完整集合54的图元列表。在本实施例中,应用于正被绘制的子分区(区块)的所存储的图元列表通过在“新区块”命令中包括指向相关图元列表的指针来指示,当首次绘制一个子分区(区块)时,发送该“新区块”命令。(其他方案当然也是可能的。)
然后绘制仪继续绘制所关注的子分区(区块)。
绘制过程的第一阶段是图元选择单元29选择要绘制的图元。为此,图元选择单元29读取已确定应用于当前正被绘制的子分区的保存的图元列表26,即,在本实施例中,如上所述,正被绘制的单独子分区专有的图元列表26,包括正绘制的子分区的2×2子分区的集合的图元列表,包括正绘制的子分区的4×4子分区集合的图元列表,和覆盖要绘制的整个场景的8×8子分区的完整集合54的图元列表。图元列表以先进先出顺序由图元选择单元29读取,即,使得实际上,读取列表中的第一个图元,并且然后一旦已发送该图元用于绘制,就读取列表中的第二个图元,等等。
为了选择要绘制的下个图元,图元选择单元29确定已分配给用于正绘制的子分区的每个图元列表中要绘制的下个图元的索引,比较这些索引,并选择最低索引的图元为要绘制的下个图元(因为,如上所述,图元列表构造单元28以升序索引图元,即,使得对于所需的绘制顺序最低编号的图元是要绘制的下一个图元)。
因此,图元选择单元29将读入用于所关注的子分区的图元列表中下个图元的索引,用于2×2子分区的相关集合的图元列表中下个图元的索引,用于4×4子分区的合适集合的图元列表中下个图元的索引,等等,比较这些索引,并选择具有最低索引的图元用于接下来的绘制。(在任何时间,图元选择单元29只需要从每个图元列表读取一个图元的索引(下个图元),因为,如上所述,在单个图元列表中,已经以正确绘制顺序列出图元。)实际上,图元可以看作在先进先出基础上,从保存的图元列表按顺序一个接一个的流向图元选择单元。
一旦图元选择单元29已选择要绘制的图元,它将该图元传递到顶点选择单元31。然后顶点选择单元31从保存在存储器23中的转换的几何结构数据25检索用于所关注图元的顶点的合适的转换几何结构数据,并向栅格化单元33提供该数据。然后,如上所述,如本领公知,栅格化并绘制该图元。
然后重复该过程,即,图元选择单元29再次读取每个相关图元列表的下个图元的索引,选择具有最低索引的图元,并向顶点选择单元31提供该图元,等等。
对需要为给定的子分区绘制的所有图元重复该过程(即,包括在适于该子分区的图元列表26中的图元),直到已绘制该子分区的所有图元。
然后,绘制仪22继续以相同形式绘制下一个子分区,依此类推,直到该场景的所有单独子分区已经绘制为止。
如本领域公知,一旦已绘制该场景的所有子分区,组合绘制的子分区并提供给显示装置用于显示。
图元选择单元29还配置为能够识别相同图元(即,具有相同索引的图元)同时出现在当前从中读取图元的多于一个图元列表的当前读取位置的情况。这通过图元选择单元比较索引并识别是否发生匹配来完成。在这些情况下,图元选择单元29配置为选择相关图元一次进行绘制,并且忽略该图元随后的重复出现。这避免对于给定的子分区不必要的多于一次绘制给定图元。
如上所述,绘制仪22也包括图元列表缓冲存储器30和顶点数据缓冲存储器32。如本领域公知,这些缓冲存储器包括在绘制仪22上提供的能比主存储器23更快由绘制仪的处理单元(并具体的分别是图元选择单元29和顶点选择单元31)访问的本地存储器。
图元选择单元29配置为在图元列表缓冲存储器30中保存一个或多个从主存储器23读取的图元列表26。具体的,图元选择单元29优选的从存储器23检索应用于场景的一个以上子分区的集合的图元列表并保存在图元列表缓冲存储器30中,例如,图元选择单元29知道它将需要场景的随后子分区。因为图元选择单元29必须重复从存储器23检索将绘制场景子分区所需要的图元列表,这有助于避免延迟和等待时间。
顶点选择单元31可以类似的在顶点数据缓冲存储器32缓存从存储器23中的转换的几何结构数据25检索的顶点数据,同样,特别是在发现顶点数据将由图元再次需要的情况下(例如,因为已知要为将绘制的多子分区集合列出该图元)。
在本实施例中,对在图元列表缓冲存储器30和顶点数据缓冲存储器32中缓存的数据的存储,特别是置换,是基于该图元列表和/或顶点数据所应用(或关于其存储)的子分区集合分级结构中的级别,以使,例如,应用到该分级结构中较高等级(即因此用于要绘制的场景中的更多子分区)的图元列表和顶点数据相比于已知应用到例如单个子分区或几个子分区的图元列表和顶点数据,更优选缓存和保留在该缓冲存储器中。
因此,例如,当顶点选择单元31从存储器23中的转换的几何结构数据25读取转换的顶点时,将知道该顶点数据应用的图元已经在哪个层列出,(即,该图元来自的图元列表),并使用该信息例如决定是否缓存该顶点数据(例如,如上所述,根据该顶点数据是否可能重用于随后的子分区)。
可以按需要选择绘制仪22处理场景的子分区的顺序。然而,在优选实施例中,以莫顿(Morton)顺序处理子分区,因为这有助于例如在绘制仪22中更有效缓存图元列表和顶点数据。
虽然上面特别参考为单独子分区和子分区集合准备图元列表的操作来描述本实施例,本发明也可能并且实际上优选以类似形式保存可以在子分区或多个子分区基础上使用的其它数据。该数据可以包括,例如绘制设置、分块命令、剪裁参数等等。例如,如果一个命令将用于每个子分区,那么将该命令放入应用到所有子分区的列表中,或如果一个命令只用于几个子分区,那么将该命令存储在分级结构的较低等级中,这样是有利的。优选的,当合适时,该数据也被保存在或相关于为每个子分区或子分区集合准备的相应图元列表,并最优选的,该数据以类似于上述用于图元的形式索引。
本领域技术人员将能理解,如需要,可在任何基于区块的绘制***中实施本实施例(和本发明)。本实施例和本发明的各种组件和功能可以类似的按需要实施和使用本领域中已知的任何合适的技术。
可以从上面看出,至少在优选实施例中,本发明为基于区块的绘制***提供改进的图元列出和分类方案,该方案特别有助于更好的控制和了解区块列出(图元分类(装箱))过程的存储器使用和需求。它也提供关于场景中图元的分布和布局的信息,因此,例如帮助改进顶点缓存等,和帮助缓存图元(区块)列表以及更有效的缓存图元数据。
至少在本发明的优选实施例中,这通过在不同分辨率的区块列表中列出图元(和其它数据和命令,如果需要的话)来实现,即在单个区块专有的区块列表中,和在共同用于多个区块的区块列表中。
Claims (53)
1、一种分类图形图元以便在图形处理***中绘制的设备,在该图形处理***中,要绘制的场景被划分为多个用于绘制的子分区,该设备包括:
用于为场景的单个子分区准备用于绘制的图元列表的装置;以及
用于为包括场景的一个以上子分区的子分区集合准备用于绘制的图元列表的装置。
2、一种分类图形图元以便在图形处理***中绘制的设备,在该图形处理***中,要绘制的场景被划分为用于绘制的子分区,该设备包括:
将要绘制的图元包括在一个或多个要绘制的图元列表中的装置;其中:
要绘制的图元列表包括专用于单个场景子分区的一个或多个要绘制的图元列表,并包括各自用于一个以上场景子分区的一个或多个要绘制的不同图元列表。
3、如权利要求1或2所述的设备,其中可以为包含不同数量子分区的多子分区集合准备图元列表。
4、如权利要求1-3中任何一个所述的设备,其中安排可以为其准备图元列表的所述多子分区的集合,以使得该场景可以由以分级方式安排的多层的子分区集合有效覆盖。
5、如以上权利要求的任何一个所述的设备,其中可以为每个子分区、子分区的每个2×2组合,子分区的每个4×4组合,子分区的每个8×8组合等等准备图元列表,直到要绘制的整个场景的图元列表。
6、如以上权利要求的任何一个所述的设备,其中为场景划分的每个单独子分区准备独立图元列表,并为可以准备图元列表的每个一个以上子分区的不同集合准备独立图元列表。
7、如以上权利要求的任何一个所述的设备,其中给定的图元仅仅包括在所选择数量的确定可以或应该绘制该图元的子分区和多子分区集合的图元列表中。
8、如以上权利要求的任何一个所述的设备,其中当图元包括在多子分区集合的图元列表中时,该图元不包括在该多子分区集合之中的任何一个子分区的独立图元列表中。
9、如以上权利要求的任何一个所述的设备,其中图元不包括在由包括该图元的图元列表所属的较大子分区集合完全包含的任何子分区或多子分区集合的图元列表之中。
10、如以上权利要求的任何一个所述的设备,其中存在多子分区集合,该集合被安排为使得所述场景由多层不同尺寸的场景区域有效覆盖,并且该设备还包括:
用于确定在该子分区集合的分级结构的给定层,图元需要被包括在多少不同的图元列表中的装置。
11、如以上权利要求的任何一个所述的设备,其中每个图元被列出在不超过所选择的阈值数量的图元列表中。
12、如以上权利要求的任何一个所述的设备,进一步包括:
用于选择要绘制的图元的图元选择单元;以及
将多个图元列表并行提供给图元选择单元的装置;其中
图元选择单元包括用于在提供给它的图元列表之一中选择下一个要绘制的图元的装置。
13、一种选择图元以便在图形处理***中绘制的设备,该设备包括:
选择用于绘制的图元的图元选择单元;以及
将多个图元列表并行提供给图元选择单元的装置;其中
图元选择单元包括用于在提供给它的图元列表之一中选择要绘制的图元的装置。
14、如以上权利要求的任何一个所述的设备,其中每个子分区已经与用于该子分区的图元列表集合相关联。
15、如以上权利要求的任何一个所述的设备,包括用于向图元分配索引的装置。
16、如权利要求15所述的设备,包括根据分配给图元的索引选择要处理的图元的装置。
17、一种图形处理***,包括:
列出用于绘制的图形图元的装置;
使每个列出的图形图元与图元索引相关的装置;
使用与图形图元相关的索引分类图元的装置。
18、一种处理用于显示的图形图元组的设备,该设备包括:
向图元组中的图元分配索引的装置;
将来自图元组的图元分配给多个处理单元的装置;
绘制来自图元组的图元的装置;以及
使用分配给图元的索引来控制绘制图元的顺序的装置。
19、如权利要求15至18的任何一个所述的设备,包括用于确定图元索引容量何时已用尽的装置,并且响应于此,从那时起总是将图元列出在相同尺寸的子分区集合中。
20、如以上权利要求的任何一个所述的设备,包括用于在子分区和子分区集合的图元列表中存储其他形式的图形数据和/或命令的装置。
21、一种分类数据和/或命令以便在图形处理***中的绘制使用的设备,在该图形处理***中,要绘制的场景被划分为多个用于绘制的子分区,该设备包括:
用于为场景的单个子分区准备当绘制该子分区时使用的数据和/或命令集合的装置;以及
用于为包括场景一个以上子分区的子分区集合准备当绘制该子分区集合的子分区时使用的数据和/或命令集合的装置。
22、一种分类图形图元以便在图形处理***中绘制的方法,在该图形处理***中,要绘制的场景被划分为多个用于绘制的子分区,该方法包括:
为场景的单个子分区准备用于绘制的图元列表;以及
为包括场景一个以上子分区的子分区集合准备用于绘制的图元列表。
23、一种分类图形图元以便在图形处理***中绘制的方法,在该图形处理***中,要绘制的场景被划分为多个用于绘制的子分区,该方法包括:
将要绘制的图元包括在一个或多个要绘制的图元列表中;其中:
要绘制的图元列表包括专用于场景的单个子分区的一个或多个要绘制的图元列表,并包括各自用于场景的一个以上子分区的一个或多个要绘制的不同图元列表。
24、如权利要求22或23所述的方法,包括为包含不同数目子分区的多子分区集合准备图元列表。
25、如权利要求22至24中任何一个所述的方法,其中安排可以为其准备图元列表的多子分区集合,以使所述场景由以分级方式安排的多层子分区集合有效覆盖。
26、如权利要求22至25中任何一个所述的方法,包括为每个子分区、子分区的每个2×2组合、子分区的每个4×4组合、子分区的每个8×8组合等等准备图元列表,直到要绘制的整个场景的图元列表。
27、如权利要求22至26中任何一个所述的方法,包括为场景划分的每个单独子分区准备独立图元列表,并为可以准备图元列表的每个一个以上子分区的不同集合准备独立图元列表。
28、如权利要求22至27中任何一个所述的方法,包括只将给定的图元包括在所选择数量的确定可以或应该绘制该图元的子分区和多子分区集合的图元列表中。
29、如权利要求22至28中任何一个所述的方法,包括当图元包括在多子分区集合的图元列表中时,该图元不包括在该多子分区集合之中的任何一个子分区的单独图元列表中。
30、如权利要求22至29中的任何一个所述的方法,包括不将图元包括在由包括该图元的图元列表所属的较大子分区集合完全包含的任何子分区或多子分区集合的图元列表之中。
31、如权利要求22至30中任何一个所述的方法,其中存在多子分区集合,该集合被安排为使得所述场景由多层不同尺寸的场景区域有效覆盖,并且该方法还包括:
确定在该子分区集合的分级结构的给定层,图元需要被包括在多少不同的图元列表中。
32、如权利要求22至31中任何一个所述的方法,其中每个图元被列出在不超过所选择的阈值数量的图元列表中。
33、如权利要求22至32的任何一个所述的方法,进一步包括:
使用图元选择单元选择用于绘制的图元;以及
向图元选择单元并行提供多个图元列表;其中
图元选择单元从向其提供的图元列表之一中选择下一个要绘制的图元。
34、一种选择图元以便在图形处理***中绘制的方法,该方法包括:
将多个图元列表并行提供给图元选择单元;其中
图元选择单元从提供给它的图元列表之一中选择要绘制的图元。
35、如权利要求22至34的任何一个所述的方法,包括将每个子分区与用于该子分区的图元列表集合相关联。
36、如权利要求22至35的任何一个所述的方法,包括向图元分配索引。
37、如权利要求36所述的方法,包括根据分配给图元的索引选择要处理的图元。
38、一种操作图形处理***的方法,包括:
列出用于绘制的图形图元;
将每个列出的图形图元与图元的索引相关联;以及
使用与图形图元相关的索引分类图元。
39、一种处理用于显示的图形图元组的方法,包括:
将索引分配给图元组中的图元;
将来自该图元组的图元分配给多个处理单元;
绘制来自图元组的图元;以及
使用分配给图元的索引控制其中绘制图元的顺序。
40、如权利要求36至39的任何一个所述的方法,包括确定何时图元索引容量已经用尽,并且响应于此,从那时起总是在相同尺寸的子分区集合中列出图元。
41、如权利要求22至40的任何一个所述的方法,包括在用于子分区和子分区集合的图元列表中存储其它形式的图形数据和/或命令。
42、一种分类数据和/或命令以便用于在图形处理***中绘制的方法,在该图形处理***中,将要绘制的场景划分为多个用于绘制的子分区,该方法包括:
为场景的单个子分区准备当绘制该子分区时使用的数据和/或命令集合;以及
为包括场景一个以上子分区的子分区集合准备当绘制该子分区集合的子分区时使用的数据和/或命令集合。
43、一种包括权利要求1至21的任何一个所述的设备,或依照权利要求22至42的任何一个所述的方法操作的硬件元件。
44、一种包括权利要求1至21的任何一个所述的设备,或依照权利要求22至42的任何一个所述的方法操作的3D图形处理器或3D图形处理平台。
45、一种计算机程序组件,其包括当该程序组件在数据处理装置上运行时执行权利要求22至42的任何一个所述的方法的计算机软件代码部分。
46、一种用于基本如这里参考任何一个附图所述地分类用于绘制的图形图元的设备。
47、一种用于基本如这里参考任何一个附图所述地选择用于绘制的图元的设备。
48、一种基本如这里参考任何一个附图所述的图形处理设备、***、处理器或平台。
49、一种用于基本如这里参考任何一个附图所述地分类图形数据和/或命令的设备。
50、一种用于基本如这里参考任何一个附图所述地分类用于绘制的图形图元的方法。
51、一种用于基本如这里参考任何一个附图所述地选择用于绘制的图元的方法。
52、一种操作基本如这里参考任何一个附图所述的图形处理设备、***、处理器或平台的方法。
53、一种用于基本如这里参考任何一个附图所述地分类图形数据和/或命令的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0524804.2 | 2005-12-05 | ||
GBGB0524804.2A GB0524804D0 (en) | 2005-12-05 | 2005-12-05 | Method of and apparatus for processing graphics |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101067869A true CN101067869A (zh) | 2007-11-07 |
CN101067869B CN101067869B (zh) | 2015-11-25 |
Family
ID=35686114
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200610130945.0A Active CN101067869B (zh) | 2005-12-05 | 2006-12-05 | 处理图形的方法和设备 |
Country Status (4)
Country | Link |
---|---|
US (3) | US20070146378A1 (zh) |
JP (1) | JP2007157155A (zh) |
CN (1) | CN101067869B (zh) |
GB (2) | GB0524804D0 (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101604454A (zh) * | 2008-06-04 | 2009-12-16 | Arm有限公司 | 图形处理*** |
CN101794456A (zh) * | 2009-01-15 | 2010-08-04 | Arm有限公司 | 用于处理图形的方法和装置 |
CN102265309A (zh) * | 2008-12-23 | 2011-11-30 | 想象技术有限公司 | 基于图块的3d计算机图形***中的显示列表控制流分组 |
CN101472093B (zh) * | 2007-12-27 | 2011-12-28 | 新奥特(北京)视频技术有限公司 | 一种实现电视图文字幕可配置替换的方法及*** |
CN103824276A (zh) * | 2012-11-16 | 2014-05-28 | Arm有限公司 | 用于处理图形的方法和设备 |
CN103870213A (zh) * | 2012-12-18 | 2014-06-18 | 辉达公司 | 经由管线化的状态包触发性能事件捕获 |
CN104166568A (zh) * | 2014-08-13 | 2014-11-26 | 国电南瑞科技股份有限公司 | 一种基于cim/g的电力***图形文件并行加载的方法 |
CN104850393A (zh) * | 2014-02-13 | 2015-08-19 | 想象技术有限公司 | 并行平铺引擎管线中的图元块的处理 |
CN105321140A (zh) * | 2014-06-17 | 2016-02-10 | 想象技术有限公司 | 向图形处理***中的区片分配图元 |
US9336623B2 (en) | 2008-12-19 | 2016-05-10 | Imagination Technologies Limited | Multilevel display control list in tile based 3D computer graphics system |
CN106067186A (zh) * | 2015-04-15 | 2016-11-02 | 联发科技(新加坡)私人有限公司 | 图形处理单元及其方法 |
CN107392989A (zh) * | 2016-04-29 | 2017-11-24 | Arm有限公司 | 图形处理*** |
US10204391B2 (en) | 2013-06-04 | 2019-02-12 | Arm Limited | Method of and apparatus for processing graphics |
CN113256477A (zh) * | 2020-02-10 | 2021-08-13 | 畅想科技有限公司 | 用于在图形处理***中存储平铺信息的方法和平铺引擎 |
Families Citing this family (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2378108B (en) | 2001-07-24 | 2005-08-17 | Imagination Tech Ltd | Three dimensional graphics system |
GB0524804D0 (en) | 2005-12-05 | 2006-01-11 | Falanx Microsystems As | Method of and apparatus for processing graphics |
GB2449399B (en) * | 2006-09-29 | 2009-05-06 | Imagination Tech Ltd | Improvements in memory management for systems for generating 3-dimensional computer images |
US9965886B2 (en) | 2006-12-04 | 2018-05-08 | Arm Norway As | Method of and apparatus for processing graphics |
US8471862B2 (en) * | 2007-03-09 | 2013-06-25 | Ati Technologies Ulc | Offset tiles in vector graphics |
US8022958B2 (en) * | 2007-04-04 | 2011-09-20 | Qualcomm Incorporated | Indexes of graphics processing objects in graphics processing unit commands |
KR101394926B1 (ko) * | 2007-07-10 | 2014-05-15 | 엘지디스플레이 주식회사 | 확장 가능한 멀티 모듈 디스플레이 장치 |
US8031194B2 (en) * | 2007-11-09 | 2011-10-04 | Vivante Corporation | Intelligent configurable graphics bandwidth modulator |
GB0723536D0 (en) * | 2007-11-30 | 2008-01-09 | Imagination Tech Ltd | Multi-core geometry processing in a tile based rendering system |
KR100901273B1 (ko) * | 2007-12-15 | 2009-06-09 | 한국전자통신연구원 | 렌더링 시스템 및 이를 이용한 데이터 처리 방법 |
GB2458488C (en) * | 2008-03-19 | 2018-09-12 | Imagination Tech Ltd | Untransformed display lists in a tile based rendering system |
US20100079474A1 (en) * | 2008-09-30 | 2010-04-01 | Microsoft Corporation | Methods for rendering source content of a file for display on a destination figure |
US8654134B2 (en) | 2008-12-08 | 2014-02-18 | Microsoft Corporation | Command remoting |
US8587610B2 (en) * | 2008-12-12 | 2013-11-19 | Microsoft Corporation | Rendering source content for display |
US8385669B2 (en) * | 2009-03-04 | 2013-02-26 | Microsoft Corporation | Scalable mutable tiled multi-resolution texture atlases |
US8810592B2 (en) * | 2009-10-09 | 2014-08-19 | Nvidia Corporation | Vertex attribute buffer for inline immediate attributes and constants |
KR101609266B1 (ko) | 2009-10-20 | 2016-04-21 | 삼성전자주식회사 | 타일 기반의 랜더링 장치 및 방법 |
US9058685B2 (en) * | 2010-03-11 | 2015-06-16 | Broadcom Corporation | Method and system for controlling a 3D processor using a control list in memory |
GB201004673D0 (en) * | 2010-03-19 | 2010-05-05 | Imagination Tech Ltd | Processing of 3D computer graphics data on multiple shading engines |
US9053681B2 (en) * | 2010-07-07 | 2015-06-09 | Fotonation Limited | Real-time video frame pre-processing hardware |
US8339409B2 (en) * | 2011-02-16 | 2012-12-25 | Arm Limited | Tile-based graphics system and method of operation of such a system |
US8884963B2 (en) * | 2011-05-04 | 2014-11-11 | Qualcomm Incorporated | Low resolution buffer based pixel culling |
US9342322B2 (en) * | 2011-09-12 | 2016-05-17 | Microsoft Technology Licensing, Llc | System and method for layering using tile-based renderers |
US8902228B2 (en) * | 2011-09-19 | 2014-12-02 | Qualcomm Incorporated | Optimizing resolve performance with tiling graphics architectures |
GB2494903B (en) * | 2011-09-22 | 2017-12-27 | Advanced Risc Mach Ltd | Graphics processing systems |
KR101136737B1 (ko) | 2011-10-07 | 2012-04-19 | (주)넥셀 | 그래픽 처리방법 및 그 장치 |
US10089774B2 (en) * | 2011-11-16 | 2018-10-02 | Qualcomm Incorporated | Tessellation in tile-based rendering |
KR101953133B1 (ko) | 2012-02-27 | 2019-05-22 | 삼성전자주식회사 | 렌더링 장치 및 그 방법 |
US10242481B2 (en) | 2012-03-15 | 2019-03-26 | Qualcomm Incorporated | Visibility-based state updates in graphical processing units |
US9424685B2 (en) | 2012-07-31 | 2016-08-23 | Imagination Technologies Limited | Unified rasterization and ray tracing rendering environments |
GB2500284B (en) | 2012-09-12 | 2014-04-30 | Imagination Tech Ltd | Tile based computer graphics |
US8928679B2 (en) * | 2012-09-14 | 2015-01-06 | Advanced Micro Devices, Inc. | Work distribution for higher primitive rates |
US8941676B2 (en) * | 2012-10-26 | 2015-01-27 | Nvidia Corporation | On-chip anti-alias resolve in a cache tiling architecture |
US10032243B2 (en) | 2012-10-26 | 2018-07-24 | Nvidia Corporation | Distributed tiled caching |
US10438314B2 (en) * | 2012-10-26 | 2019-10-08 | Nvidia Corporation | Two-pass cache tile processing for visibility testing in a tile-based architecture |
US9299182B2 (en) | 2012-12-04 | 2016-03-29 | Panasonic Intellectual Property Management Co., Ltd. | Divided-area-based rendering device and divided-area-based rendering method |
US20140160124A1 (en) * | 2012-12-12 | 2014-06-12 | Nvidia Corporation | Visible polygon data structure and method of use thereof |
GB201223089D0 (en) | 2012-12-20 | 2013-02-06 | Imagination Tech Ltd | Hidden culling in tile based computer generated graphics |
US9092697B2 (en) * | 2013-02-07 | 2015-07-28 | Raytheon Company | Image recognition system and method for identifying similarities in different images |
US9720842B2 (en) * | 2013-02-20 | 2017-08-01 | Nvidia Corporation | Adaptive multilevel binning to improve hierarchical caching |
US10169906B2 (en) | 2013-03-29 | 2019-01-01 | Advanced Micro Devices, Inc. | Hybrid render with deferred primitive batch binning |
US10957094B2 (en) * | 2013-03-29 | 2021-03-23 | Advanced Micro Devices, Inc. | Hybrid render with preferred primitive batch binning and sorting |
GB2506706B (en) | 2013-04-02 | 2014-09-03 | Imagination Tech Ltd | Tile-based graphics |
EP3129958B1 (en) | 2014-04-05 | 2021-06-02 | Sony Interactive Entertainment LLC | Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters |
GB2526598B (en) | 2014-05-29 | 2018-11-28 | Imagination Tech Ltd | Allocation of primitives to primitive blocks |
GB2530996B (en) | 2014-10-06 | 2016-09-14 | Imagination Tech Ltd | Depth forwarding in a graphics processing system |
US9772850B2 (en) | 2014-11-14 | 2017-09-26 | Intel Corporation | Morton coordinate adjustment processors, methods, systems, and instructions |
US9772848B2 (en) * | 2014-11-14 | 2017-09-26 | Intel Corporation | Three-dimensional morton coordinate conversion processors, methods, systems, and instructions |
US9772849B2 (en) * | 2014-11-14 | 2017-09-26 | Intel Corporation | Four-dimensional morton coordinate conversion processors, methods, systems, and instructions |
US9799091B2 (en) * | 2014-11-20 | 2017-10-24 | Intel Corporation | Apparatus and method for efficient frame-to-frame coherency exploitation for sort-last architectures |
GB2532495B (en) * | 2014-11-21 | 2018-05-02 | Advanced Risc Mach Ltd | Graphics processing systems |
KR102354992B1 (ko) * | 2015-03-02 | 2022-01-24 | 삼성전자주식회사 | 양안 시차 영상에 대한 타일 기반 렌더링 방법 및 장치 |
KR102354989B1 (ko) * | 2015-04-14 | 2022-01-24 | 삼성전자주식회사 | 경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치. |
KR102454893B1 (ko) * | 2015-09-30 | 2022-10-14 | 삼성전자주식회사 | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치의 동작 방법 |
GB2546073B (en) * | 2016-01-05 | 2018-09-26 | Advanced Risc Mach Ltd | Graphics processing |
GB2546810B (en) | 2016-02-01 | 2019-10-16 | Imagination Tech Ltd | Sparse rendering |
US9934548B2 (en) | 2016-03-09 | 2018-04-03 | Apple Inc. | Hierarchical techniques for storing graphics primitives |
GB2551689B (en) | 2016-04-22 | 2021-05-12 | Advanced Risc Mach Ltd | Method and Apparatus for processing graphics |
US10643374B2 (en) * | 2017-04-24 | 2020-05-05 | Intel Corporation | Positional only shading pipeline (POSH) geometry data processing with coarse Z buffer |
GB2564400B (en) | 2017-07-06 | 2020-11-25 | Advanced Risc Mach Ltd | Graphics processing |
GB2572603B (en) * | 2018-04-05 | 2022-03-23 | Imagination Tech Ltd | Edge and depth processing hardware |
US10937126B2 (en) * | 2018-05-17 | 2021-03-02 | Intel Corporation | Tile-based multiple resolution rendering of images |
GB2578320B (en) | 2018-10-23 | 2023-07-05 | Advanced Risc Mach Ltd | Graphics processing |
GB2587224B (en) * | 2019-09-19 | 2021-09-15 | Imagination Tech Ltd | Methods and tiling engines for hierarchially tiling primitives in a graphics processing system |
US11508110B2 (en) * | 2020-02-03 | 2022-11-22 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by performing geometry analysis before rendering |
US11514549B2 (en) | 2020-02-03 | 2022-11-29 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by generating information in one rendering phase for use in another rendering phase |
US11189073B2 (en) | 2020-03-20 | 2021-11-30 | Arm Limited | Graphics processing |
CN112214809B (zh) * | 2020-10-16 | 2023-11-17 | 安徽工程大学 | 一种图元随机排列方法及装置 |
Family Cites Families (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1309198C (en) * | 1987-12-10 | 1992-10-20 | Carlo J. Evangelisti | Parallel rendering of smoothly shaded color triangles with anti-aliased edges for a three dimensional color display |
GB8828342D0 (en) | 1988-12-05 | 1989-01-05 | Rediffusion Simulation Ltd | Image generator |
US5175808A (en) * | 1989-09-12 | 1992-12-29 | Pixar | Method and apparatus for non-affine image warping |
US5305430A (en) * | 1990-12-26 | 1994-04-19 | Xerox Corporation | Object-local sampling histories for efficient path tracing |
GB2251770B (en) | 1991-01-09 | 1995-01-11 | Du Pont Pixel Systems | Graphics accelerator system with polygon traversal operation |
US5150454A (en) * | 1991-10-16 | 1992-09-22 | Patrick Wood | Printing system and method |
JP2807608B2 (ja) * | 1992-12-29 | 1998-10-08 | 株式会社ナムコ | ソーティング処理装置、これを用いた画像合成装置及びソーティング処理方法 |
US5500928A (en) * | 1993-03-01 | 1996-03-19 | Xionics Document Technologies, Inc. | Digital printing system and process using adaptive compression |
US5555358A (en) * | 1993-03-01 | 1996-09-10 | Xionics Document Technologies, Inc. | Digital printing system and process using compact trapezoidal representations |
US5509110A (en) * | 1993-04-26 | 1996-04-16 | Loral Aerospace Corporation | Method for tree-structured hierarchical occlusion in image generators |
GB9315852D0 (en) | 1993-07-30 | 1993-09-15 | Video Logic Ltd | Shading three-dimensional images |
US5729672A (en) * | 1993-07-30 | 1998-03-17 | Videologic Limited | Ray tracing method and apparatus for projecting rays through an object represented by a set of infinite surfaces |
GB2336983B (en) | 1995-01-31 | 2000-01-19 | Videologic Ltd | Improvements relating to computer 3D rendering systems |
CA2229027A1 (en) | 1995-08-04 | 1997-02-20 | Microsoft Corporation | Method and system for rendering graphical objects to image chunks and combining image layers into a display image |
US5886701A (en) * | 1995-08-04 | 1999-03-23 | Microsoft Corporation | Graphics rendering device and method for operating same |
US5864342A (en) * | 1995-08-04 | 1999-01-26 | Microsoft Corporation | Method and system for rendering graphical objects to image chunks |
US5949428A (en) * | 1995-08-04 | 1999-09-07 | Microsoft Corporation | Method and apparatus for resolving pixel data in a graphics rendering system |
US5574836A (en) * | 1996-01-22 | 1996-11-12 | Broemmelsiek; Raymond M. | Interactive display apparatus and method with viewer position compensation |
US5844571A (en) * | 1996-06-10 | 1998-12-01 | International Business Machines Corporation | Z buffer bandwidth reductions via split transactions |
US6288722B1 (en) * | 1996-10-17 | 2001-09-11 | International Business Machines Corporation | Frame buffer reconfiguration during graphics processing based upon image attributes |
US5844576A (en) | 1996-12-30 | 1998-12-01 | Cirrus Logic, Inc. | Tiled linear host texture storage |
US6697063B1 (en) * | 1997-01-03 | 2004-02-24 | Nvidia U.S. Investment Company | Rendering pipeline |
GB9716251D0 (en) * | 1997-08-01 | 1997-10-08 | Philips Electronics Nv | Attribute interpolation in 3d graphics |
US6771264B1 (en) | 1998-08-20 | 2004-08-03 | Apple Computer, Inc. | Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor |
US6577305B1 (en) * | 1998-08-20 | 2003-06-10 | Apple Computer, Inc. | Apparatus and method for performing setup operations in a 3-D graphics pipeline using unified primitive descriptors |
GB2343603B (en) | 1998-11-06 | 2003-04-02 | Videologic Ltd | Shading 3-dimensional computer generated images |
US6700588B1 (en) * | 1998-11-09 | 2004-03-02 | Broadcom Corporation | Apparatus and method for blending graphics and video surfaces |
US6344852B1 (en) * | 1999-03-17 | 2002-02-05 | Nvidia Corporation | Optimized system and method for binning of graphics data |
US6304266B1 (en) * | 1999-06-14 | 2001-10-16 | Schlumberger Technology Corporation | Method and apparatus for volume rendering |
US6819321B1 (en) | 2000-03-31 | 2004-11-16 | Intel Corporation | Method and apparatus for processing 2D operations in a tiled graphics architecture |
DE60127253T2 (de) | 2000-06-08 | 2007-11-22 | Imagination Technologies Ltd., Kings Langley | Bildkachelung und -kompression für die 3D-Bilddarstellung |
US20020015064A1 (en) * | 2000-08-07 | 2002-02-07 | Robotham John S. | Gesture-based user interface to multi-level and multi-modal sets of bit-maps |
GB2378108B (en) | 2001-07-24 | 2005-08-17 | Imagination Tech Ltd | Three dimensional graphics system |
US7158141B2 (en) * | 2002-01-17 | 2007-01-02 | University Of Washington | Programmable 3D graphics pipeline for multimedia applications |
US6816161B2 (en) * | 2002-01-30 | 2004-11-09 | Sun Microsystems, Inc. | Vertex assembly buffer and primitive launch buffer |
GB2387094B (en) | 2002-03-26 | 2005-12-07 | Imagination Tech Ltd | 3-D Computer graphics rendering system |
US7002571B2 (en) * | 2002-06-04 | 2006-02-21 | Intel Corporation | Grid-based loose octree for spatial partitioning |
US7009608B2 (en) * | 2002-06-06 | 2006-03-07 | Nvidia Corporation | System and method of using multiple representations per object in computer graphics |
EP1516303A2 (en) * | 2002-06-20 | 2005-03-23 | Alberto Baroncelli | Vector graphics circuit accelerator for display systems |
JP4467267B2 (ja) * | 2002-09-06 | 2010-05-26 | 株式会社ソニー・コンピュータエンタテインメント | 画像処理方法、画像処理装置、および画像処理システム |
US7138998B2 (en) * | 2002-11-14 | 2006-11-21 | Intel Corporation | Multi-resolution spatial partitioning |
GB0301448D0 (en) | 2003-01-22 | 2003-02-19 | Falanx Microsystems As | Microprocessor systems |
US20060129908A1 (en) * | 2003-01-28 | 2006-06-15 | Markel Steven O | On-content streaming media enhancement |
GB0307095D0 (en) | 2003-03-27 | 2003-04-30 | Imagination Tech Ltd | Improvements to a tiling system for 3d rendered graphics |
US7148890B2 (en) * | 2003-04-02 | 2006-12-12 | Sun Microsystems, Inc. | Displacement mapping by using two passes through the same rasterizer |
GB0319697D0 (en) | 2003-08-21 | 2003-09-24 | Falanx Microsystems As | Method of and apparatus for differential encoding and decoding |
US6911985B1 (en) * | 2003-12-10 | 2005-06-28 | Lsi Logic Corporation | Method and apparatus for reducing frame buffer size in graphics systems |
CN1641702A (zh) * | 2004-01-13 | 2005-07-20 | 邓兴峰 | 由平面图象设计立体图象的方法 |
US7418156B1 (en) * | 2004-04-16 | 2008-08-26 | Apple Inc. | Domain of definition in warper/morpher |
JP4769984B2 (ja) | 2004-05-24 | 2011-09-07 | エスティー‐エリクソン、ソシエテ、アノニム | タイルベース・グラフィック・レンダリング |
US7167171B2 (en) * | 2004-06-29 | 2007-01-23 | Intel Corporation | Methods and apparatuses for a polygon binning process for rendering |
US7813562B2 (en) * | 2004-09-27 | 2010-10-12 | Intel Corporation | Low-latency remote display rendering using tile-based rendering systems |
GB0426170D0 (en) * | 2004-11-29 | 2004-12-29 | Falanx Microsystems As | Processing of computer graphics |
CA2533279C (en) * | 2005-01-18 | 2011-09-20 | Ryan Eccles | System and method for processing map data |
GB0519597D0 (en) * | 2005-09-26 | 2005-11-02 | Imagination Tech Ltd | Scalable multi-threaded media processing architecture |
GB0524804D0 (en) | 2005-12-05 | 2006-01-11 | Falanx Microsystems As | Method of and apparatus for processing graphics |
GB2444863B (en) | 2005-12-05 | 2008-10-08 | Arm Norway As | Method of and apparatus for processing graphics |
GB2444628B (en) | 2006-12-04 | 2009-02-04 | Arm Norway As | Method and apparatus for processing graphics |
US9965886B2 (en) * | 2006-12-04 | 2018-05-08 | Arm Norway As | Method of and apparatus for processing graphics |
GB0710795D0 (en) | 2007-06-05 | 2007-07-18 | Arm Norway As | Method of and apparatus for processing graphics |
ITMI20070038A1 (it) | 2007-01-12 | 2008-07-13 | St Microelectronics Srl | Dispositivo di renderizzazione per grafica a tre dimensioni con architettura di tipo sort-middle. |
US8933943B2 (en) * | 2008-04-30 | 2015-01-13 | Intel Corporation | Technique for performing load balancing for parallel rendering |
GB0818278D0 (en) | 2008-10-06 | 2008-11-12 | Advanced Risc Mach Ltd | Graphics processing systems |
GB0900700D0 (en) * | 2009-01-15 | 2009-03-04 | Advanced Risc Mach Ltd | Methods of and apparatus for processing graphics |
-
2005
- 2005-12-05 GB GBGB0524804.2A patent/GB0524804D0/en not_active Ceased
-
2006
- 2006-12-04 JP JP2006327341A patent/JP2007157155A/ja active Pending
- 2006-12-05 US US11/633,647 patent/US20070146378A1/en not_active Abandoned
- 2006-12-05 CN CN200610130945.0A patent/CN101067869B/zh active Active
- 2006-12-05 GB GB0624311A patent/GB2433014B/en active Active
-
2015
- 2015-09-15 US US14/854,525 patent/US10019820B2/en active Active
-
2018
- 2018-06-13 US US16/007,145 patent/US10657681B2/en active Active
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101472093B (zh) * | 2007-12-27 | 2011-12-28 | 新奥特(北京)视频技术有限公司 | 一种实现电视图文字幕可配置替换的方法及*** |
US10755473B2 (en) | 2008-06-04 | 2020-08-25 | Arm Limited | Graphics processing system |
US9947131B2 (en) | 2008-06-04 | 2018-04-17 | Arm Limited | Graphics processing system |
CN101604454B (zh) * | 2008-06-04 | 2017-10-20 | Arm有限公司 | 图形处理*** |
CN101604454A (zh) * | 2008-06-04 | 2009-12-16 | Arm有限公司 | 图形处理*** |
US9367953B2 (en) | 2008-06-04 | 2016-06-14 | Arm Limited | Graphics processing systems |
US9336623B2 (en) | 2008-12-19 | 2016-05-10 | Imagination Technologies Limited | Multilevel display control list in tile based 3D computer graphics system |
CN105913470A (zh) * | 2008-12-19 | 2016-08-31 | 想象技术有限公司 | 用于渲染三维情景的计算机图形图像的方法和设备 |
US9384584B2 (en) | 2008-12-23 | 2016-07-05 | Imagination Technologies Limited | Display list control stream grouping in tile based 3D computer graphics system |
CN102265309A (zh) * | 2008-12-23 | 2011-11-30 | 想象技术有限公司 | 基于图块的3d计算机图形***中的显示列表控制流分组 |
CN102265309B (zh) * | 2008-12-23 | 2014-05-07 | 想象技术有限公司 | 基于图块的3d计算机图形***中的显示列表控制流分组 |
US8681168B2 (en) | 2009-01-15 | 2014-03-25 | Arm Limited | Methods of and apparatus for processing graphics |
CN101794456A (zh) * | 2009-01-15 | 2010-08-04 | Arm有限公司 | 用于处理图形的方法和装置 |
US9317948B2 (en) | 2012-11-16 | 2016-04-19 | Arm Limited | Method of and apparatus for processing graphics |
CN103824276B (zh) * | 2012-11-16 | 2019-02-15 | Arm有限公司 | 用于处理图形的方法和设备 |
CN103824276A (zh) * | 2012-11-16 | 2014-05-28 | Arm有限公司 | 用于处理图形的方法和设备 |
CN103870213A (zh) * | 2012-12-18 | 2014-06-18 | 辉达公司 | 经由管线化的状态包触发性能事件捕获 |
CN103870213B (zh) * | 2012-12-18 | 2017-04-12 | 辉达公司 | 一种生成性能数据的图形处理管线及计算*** |
US10204391B2 (en) | 2013-06-04 | 2019-02-12 | Arm Limited | Method of and apparatus for processing graphics |
CN104850393A (zh) * | 2014-02-13 | 2015-08-19 | 想象技术有限公司 | 并行平铺引擎管线中的图元块的处理 |
CN105321140A (zh) * | 2014-06-17 | 2016-02-10 | 想象技术有限公司 | 向图形处理***中的区片分配图元 |
CN104166568B (zh) * | 2014-08-13 | 2017-08-29 | 国电南瑞科技股份有限公司 | 一种基于cim/g的电力***图形文件并行加载的方法 |
CN104166568A (zh) * | 2014-08-13 | 2014-11-26 | 国电南瑞科技股份有限公司 | 一种基于cim/g的电力***图形文件并行加载的方法 |
CN106067186A (zh) * | 2015-04-15 | 2016-11-02 | 联发科技(新加坡)私人有限公司 | 图形处理单元及其方法 |
CN107392989A (zh) * | 2016-04-29 | 2017-11-24 | Arm有限公司 | 图形处理*** |
CN113256477A (zh) * | 2020-02-10 | 2021-08-13 | 畅想科技有限公司 | 用于在图形处理***中存储平铺信息的方法和平铺引擎 |
US11532115B2 (en) | 2020-02-10 | 2022-12-20 | Imagination Technologies Limited | Data structures, methods and tiling engines for storing tiling information in a graphics processing system |
US11861782B2 (en) | 2020-02-10 | 2024-01-02 | Imagination Technologies Limited | Data structures, methods and tiling engines for storing tiling information in a graphics processing system |
Also Published As
Publication number | Publication date |
---|---|
US10019820B2 (en) | 2018-07-10 |
US20070146378A1 (en) | 2007-06-28 |
US10657681B2 (en) | 2020-05-19 |
US20180293765A1 (en) | 2018-10-11 |
CN101067869B (zh) | 2015-11-25 |
GB2433014A (en) | 2007-06-06 |
JP2007157155A (ja) | 2007-06-21 |
GB0524804D0 (en) | 2006-01-11 |
GB2433014B (en) | 2008-07-30 |
US20160005195A1 (en) | 2016-01-07 |
GB0624311D0 (en) | 2007-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101067869A (zh) | 处理图形的方法和设备 | |
CN1223170C (zh) | 利用校正表的彩色图像数据的校正方法 | |
CN1110745C (zh) | 具有面向目标的打印接口的操作*** | |
CN1115649C (zh) | 图像输出装置 | |
CN1287283C (zh) | 调度方法和信息处理*** | |
CN101068300A (zh) | 图像形成装置及应用程序执行方法 | |
CN101046883A (zh) | 图形绘制设备 | |
CN1763743A (zh) | 图表上的自动标签放置***和方法 | |
CN101031022A (zh) | 图像处理装置,图像形成装置,图像处理装置的控制方法 | |
CN1910577A (zh) | 图像文件一览显示装置 | |
CN1797432A (zh) | 生成图形目标的方法 | |
CN1317758A (zh) | 工作管理***、工作管理装置以及工作管理方法 | |
CN1653489A (zh) | 将单个命令转换成空间图像信息的图形引擎及合并有该图形引擎的电子装置和存储器 | |
CN1172239C (zh) | 执行移动对象的方法 | |
CN1849588A (zh) | 用于测试和配置半导体功能电路的***和方法 | |
CN1577311A (zh) | 调度方法和实时处理*** | |
CN1252646C (zh) | 图像处理方法和图像处理装置 | |
CN1115454A (zh) | 图像处理装置及使用该装置的*** | |
CN1857980A (zh) | 电梯群管理控制方法、电梯群管理*** | |
CN1530855A (zh) | 布局***和布局程序以及布局方法 | |
CN1969314A (zh) | 图像处理设备和方法、存储介质及其程序 | |
CN1786905A (zh) | Gui程序、数据处理装置与对象的操作方法 | |
CN1866191A (zh) | 数据处理设定装置和数据处理设定方法 | |
CN1681287A (zh) | 数字照相机、像簿管理方法、像簿管理程序产品、以及像簿管理程序传送介质 | |
CN1645415A (zh) | 绘制装置和绘制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |