CN113077531A - 在图形处理系统中对基元进行图块化 - Google Patents
在图形处理系统中对基元进行图块化 Download PDFInfo
- Publication number
- CN113077531A CN113077531A CN202110312488.1A CN202110312488A CN113077531A CN 113077531 A CN113077531 A CN 113077531A CN 202110312488 A CN202110312488 A CN 202110312488A CN 113077531 A CN113077531 A CN 113077531A
- Authority
- CN
- China
- Prior art keywords
- tile
- primitive
- tiles
- bounding box
- tiling
- 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.)
- Pending
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/005—General purpose rendering architectures
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/12—Bounding box
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/52—Parallel processing
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Geometry (AREA)
- Software Systems (AREA)
Abstract
本公开涉及在图形处理系统中对基元进行图块化。在基于图块的图形处理系统中,图块化单元确定基元处于渲染空间的哪些图块中,使得图块中的基元可以被渲染。确定针对基元的边界框。针对在边界框中的图块的线之间的每个图块边界,图块边界与基元的边缘的交叉点被确定并被用于确定基元处于边界框中的图块中的哪些图块中。以这种方式,可以在不执行针对基元的边界框中的所有图块的图块化计算的情况下实施图块化过程。减少图块化计算的数目可以帮助(在速度和功耗方面)改善用于渲染基元的图形处理系统的效率。
Description
本申请是申请日为2016年4月6日、申请号为201610211411.4、发明名称为“在图形处理系统中对基元进行图块化”的中国发明专利申请的分案申请。
技术领域
本公开涉及在图形处理系统中对基元进行图块化。
背景技术
图形处理系统被用于处理图形数据。例如,运行在计算系统上的应用可能需要渲染三维(3D)场景的图像以用于显示给用户。应用可以将图形数据发送到图形处理系统以被渲染,其中图形数据描述要被渲染的多个基元。如本领域中已知的,基元通常是凸多边形,诸如三角形或凸四边形,其中基元通常具有其由其顶点的位置限定的在图形处理系统的渲染空间中的位置,并且可以具有其由诸如颜色或纹理属性的其他属性限定的外观。场景中的对象可以由一个或多个基元表示。随着图形处理系统发展,它们渲染复杂的图像的能力改善,并且因此应用利用这个并向图形处理系统提供更复杂的图像以供渲染。这意味着图像中的基元的数目倾向于增加,因此图形处理系统高效地处理基元的能力变得更重要。
改善图形处理系统的效率的一个已知方式是要以基于图块的方式渲染图像。以这种方式,基元要被渲染到其中的渲染空间被划分成多个图块,图块之后可以彼此独立地被渲染。为了渲染基元,渲染单元使用存储器来存储针对不同样本位置的中间结果(例如深度值和基元标识符等)。如果渲染单元一次在一个图块上进行操作,则这一存储器中的大部分(或全部)可以位于“芯片上”,即位于图形处理单元(GPU)上,这在整个渲染空间同时被渲染时可能是不可能的。因此,在基于图块的图形系统中,在GPU与芯片外存储器(即其可以被称为“系统存储器”)之间的读操作和写操作的数目通常相较于非基于图块的图形系统得到减少。由于在GPU与系统存储器之间的读操作和写操作通常非常慢并且使用大量功率(相较于在GPU内执行的操作),基于图块的图形系统比非基于图块的图形系统常常是更高效的(在功率和速度方面)。基于图块的图形系统包括用于对基元进行图块化的图块化单元。也就是说,图块化单元针对基元确定基元处于渲染空间的多个图块中的哪些图块中。之后,当渲染单元渲染图块时,可以给出指示哪些基元应当被用于渲染图块的信息。
例如,图1示出了可以被用于渲染3D场景的图像的基于图块的图形处理系统100的一些元件。图形处理系统100包括图形处理单元(GPU)102和存储器的两个部分1041和1042。要指出,存储器的两个部分1041和1042可以是或可以不是相同物理存储器的部分,并且存储器1041和1042两者可以位于“芯片外”,即不在与GPU 102相同的芯片上。在存储器(1041和1042)与GPU 102之间的通信可以通过系统100中的通信总线进行。
GPU 102包括预处理模块106、图块化单元108和渲染单元110。图块化单元108包括处理逻辑112和数据存储114,并且渲染单元110包括隐藏面消除(HSR)模块116和纹理化/阴影化模块118。图像处理系统100被布置使得在预处理模块106处接收描述由应用提供的基元的序列的图形数据。预处理模块106执行诸如包括剪裁和剔除的几何处理的功能,以消除未落入可见视图中的基元。预处理模块106还可以将基元投射到屏幕空间中。预处理模块106将基元输出到图块化单元108。
图块化单元108从预处理模块106接收基元,并确定基元中的哪些基元存在于图形处理系统100的渲染空间的图块中的每个图块内。基元可以处于渲染空间的图块中的一个或多个图块中。图块化单元108通过创建针对图块的显示列表来将基元分配到渲染空间的图块,其中针对图块的显示列表包括存在于图块中的基元的指示(即基元ID)。显示列表和基元从图块化单元108被输出并被存储在存储器1041中。渲染单元从存储器1041提取针对图块的显示列表和与该图块相关的基元,并且HSR模块116执行隐藏面消除以由此消除隐藏在场景中的基元的碎片。剩余碎片被传递到纹理化/阴影化模块118,其执行对碎片的纹理化和/或阴影化以确定经渲染的图像的像素颜色值,其可以被传递到存储器1042以存储在帧缓冲中。渲染单元110处理图块中的每个图块中的基元,并且当整幅图像已经被渲染并被存储在存储器1042中时,图像可以从图形处理系统100被输出并且例如被显示在显示器上。在图1中示出的示例中,基于图块的图形处理系统100是延迟渲染系统,意味着渲染单元110在执行对基元碎片的纹理化和/或阴影化之前执行对基元碎片的隐藏面消除以便渲染场景。然而,在其他示例中,图形处理系统可以不是延迟渲染系统,使得在对基元执行隐藏面消除之前对基元碎片执行纹理化和/或阴影化。
图2示出了渲染空间202的示例,渲染空间202已经被划分成图块204的8x12阵列,其中第m行和第n列中的图块被称为204mn。基元206被图示。图块化单元108操作为确定基元206处于图块204中的哪些图块中。在基元206与图块204至少部分地重叠的情况下,基元206“处于”图块204中。图块化单元108通过找到基元206的三个顶点的最小和最大x和y坐标并从那些坐标形成框208来确定边界框208。图块化单元108可以由此确定基元206没有处于未在边界框208中的图块204中的任何图块中。在图块204与边界框208至少部分地重叠的情况下,图块204“处于”边界框208中。在一些示例中,边界框可以以图块分辨率来确定,据此边界框的大小可以增加使得边界框的边缘落在图块边界上。在图2中,有点的图块(即渲染空间202的图块的顶部行和底部行、图块的第一列和最后两列)在边界框208外部,并且因此在此基础上,图块化单元108可以确定基元206没有处于那些图块中。在非常简单的实施方式中,图块化单元108可以简单地指示基元处于边界框208中的所有图块中。然而,这意味着基元被指示为处于其实际上没有处于其中的一些图块中。当从存储器1041读取基元并且针对它们在其中不可见的图块处理基元时,由于在存储器1041中对不必要的基元和/或基元ID的存储和渲染单元110中的低效率,这可以导致附加的存储器消耗。因此,通常优选图块化单元108确定基元处于边界框208中的图块中的哪些图块中。
针对边界框208中的每个图块(例如,图2中的白色图块中的每个白色图块),可以执行图块化计算以确定基元206是否处于图块中。例如,用于确定基元206是否处于图块204中的图块化计算可以包括针对基元的每个边缘的计算。例如,如图3所示,表示限定基元206的边缘的边缘线(3021、3022和3023)的方程使用基元206的顶点(3041、3042和3043)的位置来确定。之后针对每个边缘线302,可以执行测试,以通过将图块中的测试点的位置与边缘线302的方程进行比较,来确定图块204是在相应的边缘线302内部还是外部。图块中的测试点可以针对相对于不同边缘的测试是不同的,即测试点可以是边缘特定的。例如,针对图块是否在边缘线3021内部的测试,测试点处于图块的左下方;针对图块是否在边缘线3022内部的测试,测试点处于图块的左上方;并且针对图块是否在边缘线3023内部的测试,测试点处于图块的右下方。如果确定图块在所有边缘线302内部,则确定基元处于该图块中。然而,如果确定图块在边缘线302中的任何边缘线外部,则确定基元没有处于该图块中。
可以针对边界框208中的图块中的每个图块执行图块化计算,以便确定基元是否处于相应的图块中。针对基元的每个边缘,并且针对边界框中的每个图块,图块中的边缘特定测试点的位置与恰当的边缘线的方程的比较通常涉及执行一个或多个浮点运算。浮点运算执行起来代价高(在时间和功耗方面)。这可能造成问题,特别是由于图像中的基元的数目增加的倾向,因为在图块化过程中涉及的浮点运算的数目可能变得足够大以显著地不利地影响图形处理系统100的性能。因此,通常将有益的是,减少在图块化过程中消耗的时间和功率。
发明内容
提供本发明内容从而以简化的形式介绍下面在具体实施方式中进一步描述的概念选择。本发明内容不旨在标识要求保护的主题的关键特征或必要特征,也不旨在用于限制要求保护的主题的范围。
本文中描述了其中可以相较于在以上的背景技术部分中描述的现有技术示例减少用于对基元进行图块化执行的图块化计算(例如,涉及浮点运算)的数目的示例。这可以帮助(例如在速度和功率方面)改善用于渲染基元的图形处理系统的效率。
本文中描述了在图形处理系统中处理基元的方法,方法包括对基元进行图块化以确定基元处于渲染空间的多个图块中的哪些图块中,所述对基元进行图块化包括:确定针对基元的边界框;针对在边界框中的图块的线之间的至少一个图块边界中的每个图块边界,确定图块边界与基元的边缘的交叉点;以及使用所确定的交叉点来确定基元处于边界框中的图块中的哪些图块中。
本文中描述了图形处理系统,其包括用于对基元进行图块化以确定基元处于渲染空间的多个图块中的哪些图块中的图块化单元,图块化单元被配置为:确定针对基元的边界框;针对在边界框中的图块的线之间的至少一个图块边界中的每个图块边界,确定图块边界与基元的边缘的交叉点;以及使用所确定的交叉点来确定基元处于边界框中的图块中的哪些图块中。
可以提供计算机可读代码,当代码运行在计算机上时计算机可读代码适于执行本文中描述的示例中的任何示例的方法的步骤。另外,可以提供计算机可读代码,用于生成根据本文中描述的示例中的任何示例的图形处理系统。计算机可读代码可以被编码在计算机可读存储介质上。
如对于技术人员而言将显而易见的,以上特征可以在适当的情况下被组合,并且可以与本文中描述的示例的方面中的任何方面进行组合。
附图说明
现在将参考附图详细描述示例,在附图中:
图1是图形处理系统的示意图;
图2示出渲染空间的图块中的基元;
图3图示限定基元的边缘的边缘线;
图4a和4b示出了图示在图形处理系统中处理基元的第一方法的流程图;
图5a示出了渲染空间的单个图块中的基元的示例;
图5b示出了渲染空间的图块的行中的基元的示例;
图5c示出了针对其边界框已经被剪裁到渲染空间的边缘的三个基元;
图6示出了渲染空间的图块的2x2方形的三个图块中的基元;
图7a示出了渲染空间的图块的2x8矩形中的基元;
图7b示出了延伸到包括图块的4x8阵列的渲染空间的边缘以外的基元;
图8示出了图块中的针对相应的边缘定向的边缘特定测试点;
图9示出了渲染空间的图块的9x14矩形中的一些图块中的基元的示例;
图10示出了图示在图形处理系统中处理基元的第二方法的流程图;
图11a到11d图示了第二方法的图块化过程的四个不同阶段;并且
图12是计算机系统的示意图。
附图图示了各种示例。技术人员将认识到附图中的图示的元件边界(例如框、框的组或者其他形状)表示边界的一个示例。可以的是,在一些示例中,一个元件可以被设计为多个元件,或者多个元件可以被设计为一个元件。在适当的情况下,贯穿附图使用共同的附图标记来指示相似的特征。
具体实施方式
现在将仅通过示例的方式来描述实施例。
图1中示出的图形处理系统100可以被用于实施本文中描述的示例的方法。如以上所描述的,图形处理系统100是基于图块的延迟渲染图形处理系统,其包括GPU 102和存储器的两个部分1041和1042。如以上所提到的,存储器的两个部分1041和1042可以是或可以不是相同物理存储器的部分,并且存储器1041和1042两者可以位于“芯片外”,即不在与GPU102相同的芯片上。在存储器(1041和1042)与GPU 102之间的通信可以通过系统100中的通信总线进行。GPU 102包括预处理模块106、图块化单元108和渲染单元110。图块化单元108包括处理逻辑112和数据存储114,并且渲染单元110包括隐藏面消除(HSR)模块116和纹理化/阴影化模块118。
在操作时,图形处理系统100(例如从应用)接收描述基元的序列的图形数据。预处理模块106执行诸如包括剪裁和剔除的几何处理的功能,以消除未落入可见视图中的基元。预处理模块106还可以将基元投射到屏幕空间中。预处理模块106将基元输出到图块化单元108。
参考图4a和4b中示出的流程图,描述了图形处理系统100可以如何处理基元的示例。不是针对基元的边界框中的每个图块执行图块化计算,可以针对图块的子集执行图块化测试。之后针对图块的子集的图块化测试的结果可以被用于确定基元是否处于被定位在由子集的图块中的两个或更多个图块界定的区域内的其他图块中。要指出,“其他图块”没有处于针对其执行图块化测试的图块的子集中。以这种方式,可以在不执行针对基元的边界框中的所有图块的图块化计算的情况下实施图块化过程。减少图块化计算的数目可以帮助(在速度和功耗方面)改善用于渲染基元的图形处理系统的效率。
在步骤S402中,图块化单元108从预处理模块106接收基元。参考图4a和4b中示出的流程图详细描述图块化单元108的操作,但是概括地说图块化单元108确定基元中的哪些基元存在于图形处理系统100的渲染空间的图块中的每个图块内。图块化单元108的处理逻辑112执行本文中描述的图块化单元108的操作,并且数据存储114存储图块化过程的中间结果的数据,诸如图块化计算的结果和部分填充的显示列表。处理逻辑112可以被实施在被专门设计用于执行图块化单元108的操作的专用硬件中。备选地,处理逻辑112可以通过在处理器上执行软件来实施,其中软件被编写使得当其被执行时其使处理器执行图块化单元108的操作。
图块化单元108考虑第一基元。在步骤S404中,确定针对基元的边界框。在本文中详细描述的示例中,边界框是轴对齐的边界框,即它们与渲染空间的图块的网格的轴对齐;但是在其他示例中,边界框可以不是轴对齐的,即它们可以相对于图块的网格成角度。如果基元延伸到渲染空间的边缘以外,则边界框被剪裁使得其不延伸到渲染空间的边缘以外。例如,边界框可以被剪裁使得其具有在渲染空间的边缘上的边缘。边界框可以以图块的分辨率来确定,使得边界框的边缘处于图块边界上(因为在这些示例中,边界框是轴对齐的)。如果是这种情况,则边界框的边缘被向外延伸到下一图块边界,即使较近的图块边界可以通过将边界框边缘向内引入来找到。以这种方式,边界框被保守地确定使得其包括基元位于其中的所有图块。备选地,边界框可以以比图块分辨率更精细的分辨率来确定,例如图2中示出的边界框208不是以图块分辨率。在这些示例中,在图块与边界框至少部分地重叠的情况下,图块被确定为在边界框中。
在步骤S406中,图块化单元108确定边界框是否在x方向和y方向两者上延伸在多于一个图块上。如果不是这样的情况(即如果边界框在x方向和y方向中的任一者或两者上延伸在仅仅一个图块上),则除非其是例外情况(例如下面描述的例外情况之一),基元将处于边界框中的所有图块中。例如,图5a示出位于只一个单个图块502中的基元504的示例。在渲染空间中存在未示出在图5a中的其他图块,但是基元504与那些其他图块不重叠。在这种情况下,图块502是边界框中的仅有图块,因此边界框没有在x方向或y方向上延伸在多于一个图块上。显而易见,基元504处于图块502中并且没有处于渲染空间的其他图块中。因此,在这种情况下,为了确定基元504处于哪个(哪些)图块中,图块化单元108不需要执行涉及将基元504的边缘线与图块中的测试点进行比较的浮点运算的任何图块化计算。因此,针对基元504的图块化过程可以非常高效地被执行。
类似地,图5b示出基元508的示例,基元508位于图块5061、5062、5063和5064的行中。在渲染空间中存在未示出在图5b中的其他图块,但是基元508与那些其他图块不重叠。针对基元508的边界框在x方向上延伸在四个图块上,但是在y方向上没有延伸在多于一个图块上。在这种情况下,图块5061、5062、5063和5064是边界框中的仅有图块,并且显而易见,基元508处于图块5061、5062、5063和5064中,但是没有处于渲染空间的其他图块中。因此,在这种情况下,为了确定基元508处于哪个(哪些)图块中,图块化单元108不需要执行涉及将基元508的边缘线与图块中的测试点进行比较的浮点运算的任何图块化计算。因此,针对基元508的图块化过程可以非常高效地被执行。
如果针对基元的边界框没有在x方向和y方向两者上延伸在多于一个图块上,则方法从步骤S406传递到步骤S408,在步骤S408中确定边界框是否是例外情况。图5a和5b中示出的示例不是例外情况。在如下情况时例外情况出现:
(i)针对基元的边界框已经被剪裁到渲染空间的边缘,并且边界框的经剪裁的边缘延伸在多于一个图块上;或者
(ii)针对基元的边界框已经在两个方向上被剪裁。
例如,图5c示出了渲染空间内的三个基元,其被表示为510、514和518,渲染空间包括以3x7的布置而布置并且在图5c中被标记为0到20的21个图块。基元510具有已经被剪裁到渲染空间的边缘的边界框512,并且边界框512延伸在图块0、1、2、3、4和5的部分上。因此,边界框512在y方向(竖直方向)上没有延伸在多于一个图块上,但是边界框512的经剪裁的边缘(边界框512的顶部边缘)在x方向(水平方向)上延伸在多于一个图块上,因此边界框512是例外情况。可以看到,基元510没有处于边界框512中的所有图块中。在这一例外情况下,要在边界框512中的图块上执行图块化计算,以便确定基元510处于边界框512的哪些图块中。因此,在诸如这种的例外情况下,方法从步骤S408传递到步骤S412,下面更详细地描述步骤S412。
作为另一示例,基元514具有已经被剪裁到渲染空间的边缘的边界框516,并且边界框516延伸在图块8和15的部分上。因此,边界框516在x方向上没有延伸在多于一个图块上,并且具体地边界框516的经剪裁的边缘(边界框516的底部边缘)没有延伸在多于一个图块上(经剪裁的边缘仅仅处于图块15中)。另外,边界框516没有在两个方向上被剪裁。因此,边界框516不是根据以上给出的规则的例外情况。可以看到,基元514处于边界框516中的所有图块中。因此,不需要在边界框516中的图块上执行图块化计算,以便确定基元514处于边界框516的哪些图块中。因此,在诸如这种的非例外情况下,方法从步骤S408传递到步骤S410,下面更详细地描述步骤S410。要指出,未被剪裁的边界框(如在以上参考图5a和5b描述的示例中)不是例外情况,因此在那些情况下方法从步骤S408传递到步骤S410。
作为另一示例,基元518具有已经在两个方向上被剪裁的边界框520。因此,边界框520是根据以上给出的规则的例外情况。可以看到,基元518没有处于边界框520的图块中。由于这是例外情况,要在边界框520中的图块(图块20)上执行图块化计算,以便确定基元518是否处于边界框520的图块(图块20)中。因此,在这种情况下,方法从步骤S408传递到步骤S412。
要指出,在一些示例中,例外情况的检测和处理可以是可选的。在没有单独地对待例外基元(例如,基元510、514或518)的情况下可能招致效率损失,因为例外基元之后可以被添加到多于需要的图块的显示列表。然而,这不会导致渲染错误,因此其可以是可接受的。如果没有单独地处理例外情况,则可以避免步骤S408中涉及的处理,这以在多于严格需要的显示列表中包括一些例外基元为代价。
针对渲染空间中的每个图块,图块化单元108创建显示列表,显示列表可以被存储在例如存储114中,同时图块化单元108处理基元。针对图块的显示列表包括指示基元中的哪些基元处于该图块中的基元标识符。在步骤S410中,针对非例外情况,图块化单元108将当前被处理的基元的基元标识符添加到针对边界框中的(多个)相应图块的(多个)显示列表。例如,在图5a中示出的示例中,针对基元504的基元标识符将被添加到针对图块502的显示列表,但是不被添加到针对渲染空间中的其他图块的显示列表。类似地,在图5b中示出的示例中,针对基元508的基元标识符将被添加到针对图块5061、5062、5063和5064的显示列表,但是不被添加到针对渲染空间中的其他图块的显示列表。类似地,在图5c中示出的示例中,针对基元514的基元标识符将被添加到针对图块8和15的显示列表,但是不被添加到针对渲染空间中的其他图块的显示列表。以这种方式,基元可以在没有执行如以上所提到的在边缘方程上的图块化计算的情况下非常高效地被图块化。要指出,在一些测试中,发现在平均场景中超过70%的基元可以以这种方式在没有执行在边缘方程上的图块化计算的情况下被图块化。方法从步骤S410传递到步骤S430,下面描述步骤S430。
如果在步骤S406中确定边界框没有在x方向和y方向两者上延伸在多于一个图块上,则方法从步骤S406传递到步骤S412。在步骤S412中,图块化单元108标识基元的顶点位于其中的图块,由此确定基元处于所标识的图块中。要指出,基元的顶点中的多于一个顶点可以处于同一图块中。易于标识顶点位于其中的图块,因为顶点位置已经被用于确定边界框。步骤S412可以在不执行用于确定基元是否处于所标识的图块中的其他图块化测试的情况下高效地(在时间和功耗方面)被执行。例如,图6示出基元604,其中基元604的边界框包括被表示为60211、60212、60221和60222的图块的2x2组。在步骤S412中标识在图6中用影线示出的图块(图块60212、60221和60222),因为它们均包括基元604的顶点。因此,图块化单元108可以例如在不执行在针对基元604的边缘方程上的图块化计算的情况下容易地确定基元处于有影线的图块中。
在步骤S414中,将基元标识符添加到针对所标识的图块的显示列表。
在步骤S416中,图块化单元108确定在边界框中是否存在更多要处理的图块。在尚未确定基元是否处于图块中的情况下,该图块仍然要被处理。例如,如果边界框的所有图块包括基元的顶点,则已经确定基元处于边界框的所有图块中,因此在边界框中不存在更多要处理的图块。在这种情况下,方法从步骤S416传递到步骤S430。然而,如果在边界框中存在更多要处理的图块(即,针对其尚未确定基元是否处于图块中的更多图块),则方法传递到步骤S418。例如,参考图6,仍然没有确定基元604是否处于图块60211中,因此方法传递到步骤S418。
在步骤S418中,针对图块的至少子集中的每个图块,如果其还没有被确定,则图块化单元108确定基元是否处于该图块中。例如,在边界框包括多于四个图块的情况下,图块的子集可以包括角落图块,角落图块在边界框的角落。这个的示例被示出在图7a中,图7a示出了具有包括图块702的2x8阵列的边界框的基元704。角落图块用影线被示出在图7a中,并且被表示为70211、70218、70221和70228。
基元704的顶点处于图块70211中,基元704的另一顶点处于图块70228中,因此图块化单元108已经确定基元704处于角落图块70211和70228中。在步骤S418中,图块化单元108通过执行图块化计算来确定基元704是否处于图块70218和70221中。为了针对图块在基元上执行图块化计算,针对基元的每个边缘,描述基元的边缘的边缘方程被用于确定图块中的边缘特定测试点是在边缘的内部还是外部。在针对边缘中的任何边缘确定相应的边缘特定测试点在边缘的外部的情况下,基元被确定为在图块的外部。图块的测试点取决于测试所针对的边缘的定向而不同,因为在基元中的任何部分在图块的任何部分的内部的情况下,基元应当被确定为处于图块中。因此,针对边缘的图块中的边缘特定测试点是根据边缘的定向最可能在边缘内部的图块中的点。例如,图8示出被用于不同边缘定向的测试点。图8(a)示出针对其中边缘外部的点在边缘的下方和/或右方的向上倾斜边缘,边缘特定测试点804处于图块802的左上角(例如图块802内的左上方样本位置)中。可以认识到,如果测试点804在边缘的外部,则图块802中的所有其他点也是如此。类似地,图8(b)示出针对其中边缘外部的点在边缘的上方和/或左方的向上倾斜边缘,边缘特定测试点808处于图块806的右下角(例如图块806内的右下方样本位置)中。可以认识到,如果测试点808在边缘的外部,则图块806中的所有其他点也是如此。类似地,图8(c)示出针对其中边缘外部的点在边缘的下方和/或左方的向下倾斜边缘,边缘特定测试点812处于图块810的右上角(例如图块810内的右上方样本位置)中。可以认识到,如果测试点812在边缘的外部,则图块810中的所有其他点也是如此。类似地,图8(d)示出针对其中边缘外部的点在边缘的上方和/或右方的向下倾斜边缘,边缘特定测试点816处于图块814的左下角(例如图块814内的左下方样本位置)中。可以认识到,如果测试点816在边缘的外部,则图块814中的所有其他点也是如此。
因此,再次参考图7a,针对子集中的每个图块(例如,角落图块70211、70218、70221和70228),已经执行图块化测试以确定基元704是否处于相应图块中。如以上所描述的,图块化测试可以包括确定基元704具有图块中的一个或多个顶点,或者图块化测试可以包括执行图块化计算以确定基元是否处于图块中。如果基元处于图块中,则基元标识符被添加到针对图块的适当的显示列表。
在步骤S420中,图块化单元108确定在边界框中是否存在更多要处理的图块。在尚未确定基元是否处于图块中的情况下,该图块仍然要被处理。如果在边界框中不存在更多要处理的图块,则方法从步骤S420传递到步骤S430。然而,如果在边界框中存在更多要处理的图块(即,针对其尚未确定基元是否处于图块中的更多图块),则方法传递到步骤S422。例如,参考图7a,仍然没有确定基元704是否处于不包括基元704的顶点的非角落图块中,因此方法传递到步骤S422。
在步骤S422中,图块化单元108分析针对其已经执行图块化测试的图块的子集。这一分析被执行以确定对边界框中的至少一个其他图块进行图块化的结果是否可以从针对图块的子集的两个或更多个图块的图块化测试的结果来推出,而无需执行针对所述至少一个其他图块的图块化测试。在本文中描述的示例中,基元已知是凸的,使得对边界框中的至少一个图块进行图块化的结果可以从针对图块的子集的两个或更多个图块的图块化测试的结果来正确地推出。在一些示例中,所有基元可以已知为凸的(例如所有基元可以是三角形),但是在一些其他示例中,传入的基元可以不一定是严格凸的,并且在这些示例中方法可以涉及确定基元是否是凸的,其中如果基元是凸的,则方法可以如本文中描述的被执行,以基于针对图块的子集的两个或更多个图块的图块化结果来推出针对图块的图块化结果;然而如果基元不是凸的,则其他方法可以被用于执行在基元上的图块化。
在步骤S424中,如果分析指示这是可能的,则针对子集的图块中的两个或更多个图块的图块化测试的结果被用于确定基元是否处于至少一个其他图块中。至少一个其他图块没有处于针对其执行图块化测试的图块的子集中。具体地,至少一个其他图块位于由子集的图块中的两个或更多个图块界定的区域内。如果特定图块由来自全部具有相同的图块化测试结果的子集的图块包围,则可以推出特定图块也将具有相同结果。图块可以在一个维度上“被包围”,即图块可以位于图块的行或列中的子集的两个图块之间。也就是说,图块的相同行或列中的子集的两个图块可以被用于推出针对在图块的该相同行或列中的在子集的两个图块之间(即在由子集的两个图块界定的区域中)的图块的图块化结果。另外,图块可以在两个维度上“被包围”,即图块可以位于由子集的四个图块界定的区域中。也就是说,以矩形被布置在渲染空间内的四个图块可以被用于推出针对由那四个图块界定的区域中(即在具有角落中的那四个图块的矩形中)的图块的图块化结果。要指出,术语“矩形”包括“方形”。
要指出,虽然由包括基元的图块包围的图块允许推出该图块也包括基元,不会仅仅基于图块由不包括基元的图块包围的确定来推出图块不包括基元。然而,当两个或更多个图块不包括基元时,因为它们两者都在基元的相同边缘外部,则可以推出它们包围的任何图块也在该边缘外部,并且因此也在基元外部。因此,可以确定针对不包括基元的子集的图块的按边缘结果。以这种方式,当图块由不包括基元的子集的两个或更多个图块包围时,可以检查那些包围图块在基元的相同边缘的外部,并且在那种情况下推出所包围的图块也在基元的外部。然而,如果包围图块在基元的不同边缘的外部,则不会推出所包围的图块也在基元的外部。要指出,当推出图块包括基元时,问题通过以下事实来简化:为了包括基元,图块被确定为在所有边缘的内部。因此,不需要使用按边缘结果以用于基于确定子集的包围图块包括基元来推出图块包括基元。
如果图块的子集包括边界框的角落图块(如图7a中),则在针对图块的子集的图块化测试的结果指示基元处于边界框的所有角落图块中的情况下(如图7a中),则那些结果被用于确定基元(例如,图7a中的704)处于边界框的所有图块中。以这种方式,在图7a中示出的示例中,针对图块中的十二个图块的图块化测试的结果可以在无需执行专门针对那些图块中的每个图块的图块化测试的情况下推出。
类似地,图7b中图示的示例示出了包括以4x8的网格布置的32个图块的渲染空间。大的基元708处于渲染空间的所有图块706中。针对基元708的边界框将被剪裁到渲染空间的边缘。在该示例中,图块化单元确定基元708是否处于角落图块70611、70618、70641和70648(其用影线被示出在图7b中)中。在该示例中,这四个图块构成图块的子集。针对图块70611的图块化测试涉及确定基元708的顶点处于图块70611中,然而针对图块70618、70641和70648的图块化测试涉及基于如以上所描述的基元708的边缘方程来执行图块化计算,以确定基元708是否处于相应图块706中。通过分析针对四个角落图块的图块化测试的结果,图块化单元108可以在该示例中确定,由于基元处于四个角落图块中,则基元也处于渲染空间中的所有其他图块中,而无需执行针对渲染空间的相应其他图块的图块化计算。如以上所描述的,如果基元被确定为处于图块中,则基元标识符被添加到针对相应图块的显示列表。
方法继续到步骤S426,在步骤S426中图块化单元108确定在边界框中是否存在更多要处理的图块。在尚未确定基元是否处于图块中的情况下,该图块仍然要被处理。如果在边界框中不存在更多要处理的图块(如图7a和7b中示出的示例中的情况),则方法从步骤S426传递到步骤S430。然而,如果在边界框中存在更多要处理的图块(即,针对其尚未确定基元是否处于图块中的更多图块),则方法传递到步骤S428。在步骤S428中,针对每个剩余图块(即针对其尚未确定基元是否处于图块中的每个图块),执行图块化计算以确定基元是否处于该图块中,并且如果是的话,基元标识符被添加到针对该图块的显示列表。如以上所描述的,针对特定图块的图块化计算包括将针对基元的边缘的线方程与特定图块的边缘特定测试点进行比较。因此,在步骤S428之后,已经针对渲染空间中的所有图块确定基元是否处于图块中,并且相应地基元标识符已经被添加到针对相应图块的显示列表。方法之后传递到步骤S430。
在步骤S430中,图块化单元108确定在当前渲染中是否存在要图块化的更多基元。每个渲染将有可能包括许多基元(例如数千个或数百万个基元)。渲染可以例如被执行以从3维模型来生成图像,该图像要被显示在屏幕上或被用作其他渲染中的纹理。如果存在要图块化的更多基元,则方法传递回到步骤S404,并且针对下一基元进行重复。一旦当前渲染中的所有基元已经被图块化,则方法将从步骤S430传递到步骤S432,在步骤S432中针对图块的显示列表从图块化单元108被输出并被存储在存储器1041中。如以上所描述的,在本文中描述的示例中,在显示列表被创建的同时,它们可以被存储在图块化单元108内部的存储114中。在一些示例中,一旦针对渲染的所有基元已经被图块化,则显示列表是完整的并且它们被传递到芯片外存储器1041以存储在其中。在其他示例中,图块化单元108可以不包括用于在存储显示列表中使用的内部存储(诸如存储114),并且代之基元标识符可以在执行图块化时被直接写入到存储器1041中的显示列表。在一些其他示例中,内部存储114可以被实施在图块化单元108中,但是内部存储114可以不足够大以同时存储针对所有图块的所有显示列表。因此,内部存储114可以被用于在执行图块化时收集之后可以成块地(或“成批地”)写出到存储器1041的图块化结果。这可以避免在基元被写入到存储器1041中的不同显示列表时低效率的存储器存取模式。
渲染单元110之后可以根据显示列表来渲染图块中的每个图块中的基元。为了渲染针对图块的基元,在步骤S434中,渲染单元110从存储器1041取回针对图块的适当的显示列表。渲染单元110可以之后取回处于当前渲染的图块中的由显示列表指示的基元。这些基元可以从存储器1041中取回。渲染单元110之后渲染图块中的基元。在图1中示出的示例中,渲染单元110实施延迟渲染,由此隐藏面消除在纹理化和/或阴影化之前被执行。因此,HSR模块116执行隐藏面消除以由此消除隐藏在场景中的基元的碎片。剩余的碎片被传递到纹理化/阴影化模块118,其对碎片执行纹理化和/或阴影化以确定经渲染的结果,例如以确定经渲染的图像的像素颜色值。在步骤S436中,经渲染的结果被输出并且可以被传递到存储器1042,例如以用于存储在帧缓冲中。渲染单元110处理图块中的每个图块中的基元,并且当整幅图像已经被渲染并被存储在存储器1042中时,图像可以从图形处理系统100被输出并且例如被显示在显示器上。要指出,在其他示例中,渲染单元可以是非延迟渲染单元,由此纹理化和/或阴影化可以在隐藏面消除之前对基元执行。
在以上描述的示例中,可以看到,通过执行图块化测试以确定基元是否处于图块的子集中,那些图块化测试的结果可以被用于确定基元是否处于位于由子集的图块中的一些图块界定的区域内的其他图块中。图7a和7b中示出的示例示出是边界框的角落图块的图块的子集。在其他示例中,图块的子集可以是边界框内的不同图块。例如,在图块的子集的图块之间可以存在规则间隔。例如,图块的子集可以包括来自渲染空间的图块的多个N×M块中的每个块的相应图块,其中N和M是整数。图9示出了其中N=M=2的示例。也就是说,在图9中,对2x2图块网格执行图块化测试,使得来自图块的每个2x2块的一个图块处于针对其执行图块化测试的图块的子集中。
图9示出了基元904,其中图块的9x14组处于基元904的边界框中并且被示出在图9中。行号(1到9)和列号(1到14)被示出在图9中。基元904的顶点的位置被用于确定基元904处于第一行的第十四个图块(图块T1,14)中,处于第二行的第四个图块(图块T2,4)中,以及处于第九行的第一个图块(图块T9,1)中(在步骤S412中)。这三个图块用向下倾斜影线被示出在图9中。不需要针对这三个图块执行涉及将边缘方程与测试点进行比较的图块化计算。
在图9中,图块的子集的图块用向上倾斜的影线被示出(除了第九行的第一个图块(图块T9,1),其处于子集中但是其具有向下倾斜的影线,因为顶点位于该图块中),作为示例包括图块90211(图块T1,1)。子集的图块包括来自边界框中的图块的第一行、第三行、第五行、第七行和第九行的第一图块、第三图块、第五图块、第七图块、第九图块、第十一图块和第十三图块。可以认识到,由于基元904的顶点的位置,图块化单元108已经确定基元处于第九行的第一个图块(图块T9,1)中。针对子集的其他图块,(在步骤S418中)执行图块化计算以确定基元904是否处于图块中。这些图块化计算如以上所描述的通过将基元904的边缘方程与图块中的测试点进行比较来执行。在图块的子集上执行的图块化测试的结果通过针对子集的每个图块指示基元904是在图块“内”还是图块“外”而被示出在图9中。
之后可以(在步骤S422中)分析针对图块的子集的图块化测试的结果(包括按边缘结果,其如以上所描述的用于在推出图块是否不包括基元中使用),以确定是否存在图块的3x3块,该图块的3x3块具有来自角落中的图块子集的图块,其中子集的那些图块具有相同的图块化测试结果。如果是这样的情况,则3x3块中的剩余五个图块可以被分配以与子集的相关图块相同的结果(在步骤S424中),而不执行针对那五个图块的特定图块化计算。例如,图9中示出的处于边界框的左上角的图块的3x3块(即,边界框的头三行中的头三个图块)包括四个角落中的子集的图块(图块T1,1、T1,3、T3,1和T3,3),针对其图块化测试结果指示基元904在那些图块外部,并且具体地,因为图块全部在基元904的相同边缘外部(例如,在如图9所示的基元904的左边缘外部),所以基元904在那些图块外部。因此,可以从针对图块的子集的图块化结果,推出基元904在该3x3块中的其他五个图块(图块T1,2、T2,1、T2,2、T2,3和T3,2)的外部,其处于由子集的四个图块界定的区域中,而不执行针对那五个图块的任何其他图块化测试。类似地,图9中示出的处于边界框的第五行到第七行和第三列到第五列中的图块的3x3块包括针对其图块化测试结果指示基元904在那些图块内部的四个角落中的子集的图块(图块T5,3、T5,5、T7,3和T7,5)。因此,可以从针对图块的子集的图块化结果,推出基元904处于该3x3块中的其他五个图块(图块T5,4、T6,3、T6,4、T6,5和T7,4)中,其处于由子集的四个图块界定的区域中,而不执行针对那五个图块的任何其他图块化测试。
类似地,可以(在步骤S422中)分析针对图块的子集的图块化测试的结果以确定是否存在线中(例如同一行或列中)的子集的具有相同图块化测试结果的两个图块。如果是这样的情况,则在子集的那两个图块之间的(多个)其他图块可以被分配以与子集的相关图块相同的结果(在步骤S424中),而不执行针对那个(那些)其他图块的特定图块化计算。例如,针对边界框的第三行和第五行中的第一个图块(图块T3,1和T5,1)的图块化测试指示基元904在那些图块外部,并且图块T3,1和T5,1在基元904的相同边缘的外部。因此,可以从针对图块的子集的图块化结果,推出基元904在第四行中的第一个图块(图块T4,1)(其处于由子集的两个图块(图块T3,1和T5,1)界定的区域中)的外部,而不执行针对该图块的其他图块化测试。类似地,针对边界框的第三行中的第七个图块和第九个图块(图块T3,7和T3,9)的图块化测试指示基元904在那些图块内部。因此,可以从针对图块的子集的图块化结果,推出基元904处于第三行中的第八个图块(图块T3,8)(其处于由子集的两个图块(图块T3,7和T3,9)界定的区域中)中,而不执行针对该图块的其他图块化测试。
在一些示例中,步骤S422和S424可以被重复使得对图块化结果的进一步分析可以例如基于基元的顶点位于其中的图块来实施。这可以允许推出对其他图块的图块化结果,而不基于涉及边缘方程的比较来执行针对那些其他图块的特定图块化计算。例如,在针对图块的子集的图块化测试的第一分析之后,已经推出基元904在图9中示出的边界框的第二行中的第十一个图块(图块T2,11)内部。由于基元904的顶点之一的位置,还知道基元904处于边界框的第二行中的第四个图块(图块T2,4)中。因此,在进一步的分析阶段中,可以推出基元904处于边界框的第二行中的第五个图块到第十个图块(图块T2,5到T2,10)中,而不执行针对那些图块的图块化计算。类似地,在进一步的分析阶段中,可以推出基元904处于边界框的第四列中的第三个图块和第四个图块(图块T3,4和T4,4)中,而不执行针对那些图块的图块化计算。
在图9中用带点阴影示出了针对其的图块化结果从子集的图块的图块化结果来推出的图块。最浅的带点阴影指示基元904在图块的外部,然而两种类型的较暗带点阴影指示基元904在图块内部。两个较暗带点阴影中的较浅者指示在第一分析之后基元904被确定为在图块内部,并且两个较暗带点阴影中的较暗者指示在进一步的分析之后基元904被确定为在图块内部。
如以上所描述的,要指出,当分析图块化测试的结果时,如果图块化测试指示基元在子集的图块的组的外部,则基元在图块的外部的原因应当被考虑,即基元的哪个边缘是图块外部。针对要被用于推出基元在另一图块的外部的子集的多个图块的结果,则子集的所有多个图块应当在基元的相同边缘的外部,否则可能错误地推出基元在该另一图块的外部。
在步骤S428中,针对图9中的剩余图块(即没有阴影或影线的那些图块),使用边缘方程和图块内的测试点来执行图块化计算,使得基元904的图块化是完整的。在图9中示出的示例中,边界框包括126个图块。针对图块中的68个执行基于边缘方程的图块化计算;针对图块中的3个的图块化测试涉及标识基元904的顶点处于哪些图块中;并且针对其他55个图块,关于基元904是否处于图块中的确定从针对边界框中的其他图块的图块化测试的结果来推出。在以上背景技术部分中描述的先前系统中,将针对边界框中的每个图块,即针对图9中示出的示例中的126个图块,执行图块化计算。因此,在该示例中,本文中描述的方法避免针对图块中的58个(46%的图块)执行图块化计算。由于图块化计算涉及浮点运算并且花费大量处理资源和时间来实施,在该示例中针对其执行图块化计算的图块的数目的减少将(在速度和功耗方面)显著改善图块化过程的效率。
包含在子集中的图块的数目可以被改变。具体地,对基元的图块化可以以分层的方式来实施,使得在第一(粗糙)阶段中,执行针对图块的子集的图块化测试,并且图块化测试的结果被用于以相对粗糙的分辨率确定基元是否处于至少一个其他图块中,其中图块的子集包括来自渲染空间的图块的多个N1×M1块中的每个块的相应图块。之后在第二(精细)阶段中,执行针对图块的子集的图块化测试,并且图块化测试的结果被用于以相对精细的分辨率确定基元是否处于至少一个其他图块中,其中图块的子集包括来自渲染空间的图块的多个N2×M2块中的每个块的相应图块,其中N1>N2和/或M1>M2。例如,在第一阶段中,N1和M1可以等于4使得图块的子集包括来自渲染空间的图块的多个4x4块中的每个块的相应图块,之后在第二阶段中,N2和M2可以等于2使得图块的子集包括来自渲染空间的图块的多个2x2块中的每个块的相应图块。以这种方式,如果可能的话,则在第一阶段中,可以在那些区域中的所有图块具有相同的图块化结果的情况下推出针对边界框的大区域的图块化结果,而不执行许多图块化计算,之后在第二阶段中,可以在那些区域中的所有图块具有相同的图块化结果的情况下推出针对边界框的剩余较小区域的图块化结果。在另一示例中,在第一阶段中,仅仅边界框的角落图块可以被包含在图块的子集中,之后在第二阶段中,来自图块的多个N2×M2块中的每个块的相应图块可以被包含在图块的子集中。另外,在其他示例中,可以以不同分辨率实施多于两个阶段,即可以在分层中存在多于两个阶段。
参考图10和11a到11d,除了以上描述的图块化方法或作为对其的备选,描述了对基元进行图块化的另一方式,其可以由图块化单元108来实施。
参考图10中示出的流程图,在步骤S1002中,图块化单元108从预处理模块106接收基元。图块化单元108考虑第一基元。在步骤S1004中,例如以与以上所描述的相同的方式来确定针对基元的边界框,并且如果基元延伸到渲染空间的边缘以外,则边界框被剪裁使得其不延伸到渲染空间的边缘以外。如以上所描述的,在图块与边界框至少部分地重叠的情况下,图块被确定为处于边界框中。基元被确定为没有处于未与边界框至少部分地重叠的图块中。
在参考图10和11a到11d描述的方法中,边界框中的图块的线一次被处理,其中线可以是行或列。在边界框中存在比图块的行更多的图块的列的情况下将线设置为行可以是有益的;然而,在边界框中存在比图块的列更多的图块的行的情况下将线设置为列可以是有益的。因此,图块的线被选择为处于具有边界框中的图块的线的最小数目的维度中。这是有益的,因为用于对基元进行图块化所执行的计算的数目随着边界框中的线的数目线性伸缩,因此将线的维度选择为最小值可以减少在对基元进行图块化中涉及的处理量。在步骤S1006中,图块化单元108确定在边界框中是否存在比图块的行更多的图块的列。如果在边界框中存在比图块的行更多的图块的列,则在步骤S1008中,图块化单元108确定边界框要以图块的行来处理。备选地,如果在边界框中不存在比图块的行更多的图块的列,则在步骤S1010中,图块化单元108确定边界框要以图块的列来处理。
作为参考图10中示出的流程图详细描述的方法的宽泛概述,针对边界框中的图块的线之间的一个或多个图块边界中的每个图块边界,图块化单元108确定图块边界与基元边缘的交叉点,并且使用所确定的交叉点来确定基元处于边界框中的图块中的哪些图块中。
图11a到11d示出了具有包括图块的6x4组的边界框的基元1102的示例。在该示例中,在边界框中存在比图块的列更多的图块的行,因此在步骤S1010中,图块化单元108确定边界框要以图块的列来处理。在下面描述的示例中,边界框以图块的列来处理,但是应当认识到,在其他示例中,边界框可以在适当的情况下以图块的行来处理。
考虑边界框中的图块的第一列,其中考虑在图块的第一列与第二列之间的图块边界1104。在步骤S1012中,针对边界框中的图块的第一列,图块化单元确定图块边界1104与限定基元1102的边缘的边缘线的初始交叉点。基元1102的边缘中的两个边缘与图块边界1104相交,然而针对基元的另一边缘,限定边缘的边缘线1106与图块边界1104在基元1102的外部的位置处交叉。初始交叉点被示出在图11a中在点11081、11082和11083处。除非基元1102的边缘之一与图块边界1104平行,则将存在三个初始交叉点1108,其中的两个(在图11a中示出的示例中,11082和11083)将位于基元1102的边缘上并且对于确定基元1102处于图块中的哪些图块中是有用的,同时另一交叉点(11081)将不位于基元1102的边缘上并且对于确定基元1102处于图块中的哪些图块中将不会有用。
在步骤S1014中,图块化单元108通过标识初始交叉点中的哪些初始交叉点位于基元1102的边缘上,来确定初始交叉点中的哪些初始交叉点要被用作图块边界1104与基元1102的边缘的交叉点。这可以通过考虑沿图块边界1104前进并且针对初始交叉点两侧(例如紧贴初始交叉点的两侧)的点确定点是在基元1102的内部还是外部来完成。如果确定针对初始交叉点的两侧的两个点是不同的,则初始交叉点是基元的边缘上的交叉点(例如点11082和11083),然而如果确定针对初始交叉点的两侧的两个点是相同的,则初始交叉点不是基元的边缘上的交叉点(例如点11081)。因此,在图11a中示出的示例中,交叉点11082和11083被标识为在基元1102的边缘上,并且这些所标识的交叉点被用于确定基元处于边界框的第一列中的图块中的哪些图块中。所标识的交叉点可以被存储在存储114中以用于在后续迭代中用于处理后续列,如在下面提供的描述中显而易见的。可以是存储的交叉点的样本位置或简单地是交叉点出现在其中的图块。方法之后从步骤S1014传递到步骤S1016和S1018两者。
在步骤S1016中,图块化单元108确定图块的列中的开始图块1112s。这通过找到列中的包括在其边界上的在步骤S1014中标识的所确定的交叉点之一(11082或11083)或者包括基元1102的顶点的第一图块(例如从边界框的顶部开始并且向下进行)来完成。图块1112s被确定为开始图块,因为其具有在其边界上的交叉点11082。在步骤S1018中,图块化单元108确定图块的列中的结束图块1112e。这通过找到列中的包括在其边界上的在步骤S1014中标识的所确定的交叉点之一(11082或11083)或者包括基元1102的顶点的最后图块(例如从边界框的顶部开始并且向下进行)来完成。图块1112e被确定为结束图块,因为其具有在其边界上的交叉点11083并且其还具有顶点1110。
在步骤S1020中,图块化单元108确定基元处于列中的在开始图块1112s与结束图块1112e之间并且包括开始图块1112s和结束图块1112e的图块中。第一列的在开始图块与结束图块(1112s与1112e)之间并且包括开始图块和结束图块(1112s和1112e)的这些图块用影线示出,可以看到基元1102处于影线图块中,但是没有处于边界框的第一列的其他图块中。
在步骤1022中,将针对基元1102的基元标识符添加到针对其确定基元处于那些图块(例如图11a中示出的影线图块)中的那些图块的显示列表。
在步骤S1024中,图块化单元108确定在边界框中是否存在更多要处理的图块的线(在该示例中为列)。如果存在,则方法传递到步骤S1026使得下一线(例如列)可以被处理。在步骤S1026中,图块化单元108确定下一线是否是边界框的最后的线。如果下一线不是边界框中的最后的线,则方法从步骤S1026传递到步骤S1012,使得下一线可以被处理。
例如,在图11b中示出的示例中,可以处理图块的第二列。以这种方式,在图块的第二列与第三列之间的图块边界1114被用于确定初始交叉点11181、11182和11183(在步骤S1012中)。初始交叉点11181在边缘线1116与图块边界1114相交的点处,但是该初始交叉点11181没有在基元1102的边缘上。然而,其他初始交叉点11182和11183在基元1102的边缘上,因此在步骤S1014中,初始交叉点11182和11183(但是不是11181)被标识为位于基元的边缘上的交叉点。这些所标识的交叉点可以被存储以用于在后续迭代中使用。
为了找到第二列的开始图块和结束图块,交叉点11082和11083的位置(其在先前迭代中被确定并被存储以用于在该迭代中使用)、交叉点11182和11183的位置和顶点1020的位置被使用。开始图块被确定为图块1122s(在步骤S1016中),因为该图块包括顶点1120。结束图块被确定为图块1122e(在步骤S1018中),因为该图块包括交叉点11083和11183。在图11b中用影线示出的图块在步骤S1020中被确定为处于基元1102中,因为它们处于开始图块1122s与结束图块1122e之间(并且包括它们)。因此,针对基元1102的基元标识符被添加到针对在图11b中用影线示出的图块的显示列表(在步骤S1022中)。
如图11c中示出的,方法针对下一列(第三列)进行重复。由于第三列不是边界框中的最后的列,方法重复回到步骤S1012,并且第三列被处理。以这种方法,在图块的第三列与第四列之间的图块边界1124被用于确定初始交叉点11281、11282和11283(在步骤S1012中)。初始交叉点11281在边缘线1126与图块边界1124相交的点处,但是该初始交叉点11281没有在基元1102的边缘上。然而,其他初始交叉点11282和11283在基元1102的边缘上,因此在步骤S1014中,初始交叉点11282和11283(但是不是11281)被标识为位于基元的边缘上的交叉点。这些所标识的交叉点可以被存储以用于在后续迭代中使用。
为了找到第三列的开始图块和结束图块,交叉点11182和11183的位置(其在先前迭代中被确定并被存储以用于在该迭代中使用)以及交叉点11282和11283的位置被使用。开始图块被确定为图块1130s(在步骤S1016中),因为该图块包括交叉点11182。结束图块被确定为图块1130e(在步骤S1018中),因为该图块包括交叉点11283。在图11c中用影线示出的图块在步骤S1020中被确定为处于基元1102中,因为它们处于开始图块1130s与结束图块1130e之间(并且包括它们)。因此,针对基元1102的基元标识符被添加到针对在图11c中用影线示出的图块的显示列表(在步骤S1022中)。
如图11d中示出的,方法针对下一列(第四列)进行重复。由于第四列是边界框中的最后的列,方法从步骤S1026传递到步骤S1016和S1018,而不执行步骤S1012或S1014。这是因为在边界框中的最后列的右边的图块边界是边界框的边缘,因此基元将不与该图块边界相交。为了找到最后列的开始图块和结束图块,交叉点11282和11283的位置(其在先前迭代中被确定并被存储以用于在该迭代中使用)和顶点1032的位置被使用。开始图块被确定为图块1134s(在步骤S1016中),因为该图块包括交叉点11282。结束图块被确定为图块1134e(在步骤S1018中),因为该图块包括交叉点11283和顶点1032。在图11d中用影线示出的图块在步骤S1020中被确定为处于基元1102中,因为它们处于开始图块1134s与结束图块1134e之间(并且包括它们)。因此,针对基元1102的基元标识符被添加到针对在图11d中用影线示出的图块的显示列表(在步骤S1022中)。
之后在步骤S1024中确定在边界框中不存在更多要处理的图块列,因此方法传递到步骤S1028。在步骤S1028中,针对图块的显示列表从图块化单元108被输出并被存储在存储器1041中。如以上所描述的,在本文中描述的示例中,在显示列表被创建的同时它们可以被存储在图块化单元108内部的存储114中。在一些示例中,一旦针对渲染的所有基元已经被图块化,则显示列表是完整的并且它们被传递到芯片外存储器1041以存储在其中。如以上所描述的,在其他示例中,图块化单元108可以不使用内部存储(诸如存储114)来存储显示列表,并且代之,基元标识符可以在执行图块化时被直接写入到存储器1041中的显示列表。另外,在一些其他示例中,内部存储114可以被实施在图块化单元108中,但是内部存储114可以不足够大以同时存储针对所有图块的所有显示列表。因此,内部存储114可以被用于在执行图块化时收集之后可以成块地(或“成批地”)写出到存储器1041的图块化结果。这可以避免在基元被写入到存储器1041中的不同显示列表时低效率的存储器存取模式。
渲染单元110可以之后根据显示列表来渲染图块中的每个图块中的基元。为了渲染针对图块的基元,在步骤S1030中,渲染单元110从存储器1041取回针对图块的显示列表。渲染单元110可以之后取回处于当前渲染的图块中的由显示列表指示的基元。这些基元可以从存储器1041取回。渲染单元110之后渲染图块中的基元。在图1中示出的示例中,渲染单元110实施延迟渲染,由此隐藏面消除在纹理化和/或阴影化之前被执行,但是在其他示例中,可以实施非延迟渲染。在步骤S1032中,经渲染的结果被输出并可以被传递到存储器1042以用于存储在例如帧缓冲中。渲染单元110处理图块中的每个图块中的基元,并且当整幅图像已经被渲染并被存储在存储器1042中时,图像可以从图形处理系统100被输出并且例如被显示在显示器上。
在一些情形下,例如针对具有大的边界框的基元,参考图10和11a到11d描述的方法可以相较于参考图4到9描述的示例提供对基元进行图块化的更高效的方法。对比之下,在其他情形下,例如针对具有小的边界框的基元,参考图4到9描述的方法可以相较于参考图10和11a到11d描述的示例提供对基元进行图块化的更高效的方法。具体地,在参考图10和11a到11d描述的方法中执行的计算的数目与边界框的最小维度成线性比例(例如与边界框中的图块的列的数目和图块的行的数目中的最小值成线性比例)。这是因为针对除了最后线之外的线(例如图块的列)中的每条线,相同数目的计算被执行而与在每条线中有多少图块无关。如从以上的描述中显而易见的,针对最后的线,可以执行较少的计算。例如,针对包括图块的20x4组(即20行和4列)的边界框将执行与在图11a到11d中示出的示例中针对包括图块的6x4组(即6行和4列)的边界框将执行的相同的计算。这与参考图4到9描述的途径形成对比,其中针对图块化执行的计算的数目与边界框中的图块的数目近似成比例,例如与边界框的面积近似成比例,其随着成方形的边界框的最小维度近似伸缩。因此,参考图10和图11a到11d描述的方法尤其对于处理具有大的边界框的基元有用,并且尤其对于处理具有在一个维度上比在另一个维度上明显更长的边界框的基元有用。
因此,在一些实施例中,图块化单元108可以有能力以两种不同方式来实施图块化方法:(i)方法1,即如参考图4a和4b中示出的流程图所描述的,以及(ii)方法2,即如参考图10中示出的流程图所描述的。方法的头两个步骤是相同的,即图块化单元接收基元并确定针对基元的边界框。图块化单元108可以之后分析边界框以确定是要执行方法1还是方法2。例如,如果边界框的最大维度大于图块的阈值数目,则图块化单元108可以利用方法2继续进行,然而如果边界框的最大维度不大于图块的阈值数目,则图块化单元108可以利用方法1继续进行。在方法1与方法2之间进行选择的其他方式可以在不同示例中例如基于边界框的面积来使用。以这种方式,基元被图块化的方式可以针对不同基元是不同的,并且具体地可以被选择以良好地适于基元的大小和/或形状以由此提供基元的高效图块化。
图4a、4b和10中示出的流程图的方法步骤可以被实施为图块化单元108的处理逻辑112内的逻辑块。逻辑块可以以硬件或软件或其组合来实施。例如,如果逻辑块以硬件来实施,则它们可以被形成为适于执行如本文中描述的逻辑块的期望功能的晶体管和其他硬件部件的特定布置。对比之下,如果逻辑块以软件来实施,则它们可以包括可以被存储在存储器中并且可以被提供给处理逻辑112以用于在其上执行以由此提供逻辑块的功能的计算机指令的集。
以上描述的图形处理系统100可以被实施在计算机系统中。例如,图12示出了包括GPU 102、CPU 1202和存储器1204的计算机系统,其中存储器1204可以包括对应于以上描述的存储器1041和1042的存储器块。计算机系统还包括其他设备1206,诸如显示器1208、扬声器1210、麦克风1212和相机1214。计算机系统的部件可以经由通信总线1216彼此通信。针对应用的计算机程序代码可以被存储在存储器1204中,并且可以例如被执行在CPU 1202上。如果应用需要渲染3D场景的图像,则描述基元的图形数据可以被发送到GPU 102,并且GPU102可以如以上所描述的渲染场景。
一般地,以上描述的功能、方法、技术或部件中的任何(例如,图块化单元108和其部件)可以被实施在使用软件、固件、硬件(例如,固定逻辑电路)或者这些实施方式中的任何组合的模块中。术语“模块”、“功能”、“部件”、“块”、“单元”和“逻辑”在本文中被用于总体上表示软件、固件、硬件或其任何组合。
在软件实施方式的情况下,模块、功能、部件、单元或逻辑表示当执行在处理器(例如,一个或多个CPU)上时执行指定任务的程序代码。在一个示例中,描述的方法可以通过被配置具有以机器可读形式存储在计算机可读介质上的软件的计算机来执行。计算机可读介质的一个这样的配置是信号承载介质并且因此被配置为将指令(例如,作为载波)诸如经由网络传输到计算设备。计算机可读介质还可以被配置为非瞬态计算机可读存储介质并且因此不是信号承载介质。计算机可读存储介质的示例包括可以使用磁技术、光学技术和其他技术来存储指令或其他数据并且可以由机器访问的随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪速存储器、硬盘存储器和其他存储器设备。
软件可以以用于将计算机配置为执行描述的方法的构成部分的包括计算机程序代码的计算机程序的形式,或者以在程序在计算机上运行时适于执行本文中描述的方法中的任何方法的所有步骤的包括计算机程序代码装置的计算机程序的形式,并且其中计算机程序可以体现在计算机可读介质上。程序代码可以被存储在一个或多个计算机可读介质中。本文中描述的技术的特征是平台无关的,这意味着技术可以被实施在具有各种处理器的各种计算平台上。
本领域技术人员还将意识到,功能、技术或方法中的全部或一部分可以由专用电路、专用集成电路、可编程逻辑阵列、现场可编程门阵列等来实现。例如,模块、功能、部件、单元、或逻辑(例如,实施在图块化单元108的处理逻辑112内的逻辑块)可以包括电路形式的硬件。这样的电路可以包括在制造工艺中可用的晶体管和/或其他硬件元件。通过示例的方式,这样的晶体管和/或其他元件可以被用于形成电路或结构,该电路或结构实施和/或包含诸如寄存器、触发器或锁存器的存储器、诸如布尔运算的逻辑运算器、诸如加法器、乘法器或移位器的数学运算器、以及互连。这样的元件可以被提供为定制电路或标准单元库、宏、或者在其他级别的抽象。这样的元件可以被互连在特定布置中。模块、功能、部件、单元、或逻辑(例如,处理逻辑112内的逻辑块)可以包括为固定功能的电路和可以被编程为执行一个或多个功能的电路;这样的编程可以从固件或软件更新或控制机制来提供。在示例中,硬件逻辑具有实施固定功能操作、状态机或过程的电路。
还旨在包含“描述”或限定实施以上描述的模块、功能、部件、单元或逻辑的硬件的配置的软件,诸如HDL(硬件描述语言)软件,如被用于设计集成电路或者用于将可编程芯片配置为实现期望功能。也就是说,可以提供计算机可读存储介质,其具有编码在其上的计算机可读程序代码,计算机可读程序代码用于生成被配置为执行本文中描述的方法中的任何方法的图形处理系统,或者用于生成包括本文中描述的任何装置的图形处理系统。也就是说,计算机系统可以被配置为从电路元件的定义和限定用于将那些电路元件进行组合的规则的数据,来生成数字电路的表示,其中非瞬态计算机可读存储介质可以具有存储在其上的处理器可执行指令,其当在这样的计算机系统处执行时使计算机系统生成例如包括如在本文中的示例中描述的图块化单元的图形处理系统。
术语‘处理器’和‘计算机’在本文中用于指代具有使得其可以执行指令的处理能力的任何设备或其部分,或者能够执行功能或方法中的全部或一部分的专用电路、或者其任何组合。
尽管本主题已经以特定于结构特征和/或方法动作的语言进行描述,但是要理解所附权利要求中限定的主题不一定限于以上描述的具体特征或动作。更确切地说,以上描述的具体特征和动作被公开为实施权利要求的示例形式。将理解,以上描述的益处和优点可以涉及一个示例或可以涉及若干示例。
如将对技术人员显而易见的,可以在不损失寻求的效果的情况下延伸或更改本文中给出的任何范围或值。本文中描述的方法步骤可以以任何合适的顺序或者在适当的情况下同时地来执行。在不损失寻求的效果的情况下,以上描述的示例中的任何示例的方面可以与描述的其他示例中的任何其他示例的方面进行组合以形成其他示例。
Claims (20)
1.一种在图形处理系统中处理基元的方法,所述方法包括对所述基元进行图块化以确定所述基元处于渲染空间的多个图块中的哪些图块中,以及渲染所述图块中的所述基元,其中所述对所述基元进行图块化包括:
确定针对所述基元的边界框;
针对在所述边界框中的图块的线之间的至少一个图块边界中的每个图块边界,确定所述图块边界与所述基元的边缘的交叉点;以及
使用所确定的交叉点来确定所述基元处于所述边界框中的所述图块中的哪些图块中,
其中所述确定所述图块边界与所述基元的边缘的交叉点包括:
针对所述基元的每个边缘,除非所述边缘平行于所述图块边界,否则确定所述图块边界与限定所述基元的所述边缘的边缘线的初始交叉点;以及
标识那些初始交叉点中的哪些初始交叉点位于所述基元的所述边缘上,
其中所标识的初始交叉点是被用于确定所述基元处于所述边界框中的所述图块中的哪些图块中的所确定的交叉点。
2.根据权利要求1所述的方法,其中使用所确定的交叉点来确定所述基元处于所述边界框中的所述图块中的哪些图块中的步骤包括针对图块的线:
通过找到所述线中的第一图块,来确定图块的所述线中的开始图块,所述第一图块包括在其边界上的所确定的交叉点或者包括所述基元的顶点;
通过找到所述线中的最后图块,来确定图块的所述线中的结束图块,所述最后图块包括在其边界上的所确定的交叉点或者包括所述基元的顶点;以及
确定所述基元处于所述线中的在所述开始图块与所述结束图块之间并且包括所述开始图块和所述结束图块的图块中。
3.根据权利要求1或2所述的方法,其中图块的所述线是图块的行或列。
4.根据权利要求1或2所述的方法,其中所述基元被确定为没有处于未与所述边界框至少部分地重叠的图块中。
5.根据权利要求1或2所述的方法,其中所述边界框被剪裁使得所述边界框不延伸到所述渲染空间的所述边缘以外。
6.根据权利要求1或2所述的方法,还包括在确定所述基元处于特定图块中的情况下将所述基元的基元标识符包含在针对所述特定图块的显示列表中。
7.根据权利要求6所述的方法,还包括针对所述渲染空间的所述图块中的每个图块,根据针对所述图块的所述显示列表来渲染所述图块中的所述基元。
8.根据权利要求1或2所述的方法,其中所述标识那些初始交叉点中的哪些初始交叉点位于所述基元的所述边缘上包括针对所述初始交叉点中的每个初始交叉点:
沿所述图块边界前进,并且确定所述初始交叉点两侧的点是在所述基元的内部还是外部。
9.根据权利要求8所述的方法,其中如果所述初始交叉点两侧的点是在所述基元的内部还是外部的所述确定针对所述初始交叉点两侧的两个点是不同的,则所述初始交叉点是所述基元的所述边缘上的交叉点,然而如果所述确定针对所述初始交叉点两侧的所述两个点是相同的,则所述初始交叉点不是所述基元的所述边缘上的交叉点。
10.一种图形处理系统,包括用于对基元进行图块化以确定所述基元处于渲染空间的多个图块中的哪些图块中的图块化单元,以及用于渲染所述图块中的所述基元的渲染单元,其中所述图块化单元被配置为:
确定针对所述基元的边界框;
针对在所述边界框中的图块的线之间的至少一个图块边界中的每个图块边界,确定所述图块边界与所述基元的边缘的交叉点;以及
使用所确定的交叉点来确定所述基元处于所述边界框中的所述图块中的哪些图块中,
其中所述图块化单元被配置为通过以下来确定所述图块边界与所述基元的边缘的交叉点:
针对所述基元的每个边缘,除非所述边缘平行于所述图块边界,否则确定所述图块边界与限定所述基元的所述边缘的边缘线的初始交叉点;以及
标识那些初始交叉点中的哪些初始交叉点位于所述基元的所述边缘上,
其中所标识的初始交叉点是要被用于确定所述基元处于所述边界框中的所述图块中的哪些图块中的所确定的交叉点。
11.根据权利要求10所述的图形处理系统,其中所述图块化单元被配置为通过针对图块的线进行以下内容而使用所确定的交叉点中的至少一些交叉点来确定所述基元处于所述边界框中的所述图块中的哪些图块中:
通过找到所述线中的第一图块,来确定图块的所述线中的开始图块,所述第一图块包括在其边界上的所确定的交叉点或者包括所述基元的顶点;
通过找到所述线中的最后图块,来确定图块的所述线中的结束图块,所述最后图块包括在其边界上的所确定的交叉点或者包括所述基元的顶点;以及
确定所述基元处于所述线中的在所述开始图块与所述结束图块之间并且包括所述开始图块和所述结束图块的图块中。
12.根据权利要求10或11所述的图形处理系统,其中图块的所述线是图块的行或列。
13.根据权利要求10或11所述的图形处理系统,其中所述图块化单元被配置为确定所述基元没有处于未与所述边界框至少部分地重叠的图块中。
14.根据权利要求10或11所述的图形处理系统,其中所述图块化单元被配置为对所述边界框进行剪裁使得所述边界框不延伸到所述渲染空间的所述边缘以外。
15.根据权利要求10或11所述的图形处理系统,其中所述图块化单元还被配置为在确定所述基元处于特定图块中的情况下将所述基元的基元标识符包含在针对所述特定图块的显示列表中。
16.根据权利要求15所述的图形处理系统,还包括渲染单元,所述渲染单元被配置为针对所述渲染空间的所述图块中的每个图块,根据针对所述图块的所述显示列表来渲染所述图块中的所述基元。
17.根据权利要求10或11所述的图形处理系统,其中所述图块化单元被配置为通过针对所述初始交叉点中的每个初始交叉点进行以下内容,来标识所述初始交叉点中的哪些初始交叉点位于所述基元的所述边缘上:
沿所述图块边界前进,并且确定所述初始交叉点两侧的点是在所述基元的内部还是外部。
18.根据权利要求17所述的图形处理系统,其中如果所述初始交叉点两侧的点是在所述基元的内部还是外部的所述确定针对所述初始交叉点两侧的两个点是不同的,则所述初始交叉点是所述基元的所述边缘上的交叉点,然而如果所述确定针对所述初始交叉点两侧的所述两个点是相同的,则所述初始交叉点不是所述基元的所述边缘上的交叉点。
19.一种计算机可读存储介质,具有编码在其上的计算机可读代码,所述计算机可读代码适于执行根据权利要求1或权利要求2所述的方法。
20.一种计算机可读存储介质,具有编码在其上的计算机可读代码,所述计算机可读代码用于生成根据权利要求1或权利要求2所述的图形处理系统。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1506861.2 | 2015-04-22 | ||
GB1506861.2A GB2537659B (en) | 2015-04-22 | 2015-04-22 | Tiling a primitive in a graphics processing system |
CN201610211411.4A CN106067188B (zh) | 2015-04-22 | 2016-04-06 | 在图形处理系统中对基元进行图块化 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610211411.4A Division CN106067188B (zh) | 2015-04-22 | 2016-04-06 | 在图形处理系统中对基元进行图块化 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113077531A true CN113077531A (zh) | 2021-07-06 |
Family
ID=53299011
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110312488.1A Pending CN113077531A (zh) | 2015-04-22 | 2016-04-06 | 在图形处理系统中对基元进行图块化 |
CN201610211411.4A Active CN106067188B (zh) | 2015-04-22 | 2016-04-06 | 在图形处理系统中对基元进行图块化 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610211411.4A Active CN106067188B (zh) | 2015-04-22 | 2016-04-06 | 在图形处理系统中对基元进行图块化 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10242482B2 (zh) |
EP (2) | EP3664037A1 (zh) |
CN (2) | CN113077531A (zh) |
GB (2) | GB2537659B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9633458B2 (en) * | 2012-01-23 | 2017-04-25 | Nvidia Corporation | Method and system for reducing a polygon bounding box |
GB2526598B (en) * | 2014-05-29 | 2018-11-28 | Imagination Tech Ltd | Allocation of primitives to primitive blocks |
EP3973452A1 (en) * | 2019-08-05 | 2022-03-30 | Google LLC | Systems and methods for object detection using image tiling |
GB2591803B (en) | 2020-02-07 | 2022-02-23 | Imagination Tech Ltd | Graphics processing method and system for rendering items of geometry based on their size |
GB2591802B (en) * | 2020-02-07 | 2022-03-23 | Imagination Tech Ltd | Graphics processing method and system for rendering items of geometry based on their size |
US11361400B1 (en) * | 2021-05-06 | 2022-06-14 | Arm Limited | Full tile primitives in tile-based graphics processing |
CN116385253B (zh) * | 2023-01-06 | 2024-07-23 | 格兰菲智能科技股份有限公司 | 图元绘制方法、装置、计算机设备和存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6128415A (en) * | 1996-09-06 | 2000-10-03 | Polaroid Corporation | Device profiles for use in a digital image processing system |
US6424345B1 (en) * | 1999-10-14 | 2002-07-23 | Ati International Srl | Binsorter triangle insertion optimization |
US6819321B1 (en) * | 2000-03-31 | 2004-11-16 | Intel Corporation | Method and apparatus for processing 2D operations in a tiled graphics architecture |
GB0307095D0 (en) * | 2003-03-27 | 2003-04-30 | Imagination Tech Ltd | Improvements to a tiling system for 3d rendered graphics |
TWI348651B (en) * | 2006-06-09 | 2011-09-11 | Via Tech Inc | A system for reducing bandwidth requirements for transferring graphics data and its related method |
US8059119B2 (en) * | 2007-12-05 | 2011-11-15 | Stmicroelectronics S.R.L. | Method for detecting border tiles or border pixels of a primitive for tile-based rendering |
US8237710B1 (en) * | 2009-08-28 | 2012-08-07 | Adobe Systems Incorporated | Methods and apparatus for fill rule evaluation over a tessellation |
WO2011078858A1 (en) * | 2009-12-23 | 2011-06-30 | Intel Corporation | Image processing techniques |
KR20120065589A (ko) * | 2010-12-13 | 2012-06-21 | 삼성전자주식회사 | 저전력을 위한 타일 비닝 장치 및 방법 |
US20120280992A1 (en) * | 2011-05-02 | 2012-11-08 | Shebanow Michael C | Grid walk sampling |
-
2015
- 2015-04-22 GB GB1506861.2A patent/GB2537659B/en active Active
-
2016
- 2016-01-08 GB GB1600313.9A patent/GB2537708B/en active Active
- 2016-02-01 EP EP20154807.0A patent/EP3664037A1/en active Pending
- 2016-02-01 EP EP16153696.6A patent/EP3086289B1/en active Active
- 2016-04-06 CN CN202110312488.1A patent/CN113077531A/zh active Pending
- 2016-04-06 CN CN201610211411.4A patent/CN106067188B/zh active Active
- 2016-04-22 US US15/135,674 patent/US10242482B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN106067188B (zh) | 2021-04-02 |
GB201506861D0 (en) | 2015-06-03 |
GB2537708A (en) | 2016-10-26 |
GB2537659A (en) | 2016-10-26 |
US10242482B2 (en) | 2019-03-26 |
EP3086289B1 (en) | 2020-07-29 |
GB201600313D0 (en) | 2016-02-24 |
GB2537708B (en) | 2018-02-07 |
CN106067188A (zh) | 2016-11-02 |
EP3664037A1 (en) | 2020-06-10 |
US20160314618A1 (en) | 2016-10-27 |
GB2537659B (en) | 2019-05-01 |
EP3086289A1 (en) | 2016-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106067188B (zh) | 在图形处理系统中对基元进行图块化 | |
CN106067187B (zh) | 在图形处理系统中对基元分块 | |
CN105139330B (zh) | 向图元块分配图元的方法及系统 | |
US10733796B2 (en) | Generation of a control stream for a tile | |
US20240112311A1 (en) | Graphics processing systems and methods | |
GB2537660A (en) | Tiling a primitive in a graphics processing system | |
GB2564271A (en) | Tiling a primitive in a graphics processing system | |
EP4369303A1 (en) | Graphics processing system and method of rendering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |