CN104599304A - 图像处理技术 - Google Patents
图像处理技术 Download PDFInfo
- Publication number
- CN104599304A CN104599304A CN201410838036.7A CN201410838036A CN104599304A CN 104599304 A CN104599304 A CN 104599304A CN 201410838036 A CN201410838036 A CN 201410838036A CN 104599304 A CN104599304 A CN 104599304A
- Authority
- CN
- China
- Prior art keywords
- geometries
- block
- enclosure body
- triangle
- case
- 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
Landscapes
- Image Generation (AREA)
Abstract
本申请公开了图像处理技术。描述了可延迟或者甚至防止使用存储器来存储与块相关联的三角形以及与顶点着色和装箱三角形相关联的处理资源的技术。这些技术还可在一组核之间提供较好的负载平衡,从而提供较好的性能。生成包围体以表示几何形状组。进行剔除操作以确定几何形状组是否要使三角形被渲染。顶点着色以及三角形与块的关联可跨多个核并行地执行。处理资源被分配用于在尚未被顶点着色和装箱三角形的块之上光栅化已被顶点着色和装箱三角形的块。对不同块的三角形的光栅化可由多个核并行地执行。
Description
本发明专利申请是国际申请号为PCT/US2009/069353,国际申请日为2009年12月23日,进入中国国家阶段的申请号为200980163172.8,名称为“图像处理技术”的发明专利申请的分案申请。
技术领域
本文公开的主题一般涉及图形处理,包括光栅化图像以供显示。
相关领域
光栅化涉及将以向量图形格式描述的图像转换成光栅图像(像素或点)以供输出至视频显示器或供存储。图1描绘现有技术光栅化体系结构的示例。应用10向着色器20提供未经处理的顶点。着色器20对场景中的顶点执行顶点着色。着色器20向三角形装箱器(binner)25提供表示三角形的经处理的顶点。三角形装箱器25将三角形分类成与这些三角形在屏幕上交迭的块(tile)。每个块具有箱(bin),在箱中存储关于与该块交迭的所有三角形的信息。三角形装箱器25将三角形存储到三角形箱30中。三角形箱30表示存储了与块相关联的三角形的那些箱。前端处理包括框20、25和30。在框40中,每个核挑选块/箱并且对三角形执行属性着色、像素着色以及光栅化。所得到的像素被存储在帧缓冲器50中。后端(BE)处理包括框40和50。
在大的屏幕分辨率的情况下,存在比核多得多的块/箱。因此,即使可能要经过很长时间才需要顶点信息用于像素着色和光栅化,也可使用充足存储器将所有的顶点信息保存在箱内。用于保存待处理顶点的存储器可以非常大,但是这又可能妨碍光栅化系统的性能。另外,不可能将来自已处理的箱的存储器重新用于后续装箱,因为所有的箱已经包含了它们的顶点着色内容,即在可进行光栅化之前必须处理所有的顶点。
附图简述
本发明的各实施例在附图中是作为示例而非作为限制而示出的,在附图中相似的附图标记指代类似的元素。
图1描绘现有技术光栅化体系结构的示例。
图2以框图形式描绘一种用于将几何形状组装箱到几何形状组箱的系统。
图3描绘可用于确定用于几何形状组的几何形状组箱以及顶点着色和装箱三角形的进程的示例。
图4以简化形式描绘由核执行的、用于将几何形状组的三角形装箱到块的操作。这也被称为中端(ME)处理。
图5描绘可由一个或多个核和/或一个或多个线程执行的、用于通过对几何形状组的顶点进行顶点着色并对几何形状组的相关三角形进行装箱或者通过对已装箱的三角形执行后端光栅化来处理几何形状组的进程的示例。
图6描绘根据一些实施例的合适的后端光栅化进程。
图7描绘核确定要处理哪个几何形状组的方式的另一实施例。
详细描述
贯穿本说明书,对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,在贯穿本说明书的各个地方,短语“在一个实施例中”或“在一实施例中”的出现不一定都指代同一实施例。此外,特定特征、结构或特性可被组合在一个或多个实施例中。
由Anthony Apodaca和Larry Gritz所著、出版商为Morgan KauffmanPublishers的“Advanced Renderman(高级渲染家)”(2000)(以下称为"Renderman")中所发表的内容描述了生成微多边形、基于所生成的微多边形生成包围体(bounding volume)、以及将包围体和指示器存储到要被分为棋盘格状的表面。RenderMan还允许用户对每个几何对象设置maxDisplacement参数,并且这与非位移几何对象一起可被用于计算保守包围体。这些包围体可被提供给图形流水线以供处理。针对其包围体与块交迭的每个几何形状组的指示器被存储在该块的几何形状组箱中。当对块进行光栅化时,实际的顶点处理和每像素着色按照需要进行。
一些实施例基于输入的几何形状属性,使用顶点着色器自动确定包围体。以上在相关申请下列出的专利申请中描述了用于自动确定包围体的技术。
在多个实施例中,为了渲染图像,用户/编程员或其它源向渲染器提供绘制调用的全局列表。每个绘制调用可被分成较小的、不相交的三角形组,这些三角形组被称为几何形状组(GG)。在一些情况下,绘制调用仅产生单个GG。每个绘制调用可存储关于GG的信息,诸如GG中顶点的数量、GG中三角形的数量以及针对顶点信息的指示器。另外,包围体(BV)可被计算并与几何形状组箱中的每个几何形状组一起存储。如稍后将要描述的,三角形箱是其中存储三角形的箱,而几何形状组箱存储关于GG的信息。在一些情况下,代替产生三角形,可产生其它类型的基元,诸如四边形、点、线、多边形、球形、或其它高阶几何形状。
多个实施例减少用于箱的存储,因为并不是对每个箱都存储经变换的顶点。针对其包围体与块交迭的每个几何形状组的指示器被存储在该块的几何形状组箱中。可延迟顶点处理直至对块进行光栅化。代替将个体三角形装箱到块,一些实施例确定复杂基元/对象的包围体(BV)并基于GG关联的BV将GG装箱到块。例如,可针对每个个体GG确定BV。因此,存储GG可比存储与块相关联的三角形的箱使用较少的存储器。
箱的使用存储器需求可以低得多,因为经变换的顶点不是被存储在几何形状组(GG)箱中,而是按照需要被创建并被存储到三角形箱中。延迟GG向个体三角形的扩展可允许进行基于包围体的剔除(例如,视锥和遮挡)。例如,如果由另一基元完全遮蔽的复杂绘制调用的包围体被已装箱的三角形所覆盖,则该绘制调用可能不必逐三角形地装箱。
多个实施例允许通过图形处理单元以及多核和多线程系统对块进行并行处理。例如,核或线程可并行处理与块交迭的几何形状组。在多个实施例中,由核执行的任何进程可由线程来执行,反之亦然。从存储器的角度看,多个实施例旨在通过使使更多的核并行地处理对块的前端和中端处理,以尽可能快地完成对块的后端光栅化。例如,前端处理可包括确定至少一个几何形状组的包围体以及将包围体装箱到至少一个几何形状组块。例如,中端处理可包括对选定的未经处理的几何形状组的顶点进行着色以及将与选定的未经处理的几何形状组相关联的三角形进行装箱。这可允许一旦块已完成后端处理则将块的存储器重新用于存储三角形。例如,后端处理可包括标识与三角形交迭的像素以及计算每个像素的色彩。
与图1中的前端处理相比,多个实施例中的前端处理提供了对在屏幕上的何处将执行顶点处理的粗略确定。对粗略确定的分析允许核在中端和后端集中于处理更加空间相干或密集的顶点。前端处理还允许排定顶点的优先级以供在中端和后端并行处理。
多个实施例提供图形处理流水线,这些图形处理流水线至少基于Segal,M.和Akeley,K.的“The OpenGL Graphics System:A Specification(Version2.0)(OpenGL图形系统:说明书2.0版)”(2004)、“The Microsoft DirectX9 Programmable Graphics Pipe-line(微软DirectX 9可编程图形流水线)”微软出版社(2003)、D.Blythe的"The Direct3D 10 System(Direct3D 10系统)"微软公司(2006)、以及其它图形流水线说明书可编程。
图2以框图形式描绘一种用于将几何形状组装箱到几何形状组箱的系统。
应用10可以是请求显示图像的任何应用,诸如计算机游戏或绘图程序。应用10可提供未经处理的顶点。顶点是跨越n维空间的n维属性。顶点属性是位置(x,y,z),但是还可包括例如色彩、透明度、任意数量的纹理坐标、法线以及光泽参数。使用连通性信息来形成三角形,该连通性信息可指示三角形是由例如顶点N、顶点M和顶点O形成的。对于这些顶点,极值探测器逻辑210对未经处理的顶点的每个标量属性确定最小值和最大值。极值探测器逻辑210可(从输入参数空间)向受围算法着色器220提供顶点属性的最小值和最大值。注意,受围算法着色器220仅使用在顶点最终位置的计算中所使用的属性的最小值和最大值。例如,最小值和最大值可以是最小和最大位置坐标、最小和最大纹理坐标、最小和最大色泽、以及最小和最大曲面法线值。
在多个实施例中,受围算法着色器220执行如在相关申请中所描述的受围算法技术以确定每个几何形状组的包围体。例如,几何形状组可以是要被分为棋盘格状的基元的组或者某种几何形状的其他组。包围体可以是三维轴对齐盒。在包围体是盒的情况下,包围体被描述为x、y和z坐标中的每一个的两个值。全部六个值表示剪辑空间(clip-space)中的经变换的顶点的最大值和最小值。包围体还可以在其它坐标系统中描述,诸如齐次坐标。包围体可以是其它形状,诸如球体、定向包围盒、k-DOP(离散定向多面体,它是k个板相交而形成)、圆柱体、多面体以及凸包。
例如,TCU/DCCU技术在Jon Hasselgren、Jacob Munkberg和Tomas的“Automatic Pre-Tessellation Culling(自动预棋盘格剔除)”中有描述,其在2009年的《美国计算机学会图形学会刊》(ACMTransactions on Graphics)中发表。TCU/DCCU技术可使用受围算法基于几何形状组的输入数据的极值区间确定完全包围几何形状组中经变换的几何形状的包围体,而无需对几何形状组中的所有顶点明确执行顶点着色器。在这些技术不对所有的顶点执行顶点着色器的情况下,可使用用于确定包围体的其它技术。例如,顶点着色器可被配置为通过不对顶点执行而是用相应的受围算法指令取代影响位置的每个指令,作为受围算法(BA)着色器220来操作,其中受围算法指令可被转换成一个或多个标准指令。
在一些实施例中,在几何形状组的包围体已被确定之后,可执行视锥剔除来潜在地消除对GG装箱并且避免对GG中的三角形的进一步处理。
受围算法着色器220确定几何形状组的包围体。在一些情况下,每个包围体包含单个几何形状组。
注意,在这一点上,除了确定包围体外还没有执行顶点着色,其中确定包围体是使用通用顶点变换计算来执行的(在BA着色器220中执行),这在上面引用的《美国计算机学会图形学会刊》的文章中有描述。
几何形状组装箱器225从受围算法着色器220接收包围体。几何形状组装箱器225执行将几何形状组装箱到几何形状组箱230,在此基础上块与几何形状组的包围体交迭。对于轴对齐盒,将盒投影到屏幕空间并且做出该投影(矩形)是否与块(块是另一个矩形)交迭的判定。在一些实施例中,几何形状组箱与每个块相关联。每个几何形状组箱包含其包围体与该块交迭的几何形状组的列表。几何形状组装箱器225还可将几何形状组标记插入与几何形状组交迭的每个块的三角形箱中。几何形状组标记是对几何形状组的引用。例如,在一些实施例中,三角形箱可包含其包围体与该块交迭的每个几何形状组的几何形状组标记。
在一些实施例中,应用10可指示针对特定绘制调用的顶点着色将不会被延迟。在这种情况下,图1的现有技术光栅化块体系结构可用于代替关于图2所描述的系统。在其它情况下,对包围体的确定可能不发生。例如,应用可提供几何形状组覆盖整个屏幕或者三角形在屏幕上疯狂扩展的指示。在这些情况下,可以使用图1的现有技术光栅化块体系结构。
在多个实施例中,代替系统200确定包围体,客户机应用可选择性地提供每个GG的保守包围体。如果此类数据可用并且准确,则这一技术可以显著地加快。在这种情况下,系统200可用于将几何形状组装箱到几何形状组箱。
在多个实施例中,当关于图2所述的系统将几何形状组装箱到几何形状组箱中时,系统通过试探来估计几何形状组的存储器使用率并将该经估计的存储器使用率与所存储的信息包括在箱中。几何形状组装箱器225可迭代地更新每个块的存储器使用率的估计。但是,这也可以在所有的几何形状组已被几何形状组装箱之后进行。试探可以是每个块的包围体(BV)的密度之和,其中BV的密度可以是几何形状组(具有与其相关联的BV)中三角形的数量除以与BV交迭的块的数量,或者三角形的数量乘以屏幕空间中的块与BV之间的交迭的百分比。
在根据递减的经估计存储器使用率对几何形状组箱分类的情况下可使用优先级队列。粗略地按递减的存储器使用率次序处理块具有减少峰值存储器使用率的效果以及排定可能花最长时间来执行的块的优先级的额外好处。通过存储器使用率来排定几何形状组箱可提供显著改善的跨核负载平衡。例如,核可对与块交迭的几何形状组并行操作。
在一些实施例中,几何形状组箱的优先级可以按照与块交迭的三角形或几何形状组的数量递增的次序,使得具有较少三角形或几何形状组的块在具有较多的三角形或几何形状组的块之前被处理。
图3描绘可用于确定用于几何形状组的包围体的几何形状组箱和顶点着色以及装箱三角形的进程的示例。例如,进程300可由一个或多个核和/或一个或多个线程来执行。框302确定是否还有更多的GG可用于处理。例如,可由应用提供未经处理的顶点的GG。如果GG可用于执行,则在框302之后是框310。如果没有GG可用于执行,则在框302之后是框304。
框304包括确定块优先级。当确定哪个块进行顶点着色和装箱三角形时可使用块优先级。例如,可根据关于图2所述的方式来设置块优先级(例如,递增或递减的存储器使用率或经估计三角形的最大和最小数量)。在确定了所有的块优先级之后,可以利用图5的进程来处理这些块。
框310包括处理下一个几何形状组。例如,可从图形API选择下一个几何形状组作为提交次序中的下一个几何形状组。
框312包括确定预定包围体是否已被提供。例如,应用或其它逻辑可提供预定包围体。例如,如果使用了Renderman系统,则可提供maxDisplacement值并且预先确定包围体。如果提供了预定包围体,则在框312之后是框314。如果没有提供预定包围体,则在框312之后是框320。
框314包括确定哪些块与GG的BV交迭以及将针对每个几何形状组的指示器存储到相应块的几何形状组箱中。几何形状组还可存储包围体。与几何形状组相关联的未经处理的顶点可以已经被存储在应用空间中。尽管未予以描绘,但是在框314之后是框302。
框320包括确定是否生成包围体。例如,如果包围体由应用或其它来提供,则生成包围体可被禁用。例如,应用可提供在几何形状覆盖整个屏幕或在屏幕上随机分散的情况下不应生成GG及其BV的提示。如果生成包围体被启用,则在框320之后是框330。如果生成包围体被禁用,则在框320之后是框322。
框322包括着色顶点并将与几何形状组相关联的三角形装箱。例如,可使用任何常规顶点着色和三角形-箱的确定技术。注意,在框322之后是框302。
框330包括确定几何形状组的顶点属性的输入极值。例如,关于极值探测器逻辑210所述的技术可用于确定几何形状组的顶点的输入极值。
框332执行受围算法着色器,该受围算法着色器使用顶点属性的极值来确定包围体。例如,关于受围算法着色器220所述的技术可用于确定GG的包围体。尽管未予以描绘,但是在框332之后是框314。
在这一点上,每个几何形状组箱包含几何形状组的列表,其中这些几何形状组的包围体与关联于GG箱的块交迭。但是,尚未在三角形级别上对几何形状组进行装箱。图4以简化形式描绘由核执行的、用于将几何形状组的三角形装箱到三角形箱(例如,图4中的三角形箱430)的操作。在图4所表示的处理之后,可进行对三角形的后端光栅化。
核可选择具有其顶点尚未被顶点着色并且其三角形尚未被装箱的几何形状组的块。例如,核可选择具有几何形状组的块,其中这些几何形状组具有最多数量的其三角形尚未被装箱的经估计三角形。顶点着色器410表示其中核对GG的顶点执行顶点着色的操作。核可经由与感兴趣的GG相关联的指示器访问未经处理的顶点。针对未经处理的顶点的指示器可用于从应用10访问未经处理的顶点并且未经处理的顶点被存储在应用空间中。三角形装箱器420执行到三角形箱430的三角形装箱。
几何形状组的三角形可在尚未被处理的块上扩展。因为几何形状组可按与图形API提交它们所采用的次序不同的次序来处理,已装箱的三角形可能并不是按照正确的次序写入到块箱中。多个实施例将已装箱的三角形附加到在箱中使用的每个核的先进先出队列中的几何形状组。链接被插入命令流中以跟随从已排队的几何形状组到已装箱的三角形(其不必驻留于同一核的FIFO中)的指示器并且在已装箱数据的末端再次返回。
可进行在每个几何形状组基础上的常规挑选分类,这将比在每个三角形基础上的挑选分类执行得更好。挑选分类是当许多核将三角形装箱到同一箱时避免同步的技术。在这种情况下,每个箱可以有N个列表,其中N是核的数量。如果核发现三角形与块交迭,那么它将三角形指示器存储到它的与块相关联的三角形箱的列表中。每个三角形具有提交次序标识符,因此流水线的其余部分可从N个列表中选择三角形来光栅化并且选择具有最低提交次序标识符的三角形。
核或线程还可执行后端光栅化。通常,核或线程选择准备好进行后端光栅化的块,其中后端光栅化是对尚未将几何形状组的三角形装箱的块进行的。当所有的几何形状组(其包围体与块交迭)已被处理(被变换且被三角形装箱)但后端光栅化尚未开始时,该块准备好进行后端光栅化。例如,核可基于具有最多三角形的块来选择准备好进行后端光栅化的块。
图5描绘可由一个或多个核和/或一个或多个线程执行的、用于通过对几何形状组的顶点进行顶点着色并对几何形状组的相关三角形进行装箱或者通过对已装箱的三角形执行后端光栅化来处理几何形状组的进程的示例。在该进程中,每个块存在若干状态。
ME Ready状态表示在块中有至少一个未处理的几何形状组。未处理的几何形状组可以是其顶点着色尚未完成或者其三角形尚未装箱到块的一个几何形状组。
ME Busy状态指示块中的所有几何形状组当前正由一个或多个核/线程处理或者已经被处理。
BE Ready状态表示块准备好进行后端光栅化。例如,BE Ready状态可表示块中不存在未经处理的几何形状组但对三角形的光栅化尚未开始。如果几何形状组尚未被顶点着色并且其三角形尚未被装箱,则该几何形状组是未经处理的。
BE Busy状态表示对块的后端光栅化已开始。
Done状态表示对块的后端光栅化已完成。例如,Done状态可表示像素被存储在帧缓冲器中并且准备好显示。
框502包括确定是否有块既不是BE Busy状态也不是Done状态。如果所有的块都处于BE Busy状态或者Done状态,那么在框502之后是框504并且核或线程可用于执行任何类型的处理。如果有块既不是BE Busy状态也不是Done状态,那么在框502之后是框510。
框510包括确定是否有块处于BE Ready状态。如果有块是BE Ready状态,那么在框510之后是框512。如果没有块是BE Ready状态,那么在框510之后是框520。
框512包括选择最高优先级BE Ready块以及将所选择的块设置成BEBusy。例如,最高优先级BE Ready块可以是具有最多已装箱三角形的块、具有最高存储器使用率的块、或者具有最多交迭的几何形状组的块。
框514包括对所选择的块执行后端光栅化。后端光栅化包括寻找与三角形交迭的像素以及计算每个像素的色彩。核在后端可处理三角形(或其它几何基元)的次序可以是由图形API设置的顺序次序。
框516包括将经后端光栅化的块的状态设置成Done。在图5的进程的下一迭代中,核将不处理Done状态中的块。存储三角形和唯一地分配给块的其它信息的存储器可被释放并且潜在地由其它块或其它进程根据需要使用。与不止一个块相关联的存储器可被释放并且潜在地由其它块或进程使用,只要与该存储器相关联的所有块都处于Done状态。
框520包括确定是否有块处于ME Ready状态。如果没有块是ME Ready状态,那么在框520之后是框502。如果有块是ME Ready状态,那么在框520之后是框522。
框522包括选择最高优先级ME Ready块。最高优先级ME Ready块可以是具有未装箱的三角形并且具有最高数量的经估计三角形的块。在一些实施例中,对三角形数量的估计可通过以下步骤确定:(1)获得每个几何形状组的三角形的总数量,(2)确定几何形状组与块交迭多少,以及(3)将在(1)中确定的几何形状组中的三角形数量乘以(2)中的百分比。如果整个几何形状组仅与单个块交迭,那么百分比是100%。如果一半几何形状组与一个块交迭,并且另一半与另一个块交迭,那么对于这两个块而言百分比都是50%。在又一些其它实施例中,ME Ready块的优先级可以是从屏幕顶部到底部以及从屏幕左侧到右侧的顺序。在一些实施例中,对块中三角形数量的估计可由与三角形附连的棋盘格参数的数量所确定。在其它实施例中,核选择具有未装箱三角形的块,其中这些未装箱三角形具有最高数量的交迭几何形状组。
框524包括核确定所选择的ME Ready块中是否有未处理的几何形状组。如果所选择的块中有未处理的几何形状组,那么在框524之后是框526。如果所选择的块中没有未处理的几何形状组,那么在框524之后是框540。
框526包括核选择与所选择的块交迭且跨越最多块的、未经处理的几何形状组,如果这种组存在的话。未经处理的几何形状组是尚未被顶点着色也未将三角形装箱的一个几何形状组。例如,如果已在几何形状组上开始顶点着色,那么该组不被认为是未经处理的。如果几何形状组根据交迭块的数量联系在一起,那么可以按照图形API所发布的次序来选择几何形状组。在其它实施例中,可按照提交次序来处理几何形状组,但是对于一些块而言整个中端处理稍后将完成。
框540包括将最高优先级ME Ready块标记为ME Busy。ME Busy状态告诉其它核在该块中不存在几何形状组处理工作。ME Busy状态可指示块不可用于处理并且加速核寻找下一ME Ready块来处理的进程。
框528包括对所选择的未经处理的几何形状组执行顶点着色和三角形装箱。
框530包括确定是否所有的几何形状组已针对与所选择的几何形状组交迭的所有的块进行了顶点着色和三角形装箱。几何形状组可与若干块交迭。如果对几何形状组的处理导致任何块的所有交迭几何形状组被着色和装箱,那么该块准备好进行后端光栅化。如果通过对所选择的几何形状组的三角形进行着色和装箱,任何块的所有几何形状组已被着色和装箱,那么在框532中将每个这样的块标记为BE Ready。如果通过对所选组的三角形进行着色和装箱,任何块的并非所有几何形状组已被着色和装箱,那么在框530之后是框502。
图5的过程可涉及尽可能少的开始进行其顶点和像素处理的块。从存储器使用率的角度看,多个实施例旨在通过使更多的块在前端/中端工作上并行地进行工作来尽可能快地完成对块的后端光栅化。这可允许一旦块已结束后端工作则将块的存储器重新用于存储三角形。
如果有许多几何形状集中在屏幕的较小部分(例如,体育场场景中的3DMark气球或茶壶),那么图5的进程可潜在地进行良好调整。另外,核之间的负载平衡可用于避免空闲核。为实现较快处理,可使核之间的通信最小化。可接受核之间的轻量通信。例如,核之间的通信可用于传达块状态(BE busy、ME ready)以及何时更新优先级队列。
图6描绘根据一些实施例的合适的后端光栅化进程。图6的进程可由核或线程来执行以并行处理多个块。
框602包括确定在块的箱中是否存在三角形或几何形状组标记。如果在块的箱中存在任何三角形或几何形状组标记,那么在框602之后是框604。如果在块的箱中不存在三角形或几何形状组标记,那么进程结束。
框604包括处理来自块箱的下一项。
框606包括确定该下一项是否是几何形状组标记。如果该下一项是几何形状组标记,那么在框606之后是框610。如果该下一项是三角形,那么在框606之后是框620。
框610包括确定几何形状组是否可被剔除。例如,框610可包括通过相对于分层深度缓冲器深度测试包围体,来对整个几何形状组执行分层深度剔除。深度剔除包括相对于由包围体所交迭的块内的子块的zmax测试包围体的zmin。子块的zmax是子块内的最大深度值(有时称为Z)。包围体的zmin是包围体上的最小深度值(或者它的保守估计)。如果包围体的zmin大于包围体所交迭的子块的所有zmax,那么几何形状组可被剔除,因为它将被封闭。剔除操作试图减少所渲染的三角形的量。注意,框610的结果是几何形状组可被剔除或者未被剔除。在几何形状组被剔除的情况下,在框610之后是框612。但是,如果几何形状组不被剔除,那么在框610之后是框622。
框612包括跳过属于已剔除几何形状组的三角形。即使在将每个几何形状组的三角形装箱之后,也保留该几何形状组的边界。在对几何形状组进行装箱时,将标记插入到三角形箱中且在第一三角形的前面,从而将后面X个三角形与几何形状组的边界相关联。因此,与所剔除的几何形状组相关联的三角形可被跳过而不渲染。
框620包括可能地对三角形执行分层深度剔除以及渲染三角形。在该上下文中,剔除操作试图减少像素处理量。例如,用于剔除的合适技术是Zmax-剔除,并且在Haines和Hoffman的“Real-Time Rendering(实时渲染)”(第三版)第856-857页中有所描述。在渲染三角形时可使用早期深度测试。
框622包括可能地对与几何形状组相关联的三角形执行分层深度剔除以及渲染与几何形状组相关联的三角形。框622可按与框620类似的方式来实施。
图7描绘核确定要处理哪个几何形状组的方式的另一实施例。图7的进程可在所有的几何形状组已被装箱到GG箱之后执行。图7的进程可通过多个核或线程并行地执行,使得多个块被同时处理。框702包括核选择具有尚未被顶点着色和装箱的几何形状组且具有不完全后端光栅化的最高优先级块。最高优先级块可以是具有最多已装箱三角形的块、具有最高存储器使用率的块、或者具有最多交迭的几何形状组的块。
框704包括将尚未被顶点着色且未被分类到箱中的第一几何形状组锁在块中。几何形状组在块中按照API提交次序来处理。第一几何形状组是提交次序中下一个可用的,并且尚未被顶点着色和分类到箱中。锁定几何形状组使得几何形状组不可用于由另一核或线程来处理直至被解锁。
框706包括封闭剔除所选择的几何形状组。框706可确定所选择的几何形状组是否被隐藏而不为其它对象所见。例如,诸如Z-max之类的分层-Z可用于封闭剔除所选择的几何形状组。Z-max方法检查片段或基元是否被较早绘制的三角形所封闭(隐藏)。分层Z-缓冲器(HZ-Buffer)是合适的Z-Max技术。例如,Zmax-剔除在Haines和Hoffman的“Real-Time Rendering(实时渲染)”(第三版)第856-857页中有所描述。如果被封闭,则不对几何形状组中的顶点执行顶点着色器,并且几何形状组中的三角形不被装箱或光栅化。但是,如果几何形状组的包围体与其它块交迭并且未被封闭在其它块中,那么这些三角形可被顶点着色和装箱。
框708包括对未隐藏的几何形状组中的顶点进行顶点着色以及将其三角形分类到三角形箱中。未被剔除的几何形状组是未隐藏的。如果包围体不与其它块交迭,那么在顶点着色以及将三角形分类到箱中已经完成之后或如果它被剔除,包围体和几何形状组可在存储器中被删除或可用于被盖写。与若干块交迭的包围体可使用引用计数器以便追踪几何形状组何时全部完成。框708还可包括标准三角形剔除技术。
框710包括将包围体及其几何形状组标记为已完成顶点着色和装箱,以及将包围体及其几何形状组解锁。
框712包括核或线程光栅化至少一个几何形状组的三角形。几何形状组可按应用所呈现的次序来处理。块内的个体三角形的光栅化次序可以是应用所呈现的次序。在框712之后,如果块中的所有几何形状组已将三角形分类到箱中且将三角形光栅化,那么对该块而言全部后端光栅化已完成。在这种情况下,在框712之后是框702。否则,在框712之后是框704。在一些情况下,核或线程可对块执行框702-710中的任何一个,同时另一个核或线程对另一个块执行框712。
图7的进程提供对尽可能少的块开始进行顶点和像素处理。从存储器使用率的角度来看,只有活动的块在任何时间都包含它们的经处理的几何形状。对包围体的简单早期封闭剔除在顶点着色之前进行,以可能地避免顶点着色、装箱和光栅化。
因此,图7的进程的多个实施例包括:确定几何形状组的包围体;将几何形状组装箱到至少一个几何形状组箱中;选择具有尚未被着色且未被分类到箱中的任何几何形状组的块;选择第一几何形状组;锁定所选择的几何形状组;剔除所选择的几何形状组;对所选择的几何形状组中的顶点进行顶点着色并且将三角形分类到三角形箱中;将包围体及其几何形状组标记为已完成几何形状变换;解锁几何形状组以允许处理几何形状;以及选择几何形状组用于三角形光栅化。所选择的块可以是具有最多已装箱三角形的块、具有最高存储器使用率的块、或者具有最多交迭的几何形状组的块。第一几何形状组可以是API提交次序中的下一可用的几何形状组。被选择用于光栅化的几何形状组可以基于应用呈现的次序。
本文描述的图形和/或视频处理技术可在各种硬件架构中实现。例如,图形和/或视频功能可集成在芯片组内。或者,可使用分立的图形和/或视频处理器。作为又一个实施例,可由包括多核处理器的通用处理器来实现图形和/或视频功能。在又一个实施例中,这些功能可在诸如手持式计算机或移动电话之类的具有显示器的消费者电子设备中实现。
本发明的诸实施例可被实现为以下的任意一种或组合:使用母板互连的一个或多个微芯片或集成电路、硬连线逻辑、由存储器设备存储并由微处理器执行的软件、固件、专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)。术语“逻辑”可包括作为示例的软件或硬件和/或软件和硬件的组合。
本发明的各实施例可例如作为计算机程序产品来提供,该计算机程序产品可包括其上存储有机器可执行指令的一个或多个机器可读介质,这些指令在由诸如计算机、计算机网络或其他电子设备等一个或多个机器执行时可使得该一个或多个机器根据本发明的实施例来执行操作。机器可读介质可包括,但不限于,软盘、光盘、CD-ROM(紧致盘-只读存储器)、以及磁光盘、ROM(只读存储器)、RAM(随机存取存储器)、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、磁卡或光卡、闪存、或适于存储机器可执行指令的其它类型的介质/机器可读介质。
各附图和以上描述给出了本发明的各示例。尽管被描绘为多个不同的功能项,但本领域技术人员可以理解,这些元素中的一个或多个可被很好地组合成单个功能元素。或者,某些元件可被分成多个功能元素。来自一个实施例的元素可被添加到另一个实施例。例如,此处所描述的各过程的次序可被改变并且不限于此处所描述的方式。而且,任何流程图的动作都不必以所示次序来实现;也不一定需要执行所有动作。同样,不依赖于其他动作的那些动作可以与所述其他动作并行执行。然而,本发明的范围绝不由这些具体示例来限定。无论是否在本说明书中明示,诸如结构、尺寸和材料使用方面的区别之类的众多变型都是可能的。本发明的范围至少与以下权利要求书中所给出的一样宽泛。
Claims (9)
1.一种计算机实现的方法,包括:
确定由基元组构成的第一几何形状组的第一包围体;
基于所述第一包围体将所述第一几何形状组分配到一个或多个几何形状组箱;以及
如果几何形状组的包围体与块交迭,则存储指向所述几何形状组的指针。
2.如权利要求1所述的方法,其特征在于,包括:对被标识为准备好后端处理的块执行后端处理,并在与执行后端处理交迭的时间间隔期间,响应于未标识准备好后端处理的块,执行中端处理。
3.如权利要求2所述的方法,其特征在于,包括:在与确定所述第一包围体交迭的时间间隔期间,确定第二几何形状组的第二包围体,并在与将所述第一包围体分配到一个或多个几何形状组箱交迭的时间间隔期间,基于所述第二包围体将所述第二几何形状组分配到一个或多个几何形状组箱。
4.如权利要求3所述的方法,其特征在于,确定第二几何形状组的第二包围体的步骤和基于所述第一包围体将所述第一几何形状组分配到一个或多个几何形状组箱的步骤在时间上交迭。
5.如权利要求2所述的方法,其特征在于,所述执行后端处理包括:
使用第一核选择准备好后端处理的最高优先级块;
使用所述第一核对所选择块的三角形执行后端处理;
使用第二核选择准备好后端处理的最高优先级块;以及
使用所述第二核对所选择块的三角形执行后端处理,其中使用所述第二核的所述选择或者使用所述第二核的所述执行在所述第一核选择块或执行后端处理的时间间隔期间发生。
6.如权利要求5所述的方法,其特征在于,进一步包括:
将所有几何形状组已被着色和三角形装箱的任何块标记为准备好后端处理。
7.一种用于图像处理的设备,包括:
用于确定第一几何形状组的第一包围体的装置;
用于基于所述第一包围体将所述第一几何形状组分配到一个或多个几何形状组箱的装置;
用于将所述第一几何形状组的分配存储到存储器中的装置;以及
用于,如果几何形状组的包围体与块交迭,则存储指向所述几何形状组的指针的装置。
8.如权利要求所述的用于图像处理的设备,包括:
用于在与确定所述第一包围体的时间间隔交迭的时间间隔期间,确定第二几何形状组的第二包围体的装置;以及
用于在与将所述第一包围体分配到一个或多个几何形状组箱的时间间隔交迭的时间间隔期间,基于所述第二包围体将所述第二几何形状组分配到一个或多个几何形状组箱的装置。
9.如权利要求所述的用于图像处理的设备,包括:
用于对被标识为准备好后端处理的块执行后端处理的装置;以及
用于在与执行后端处理的时间间隔交迭的时间间隔期间,响应于未标识准备好后端处理的块,执行中端处理的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410838036.7A CN104599304B (zh) | 2009-12-23 | 2009-12-23 | 图像处理技术 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200980163172.8A CN102667850B (zh) | 2009-12-23 | 2009-12-23 | 图像处理技术 |
CN201410838036.7A CN104599304B (zh) | 2009-12-23 | 2009-12-23 | 图像处理技术 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980163172.8A Division CN102667850B (zh) | 2009-12-23 | 2009-12-23 | 图像处理技术 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104599304A true CN104599304A (zh) | 2015-05-06 |
CN104599304B CN104599304B (zh) | 2018-06-08 |
Family
ID=53125054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410838036.7A Expired - Fee Related CN104599304B (zh) | 2009-12-23 | 2009-12-23 | 图像处理技术 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104599304B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108711133A (zh) * | 2017-04-01 | 2018-10-26 | 英特尔公司 | 带有早期分层的z的基于图块的立即模式渲染 |
CN109564695A (zh) * | 2016-09-16 | 2019-04-02 | 英特尔公司 | 用于高效3d图形流水线的装置和方法 |
CN110998664A (zh) * | 2017-08-29 | 2020-04-10 | 谷歌有限责任公司 | 计算多边形组的代表性形状 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6344852B1 (en) * | 1999-03-17 | 2002-02-05 | Nvidia Corporation | Optimized system and method for binning of graphics data |
US6697063B1 (en) * | 1997-01-03 | 2004-02-24 | Nvidia U.S. Investment Company | Rendering pipeline |
CN1957377A (zh) * | 2004-05-24 | 2007-05-02 | 皇家飞利浦电子股份有限公司 | 基于贴片的图形渲染 |
-
2009
- 2009-12-23 CN CN201410838036.7A patent/CN104599304B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6697063B1 (en) * | 1997-01-03 | 2004-02-24 | Nvidia U.S. Investment Company | Rendering pipeline |
US6344852B1 (en) * | 1999-03-17 | 2002-02-05 | Nvidia Corporation | Optimized system and method for binning of graphics data |
CN1957377A (zh) * | 2004-05-24 | 2007-05-02 | 皇家飞利浦电子股份有限公司 | 基于贴片的图形渲染 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109564695A (zh) * | 2016-09-16 | 2019-04-02 | 英特尔公司 | 用于高效3d图形流水线的装置和方法 |
CN109564695B (zh) * | 2016-09-16 | 2024-01-02 | 英特尔公司 | 用于高效3d图形流水线的装置和方法 |
CN108711133A (zh) * | 2017-04-01 | 2018-10-26 | 英特尔公司 | 带有早期分层的z的基于图块的立即模式渲染 |
CN110998664A (zh) * | 2017-08-29 | 2020-04-10 | 谷歌有限责任公司 | 计算多边形组的代表性形状 |
CN110998664B (zh) * | 2017-08-29 | 2023-08-25 | 谷歌有限责任公司 | 计算多边形组的代表性形状 |
Also Published As
Publication number | Publication date |
---|---|
CN104599304B (zh) | 2018-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102667850B (zh) | 图像处理技术 | |
US20210027525A1 (en) | Forward rendering pipeline with light culling | |
US8810590B2 (en) | Method and apparatus for spatial binning on a GPU and global path planning to avoid spatially binned objects | |
US8284197B2 (en) | Method and apparatus for rendering instance geometry | |
CN107750373B (zh) | 使用光线跟踪渲染以生成可见性流 | |
Knott | CInDeR: collision and interference detection in real time using graphics hardware | |
CN102096907B (zh) | 图像处理技术 | |
CN103871019B (zh) | 用于处理路径图像以促进光栅化的方法和设备 | |
KR20210095914A (ko) | 가변 레이트 셰이딩과 슈퍼 샘플 셰이딩의 통합 | |
Neophytou et al. | GPU accelerated image aligned splatting | |
KR20190093579A (ko) | z-컬링 후 중첩 단편들 식별 또는 제거 | |
CN107392990A (zh) | 渲染3d场景的全局照明 | |
Vasilakis et al. | Depth-fighting aware methods for multifragment rendering | |
Vasilakis et al. | k+-buffer: Fragment synchronized k-buffer | |
CN110192225B (zh) | 无序像素着色器导出 | |
Lengyel | Voxel-based terrain for real-time virtual simulations | |
CN104599304A (zh) | 图像处理技术 | |
JP5864474B2 (ja) | 空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法 | |
US11551387B2 (en) | Systems and methods for hair rasterization | |
Jang et al. | Fast collision detection using the A-buffer | |
US20230298261A1 (en) | Distributed visibility stream generation for coarse grain binning | |
Weber et al. | Parallel Reyes-style adaptive subdivision with bounded memory usage | |
US20240169641A1 (en) | Vertex index routing through culling shader for two level primitive batch binning | |
Wang et al. | Dynamic Shadow Synthesis Using Silhouette Edge Optimization | |
WO2022131949A1 (en) | A device for performing a recursive rasterization |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180608 Termination date: 20211223 |
|
CF01 | Termination of patent right due to non-payment of annual fee |