向图形处理系统中的区片分配图元的制作方法

文档序号:9430241阅读:564来源:国知局
向图形处理系统中的区片分配图元的制作方法
【专利说明】
【背景技术】
[0001]图形处理系统被用来处理图形数据。例如,在计算系统上运行的应用可能需要对三维(3D)场景的图像进行渲染以便对用户进行显示。该应用能够向图形处理系统发送通常为图元序列形式的图形数据,该图形处理系统能够依据该图元渲染该场景的图像。
[0002]图1示出了可以被用来渲染3D场景的图像的图形处理系统100的一些部件。图形处理系统100包括图形处理单元(GPU) 102以及两个存储器部分104jP 104 2。注意到,这两个存储器部分川七和104 2可以是或可以不是相同物理存储器的部分,并且存储器104 !和1042可能“脱离芯片”进行定位,即并不处于与GPU 102相同的芯片上。存储器(104 #口1042)与GPU 102之间的通信可以通过系统100中的通信总线来进行。
[0003]在图1所示的示例中,图形处理系统100是基于区片的延迟渲染系统,这意味着系统100的渲染空间被划分为多个区片并且在图元片段上执行纹理和/或着色以便渲染场景之前在该图元片段上执行隐藏表面去除。然而,在其它示例中,图形处理系统可以是非基于区片的和/或不是延迟渲染系统。GPU 102包括预处理模块106、分片单元108和栅格化模块110,其中栅格化模块110包括隐藏表面去除(HSR)模块112和纹理/着色模块114。图形处理系统100被布置为使得应用所提供的图元序列在预处理模块106处被接收。预处理模块106执行诸如包括剪裁和剔除的几何处理的功能以去除并未落入可见视图中的图元。预处理模块106还可以将图元投射到屏幕空间之中。预处理模块106还可以将所接收到的图元放入图元块中。
[0004]从预处理模块106输出的图元(例如,在图元块中)被送至分片单元108,分片单元108确定哪些图元存在于图形处理系统100的渲染空间的每个区片内。分片单元108通过针对区片创建显示列表而向渲染空间的区片分配图元,其中针对区片的显示列表包括存在于该区片内的图元的指示(即,图元ID)。显示列表和图元(例如,图元块中)从分片单元108输出并且被存储在存储器KM1之中。栅格化模块110从存储器104 i取得针对区片的显示列表以及与该区片有关的图元,并且HSR模块112执行隐藏表面去除以由此去除在场景中隐藏的图元的片段。其余片段被送至纹理/着色模块114,纹理/着色模块114在该片段上执行纹理/着色以确定能够被送至存储器1042以便在帧缓冲器中进行存储的渲染图像的像素颜色值。栅格化模块110对每个区片中的图元进行处理并且当整个图像已经被渲染并且存储在存储器1042中时,图像能够从图形处理系统100被输出并且例如被显示在显示器上。
[0005]增加存在于区片内的图元的数量通常将增加包括在针对该区片的显示列表中的图元ID的数量。这意味着显示列表中所包括的数据量被增加,由此使用更大数量的存储器KM1来存储该显示列表并且增加了在分片单元108和存储器104 i之间传送的数据量。此夕卜,该显示列表由HSR模块112从存储器川七进行读取,并且在显示列表中指示的图元由HSR模块112从存储器川七所取得。GPU 102和存储器104:之间的通信是相对缓慢的过程(与GPU 102上执行的过程相比),因此减少GPU 102向存储器KM1写入和/或从存储器^七读取的数据量会是有利的。

【发明内容】

[0006]提供该
【发明内容】
而以简化形式对下面在【具体实施方式】中进一步进行描述的概念的选择进行介绍。该
【发明内容】
并非意在标识所请求保护主题的关键特征或必要特征,也并非意在被用来限制所请求保护主题的范围。
[0007]提供了一种向图形处理系统中的区片分配图元的方法,该图形处理系统具有被细分为多个区片的渲染空间,其中每个区片包括针对其要执行深度比较的一个或多个多边形区域,该方法包括:
[0008]接收形成网格的多个图元;
[0009]识别该网格的外部边缘;
[0010]识别所识别的该网格的外部边缘与和区片的多边形区域的边缘对准的直线相交的交点,并且使用所识别的交点来确定该网格是否完全覆盖该区片的该多边形区域;并且
[0011]针对存在于该区片的多边形区域内的多个所接收图元中的每一个:
[0012](i)将针对该图元的第一深度值与针对该区域的深度阈值进行比较;并且
[0013](ii)依据该比较的结果,有选择地将该图元的指示包括在针对该区片的显示列表中以由此将该图元分配给该区片;
[0014]该方法进一步包括:
[0015]如果确定该网格完全覆盖该区片的该多边形区域,则依据针对该多边形区域的深度阈值与针对存在于该区片的该多边形区域内的网格的所述多个所接收图元中的至少一个的第二深度值的比较来更新针对该多边形区域的深度阈值。
[0016]例如,使用所识别的交点来确定该网格是否完全覆盖该区片的该多边形区域的步骤可以包括,针对该多边形区域的每个边缘,确定与该边缘对准的直线上的一对连续交点是否将该区域的边缘包含在该直线之上,其中该直线上的该连续交点之间的部分处于该网格内,其中针对该多边形区域中的每个边缘,如果一对连续交点利用处于该网格内的直线上的连续交点之间的部分而包含了该区域的边缘,则确定该网格完全覆盖该区域。可替换地,使用所识别的交点确定该网格是否完全覆盖该区片的该多边形区域的步骤可以包括:确定该多边形区域的边缘上是否有任何交点;并且确定该区域的边缘上的至少一个点被该网格所覆盖;其中如果该多边形区域的边缘上没有交点并且该区域边缘上的至少一个点被该网格所覆盖,则确定该网格完全覆盖该区域。
[0017]还提供了一种分片单元,被配置为向具有被细分为多个区片的渲染空间的图形处理系统中的区片分配图元,其中每个区片包括针对其要执行深度比较的一个或多个多边形区域,该分片单元被配置为接收形成网格的多个图元,其中该分片单元包括:
[0018]网格逻辑,被配置为
[0019]识别该网格的外部边缘;
[0020]识别所识别的该网格的外部边缘与和区片的多边形区域的边缘对准的直线相交的交点;以及
[0021]使用所识别的交点来确定该网格是否完全覆盖该区片的该多边形区域;
[0022]分片逻辑,被配置为针对存在于该区片的多边形区域内的多个所接收图元中的每一个:
[0023]将针对该图元的第一深度值与针对该区域的深度阈值进行比较;以及
[0024]依据该比较的结果,有选择地将该图元的指示包括在该区片的显示列表中以由此将该图元分配给该区片;和
[0025]深度阈值更新逻辑,被配置为如果确定该网格完全覆盖该区片的该多边形区域,则依据针对该多边形区域的深度阈值与针对存在于该区片的该多边形区域内的网格的所述多个所接收图元中的至少一个的第二深度值的比较来更新针对该多边形区域的深度阈值。
[0026]还提供了一种计算机可读代码,当该代码在计算机上运行时其适于执行本文所描述的示例的任意方法的步骤。此外,可以提供一种用于生成根据本文所描述的示例的任意示例的分片单元的计算机可读代码。该计算机可读代码可以被编码在计算机可读存储介质上。
[0027]如对本领域技术人员而言显而易见的,以上特征可以被适当组合并且可以与本文所描述示例的任意方面进行组合。
【附图说明】
[0028]现在将参考附图对实施例进行详细描述,其中:
[0029]图1是图形处理系统的示意图;
[0030]图2是图形处理系统的示意图,其示出了该图形处理系统内的分片单元的组件;
[0031]图3a示出了存在于区片的一个区域内的第一图元的示例;
[0032]图3b图示了第一示例中的第一图元的深度;
[0033]图3c图示了第二示例中的第一图元的深度;
[0034]图3d图示了第三示例中的第一图元的深度;
[0035]图4a示出了完全覆盖一个区域的第二图元的示例;
[0036]图4b图示了一个示例中的第二图元的深度;
[0037]图4c示出了深度阈值如何由于第二图元而被更新的示例;
[0038]图5示出了完全覆盖一个区域的图元的第一网格的示例;
[0039]图6是图示在分片单元处向区片分配图元的第一方法的流程图;
[0040]图7示出了并未完全覆盖一个区域的图元的第二网格的示例;
[0041]图8示出了完全覆盖一个区域的图元的第三网格的示例;
[0042]图9是图示在分片单元处向区片分配图元的第二方法的流程图;
[0043]图10是区片的显不列表的表不;和
[0044]图11是计算机系统的示意图。
[0045]附图图示了各个示例。本领域技术人员将会意识到,附图中所图示的要素划界(例如,方框、方框群组或者其它形状)表示划界的一个示例。可以一些示例中,一个要素可以被设计为多个要素或者多个要素可以被设计为一个要素。在适当的情况下,贯穿附图使用共同的附图标记来指示相似的特征。
【具体实施方式】
[0046]参考图1所示的图形处理系统100,如果最终将被HSR模块112确定为被其它图元所隐藏的图元并不使得其图元ID被包括在针对区片的有关显示列表之中则会是有利的。这将减少显示列表中的数据量并且也将减少将要被HSR模块112所取得的图元数据的数量。本文所描述的示例涉及图形处理系统200 (在图2中示出并且在以下详细描述)中所实施的分片(tiling)单元208。除分片单元208之外,系统200类似于图1所示的系统100。为了减少包括于显示列表中的图元数量,分片单元208能够剔除其确定被图像中的其它图元所隐藏的一些图元。分片单元208并不以HSR模块以其执行深度测试的样本分辨率来执行完整的深度测试,因为对于分片单元来说,包括充足的存储器以存储针对整个渲染空间的全分辨率深度缓冲器将会是高成本的。注意到,HSR模块针对渲染空间的区片,但是通常不是针对整个渲染空间,存储全分辨率深度缓冲器。仅针对单个区片的全分辨率深度缓冲器在基于区片的系统的HSR模块中是可能的,因为分片单元208已经执行了图元的空间存储(也被称作分片或装仓(binning))。虽然分片单元208并不存储针对清染空间的全分辨率深度缓冲器,但是其仍然能够存储能够被用来剔除一些图元的一些深度信息。分片单元208所接收的图元可能并未已经被空间存储并且因此可能具有渲染空间中的任意位置。因此,分片单元208中所存储的任何深度信息都必须表示整个渲染空间。例如,渲染空间被划分为通常为矩形的多个区片(例如,为了给出一些示例,每个区片可以包括32X32或16X 16或32X 16个渲染空间样本),但是其也可以是其它形状和/或大小,例如三角形或六边形。每个区片可以包括要针对其执行深度比较的一个或多个区域,其中如果每个区片仅包括一个区域,则该区域就是区片,并且其中如果每个区片包括多于一个的区域,则区片内的区域被称作“子区片”。针对每个区域,分片单元208能够存储指示阈值深度的深度阈值,其中如果图元相对于深度阈值并未通过深度测试,则能够确定该图元在该区域内被隐藏。如果图元针对区片的一个或多个区域的全部都被隐藏,则该图元能够从该区片中被剔除,即该图元的ID并不包括在针对该区片的显示列表中。
[0047]虽然分片单元208并不存储之前处理过的图元的全分辨率深度值,但是如以下更为详细描述的,在图元覆盖整个区域的情况下能够更新针对该区域的深度阈值。然而,图元通常随着图形数据变得更为复杂而变得更小,从而图元并非经常完全覆盖一个区域。这意味着基于完全覆盖该区域的图元而更新针对该区域的深度阈值的机会可能有所减少。然而,发明人已经意识到,图元经常是网格的一部分,并且如果图元网格完全覆盖一个区域则针对该区域的深度阈值就可以被更新。这提供了更多的机会在分片单元208中更新针对一个区域的深度阈值。进而,这意味着能够剔除掉更多的图元,由此减少被显示列表所使用的存储器数量并且减少HSR模块将要取得的图元的数量。也就是说,当网格完全粘附一个区域时,深度阈值可
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1