CN101604454A - 图形处理系统 - Google Patents
图形处理系统 Download PDFInfo
- Publication number
- CN101604454A CN101604454A CNA2009101595988A CN200910159598A CN101604454A CN 101604454 A CN101604454 A CN 101604454A CN A2009101595988 A CNA2009101595988 A CN A2009101595988A CN 200910159598 A CN200910159598 A CN 200910159598A CN 101604454 A CN101604454 A CN 101604454A
- Authority
- CN
- China
- Prior art keywords
- scene
- volume
- generates
- border
- assessment
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
- G06T15/405—Hidden part removal using Z-buffer
-
- 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
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
-
- 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
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/08—Volume rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- 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/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/60—Analysis of geometric attributes
- G06T7/62—Analysis of geometric attributes of area, perimeter, diameter or volume
Abstract
本发明涉及图形处理系统。当渲染包括由多个单独基元组成的复杂对象的场景1时,不是依次处理组成对象的每个基元,而是生成包围复杂对象的边界体积4,并且然后使用边界体积4而不是组成复杂对象的实际基元来处理场景1。如果确定在场景中对象的边界体积表示4将被完全遮挡(例如,被前景对象2遮挡),则不对组成复杂对象的单独基元进行处理。这能够显著地节省用于场景1的处理时间和资源。
Description
技术领域
本发明涉图形的处理,特别是涉及三维(3D)图形的处理,以供例如在显示屏幕上显示。
背景技术
如本领域已知的,3D图形处理一般通过以下方式来执行:首先将待显示的场景(scene)分成多个相似基本组件(所谓的“基元(primitive)”)显示,以允许更为容易地执行3D图形处理操作。这些“基元”通常是简单多边形的形式,例如三角形。
用于待显示场景的基元通常是通过图形处理系统的应用程序界面,使用从需要显示图形的应用(例如游戏)所接收的图形绘制(drawing)指令(请求)来生成的。
在此阶段每个基元通常由一组顶点(vertex)来定义并且被表示为一组顶点。基元的每个顶点与表示顶点的一组数据相关联。然后例如在对顶点(与顶点相关的一个或多个基元)进行光栅化(rasterise)和渲染(render)以供显示时使用该数据。
如现有技术中已知的那样,与每个顶点相关联的数据通常包括顶点的位置数据(其在“场景世界”中的(x,y,z)坐标)和一组定义顶点的属性(即,应该如何对其进行绘制和/或其如何在显示器上呈现)的“属性”数据。该属性数据能够包括,例如,顶点的颜色和透明度数据(红、绿、蓝和alpha、(RGBa)值),顶点的纹理数据(通常为将被应用于顶点的纹理贴图(texture map)的(s,t)坐标数据),与顶点所属的基元的面的定向相关的信息等等。
每个顶点的数据通常被安排为顶点数据的阵列,包含例如,显示给定图形场景或帧所需的每个顶点的顶点数据。顶点阵列中所存储的数据也可以指示哪些顶点表示场景(帧)中的哪些基元,例如,通过将每个顶点与其各基元(一个或多个)相关联。(可替代地,顶点与基元的关联可以以某一其他方式来提供,例如通过准备基元列表(所谓的“基元列表”)和/或“绘制基元(一个或多个)”图形命令的列表,其为每个基元指示就该基元而言顶点数据阵列中的哪些顶点将被使用。)
一旦用于场景的所有基元和其顶点已经被生成和定义,就能够由图形处理系统对它们进行处理,以便显示场景。
如本领域所已知的那样,该处理通常包括多个阶段。
首先,对基元本身(实际上对为基元生成的顶点数据)执行多个操作。如本领域所已知的那样,这些过程可能包括:变换(例如,旋转、缩放(scaling)、移位(displacing)等等)基元,和“照亮(lighting)”基元(例如,根据待显示场景中的光源来调整其外观(appearance))。
使用所定义的顶点数据来执行这些过程,并且产生表示经变换和照亮的顶点等基元的经修正的顶点(顶点数据)。由于这些操作是对顶点数据执行的,并且产生经修正的顶点数据(顶点),所以它们能够被认为或通常称为“顶点着色(shading)”过程。
如本领域所已知的那样,这些顶点着色步骤能够通过专用的“固定功能”处理单元或级,和/或通过执行一个或多个顶点着色程序的可编程或可配置单元(通常称作(可编程的)“顶点着色器(shader)”单元)来执行。
一旦上述过程完成,在基元将被显示在2D表面上时,经处理的(经顶点着色的)顶点数据就将表示基元。然后有必要对该数据进行转换以形成适于在显示器(例如屏幕)上显示。该过程基本上包括确定显示屏幕上的哪些像素(图像元素)将表示哪个基元,并且确定每个像素在显示器上应具有的外观(例如,就其颜色等而言)。这些过程通常分别称作光栅化和渲染。
该过程基本上包括确定覆盖待处理的场景的采样点阵列的哪些采样顶点被基元覆盖,然后确定每个采样点应具有的外观(例如就其颜色等而言)以在该采样点处表示基元。这些过程通常分别称作光栅化和渲染。
光栅化过程确定应该被用于基元的采样位置(即将被用于表示待显示场景中的基元的采样点的(x,y)位置)。这通常使用基元的顶点位置来完成。
渲染过程然后得到在采样点(即“着色”每个采样点)处显示基元所必要数据,例如红、绿和蓝(RGB)颜色值和“Alpha”(透明度)值。这能够包括,如本领域所已知的,应用纹理,混合采样点数据值等等。
(在3D图形文献中,术语“光栅化”有时既被用于表示到采样位置的基元变换也被用于表示渲染。然而,这里的“光栅化”将仅被用于指转换基元数据到采样点地址。)
这些过程通常通过将采样点表示为离散图形实体来执行,所述离散图形实体通常称作“片段(fragment)”,其中对所述片段执行图形处理操作(如渲染)。每个此类片段将对应于一个给定采样点或一组给定采样点,并且实际上表示并被用于在所讨论的一个或多个采样点(使用片段来渲染的一个或多个采样点)处渲染基元。
因此“片段”实际上是(与之相关联)一组内插到基元的给定屏幕空间采样点(一个或多个)的基元数据。其也可以包括每基元(per-primitive)和用于在一个或多个采样点(片段位置)着色基元所需的其他状态数据。每个图形片段在其被处理时能够被合理认为实际上等效于场景“像素”。
实际上,每个图形“片段”可以对应于最终显示器中的单个像素(图像元素)(因为像素在最终显示器中的奇点(singularity),在图形处理器所操作(渲染)的“片段”与显示器的像素之间存在一对一映射)。然而,片段与显示器像素之间可能没有一对一的对应关系,例如,其中在显示最终图像之前对经渲染的图像执行特定形式的后处理(如按比例缩小)。
在一种用于图形处理的已知技术中,通常称作“立即模式”图形处理或渲染,在生成顶点时相继地对它们进行处理(光栅化和渲染)。
在这一类型系统中,基于先到先得(first come first served)将顶点传送到图形系统(尽管顶点通常以尝试提高图形处理效率的形式存储),并且因此以基元被接收到的次序来对它们进行渲染以供显示。
图形处理系统中也已知使用所谓的“基于区块(tile-based)”或“延迟(deferred)”渲染。在基于区块的渲染中,不是实际上以立即模式渲染来一下子处理整个场景,而是将待显示的场景分割成多个更小的子区域,通常称作“区块”。分别渲染每个区块(子区域)(通常一个接一个),并且然后重新组合经渲染的子区域(区块)以提供完整场景以供显示。在这种方案中,场景通常被分为规则尺寸和形状的子区域(区块)(通常是例如正方形或长方形),但这并不是必需的。
在基于区块的渲染系统中,通常为每个子区域(区块)准备将为该子区域渲染的基元列表(“区块列表”)(即,出现在子区域中)。这有助于避免不必要地渲染实际没有出现在区块中的基元。
为了在基于区块的渲染系统中准备区块列表,首先对基元的初始顶点(顶点数据)进行顶点着色以确定,例如,每个基元是否将出现在待显示的场景中以及每个基元将如何出现在待显示的场景中。经处理(经顶点着色)的顶点被用于确定哪些基元将(潜在地)出现在每个区块中。
一旦已经以这种方式为每个子区域(区块)准备了区块列表,区块列表就被存储以用于,例如,允许系统在所讨论的区块被渲染时识别哪些基元需要被考虑(渲染)。
因此,基于区块的系统能够被认为执行三个主要步骤。首先,为每个基元执行顶点着。“经顶点着色”的顶点数据然后被“区块化(tile)”(即,使用经处理(经顶点着色)的顶点数据来准备区块列表)。然后依次对每个区块进行光栅化和渲染。
将由图形处理系统渲染的场景的主趋势变得越来越复杂,例如在可以被用于绘制场景的基元数目方面。在处理场景以供显示时所使用的顶点着色程序日益复杂。这都对图形处理系统带来了不断增加的处理及资源要求和负担。
所希望的是减少这些负担和要求,即使“呈现”给图形处理系统以供处理显示的场景是复杂的场景,并且尽管用于做到这一点的技术如使用早期的Z-测试和遮挡剔除(occlusion culling)来尝试减少最终为所存在场景而渲染的基元的数量,申请人仍然相信存在改进的空间。
发明内容
根据本发明的第一方面,提供一种在图形处理系统中处理场景以供显示的方法,该方法包括:
识别场景中的对象(object);
生成用于表示场景中的对象的体积(volume);
使用为对象生成的体积来处理部分或全部场景,以评估(assess)场景中对象的存在;以及
根据所述评估来确定是否处理场景的对象以供显示。
根据本发明的第二方面提供一种图形处理系统,包括:
用于识别待处理以供显示的场景中的对象的装置;
用于生成用于表示场景中的对象的体积的装置;
用于使用为对象生成的体积来处理部分或全部场景以评估场景中对象的存在的装置;
用于根据所述评估来确定是否处理场景的对象以供显示的装置。
在本发明中,生成体积以用于表示对象(例如更复杂的对象,例如由或将由或可以由多个基元组成的对象),并且然后对该生成的表示性(representative)体积进行处理以得到与场景中对象和/或其他一个或多个对象的存在相关的信息。换句话说,在例如处理组成所讨论的对象的所有“真实”基元之前,首先为对象生成并处理“代理”表示性体积。
本发明具有如下优点,例如,并且如以下将进一步论述得那样,如果能够从代理-表示性体积确定:在场景将被显示时对象实际上在场景中并不能被看到(例如,因为它实际上完全落在所显示的帧之外,或者其完全被其他对象所遮挡),则根本无需处理对象的多个“真实(true)”基元,由此避免了在处理场景以供显示时的处理负担和要求(并且因此节省了功率和带宽)。
类似地,如果可以从代理表示性体积确定在场景将被显示时对象将完全遮挡场景中的其他对象,则根本无需处理该其他对象的多个“真实”基元,从而避免了在处理场景以供显示时的处理负担和要求(并且因此节省了功率和带宽)。
因此如果实际上在待显示的场景中对象将是不可见的,则通过首先处理更加抽象或较粗略(coarser)的对象表示(即表示对象时所生成的体积)以评估在场景将被显示时场景中对象的效果(effect)(例如存在(可见性)或其他方面),本发明能够使得对场景中的对象的不必要处理得以避免。
在本发明中为其生成表示性体积(较粗略表示)的对象能够是任何适当的且期望的此类对象。其优选地包括更复杂的对象,例如,将(当其被渲染时)由多个单独基元构成的对象,因为采用本发明的方式对此类对象的评估将是最有利的。
在一个特别优选的实施例中,为其生成边界(bounding)体积的对象包括绘制调用(call)(绘制调用的基元)、绘制调用的组合或绘制调用的一部分(例如,从绘制调用聚集的特定“对象”基元)。在优选实施例中其包括绘制调用。
在另一个特别优选的实施例中,对象包括待绘制的更加抽象、高阶对象(对象的描述),例如,并且优选地所谓的“补片(patch)”或“表面”。因此,在一个优选实施例中,对象包括待绘制对象的高阶参数描述。本发明可以,如优选地,应用到用控制点(和其他信息),如(笔划(stroked))曲线、表面、补片等来定义的对象,因为其可能(并且有利地)生成表示此类对象的体积(以该形式定义或描述的对象)。
还将理解的是,利用这样的高阶“对象”,这样的对象通常最终仍然被渲染为多个基元,因此,针对它们使用本发明是有优势的。
将以本发明的方式来处理的对象能够根据需要通过以下方式来确定和识别:例如通过识别场景的一个或多个绘制调用、通过分析一个或多个绘制调用了解对象和/或基元等如何被集合成所述一个或多个绘制调用、通过识别场景的高阶对象描述、通过识别在场景中由或将由多个基元构成的对象等。
使用用于对象的表示性体积所执行的对场景中对象存在的评估可以以任何合适及期望的方式进行。其优选地包括评估在其被显示时对象(一个或多个)是否在场景中可见。
如将在下文进一步讨论的那样,这可以与为其生成体积的对象相关地进行,和/或与场景中的其他对象相关地进行。实际上,场景上对象的效果应该被评估。
类似地,根据评估确定是否处理场景的对象以供显示,可以与为其生成体积的对象相关地进行,和/或与场景中的其他对象(一个或多个)相关地进行。
在特别优选的实施例中,在表示对象时所生成的“体积”包括对象的边界体积(即“限定(bound)”或包围对象的体积,以便至少表示被对象所占据的体积)。
这具有如下优点,例如,正如在此所讨论的,如果能够从代理边界体积(边界体积表示)确定在场景将被显示时实际上在场景中看不到对象(例如,其实际上落在所显示的帧之外,或被其他对象完全遮挡),那么,例如根据无需处理对象的多个“真实”基元,从而避免在处理场景以供显示时的处理负担和要求(并且因此节省了功率和带宽)。
因此,在这些实施例中,本发明优选地包括以下步骤或装置:
识别场景中的对象(例如,其由多个基元组成);
生成用于表示场景中的对象的边界体积;
使用为对象生成的边界体积来处理部分或全部场景,以评估场景中对象的存在(例如,得到与之相关信息);
使用所述评估(例如,所得到的信息)来确定是否处理对象(例如,确定是否处理对象的多个基元中的一个或多个)以供显示。
作为复杂对象的较粗略表示而生成的边界体积能够采用任何期望和合适的形式。
在特别优选实施例中,边界体积是围绕(surround)对象的边界框(boundingbox)。
在另一个实施例中,边界体积可以例如包括2-维对象映射(表示由对象覆盖的区域)以及,对象的优选地保守的(conservative)深度范围(对象所遍布的深度值的范围的指示)(由此其将指示对象将被考虑占据的“深度”)。在这种情况下,如本领域技术人员将会理解的那样,2D映射和深度值合起来将有效地定义对象的边界体积。
一旦已经识别了所讨论的对象,就能够以任何期望且合适的方式生成提供对象的较粗略表示的边界体积。
因此,在边界框表示的情况下,任何适当的用于得到围绕(和包围)复杂对象的边界框的技术能够被用来生成边界框,所述边界框将形成复杂对象的较粗略表示。
根据需要,边界框可以是对象所占据(更好或更差“适合于”(复杂)对象的真实体积(形状))的体积的程度不同的准确表示。
也可能的是,例如,生成并然后处理一组多个“表示性”体积,其合起来构成对象的整体边界体积(并且在一个优选实施例中如此实现)。在这种情况下,本发明的“边界体积”由一组多个较小“体积”组成。这可以例如允许根据需要生成由对象所占据的体积的更加准确的表示。这对于具有无法容易地使用单个“全局”边界体积来表示的形状的物体而言可能是特别希望的。(可替换地,这样的“对象”可以被作为多个单独的、较小的对象来对待,然后其中每一个都以本发明的方式进行处理。)
(如本领域技术人员所理解的那样,并且如上所述,在本发明的这些实施例中所使用和测试的边界体积应该“限定”或包围对象,以便至少表示对象所占据的体积。因此,在边界体积由多个较小的体积(其因此不能单独地完全“限定”对象)组成的情况下,应该采用以下方案:较小体积的组合将完全“限定”对象。
边界体积(例如,边界框,包括对象的较粗略表示),可以根据组成复杂对象的基元的经变换的或未经变换的顶点数据来生成。
因此,在一个优选实施例中,边界体积表示,例如并且优选地,将表示对象的边界框,根据组成复杂对象的基元的未经变换的顶点数据来生成,然后复杂对象的边界体积表示被变换到屏幕空间以进行处理。
在另一个优选实施例中,构成复杂对象的基元的顶点首先被变换到屏幕空间,然后使用经变换的顶点(顶点数据)来生成用于表示复杂对象的边界体积表示,例如边界框。在这种方案中,用于复杂对象的经变换的“真实”顶点数据可以被并且在优选实施例中被高速缓存以使得在需要时其可供进一步使用。
初始变换步骤能够在例如图形处理系统中所提供的专用单元中执行,例如执行必要软件程序的CPU核。然而,其优选地在图形处理系统中的顶点着色器单元中,使用例如合适的预生成的顶点着色器程序,或者从将用于所讨论场景的顶点着色的应用指定的顶点着色器程序(一个或多个)中提取的顶点着色程序执行(例如在编译器阶段)来执行。在后者的例子中,系统编译器可以例如根据实际的完整顶点着色器程序来为所讨论的(每个)顶点生成顶点着色器程序的“专用”版本。该专用的、简化的顶点着色器程序版本优选地仅包含例如针对推断每个顶点在顶点着色之后将具有的位置所必要的顶点的(x,y,z)坐标的变换指令。如果需要,编译器可以例如具有由改进的应用程序提供的、附加的用于所有顶点着色器程序的分析和死代码消除步骤。
使用所生成的作为(复杂)对象的较粗略表示的边界体积所执行的处理优选地如此以便评估场景中对象的存在(例如,得到与之相关信息),并且能够是任何期望且合适的此类处理。优选地评估在场景将被显示时场景中复杂对象是否可见。
使用所生成的边界体积执行的处理可以,并且在优选实施例中,包括评估表示对象的边界体积是否完全落在场景的可见区域之外(在场景将被显示时)(在这种情况下,可以得出对于场景而言复杂对象根本无需被处理)。这可以例如并且优选地以下方式来进行:通过评估表示对象的边界体积是否完全落在屏幕边缘之外,和/或,在区块系统中,通过评估表示对象的边界体积是否落在任何将被用于显示场景的区块中。
在特别优选的实施例中,使用所生成的作为(复杂)对象的较粗略表示的边界体积来得到与场景中对象的存在相关的信息而执行的处理,包括评估表示对象的边界体积是否被场景中的其他对象完全和/或部分遮挡。这将再次提供关于在场景将被显示时(复杂)对象实际上在场景中是否可见的信息(并且因此是否需要被完全处理以供显示)。
表示对象的边界体积是否被遮挡的此类评估能够根据需要来执行,但是优选地包括执行Z(深度)测试和/或其他形式的图形遮挡测试,例如,并且优选地,如本领域所已知的技术。
表示对象的边界体积的此类处理能够根据需要来执行,但在特别优选的实施例中,包括在处理所讨论的场景以供显示时,处理边界体积而不是为所讨论的(复杂)对象定义的“真实”基元。换句话说,所生成的表示(复杂)对象的边界体积连同场景的其他对象和/或基元一起被处理以供显示,而不是处理组成所讨论的(复杂)对象的单独的“真实”基元。
边界体积的处理可以通过例如,生成表示边界体积的一个或多个适当基元并且然后以与场景的任何其他基元相同的方式处理表示边界体积的基元(一个或多个)来执行,即,所生成的表示边界体积的基元优选地与为场景所定义的其他基元(优选地所有)一起被处理(并且因此视情况而定被装入区块(在基于基于区块的渲染系统中),光栅化并渲染等)。
(将会理解的是,尽管一个或多个基元被生成以便能够处理边界体积,与在以一般方式简单处理(复杂)对象的情况相比,其仍需要处理更少的基元。)
其他方案当然也是可能的。
虽然可以完全像其他对象和/或基元那样处理所生成的表示复杂对象的边界体积(和/或表示边界体积的一个或多个基元),但是申请人已经意识到得到例如表示(复杂)对象的边界体积的色彩信息可能是不必要的(因为作为(复杂)对象的较粗略表示的边界体积实际上不意在为被显示的场景做出贡献)。
因此,在特别优选的实施例中,关于所生成的表示(复杂)对象的边界体积所执行的处理包括仅执行确定在场景将被显示时所生成的边界体积是否在场景显示中存在(或相反)所必要的处理。
此类处理优选地包括在场景将被显示时所生成的边界体积(或从其获得边界体积的顶点)到场景中的一个或多个适当位置的任何必要变换以获取场景显示的合适位置(因为这于将允许评估在场景将被显示时复杂对象在场景中的存在)。
类似地,在基于深度测试的遮挡确定的情况下,所生成的表示(复杂)对象的边界体积的处理优选地包括针对边界体积执行仅Z(仅深度)渲染通道(rendering pass),即,其中边界体积被渲染,但是其中就边界体积而言所实现的渲染状态仅仅是Z测试以及Z的读和写。
优选地,当其被处理以允许执行深度(或其他)测试时,表示(复杂)对象的边界体积(例如,表示边界体积的基元)以适当的方式被渲染(并优选地就深度(或其他)测试而言,对于所讨论的图形处理系统采用普通方式)。
限制针对所生成的表示复杂对象的边界体积而执行的处理还具有如下优点,处理更加高效并且消耗更少的资源,由此使得其例如在更加受限的系统中更加可接受地执行。例如,在仅Z处理的情况下,Z缓冲器能够被填充,但是能够减少其他存储器访问或使之最小化,并且其他片段处理器可能空闲。
能够以任何适当且期望的方式来配置图形处理系统以便以此方式来处理表示(复杂)对象的边界体积。优选地,为此目的其被设置为适当的渲染状态(例如仅Z渲染状态)。(如本领域所已知的,图形处理器被设置的渲染状态确定了处理器将对其所接收的图形基元执行的处理并且所以能够被用于控制所执行的处理。)
如本领域所已知的,在发送表示(复杂)对象的边界体积(如,基元(一个或多个))进行处理之前,(渲染)“状态”为此目的可以例如通过刷新处理器并在全局将其状态设置为新状态(例如,仅Z)(即,对所有处理单元)。
然而,在优选实施例中,边界体积和/或其表示(复杂)对象的对应基元(一个或多个)以某种方式被标记或标示以将自身标识为执行此类特定处理,并且配置图形处理系统以相应地(及适当地)处理这些标记的“对象”(和基元)。
例如,在图形处理系统具有多个例如能够与基元和/或片段相关联的预定义渲染状态的情况下,如在早期的专利申请GB-A-2420261中所描述的技术,并且优选地,可用的预定义渲染状态之一(例如渲染状态索引“0”(或其他索引))被设置为用于处理表示(复杂)对象的边界体积的渲染状态(例如,并且优选地,仅Z渲染状态)。这于是将允许例如在它们发送以用于处理通道时,这样的边界体积(和/或基元,片段等)被标记以适当的渲染状态索引等,以使得它们相应地被处理,而不是例如必须全局地刷新并改变整个处理流水线的状态。
类似地,在图形处理系统支持片段着色程序的情况下,优选存在针对表示(复杂)对象的边界体积的处理(例如,进行仅Z处理(渲染状态))所保留的并且用于该处理的预定义片段程序地址。该地址可以例如触发例如用于处理所生成的边界体积的整体片段着色器程序的更加有限的版本(的(编译和执行))。这于是将再次允许这样的边界体积(及基元和片段)在执行处理时被标记以该预定义的片段程序地址,并相应地避免例如应用全局(如,仅Z)状态到图形处理器的需求。
一旦已经评估了表示(复杂)对象的边界体积在场景中存在(例如可见性)与否,然后就使用该信息来确定是否处理对象(如,组成(复杂)对象的“真实”基元)。
这可以以任何期望且合适的方式来完成,但是在优选实施例中如果从表示对象的边界体积的处理中确定在场景将被显示时对象在场景中根本不存在(例如,优选地,可见)(例如,因为所生成的边界体积完全落在可见帧的边缘之外,不在当场景将被显示时将被用于场景的区块中,和/或完全被场景中的其他对象遮挡),则优选地,简单地丢弃与所生成的边界体积相对应的(复杂)对象,例如从场景中剔除,以使得其不经历与场景相关的任何进一步处理。
另一方面,如果表示对象的边界体积的处理确定在场景将被显示时对象(至少部分)存在于(例如,可见)场景中,则对象需要“合适地”处理以进行显示。(这在表示对象的边界体积的处理本身不能用于显示对象时是必要的)。
优选地,这通过然后使得图形处理系统处理一个或多个(如,所有)针对复杂对象所定义的单独、实际(真实)基元以供显示来实现。换句话说,应当处理所生成的边界体积(对象的较粗略表示)所表示的原始数据(如,基元)。
在这种情况下,对象的“真实”基元被优选地以普通方式进行处理以供显示,并且从而应当在必要时酌情经历任何必要的区块化、光栅化、渲染等操作。
如果需要,复杂对象的“真实”基元的该处理可以使用任何已经得到的和存储的与那些基元相关的数据,例如任何高速缓存的经变换的顶点数据,如上面所讨论的。
一旦确定应当处理(复杂)对象以供显示(如,将是可见的),这些情况中的对象的“真实”处理(对象“真实”基元的处理)就根据需要而被触发。然而,在优选实施例中,(复杂)对象的边界体积表示与将触发(复杂)对象的实际基元的处理的信息,和/或能够被用于识别需要为所讨论的复杂对象而处理的实际基元的信息相关联。
尽管以上已经将本发明实施例主要描述为测试单个边界体积(例如,边界框),或合起来构成整体单个边界体积的一组体积,描述为待绘制的复杂对象的较粗略表示(并且在一个优选实施例中如此完成),但是也可以例如如果需要分别测试构成表示给定的更加复杂对象的边界体积的一个或多个体积。例如,分别测试表示复杂对象的多个体积允许评估场景中复杂对象的不同部分的存在和可见性。
因此,在特别优选的实施例中,生成两个或更多表示性体积(其一起构成边界体积)以用于表示(复杂)对象并分别进行测试。在该情况下,每个此类生成的体积优选地表示构成对象的多个实际基元。在这些方案中所生成的表示性体积均表示所讨论的对象的不同部分,并且被优选地生成以表示对象的不同(屏幕)区域。
在一个优选实施例中,从开始就生成表示复杂对象的两个或更多表示性体积。
然而,在特别优选的实施例中,如果并且当确定在场景将被显示时对象以及然后对象的部分存在于在场景中并应该针对场景而被处理时,系统初始生成用于表示整个复杂对象的单个边界体积,并且然后逐渐生成更多的表示性体积,每个表示(复杂)对象的逐渐更小的部分。
这种方案实际上逐渐将(复杂)对象分割为更小的部分,每个都由所生成的表示性体积(其将“限定”所讨论的对象部分)来表示,并且从而允许评估对象的每个这样的部分在场景中存在与否,并且如果在场景将被显示时对象的全部或部分不在场景中则以适当的“表示”级(分辨率)而丢弃。
在这些方案中,优选地,使用逐渐生成表示(复杂)对象的较小体积的重复过程(只要在每个阶段对象的至少一部分仍然“存在”于场景中)。
因此,优选地,(复杂)对象首先由被生成来表示它的单个边界体积来表示,并且评估该生成的边界体积的存在。如果在场景中不存在,则在该阶段能够丢弃(复杂)对象,但如果边界体积存在,则优选地生成两个或更多(优选地,2或4个)体积,每个表示对象的不同部分(和原始、整体边界体积的部分),并且评估其存在。
该过程能够继续并且如果需要,以使得例如如果例如两个“第二级”生成的体积中任一个被发现在场景将被显示时存在于场景中,则生成两个(或更多等)更小的体积以表示与所生成的“第二级”体积对应的(复杂)对象的部分,并进行评估,并且然后或者丢弃,或者处理(复杂)对象的该“部分”对应的真实基元以供显示,或者进一步细分(复杂)对象的该“部分”,等等。
因此,在本发明的特别优选的实施例中,如果确定在场景将被显示时初始生成的表示对象的边界体积存在于场景中,不是此后立即处理构成所表示对象“真实”基元以供显示,而是以本发明的方式生成并处理两个或更多(优选地,2或4)更小的表示性体积,其均表示对象的不同部分。
然后,在优选实施例中,对于在场景被显示时被发现存在于场景中的这些更小体积中的任何一个,或者处理(复杂)对象的该部分的“真实”基元以供显示,或者生成两个或更多(优选地,2或4)更小的体积(其均表示(复杂)对象的不同的(更小的)部分),并且以本发明的方式对其进行处理。
如果需要,针对(复杂)对象的这些更小的“部分”,在优选实施例中,可以重复该过程,以使得再次针对在场景被显示时被发现存在于场景中的这些更小表示性体积中任何一个重复该过程,或者处理(复杂)对象的该部分的“真实”基元以供显示,或者生成两个或更多(优选地,2或4)更小的体积(其均表示(复杂)对象的该(更小)的部分的不同部分),并且以本发明的方式对其进行处理,等等。
优选地,继续细分直到达到某一特定的、优选选择的或可选的以及优选地预定的细分限制。该限制可以,例如按照所做出的细分次数,和/或按照对象被细分的不同部分(区域)的尺寸(和/或被生成表示对象各部分的体积)。
如本领域技术人员所理解的,将别使用的细分的级别和限制可以依赖于例如进一步细分限定所需要增加的处理与消除复杂对象的部分以免于处理所带来的潜在节省之间的权衡。因此,例如对特别复杂的对象(例如,由很多基元构成的对象)可能希望有更高级别的细分,反之亦然。
在这些方案中,所生成的用于在对象或对象的部分的细分的每个级别表示(复杂)对象的体积优选地是全部相同或相似的尺寸,并且更优选地,相同或相似的形状。在优选实施例中,它们都是立方形的,并且优选地是立方体。
在优选实施例中,以此方式对(复杂)对象的细分是如此以使得对象能够由单个生成的边界体积(覆盖对象的全部)来表示,然后由四个(更小)生成的体积来表示,其均表示对象的不同部分(即,使得对象被有效地划分为四个区域)。
类似地,任何被发现存在的更小表示性体积(对象的部分)优选地再次被分成四个更小部分(以使得如果来自最初细分的所有四个表示体积都被发现是存在的,则对象然后将被细分成16个区域,每个由不同的生成的表示性体积来表示)。
再次,这些更小的表示性体积中任何一个被发现存在,根据需要,如果它们要被细分,则优选地细分成四个更小部分,每个都由所生成的体积来表示(以使得如果所有16个更小体积仍然存在,则对象然后将被继续分成64个区域),等等。
在另一特别优选的实施例中,所生成的用于表示对象的体积包括对象的限定(bounded)体积,即被确切地封闭在(限定于)对象内的体积(其占据的体积不超过将被对象占据的体积)。
申请人进一步意识到,例如以本发明的方式同样可以测试对象在场景中是否遮挡其他对象(由此可放弃所述对象)。在这种方案中,再次生成复杂对象的较粗略表示并且被用于遮挡测试过程,但这种情况下可以确定场景中其他对象是否因为被所讨论的(复杂)对象遮挡而能够被丢弃。
申请人进一步意识到在这种情况下,将不适于生成包围复杂对象的边界体积(因为,“边界”体积将不能确切表示由复杂对象所占据的的体积(空间))。因此,对于该处理,作为代替,生成“限定”体积,即,确切地封闭在复杂对象内的体积(即,其所占据的体积不超过对象所占据的体积)。
因此,在本发明的特别优选的实施例中,生成用于表示场景中的对象的限定体积,并且然后处理该生成的限定体积以评估场景中对象的存在(例如,得到与之相关的信息)。换句话说,为对象生成一个“代理”限定体积(限定体积表示)并且在例如处理组成所讨论的对象的所有“真实”基元之前首先对其进行处理。
这具有以下优点,例如,并且正如下面将被讨论的,如果能够从对象的代理限定体积(限定体积表示)确定在场景将被显示时对象将遮挡场景中的其他对象,则根据无需处理那些其他对象,从而在处理场景以供显示时避免该处理负担及要求(并且因此节省了功率和带宽)。
因此,在特别优选的实施例中,本方面包括以下步骤或装置,用于:
识别场景中的对象(例如,其由多个基元组成);
生成用于表示场景中的对象的限定体积;
使用为对象生成的限定体积来处理部分或全部场景,以评估场景中其他一个或多个对象的存在(例如,得到与之相关的信息);
使用所得到的信息来确定是否处理场景的一个或多个其他对象以供显示。
如本领域技术人员将会理解的,视情况而定,本发明的这些实施例能够并且优选地包括在此所描述的本发明的一个或多个或所有优选的及可选的特征。
因此,例如在此针对“边界体积”的使用所讨论的可选及优选技术中的任何一个或所有,视情况而定,同样可以被应用于其中为对象生成“限定体积”的方案。
因此,限定体积被优选地通过考虑将被对象(和/或被对象的一个或多个部分)确切包围的适当的x、y、z值范围来生成。
类似地,一旦已经得到(复杂)对象的适当限定体积,就能够再次通过以下方式处理场景:使用该限定体积来表示对象,优选地确定相应地对象是否将遮挡场景中出现的任何其他对象、基元等等(以使得它们于是能够被丢弃(不针对显示进行处理))。
在特别优选的实施例中,使用所生成的作为对象的较粗略表示限定体积所执行的处理包括:评估表示对象的有界体积是否将完全和/或部分遮挡场景中的任何其他对象。这将提供关于在场景将被显示时其他一个或多个对象是否实际在场景中是可见的信息(从而评估是否需要完全处理以供显示)。
此类针对表示对象的限定体积是否遮挡其他对象的评估能够根据需要来执行,但是同样优选地包括执行Z(深度)测试和/或其他形式的图形遮挡测试,例如,并且优选地,如本领域所已知的。
因此,针对限定体积的处理类似优选地被执行为仅Z渲染通道,并且优选地以与上述“边界体积”处理相对应的方式被使用,以允许丢弃将被(复杂)对象遮挡的对象。
这里将会理解的是,此处对象的限定体积的生成和测试应当在适当保守的基础上执行,以确保限定体积例如不包围任何实际上不是其所表示的对象所占据的场景体积或区域。
根据需要,限定体积可以被得到为对象的程度不同的准确表示,和/或对象的一个或多个部分。
还可能的是例如生成并然后处理一组多个限定体积以例如更准确地表示对象所占据的体积,如果需要(并且在优选实施例中如此完成)。对于具有不能使用单个限定体积足够准确地表示的形状的对象,这可能是特别希望的。
在特别优选的实施例中,生成用于给定对象的边界体积以及限定体积,并以上面的方式进行处理。更优选地,这是针对场景中的多个(复杂)对象来进行的,例如然后可以例如允许那些对象中的一个或多个被从用于场景的处理中丢弃。
根据上述讨论将会理解的是,本发明的所有方案包括首先处理复杂对象的更加抽象或较粗略的表示(即,在表示对象时生成的边界和/或限定体积)以评估在场景将被显示时复杂对象在场景中存在(可见性)与否和/或在场景中的效果。
因此,根据本发明的第三方面,提供一种在图形处理系统中处理场景以供显示的方法,所述方法包括:
图形处理系统:
生成场景的对象的较粗略表示;
处理对象的所生成的较粗略表示以评估在待显示的场景中一个或多个对象的可见性;
根据本发明的第四方面,提供一种图形处理系统包括:
用于生成待显示的场景的对象的较粗略表示的装置;和
用于处理对象的所生成的较粗略表示以评估待显示场景中一个或多个对象的可见性的装置。
如本领域技术人员将会理解的,视情况而定,本发明的这些方面能够并且优选地包括本发明的一个或多个或全部优选的和可选的特征。因此,例如针对其生成较粗略表示的对象优选地包括更加复杂的对象,例如由多个单独基元构成的对象。
类似地,本发明的这些方面优选地包括如下步骤或装置,用于:识别场景中由多个基元构成的对象,并且然后生成该识别对象的较粗略表示以表示场景中的对象。
同样地,在本发明的这些方面的一个优选实施例中,对象的较粗略表示包括用于表示场景中的对象的边界体积。这种情况下,对待显示场景中的一个或多个对象的可见性的评估于是优选地包括使用为对象生成的边界体积来处理部分或全部场景以得到与场景中对象的存在相关的信息的方法或装置。
类似地,在本发明的另一个优选实施例中,所生成的对象的较粗略表示包括用于表示场景中的对象的限定体积。在这种情况下,对象的所生成的较粗略表示的处理优选地包括使用为对象生成的限定体积来处理部分或全部场景以得到与场景中对象的存在相关的信息。
在本发明的特别优选的实施例中,为对象生成边界体积和限定体积这二者,如上面所述。
类似地,本发明这些方面的方法和系统优选地包括以下步骤或装置,用于:使用待显示场景中一个或多个对象的可见性评估来确定是否处理所讨论的对象和/或是否处理场景中的一个或多个其他对象以供显示。
应当注意到,在这里所描述的本发明的所有方面和实施例中,在给定场景中可能存在多于一个对象,其中针对所述给定场景生成表示性的较粗略表示、一个或多个边界体积和/或一个或多个限定体积,并以本发明的方式进行评估。在优选实施例中确是这种情况。在这种情况下,可以并且应当以以上所讨论的方式来对待并处理每个这样的对象。
根据上文将会理解的是,本发明的方案初始可以以更加有限的方式来处理或表示(复杂)对象的顶点,更特别地仅仅针对与其“位置”。
申请人相信,执行像在本发明那样仅使用有限数据集合的这种“预先”处理可能本身是新的且有利的,因为其可以例如促进执行“预先”处理,例如在处理能力和存储资源更加有限的情况下,如在嵌入式系统和便携式设备中,并且,事实上可以允许这样的处理在其中不希望这样做的情况下被执行(例如,因为处理负担一般将认为太繁重)。
因此,根据本发明的第五方面,提供一种操作图形处理系统的方法,所述方法包括:
图形处理系统:
在处理顶点集合以供显示之前,仅处理与待处理以供显示的顶点集合中的一个或多个顶点的位置相关的数据;并且
当处理顶点集合以供显示和/或修改待处理以供显示的顶点集合时使用处理的结果;
根据本发明的第六方面,提供一种图形处理系统,包括:
用于在处理顶点集合以供显示之前仅处理与待处理以供显示的顶点集合中的一个或多个顶点的位置相关的数据的装置;以及
用于当处理顶点集合以供显示和/或修改待处理以供显示的顶点集合时使用处理的结果的装置。
如本领域技术人员将会理解的,视情况而定,本发明的这些方面和实施例能够并优选地包括此处描述的本发明的任一或多个或全部优选的及可选的特征。因此,例如,针对一个或多个顶点所执行的或使用一个或多个顶点的位置数据所执行或与一个或多个顶点相关的处理,优选地包括变换位置数据(即,得到在场景将被显示时与位置数据相对应的场景(中)的位置数据)。
在本发明的这些方面以及在实施例中预先处理的与顶点集合的顶点的位置相关的数据,能够是任何合适且期望的数据,即,影响或定义一个或多个顶点的位置的数据。
因此,其可以例如并优选地包括所讨论的顶点的位置数据(x、y、z数据)。然而,其也可以是其他可能影响顶点位置的数据,例如顶点的颜色数据(例如,其中顶点的颜色定义或影响其位置)。
位置相关的数据还可以或作为代替是从顶点的位置数据得到或与之相关的数据,例如在本发明中,特别地,边界体积(如边界框)的位置数据,其表示对象的“真实”顶点的位置(一个或多个)。
在优选实施例中,在本方面的这些方面和实施例中所处理的位置数据与将要处理以供显示的(复杂)对象的顶点集合相关。其还可以,或作为代替,在本发明的这些方面中,根据需要,包括例如处理整个场景以供显示所必要的顶点等。
在一些情况下,例如其中顶点集合中的顶点只具有为其所定义的位置相关数据(例如,因为其属性数据另外被设置为预定义缺省值),预先处理的位置相关数据将包括所有为顶点定义(并存储)的数据。
然而,更典型地,位置相关数据将包括为顶点定义的数据的子集,例如,因为顶点将既具有为其所定义的位置定义或影响数据,也具有其他数据,例如诸如颜色或纹理之类的属性,其与顶点的位置无关或不影响顶点的位置。
因此,在特别优选的实施例中,预先处理的位置相关数据仅包括为所讨论的顶点或每个点到所定义的数据子集或与之相关的数据子集。类似地,本发明相应地优选地包括这样的装置或步骤:在处理顶点集合以供显示之前,处理为待处理以供显示的顶点集合中的一个或多个顶点所定义的数据子集或与之相关的数据子集。
实际上,申请人相信在处理顶点以供显示之前仅处理为待处理以供显示的顶点所定义的数据子集是新的且有利的,因为其可以例如类似地促进处理及资源节约,即使当其不是以该方式处理的仅位置相关数据时也是如此。
因此,根据本发明的第七方面,提供一种操作图形处理系统的方法,包括:
图形处理系统:
在处理顶点集合以供显示之前仅处理为待处理以供显示的顶点集合的一个或多个顶点所定义的数据子集。
根据本发明的第八方面,提供一种图形处理系统,包括:
用于在处理顶点集合以供显示之前仅处理为待处理以供显示的顶点集合的一个或多个顶点所定义的数据子集的装置。
如本领域技术人员所理解的,本发明的这些方面和实施例能够并优选地包括此处描述的本发明的任一或多个或全部优选的及可选的特征。因此,例如,由图形处理系统所处理的数据子集优选地包括(并且优选地仅包括)为顶点集合中的一个或多个并且优选地每个所定义的或与之相关的位置数据(例如,(x、y、z)坐标)。类似地,当处理顶点集合以供显示和/或修改待处理以供显示的顶点集合时优选地使用处理的结果。
在本发明的这些方面和实施例中,一个或多个处理操作被“预先”执行或使用位置数据(和/或所选择的顶点数据子集)能够根据需要来选择,并且能够是任何合适的或期望的此类操作。
在一个特别优选的实施例中,该处理包括准备将被用于顶点集合的后续处理的数据结构,和/或包括分析顶点数据以便推断和/或提供信息以供图形系统在其后续处理操作中使用(例如,优选地,对顶点数据的处理操作)。
以本发明的方式处理的基元可以是任何合适的和期望的此类基元。它们优选地是简单多边形的形式,如本领域中所已知的。在优选实施例中,构成对象的“真实”基元至少是三角形。
本发明中的或可供本发明使用的图形处理系统能够采用任何合适的形式。如本领域技术人员将会理解的,其能够并应当包括,根据本发明进行操作所必要的组件或特征,其他允许它处理图形顶点数据以供显示所必要的特征和组件。因此,其优选地包括,例如一个或多个(可编程)顶点着色器单元、一个或多个(可编程)像素着色器单元、一个或多个光栅化单元、一个或多个渲染单元(包括,例如纹理映射、雾化和/或混合单元,等等),等,如本领域所已知的。
在特别优选的实施例中,本发明的不同功能在单个图形处理平台上被执行,所述单个图像处理平台生成并输出将被写入到显示设备的帧缓冲器的数据。
本发明的各种功能、元素等能够根据需要来执行,并且例如优选地,包括和/或通过适当的功能单元、处理器、电路、处理逻辑、微处理装置等而被执行,其可操作来执行本发明的各种步骤和功能。
本发明可适用于任何形式或配置的图形处理器,例如具有“流水线”装置的图形处理器。在优选实施例中,其被应用于硬件图形流水线,优选地渲染流水线。
本发明适用于所有形式的图形处理和渲染,例如立即模式渲染、延迟模式渲染、基于区块的渲染等等,不过其特别适用于使用延迟模式渲染的图形渲染器并且特别适用于基于区块的渲染器。
从上述内容将会理解的是,本发明特别的,尽管不是专门地适用于3D图形处理器和处理设备,并从而扩展到包括根据在此所描述的本发明的任一或多个方面的或根据其而操作的设备的3D图形处理器和3D图形处理平台。以执行上述特定功能所必要的硬件为条件,此类3D图形处理器能够另外包括该3D图像处理器所包括的任何一个或多个或全部通用功能单元等。
如本领域技术人员还将理解的是,本发明的所有方面和实施例能够并优选地包括此处描述的本发明的任一或多个或全部优选的及可选的特征。
根据本发明的方法可以至少部分通过使用软件(例如,计算机程序)来执行。因此将看到,当从进一步方面考虑时,本方面提供了:计算机软件,当安装在数据处理装置上时,其特别适于执行此处描述的方法;计算机程序单元,包括计算机软件代码部分,当程序单元在数据处理装置上运行时,执行此处描述的方法;和计算机程序,包括代码装置,所述代码装置适于当程序在数据处理装置上运行时执行此处描述的一个或多个方法的所有步骤。数据处理系统可以是微处理器系统、可编程FPGA(现场可编程门阵列)等。
本发明还扩展到计算机软件载体,包括这样的软件,所述软件当被用于操作包括数据处理装置的图形处理器、渲染器或微处理器系统时,与所述数据处理装置一起使得所述处理器、渲染器或系统执行本发明的方法的步骤。这种计算机软件载体可以是物理存储介质,如ROM芯片、CD ROM或磁盘,或可以是信号,如通过导线的电子信号、光信号或无线电信号,如到卫星等的无线电信号。
此外将会理解的是,并非所有的本发明的方法的步骤需要由计算机软件来执行,并且因此,从更宽的方面,本发明提供了计算机软件及安装在计算机软件载体上的软件,用于执行此处陈述的方法的至少一个步骤。
本发明可以相应地适合于实现为计算机软件程序产品以供计算机系统使用。这样的实施方式可以包括一系列计算机可读指令,或者安装在有形介质,如计算机可读介质例如磁盘、CD-ROM、ROM或硬盘,或能够通过调制解调器或其他接口装置传送到计算机系统,通过或者有形介质,包括但不限于光或模拟通信线路,或使用无线技术的无形介质,包括但不限于微波、红外线,或其他传输技术。计算机可读指令的序列实现此处先前描述的所有或部分功能。
本领域技术人员将会理解,此类计算机可读指令能够以多种编程语言被写入以供多个计算机体系结构或操作系统使用。此外,可以通过使用任何存储技术来存储这样的指令,现在或将来,包括但不限于半导体、磁、或光,或者使用任何通信技术来传送,现在或将来,包括但不限于光、红外线或微波。可以预期,这样的计算机程序产品可以被分布为可拆装介质,其具有随附的利用计算机系统预加载例如在系统ROM或固定磁盘上,或通过网络(例如因特网和万维网)从服务器或电子公告板发布的打印或电子文件,例如,压缩软件。
附图说明
本发明的多个优选实施例将通过举例并参考附图来描述,其中:
图1示意性地示出本发明的方法和系统能够被有用地应用到的示例性场景;
图2、3、4和6图示了本发明的操作;
图5是图示本发明的操作步骤的流程图;
图7示出本发明的另一优选的实施例;
图8、9和10示出本发明的另一优选的方案;
图11图示了本发明的又一实施例;
图12示意性地示出了本发明可以在其中实施的图形处理器。
具体实施方式
图1示出了将由本发明能够有用地应用到的图形处理系统渲染的示例性场景1。如图1中所示,场景包括山的形式的前景对象2,其完全遮挡汽车3形式的另一对象。
如本领域技术人员将会理解的,汽车3将是由多个单独基元构成的复杂对象,并且通常将被定义为指令中的单个绘制调用,所述指令将被发送到图形处理系统以用于渲染场景1。
在不是根据本方面进行操作的图形处理系统的普通操作中,通过以下方式来处理场景1:依次取执行构成汽车3的每个基元,并且处理该基元以确定在场景将被显示时其是否将出现在场景1中。假定在场景1中汽车3实际完全被山2所遮挡,则因此在本例中这将引起对实际上不能被看到的大量基元的处理。
如上述讨论,本发明意识到这种可能性并且提出了用于当渲染场景1时处理汽车3的可替换方案。本发明的该方案在图2和3中示出。
如2所示,并且如上所讨论的,本方面的该实施例的基本原则是,生成表示汽车3的体积,在本例中,所述体积采用围绕复杂对象(汽车)3的边界体积4的形式。
然后如图3所示,使用边界体积4而不是组成汽车3的实际基元来处理场景1。这于是简化了就汽车3(复杂对象)而言场景的处理,因为,如图3所示,能够确定在场景中汽车3的边界体积表示4将被完全遮挡,从而无需处理构成汽车3的单独基元。这能够,如上所讨论的那样,显著节省用于场景1的处理时间和资源。
另一方面,如果从处理汽车3的边界体积4发现实际上在场景将被显示时该边界体积的一部分将存在于场景中(可见),则系统能够着手处理组成汽车3的实际基元以合适地渲染场景。这在图4中示出,其中略微不同的场景10被示出,其中边界体积4没有完全被山2遮挡住。
图5是图示如上所述的本发明操作的流程图。
如图5所示,在本发明的操作中,图形处理器将首先接收渲染场景以供显示的命令集,如本领域所已知的。然后将着手识别待显示的场景中的一个或多个复杂对象(步骤50),其中本发明的技术将被应用于待显示的场景。
这样的对本发明将被用于的一个或多个复杂对象的识别可以根据需要来执行。例如,图形处理器可以简单识别单独绘制调用或多个调用并且把一个或多个绘制调用当做本发明将被应用于的复杂对象。另外或可替换地,可以执行场景的其他分析以识别本发明技术要应用到的合适复杂对象,例如通过评估给定绘制命令内基元和对象的单独分组,通过识别高阶对象,例如,补片或表面,识别对象的高阶参数描述等。
一旦已经识别了一个或多个复杂对象,该实施例中的系统然后着手为该对象(或者为每个对象)生成边界体积(步骤51)。
这可以以任何合适且期望的方式进行,例如,如本领域所已知的。例如,可以确定由复杂对象所覆盖的最大及最小x、y和z位置,并且然后使用那些最大及最小x、y和z位置来生成边界体积,如本领域所已知的。另外,如果需要,可以同样得到不那么粗略的边界体积表示。
而且还可以例如得到表示复杂对象x和y范围的边界“区域”,并且将其与对象所覆盖的深度范围相关联,从而提供用于对象的边界体积表示。
(在这些方案中,为对象3所定义的顶点数据可以例如被评估,根据该数据创建表示对象3的边界体积4,并且然后变换边界体积4到屏幕空间以进行渲染。可替换地,为对象3所定义的顶点数据可以例如首先被变换到屏幕空间,并且然后是所定义的、用于在屏幕空间中表示对象3的边界体积4。)
一旦已经生成了边界体积4,图形处理器然后就应该使用复杂对象的边界体积表示来处理场景,而不是使用组成复杂对象3的实际基元。
因此,例如,与边界体积4相对应的一个或多个基元将被生成,然后针对场景将其与场景中的其他基元(和对象)一起进行处理(步骤52)。
处理流水线应当把表示边界体积4的基元与任何其他基元一样地对待。因此,它们将例如在渲染通道中被装到适当的区块,如果完全不在区块中则被剔除,并且能够并且将经历渲染流水线中提供的各种形式的遮挡测试和深度测试。
如上所讨论的,使用边界体积对场景进行的该处理旨在测试场景中边界体积的存在与否,在本实施例中这通过评估在场景将被显示时在场景中边界体积的可见与否来实现。
因此在当前实施例中,该处理包括针对对象3的边界体积表示(表示边界体积的一个或多个基元)执行仅Z渲染通道,以便确定在场景将被显示时边界体积表示4在场景中是否将被完全遮挡。
根据需要,图形处理器可以被设置为适当的渲染状态以促进与复杂对象的边界体积4相关的这样的“仅Z”操作。在优选实施方式中,这是通过以下方式来实现:使用在申请人的较早专利申请GB-A-2420261中所描述的技术,并通过以适当预定义的、指示对边界体积4执行仅Z渲染通道的渲染状态索引来标记边界体积4(其基元)。
边界体积4的仅Z渲染通道的结果,如本领域技术人员将会理解的,通过图形Z轴测试(深度测试)过程,确定在场景将被显示时边界体积4是否在场景中可见(步骤53)。
响应于该确定,图形处理器然后能够着手或者丢弃复杂对象3(如果确定边界体积在场景中根本不可见(当场景将被显示时)),或者渲染具有复杂对象3的场景(如果测试确定边界体积(至少部分)可见)。
(在该实施例中,图形处理系统被触发以便现在以其“真实”单独基元形式处理对象3,以使得如果边界体积4没有在其通过图形处理系统中被舍弃,其能够通过以下方式来合适地渲染到场景1中:把表示对象3的边界体积4与适当信息、数据或标签等相关联,所述当信息、数据或标签等将触发表示对象3的真实基元的处理。其他方案当然也是可能的。)
因此,如图5中所示,作为边界体积4的测试的结果,图形处理器或者丢弃复杂对象并然后渲染没有复杂对象3的场景以供显示(步骤54)或者将着手渲染包括复杂对象3的场景(步骤55)。
在任一情况下,图形处理器可以例如再次完全渲染场景,或者具有复杂对象3(但是在这种情况下渲染组成复杂对象3的实际基元)或者没有复杂对象3,或者依赖于如何配置该过程以用于使用边界体积4来处理场景,可能的是场景实际上将已经在没有复杂对象的情况下被渲染,以使得于是仅在复杂对象将会可见的情况下才有必要对场景中包括复杂对象的部分进行重新渲染。
渲染场景(或者具有或者没有复杂对象)以供显示可以根据需要来执行,优选地以所讨论的图形处理器的普通方式来进行。
在此应该注意,本发明对边界体积4使用适当保守的“存在”(可见性)测试。因此,例如,如图6所示,当评估边界体积4是否将在场景中被完全遮挡时,有必要使用保守测试,所述保守测试在一个或多个其他对象60完全遮挡住边界体积4时才得出该结论。
尽管本发明以上实施例已经参照生成表示复杂对象3的单个边界体积4进行了描述,但是可以生成多于一个表示复杂对象3的体积。这可以例如允许丢弃复杂对象的不同部分,尽管复杂对象的某些部分将出现在场景中。
图7图示了这种方案。在这种情况下,表示汽车3的整个“边界体积”4被分成两个更小的表示性体积11、12,其每一个都以本发明的方式进行测试。在这种情况下,相应地将确定体积11将需要被渲染以供显示,但是能够舍弃由体积12所包围的复杂对象的部分。
在本发明特别优选的实施例中,图形处理器可操作来逐渐细分为复杂对象生成的边界体积,以便确定是否从处理中丢弃对象的不同部分。图8、9、10对此进行了图示。
图8图示了负载对象的示例性初始边界体积20。
在该方案中,如果发现边界体积20将存在于待显示的场景中,则如图9所示,系统着手将初始边界体积20细分成四个更小的体积21、22、23和24。
每个这样的更小体积都以本发明的方式进行测试,并且如果发现任何体积被完全遮挡,则丢弃它们,如上所讨论的那样。
在图9中,如果发现更小的体积21、22、23和24中任何一个仍然存在于场景中,则以相同的方式对其进行进一步细分。
图10针对体积21对此进行了图示,并且示出细分为四个更小体积25、26、27和28的体积,同样能够以本发明的方式对其进行测试,并且酌情丢弃。
这种对逐渐更小的表示性体积的细分和测试可以根据需要被重复,例如直到某一预定或所选择的细分极限。
尽管已经特别参照确定在场景将被显示时复杂对象是否将在场景中出现对本发明进行了描述,但是申请人已经进一步认识到,同样可以以类似方式测试复杂对象是否会遮挡场景中的其他对象。
这种情况下,将再次生成复杂对象3的较粗略表示并在遮挡测试过程中使用,但这次根据它们是否将被复杂对象遮挡来确定场景中其他对象是否能够被丢弃。
在这种情况下,不是生成包围复杂对象3的“边界”体积,而是生成“限定”体积,即,确切地封闭在复杂对象内的体积(其确切地表示封闭在复杂对象内的空间)。
图11对此进行了图示,并且示出为复杂对象71生成的示例性限定体积70。
根据需要可以再次生成该限定体积70,例如通过考虑将确切地被复杂对象71包围的适当的x、y和z值范围。如果需要,还可以例如生成两个(或更多)限定体积,每个都完全落在复杂对象内(例如,表示复杂对象的不同部分)。
一旦已经得到复杂对象的适当限定体积70,则能够再次通过以下方式来处理场景:使用该限定体积来表示复杂对象71并相应地确定复杂对象是否将遮挡在场景中出现的任何其他对象、基元等(这样它们能够被丢弃)。
再次,针对限定体积70的处理优选地被执行为仅Z渲染通道,并且限定体积70优选地以类似于上面所论述的“边界体积”的方式来使用,以允许丢弃将被复杂对象3遮挡的对象。
这里将会理解的是,复杂对象的限定体积的生成和测试应该以适当保守的方式执行,以确保限定体积例如不包围任何实际没有被复杂对象占据(不会被遮挡)的场景体积或区域。
在此同样应该理解的是,任何或者所有的在此讨论的与“边界体积”的使用相关的可选的和优选的技术,同样可以被(适当地)应用于其中为复杂对象生成“限定体积”的方案。
在特别优选的实施例中,为给定复杂对象生成边界体积(一个或多个)限定体积(一个或多个),以上述方式处理每一个这样的体积。更优选地,这是针对场景中的多个复杂对象而进行的。这可以例如然后允许从场景处理中丢弃那些对象中的一个或多个。
本发明能够根据需要在图形处理系统中并且以任何合适方式使用图形处理器来实施。
图12示意性地示出了能够根据本发明操作的图形处理系统100的方案。
图12示出基于区块的图形处理系统。然而,如将会理解的,并且如上所讨论的,本发明能够以图形处理系统的其他方案来实施。
如图12所示,图形处理系统100包括图形处理器110,和用于图形处理器的驱动器111,如本领域已知的,其通常驻留在并在图形处理器110被耦合到的主机(host)CPU(处理器)上运行。如本领域已知的,驱动器111将发送命令和数据的列表等到图形处理器以指示其响应于来自运行在主机处理器上的应用程序等的对图形显示的调用而渲染图形以供显示。
如图12所示,图形处理器110包括顶点着色器112、装仓(binning)单元113、状态管理单元101、光栅化级102和渲染流水线形式的渲染级103。
顶点着色器112,如本领域已知的,从驱动器111取得待绘制的图形对象、顶点等的描述,并且对那些对象和顶点执行适当的顶点着色操作等,以便例如对对象和顶点执行适当的变换和照亮操作。
如本领域已知的,装仓单元113将场景所需的各种基元、对象等分类(装仓)到区块的适当仓中(区块列表)(其中待显示的场景被拆分到所述区块中)(因为,如上讨论,该示例性图形处理系统是基于区块的图形处理系统)。
状态管理单元101存储并控制状态数据和图形处理单元的状态,以控制图形处理操作,如本领域所已知的。
光栅化器102把待显示的基元作为其输入,并光栅化这些基元到待渲染的片段位置(片段),如本领域所已知的。
渲染流水线103从光栅化器102获取片段并渲染这些片段以供显示。如本领域所已知的,渲染流水线将包括多个不同的处理单元,例如片段着色器、混合器、纹理映射器等。
来自渲染流水线103(经渲染的片段)的输出被输出到区块缓冲器104(因为本发明是基于区块的系统)。区块缓冲器的输出然后最后被输出到帧缓冲器105以供显示。
将会理解的是,如图12所示的图形处理器的各级、元素和单元等中的每一个都可以根据需要来执行并从而将包括例如适当的电路,和/或处理逻辑,可编程逻辑等,以用于执行必要的操作和功能,并将提供适当的控制和处理电路等,以用于执行本发明。
在根据本发明的该图形处理系统110的操作中,驱动器111将例如操作来识别适当的复杂对象(其中它将命令图形处理器110对所述复杂对象进行渲染以供显示),并然后可以或者控制主机处理器以为那些对象生成适当的表示性体积或者向图形处理器110的顶点着色器112提供适当的指令以生成期望的表示性体积,并然后命令图形处理器110中其余单元和各级相应地处理这些表示性体积。
在这一点,如本领域技术人员将会理解的,其将会是可以被特别控制以执行适当的例如针对对象的表示性体积的仅Z处理的装仓单元113、光栅化器102和区块缓冲器104的操作。
其他方案当然也是可能的。例如,顶点着色器112可能被配置成既识别适当的例如待渲染的场景中的适当的例如复杂对象,并然后生成这样的对象的一个或多个适当的表示性体积,并相应地以本发明的方式来触发操作。
在此还将会理解的是,图12仅仅示意性地示出方案,并且因此,例如本发明的操作中的数据流无需并可以不与图12所示的一样,但是可以例如酌情包括在如图12所示的各单元和各级之间的数据的回送。如本领域技术人员将会理解的,能够使用任何适当的数据流来实施本发明。
从上文能够看到,本发明至少在其优选实施例中提供了一种用于处理待渲染的场景中的复杂对象的方案,其能够提供对此类对象的更为高效且有效的处理。
这至少在本发明优选实施例中通过以下方式来实现:通过首先使用边界体积和/或限定体积来表示复杂对象,并然后使用边界体积和/或限定体积来处理场景,以在执行对复杂对象的完全渲染操作之前评估例如场景中复杂对象存在与否。
Claims (19)
1.一种在图形处理系统中处理场景以供显示的方法,所述方法包括以下步骤:
识别场景中的对象;
生成用于表示场景中的对象的体积;
使用为对象生成的体积来处理部分或全部场景,以评估场景中对象的存在;
根据所述评估来确定是否处理场景的对象以供显示。
2.根据权利要求1所述的方法,其中生成用于表示场景中的对象的体积的步骤包括生成用于表示场景中的对象的边界体积。
3.根据权利要求2所述的方法,其中所述使用为对象生成的体积来处理部分或全部场景,以评估场景中对象的存在;以及根据所述评估来确定是否处理场景的对象以供显示的步骤,包括以下步骤:
使用为对象生成的边界体积来处理部分或全部场景,以评估在场景将被显示时场景中对象的存在;以及
根据所述评估来确定是否处理对象以供显示。
4.根据权利要求2或3所述的方法,包括:
初始生成用于表示对象的单个边界体积;并且然后,
如果确定在场景将被显示时该边界体积至少部分存在于场景中,则:
生成两个或更多另外的体积,每个表示初始边界体积的不同部分;
使用为对象生成的两个或更多另外的体积来处理部分或全部场景以评估场景中对象的存在;并且
根据该评估来确定是否处理对象的一个或多个部分以供显示。
5.根据上述任一权利要求所述的方法,其中生成用于表示场景中的对象的体积的步骤包括生成用于表示场景中的对象的限定体积。
6.根据权利要求5所述的方法,其中使用为对象生成的体积来处理部分或全部场景,以评估场景中对象的存在;以及根据所述评估来确定是否处理场景的对象以供显示的步骤,包括以下步骤:
使用为对象生成的限定体积来处理部分或全部场景以评估在场景将被显示时场景中其他一个或多个对象的存在;并且
根据所述评估来确定是否处理场景的一个或多个其他对象以供显示。
7.根据上述任一权利要求所述的方法,其中使用为对象生成的体积来处理部分或全部场景以评估场景中对象的存在的步骤包括:
仅执行评估场景中对象的存在所必要的处理。
8.根据上述任一权利要求所述的方法,其中使用为对象生成的体积来处理部分或全部场景以评估场景中对象的存在的步骤包括:
针对所生成的体积执行仅Z渲染通道。
9.根据上述任一权利要求所述的方法,包括:
生成用于表示对象的两个或更多体积。
10.一种图形处理系统,包括:
用于识别待处理以供显示的场景中的对象的装置;
用于生成用于表示场景中的对象的体积的装置;
用于使用为对象生成的体积来处理部分或全部场景以评估场景中对象的存在的装置;以及
用于根据所述评估来确定是否处理场景的对象以供显示的装置。
11.根据权利要求10所述的系统,其中用于生成用于表示场景中的对象的体积的装置包括用于生成用于表示场景中的对象的边界体积的装置。
12.根据权利要求11所述的系统,其中用于使用为对象生成的体积来处理部分或全部场景以评估场景中对象的存在的装置;以及
用于根据所述评估来确定是否处理场景的对象以供显示的装置;包括:
用于使用为对象生成的边界体积来处理部分或全部场景以评估在场景将被显示时场景中对象的存在的装置;以及
用于根据所述评估来确定是否处理对象以供显示的装置。
13.根据权利要求11或12所述的系统,包括:
用于初始生成用于表示对象的单个边界体积的装置;以及用于然后进行以下操作的装置:
如果确定在场景将被显示时该边界体积至少部分存在于场景中,则:
生成两个或更多另外的体积,每个表示初始边界体积的不同部分;
使用为对象生成的两个或更多另外的体积来处理部分或全部场景以评估场景中对象的存在;并且
根据该评估来确定是否处理对象的一个或多个部分以供显示。
14.根据权利要求10-13中任一权利要求所述的系统,其中用于生成用于表示场景中的对象的体积的装置包括用于生成用于表示场景中的对象的限定体积的装置。
15.根据权利要求14所述的系统,其中用于使用为对象生成的体积来处理部分或全部场景以评估场景中对象的存在的装置;以及
用于根据所述评估来确定是否处理场景的对象以供显示的装置,包括:
用于使用为对象生成的限定体积来处理部分或全部场景以评估在场景将被显示时场景中其他一个或多个对象的存在的装置;以及
用于根据所述评估来确定是否处理场景的一个或多个其他对象以供显示的装置。
16.根据权利要求10-15中任一权利要求所述的系统,其中用于使用为对象生成的体积来处理部分或全部场景,以评估场景中对象的存在的装置包括:
用于仅执行评估场景中对象的存在所必要的处理的装置。
17.根据权利要求10-16中任一权利要求所述的系统,其中用于使用为对象生成的体积来处理部分或全部场景以评估场景中对象的存在的装置包括:
用于针对所生成的体积执行仅Z渲染通道的装置。
18.一种包括根据权利要求10-17中任一权利要求所述的系统的3D图形处理器。
19.一种计算机程序单元,包括计算机软件代码部分,用于当程序单元在数据处理装置上运行时执行根据权利要求1-9中任一权利要求所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0810205.5 | 2008-06-04 | ||
GBGB0810205.5A GB0810205D0 (en) | 2008-06-04 | 2008-06-04 | Graphics processing systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101604454A true CN101604454A (zh) | 2009-12-16 |
CN101604454B CN101604454B (zh) | 2017-10-20 |
Family
ID=39638158
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910159598.8A Active CN101604454B (zh) | 2008-06-04 | 2009-06-04 | 图形处理系统 |
CN200910163931.2A Active CN101620724B (zh) | 2008-06-04 | 2009-06-04 | 图形处理系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910163931.2A Active CN101620724B (zh) | 2008-06-04 | 2009-06-04 | 图形处理系统 |
Country Status (4)
Country | Link |
---|---|
US (4) | US9367953B2 (zh) |
JP (2) | JP5538748B2 (zh) |
CN (2) | CN101604454B (zh) |
GB (4) | GB0810205D0 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102213996A (zh) * | 2010-04-08 | 2011-10-12 | 英特尔公司 | 用于管理功率使用的技术 |
CN104737198A (zh) * | 2012-11-21 | 2015-06-24 | 英特尔公司 | 在输入几何对象粒度上记录可见度测试的结果 |
CN105321199A (zh) * | 2014-07-03 | 2016-02-10 | Arm有限公司 | 图形处理 |
CN107403461A (zh) * | 2012-01-16 | 2017-11-28 | 英特尔公司 | 使用随机光栅化生成随机采样分布 |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101445074B1 (ko) * | 2007-10-24 | 2014-09-29 | 삼성전자주식회사 | 미디어 플레이어에서 미디어 객체 처리 방법 및 그 장치 |
US8626720B2 (en) * | 2008-02-11 | 2014-01-07 | International Business Machines Corporation | System and method of reconstructing complex custom objects |
GB0810205D0 (en) * | 2008-06-04 | 2008-07-09 | Advanced Risc Mach Ltd | Graphics processing systems |
US8605102B1 (en) * | 2009-10-08 | 2013-12-10 | Nvidia Corporation | Rasterization tile coalescer and reorder buffer |
KR101661931B1 (ko) * | 2010-02-12 | 2016-10-10 | 삼성전자주식회사 | 3차원 그래픽스 랜더링 장치 및 그 방법 |
GB2478909B (en) * | 2010-03-19 | 2013-11-06 | Imagination Tech Ltd | Demand based texture rendering in a tile based rendering system |
US9256465B2 (en) * | 2010-12-13 | 2016-02-09 | Advanced Micro Devices, Inc. | Process device context switching |
US9299121B2 (en) * | 2010-12-15 | 2016-03-29 | Advanced Micro Devices, Inc. | Preemptive context switching |
JP5636988B2 (ja) * | 2011-01-27 | 2014-12-10 | 富士通株式会社 | 描画装置および方法 |
EP2671207B1 (en) | 2011-02-03 | 2019-01-02 | L-3 Communications Corporation | Graphics processing architecture for an fpga |
US9378560B2 (en) | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
CN102306076B (zh) * | 2011-07-26 | 2016-02-03 | 深圳Tcl新技术有限公司 | 图形动态纹理的生成方法及终端 |
US10089774B2 (en) | 2011-11-16 | 2018-10-02 | Qualcomm Incorporated | Tessellation in tile-based rendering |
GB2497762B (en) * | 2011-12-20 | 2018-05-23 | Advanced Risc Mach Ltd | Intermediate value storage within a graphics processing apparatus |
US9472163B2 (en) * | 2012-02-17 | 2016-10-18 | Monotype Imaging Inc. | Adjusting content rendering for environmental conditions |
US8970613B2 (en) * | 2012-06-06 | 2015-03-03 | Apple Inc. | Render tree caching |
US8941676B2 (en) * | 2012-10-26 | 2015-01-27 | Nvidia Corporation | On-chip anti-alias resolve in a cache tiling architecture |
US9280956B2 (en) * | 2012-11-29 | 2016-03-08 | Qualcomm Incorporated | Graphics memory load mask for graphics processing |
CN102970542B (zh) * | 2012-11-30 | 2015-06-10 | 上海晨思电子科技有限公司 | 一种视频数据转换的方法、装置和智能电视 |
KR20140073951A (ko) * | 2012-12-07 | 2014-06-17 | 삼성전자주식회사 | 베이지어 커브를 렌더링하는 장치 및 방법 |
US9311749B2 (en) | 2012-12-07 | 2016-04-12 | Donya Labs Ab | Method for forming an optimized polygon based shell mesh |
US20140184629A1 (en) * | 2012-12-31 | 2014-07-03 | Nvidia Corporation | Method and apparatus for synchronizing a lower bandwidth graphics processor with a higher bandwidth display using framelock signals |
WO2014123128A1 (en) * | 2013-02-06 | 2014-08-14 | Square Enix Holdings Co., Ltd. | Information processing apparatus, method of controlling the same, program, and storage medium |
US9953455B2 (en) * | 2013-03-13 | 2018-04-24 | Nvidia Corporation | Handling post-Z coverage data in raster operations |
US9483861B2 (en) * | 2013-03-15 | 2016-11-01 | Qualcomm Incorporated | Tile-based rendering |
JP5864474B2 (ja) * | 2013-05-01 | 2016-02-17 | 株式会社ディジタルメディアプロフェッショナル | 空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法 |
US9626732B2 (en) * | 2013-10-10 | 2017-04-18 | Intel Corporation | Supporting atomic operations as post-synchronization operations in graphics processing architectures |
US9552667B2 (en) * | 2013-12-13 | 2017-01-24 | Nvidia Corporation | Adaptive shading in a graphics processing pipeline |
GB2525223B (en) | 2014-04-16 | 2020-07-15 | Advanced Risc Mach Ltd | Graphics processing systems |
WO2015181851A1 (ja) * | 2014-05-28 | 2015-12-03 | 株式会社スクウェア・エニックス・ホールディングス | 展開予測装置、展開予測方法、プログラム及び記録媒体 |
US9842428B2 (en) * | 2014-06-27 | 2017-12-12 | Samsung Electronics Co., Ltd. | Dynamically optimized deferred rendering pipeline |
CN104200220B (zh) * | 2014-08-21 | 2017-05-03 | 武汉大学 | 一种基于静态纹理模型聚集的动态纹理识别方法 |
US9761030B2 (en) | 2014-10-10 | 2017-09-12 | Empire Technology Development Llc | Scene image generator |
GB2532495B (en) * | 2014-11-21 | 2018-05-02 | Advanced Risc Mach Ltd | Graphics processing systems |
US9489710B2 (en) * | 2015-02-10 | 2016-11-08 | Qualcomm Incorporated | Hybrid rendering in graphics processing |
US10255337B2 (en) * | 2015-03-31 | 2019-04-09 | Change Healthcare Holdings, Llc | Health care information system and method for transforming health care data with a transformation pipeline |
KR102292789B1 (ko) * | 2015-04-07 | 2021-08-25 | 삼성전자 주식회사 | 디스플레이장치 및 그 제어방법 |
CN105550975B (zh) * | 2015-12-11 | 2019-06-28 | 中国航空工业集团公司西安航空计算技术研究所 | 一种3d图形指令优化方法 |
GB2546810B (en) | 2016-02-01 | 2019-10-16 | Imagination Tech Ltd | Sparse rendering |
US10102662B2 (en) * | 2016-07-27 | 2018-10-16 | Advanced Micro Devices, Inc. | Primitive culling using automatically compiled compute shaders |
KR102489266B1 (ko) * | 2018-08-13 | 2023-01-17 | 엘지전자 주식회사 | 모바일 디바이스 및 그 제어 방법 |
US10825200B2 (en) * | 2019-01-30 | 2020-11-03 | Trivver, Inc. | Texture based pixel count determination |
CN110519544B (zh) * | 2019-08-30 | 2021-03-23 | 维沃移动通信有限公司 | 一种视频通话方法及电子设备 |
GB2603618B (en) * | 2020-12-18 | 2023-04-26 | Imagination Tech Ltd | Graphics processing systems and methods |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040130552A1 (en) * | 1998-08-20 | 2004-07-08 | Duluk Jerome F. | Deferred shading graphics pipeline processor having advanced features |
US6952217B1 (en) * | 2003-07-24 | 2005-10-04 | Nvidia Corporation | Graphics processing unit self-programming |
CN1954338A (zh) * | 2004-05-14 | 2007-04-25 | 辉达公司 | 取消位图形处理系统和方法 |
CN101057261A (zh) * | 2004-11-15 | 2007-10-17 | Arm挪威股份有限公司 | 三维图形处理 |
CN101067869A (zh) * | 2005-12-05 | 2007-11-07 | Arm挪威股份有限公司 | 处理图形的方法和设备 |
US20070268291A1 (en) * | 2006-05-22 | 2007-11-22 | Sony Computer Entertainment Inc. | Occlusion Culling Method and Rendering Processing Apparatus |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5315691A (en) * | 1992-01-22 | 1994-05-24 | Brother Kogyo Kabushiki Kaisha | Print control apparatus |
JPH0855239A (ja) | 1994-07-21 | 1996-02-27 | Internatl Business Mach Corp <Ibm> | グラフィカル・オブジェクトの可視性を判定するための方法および装置 |
JP3029554B2 (ja) * | 1995-05-22 | 2000-04-04 | 株式会社ハドソン | 3次元図形描画装置 |
US5977977A (en) * | 1995-08-04 | 1999-11-02 | Microsoft Corporation | Method and system for multi-pass rendering |
US5751291A (en) | 1996-07-26 | 1998-05-12 | Hewlett-Packard Company | System and method for accelerated occlusion culling |
JP3879189B2 (ja) * | 1996-07-31 | 2007-02-07 | ソニー株式会社 | 画像生成装置およびその方法 |
US6023279A (en) | 1997-01-09 | 2000-02-08 | The Boeing Company | Method and apparatus for rapidly rendering computer generated images of complex structures |
US6631423B1 (en) * | 1998-03-31 | 2003-10-07 | Hewlett-Packard Development Company, L.P. | System and method for assessing performance optimizations in a graphics system |
US6456285B2 (en) * | 1998-05-06 | 2002-09-24 | Microsoft Corporation | Occlusion culling for complex transparent scenes in computer generated graphics |
US7375727B1 (en) | 1998-07-22 | 2008-05-20 | Nvidia Corporation | System, method and computer program product for geometrically transforming geometric objects |
US6236413B1 (en) * | 1998-08-14 | 2001-05-22 | Silicon Graphics, Inc. | Method and system for a RISC graphics pipeline optimized for high clock speeds by using recirculation |
US6243097B1 (en) * | 1998-12-10 | 2001-06-05 | International Business Machines Corporation | Bounding volume for 3D graphic primitives |
US7242414B1 (en) * | 1999-07-30 | 2007-07-10 | Mips Technologies, Inc. | Processor having a compare extension of an instruction set architecture |
US6476806B1 (en) * | 1999-04-16 | 2002-11-05 | Hewlett-Packard Company | Method and apparatus for performing occlusion testing while exploiting frame to frame temporal coherence |
US6603474B1 (en) | 1999-05-27 | 2003-08-05 | International Business Machines Corporation | Method and apparatus for occlusion culling of objects in a data processing system |
US6448967B1 (en) * | 1999-07-26 | 2002-09-10 | Silicon Integrated Systems Corp. | Z-Buffer pre-test for 3D graphics performance enhancement |
US6734867B1 (en) * | 2000-06-28 | 2004-05-11 | Micron Technology, Inc. | Cache invalidation method and apparatus for a graphics processing system |
DE60132633T2 (de) * | 2000-10-18 | 2009-01-15 | Koninklijke Philips Electronics N.V. | Digitale signalprozessorvorrichtung |
US6621492B2 (en) * | 2000-12-18 | 2003-09-16 | International Business Machines Corporation | Method and apparatus using primitive bounding volumes to improve the accuracy of BSP-trees |
JP2003016438A (ja) | 2001-06-28 | 2003-01-17 | Kyocera Corp | 画像生成装置 |
US7065757B2 (en) * | 2001-09-28 | 2006-06-20 | Hewlett-Packard Development Company, L.P. | Efficient compilation of family of related functions |
US7009605B2 (en) * | 2002-03-20 | 2006-03-07 | Nvidia Corporation | System, method and computer program product for generating a shader program |
JP4350342B2 (ja) * | 2002-04-26 | 2009-10-21 | 株式会社リコー | 画像処理装置、画像記録装置、カメラシステム、プログラム、記憶媒体及び画像処理方法 |
US6980209B1 (en) * | 2002-06-14 | 2005-12-27 | Nvidia Corporation | Method and system for scalable, dataflow-based, programmable processing of graphics data |
US6952206B1 (en) * | 2002-08-12 | 2005-10-04 | Nvidia Corporation | Graphics application program interface system and method for accelerating graphics processing |
US7530062B2 (en) * | 2003-05-23 | 2009-05-05 | Microsoft Corporation | Optimizing compiler transforms for a high level shader language |
US7164420B2 (en) * | 2003-07-24 | 2007-01-16 | Autodesk, Inc. | Ray tracing hierarchy |
US7388581B1 (en) * | 2003-08-28 | 2008-06-17 | Nvidia Corporation | Asynchronous conditional graphics rendering |
US20050122338A1 (en) * | 2003-12-05 | 2005-06-09 | Michael Hong | Apparatus and method for rendering graphics primitives using a multi-pass rendering approach |
US7385608B1 (en) * | 2003-12-31 | 2008-06-10 | 3Dlabs Inc. Ltd. | State tracking methodology |
US7382377B1 (en) * | 2004-06-17 | 2008-06-03 | Nvidia Corporation | Render to texture cull |
US7746347B1 (en) * | 2004-07-02 | 2010-06-29 | Nvidia Corporation | Methods and systems for processing a geometry shader program developed in a high-level shading language |
US7681187B2 (en) * | 2005-03-31 | 2010-03-16 | Nvidia Corporation | Method and apparatus for register allocation in presence of hardware constraints |
EP1804187B1 (en) | 2005-12-30 | 2020-09-09 | Dassault Systèmes | Process for displaying objects in a PLM database and apparatus implementing this process |
JP2007233730A (ja) * | 2006-03-01 | 2007-09-13 | Mitsubishi Electric Corp | 三次元グラフィック描画装置 |
JP4142065B2 (ja) | 2006-05-22 | 2008-08-27 | 株式会社ソニー・コンピュータエンタテインメント | 縮小zバッファ生成方法、隠面消去方法、およびオクルージョンカリング方法 |
US8196127B2 (en) * | 2006-08-04 | 2012-06-05 | International Business Machines Corporation | Pervasively data parallel information handling system and methodology for generating data parallel select operations |
US7928990B2 (en) * | 2006-09-27 | 2011-04-19 | Qualcomm Incorporated | Graphics processing unit with unified vertex cache and shader register file |
US7836258B2 (en) * | 2006-11-13 | 2010-11-16 | International Business Machines Corporation | Dynamic data cache invalidate with data dependent expiration |
US8421794B2 (en) * | 2007-03-23 | 2013-04-16 | Qualcomm Incorporated | Processor with adaptive multi-shader |
US8081181B2 (en) * | 2007-06-20 | 2011-12-20 | Microsoft Corporation | Prefix sum pass to linearize A-buffer storage |
US7876329B2 (en) * | 2007-09-10 | 2011-01-25 | Via Technologies, Inc. | Systems and methods for managing texture data in a computer |
GB0810205D0 (en) | 2008-06-04 | 2008-07-09 | Advanced Risc Mach Ltd | Graphics processing systems |
-
2008
- 2008-06-04 GB GBGB0810205.5A patent/GB0810205D0/en not_active Ceased
-
2009
- 2009-06-03 US US12/477,500 patent/US9367953B2/en active Active
- 2009-06-03 US US12/477,490 patent/US8698828B2/en active Active
- 2009-06-03 JP JP2009134192A patent/JP5538748B2/ja active Active
- 2009-06-03 JP JP2009134193A patent/JP5624733B2/ja active Active
- 2009-06-04 CN CN200910159598.8A patent/CN101604454B/zh active Active
- 2009-06-04 GB GB0909641.3A patent/GB2460544B/en active Active
- 2009-06-04 CN CN200910163931.2A patent/CN101620724B/zh active Active
- 2009-06-04 GB GB0909642A patent/GB2460545B/en active Active
-
2012
- 2012-05-16 GB GB1208595.7A patent/GB2492447B/en active Active
-
2016
- 2016-05-23 US US15/161,339 patent/US9947131B2/en active Active
-
2018
- 2018-03-07 US US15/914,255 patent/US10755473B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040130552A1 (en) * | 1998-08-20 | 2004-07-08 | Duluk Jerome F. | Deferred shading graphics pipeline processor having advanced features |
US6952217B1 (en) * | 2003-07-24 | 2005-10-04 | Nvidia Corporation | Graphics processing unit self-programming |
CN1954338A (zh) * | 2004-05-14 | 2007-04-25 | 辉达公司 | 取消位图形处理系统和方法 |
CN101057261A (zh) * | 2004-11-15 | 2007-10-17 | Arm挪威股份有限公司 | 三维图形处理 |
CN101067869A (zh) * | 2005-12-05 | 2007-11-07 | Arm挪威股份有限公司 | 处理图形的方法和设备 |
US20070268291A1 (en) * | 2006-05-22 | 2007-11-22 | Sony Computer Entertainment Inc. | Occlusion Culling Method and Rendering Processing Apparatus |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102213996A (zh) * | 2010-04-08 | 2011-10-12 | 英特尔公司 | 用于管理功率使用的技术 |
CN102213996B (zh) * | 2010-04-08 | 2016-05-11 | 英特尔公司 | 用于管理功率使用的技术 |
CN107403461A (zh) * | 2012-01-16 | 2017-11-28 | 英特尔公司 | 使用随机光栅化生成随机采样分布 |
US10762700B2 (en) | 2012-01-16 | 2020-09-01 | Intel Corporation | Generating random sampling distributions using stochastic rasterization |
CN104737198A (zh) * | 2012-11-21 | 2015-06-24 | 英特尔公司 | 在输入几何对象粒度上记录可见度测试的结果 |
CN104737198B (zh) * | 2012-11-21 | 2018-03-27 | 英特尔公司 | 在输入几何对象粒度上记录可见度测试的结果 |
CN105321199A (zh) * | 2014-07-03 | 2016-02-10 | Arm有限公司 | 图形处理 |
CN105321199B (zh) * | 2014-07-03 | 2020-10-23 | Arm有限公司 | 图形处理流水线及其操作方法与介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101604454B (zh) | 2017-10-20 |
US9947131B2 (en) | 2018-04-17 |
JP5538748B2 (ja) | 2014-07-02 |
JP5624733B2 (ja) | 2014-11-12 |
GB0909641D0 (en) | 2009-07-22 |
GB2460545A (en) | 2009-12-09 |
US20160267709A1 (en) | 2016-09-15 |
GB2460544B (en) | 2012-08-22 |
GB0909642D0 (en) | 2009-07-22 |
US20180197326A1 (en) | 2018-07-12 |
US10755473B2 (en) | 2020-08-25 |
US9367953B2 (en) | 2016-06-14 |
GB0810205D0 (en) | 2008-07-09 |
GB2460544A (en) | 2009-12-09 |
GB2460545B (en) | 2011-01-05 |
GB2492447B (en) | 2013-02-27 |
US8698828B2 (en) | 2014-04-15 |
CN101620724B (zh) | 2016-03-30 |
US20100026682A1 (en) | 2010-02-04 |
GB2492447A (en) | 2013-01-02 |
CN101620724A (zh) | 2010-01-06 |
JP2009295161A (ja) | 2009-12-17 |
US20100060630A1 (en) | 2010-03-11 |
JP2009295162A (ja) | 2009-12-17 |
GB201208595D0 (en) | 2012-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101604454A (zh) | 图形处理系统 | |
CN106575228B (zh) | 图形处理中的渲染目标命令重新排序 | |
US8325177B2 (en) | Leveraging graphics processors to optimize rendering 2-D objects | |
CN106233326B (zh) | 图形处理中基于显现目标的灵活显现 | |
CN105321199B (zh) | 图形处理流水线及其操作方法与介质 | |
CN105023233B (zh) | 图形处理系统及其操作方法、计算机存储介质 | |
JP5336067B2 (ja) | グラフィックスを処理する方法および装置 | |
US9965886B2 (en) | Method of and apparatus for processing graphics | |
US7847798B1 (en) | Clipping and culling artwork using a graphics processing unit | |
US20130069943A1 (en) | Optimizing resolve performance with tiling graphics architectures | |
CN107209923A (zh) | 图形处理中的混合渲染 | |
CN104134183A (zh) | 图形处理系统 | |
US20090046098A1 (en) | Primitive binning method for tile-based rendering | |
CN104424621A (zh) | 图形处理系统 | |
KR20170015232A (ko) | 그래픽 처리 시스템 | |
KR20210066727A (ko) | 그래픽 처리 시스템 | |
KR20160046614A (ko) | 텍스쳐를 처리하는 방법 및 장치 | |
CN112801855A (zh) | 基于图元的渲染任务调度的方法、装置及存储介质 | |
US8264503B1 (en) | Batch early engagement rules graphics processing | |
GB2444628A (en) | Sorting graphics data for processing | |
KR20180038793A (ko) | 영상 데이터 처리 방법 및 장치 | |
CN115311120A (zh) | 图形处理系统 | |
CN111932689B (zh) | 一种采用id像素图的三维对象快速选取方法 | |
US20230401667A1 (en) | Graphics processing systems | |
US11321803B2 (en) | Graphics processing primitive patch testing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |