首页 / 专利库 / 电脑零配件 / 固件 / 软件 / 软件包 / 软件组件 / 用于处理计算机图形的方法和设备

用于处理计算机图形的方法和设备

阅读:869发布:2024-02-28

专利汇可以提供用于处理计算机图形的方法和设备专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种用于处理计算机图形的方法和设备。其中,当采用16x 采样 掩码来采样待显示的图像时,为每个被 覆盖 的采样 位置 生成和 渲染 碎片以生成渲染碎片数据。然而,为了将其采样点与所要渲染的碎片相关联,可以将16x采样掩码划分为两个等级的层级结构,也就是第一等级(其中将碎片与16x采样掩码全部16个采样点相关联),以及第二等级(其中仅将16x采样掩码的4个采样点与碎片相关联)。,下面是用于处理计算机图形的方法和设备专利的具体信息内容。

1.一种在图形处理系统中处理用于显示的计算机图形的方法,该方法包括:
生成和渲染图形碎片,以生成待显示图像的采样点的已渲染图形数据;其中:
被渲染的每个图形碎片与待显示图像的采样点集合相关联,并且将被用于为与所述碎片相关联的采样点集合的采样点中的一个或多个生成已渲染图形数据;以及
被渲染的图形碎片可以与包含不同数量的采样点的采样点集合相关联。
2.根据权利要求1的方法,其中与图形碎片相关联的每个采样点集合对应于输出设备的给定像素的采样点集合,或者对应于输出设备的部分像素的采样点集合,其中将在所述输出设备上或者经由所述输出设备显示所述图像。
3.根据权利要求1或2的方法,其中可以将图形碎片与4采样点的集合或16采样点的集合相关联。
4.根据之前权利要求中的任意一项的方法,其中可与碎片相关联的每个较小的采样点集合对应于或表示可与碎片相关联的较大的采样点集合的特定部分或子区域。
5.根据之前权利要求中的任意一项的方法,其中可将图形碎片与对应于将被应用于待处理图像的采样掩码的所有采样点的采样点集合相关联,或者与对应于将被应用于待处理图像的采样掩码的采样点子集的采样点集合相关联。
6.根据之前权利要求中的任意一项的方法,包括根据由正被处理的图元对采样点集合的覆盖来选择采样点集合,以与给定碎片相关联。
7.根据之前权利要求中的任意一项的方法,包括与每个图形碎片数据相关联,其中所述每个图形碎片数据指示:所述碎片正被用于渲染与所述碎片对应的采样点集合中的哪些采样点。
8.根据权利要求7的方法,其中:
所述数据包括用于指示所述碎片正被用于渲染的被覆盖采样位置的覆盖掩码,所述数据指示所述碎片正被用于渲染与所述碎片对应的采样点集合中的哪些采样点;以及
能够将碎片与这样的覆盖掩码相关联,其中该覆盖掩码中的每个位置表示第一数量的采样点;或者将碎片与下述覆盖掩码相关联,其中该覆盖掩码中的每个位置表示第二、不同数量的采样点。
9.一种处理用于显示的图形的方法,包括:
将待渲染的每个图形碎片与覆盖掩码相关联,所述覆盖掩码用于指示所述碎片正被用于渲染的被覆盖采样位置;其中:
每个该覆盖掩码具有多个位置,所述多个位置中的每个能够用于指示给定的一个或多个采样点是否被覆盖;以及
能够将碎片与这样的覆盖掩码相关联,其中该覆盖掩码中的每个位置表示图像的第一数量的采样点;或者将碎片与下述覆盖掩码相关联,其中该覆盖掩码中的每个位置表示图像的第二、不同数量的采样点。
10.一种图形处理系统,包括:
用于生成和渲染图形碎片、以生成待显示图像的采样点的已渲染图形数据的装置:其中:
被渲染的每个图形碎片与待显示图像的采样点集合相关联,并且将被用于为与所述碎片相关联的采样点集合的采样点中的一个或多个生成已渲染图形数据;以及
被渲染的图形碎片可以与包含不同数量的采样点的采样点集合相关联。
11.根据权利要求10的系统,其中与图形碎片相关联的每个采样点集合对应于输出设备的给定像素的采样点集合,或者对应于输出设备的部分像素的采样点集合,其中将在所述输出设备上或者经由所述输出设备显示所述图像。
12.根据权利要求10或11的系统,其中可以将图形碎片与4采样点的集合或16采样点的集合相关联。
13.根据权利要求10至12中任意一项的系统,其中可与碎片相关联的每个较小的采样点集合对应于或表示可与碎片相关联的较大的采样点集合的特定部分或子区域。
14.根据权利要求10至13中任意一项的系统,其中可将图形碎片与对应于将被应用于待处理图像的采样掩码的所有采样点的采样点集合相关联,或者与对应于将被应用于待处理图像的采样掩码的采样点子集的采样点集合相关联。
15.根据权利要求10至14中任意一项的系统,包括用于根据由正被处理的图元对采样点集合的覆盖来选择采样点集合、以与给定碎片相关联的装置。
16.根据权利要求10至15中任意一项的系统,包括用于与每个图形碎片数据相关联的装置,其中所述每个图形碎片数据指示:所述碎片正被用于渲染与所述碎片对应的采样点集合中的哪些采样点。
17.根据权利要求16的系统,其中:
所述数据包括用于指示所述碎片正被用于渲染的被覆盖采样位置的覆盖掩码,所述数据指示所述碎片正被用于渲染与所述碎片对应的采样点集合中的哪些采样点;以及
能够将碎片与这样的覆盖掩码相关联,其中该覆盖掩码中的每个位置表示第一数量的采样点;或者将碎片与下述覆盖掩码相关联,其中该覆盖掩码中的每个位置表示第二、不同数量的采样点。
18.一种图形处理系统,包括:
用于将待渲染的图形碎片与覆盖掩码相关联的装置,所述覆盖掩码用于指示每个碎片正被用于渲染的被覆盖采样位置;其中:
每个该覆盖掩码具有多个位置,所述多个位置中的每个能够用于指示给定的一个或多个采样点是否被覆盖;以及
能够将碎片与这样的覆盖掩码相关联,其中该覆盖掩码中的每个位置表示图像的第一数量的采样点;或者将碎片与下述覆盖掩码相关联,其中该覆盖掩码中的每个位置表示图像的第二、不同数量的采样点。
19.一种计算机程序组件,包括当该程序组件在数据处理装置上运行时用于执行权利要求1至9中任一项的方法的计算机软件代码部分。

说明书全文

技术领域

发明涉及计算机图形的处理,尤其涉及用于在处理计算机图形时执行抗锯齿处理的方法和设备。

背景技术

将特别参考三维图形的处理来描述本发明,但是如本领域技术人员将了解的那样,它同样也适用于二维图形的处理。
正如本领域已知的那样,3D图形处理通常通过如下处理来执行:首先对场景进行划分,以便将其显示成多个相似的基本组分(所谓的“图元(primitive)”),由此允许更容易地执行3D图形处理操作。这些“图元”通常采用的是简单多边形的形式,例如三形。
用于待显示的场景的图元通常是由图形处理系统的应用程序接口使用图形绘制指令(请求)产生的,所述指令是从要求显示图形的应用(例如游戏)接收的。
在这个阶段,每个图元通常由一组顶点来定义以及被表示为一组顶点。图元的每个顶点都将其与代表该顶点的数据集(例如位置颜色、纹理和其他属性数据)相关联。然后,例如,在光栅化(rasterising)和渲染(rendering)用于显示的顶点(该顶点与一个或多个图元相关)时使用该数据。
一旦已经生成和定义了场景的图元及其顶点,那么它们就可以由图形处理系统进行处理,以便例如显示场景。
该处理主要包括:确定覆盖待处理场景区域的采样点阵列中的哪些采样点被图元覆盖,并且然后确定每个采样点应该具有的外观(例如按照其颜色等等)以表示该采样点处的图元。这些处理通常被分别称为光栅化和渲染。
光栅化处理确定应该被用于图元的采样位置(即将被用于表示待显示场景中的图元的采样点的(x,y)位置)。该处理通常是使用图元的顶点位置来完成的。
然后,渲染处理推导出显示采样点处的图元(即“遮蔽”每个采样点)所必需的数据,例如红、绿和蓝(RGB)色值以及“阿尔法”(透明度)值。正如本领域已知的那样,该处理可以包括应用纹理、混合采样点数据值等等。
(在3D图形文献中,术语“光栅化(rasterisation)”有时用于意指到采样位置的图元转换以及渲染二者)。但是,本文的“光栅化”将只用于涉及将图元数据转换为采样点地址)。
这些处理通常是通过将采样点“表示”成离散的图形实体来执行的,其中该离散的图形实体通常被称为“碎片(fragment)”,在所述碎片上执行图形处理操作(例如渲染)是。实际上,每个采样点均由碎片来表示,该碎片将被用于渲染所讨论的采样点处的图元。该“碎片”是经过了渲染处理(渲染管线)的图形实体。
(因此,“碎片”实际上是(与其关联的)一组如内插到图元的指定屏幕空间采样点的图元数据。它还可以包括每个图元以及其他需要在所讨论的采样点(碎片位置)遮蔽图元的状态数据。在处理每个图形碎片时,每个图形碎片都可以被合理地认为是实际上与场景的“像素”等价。)
每个图形“碎片”都可以对应于最终显示中的单个像素(图像元素)(其原因在于:由于像素是最终显示中的奇点,因此,在图形处理器操作(渲染)的“碎片”与显示的像素之间可能存在一一映射)。但是可能出现这样的情况,那就是在碎片与显示像素之间不存在一一对应关系,例如在显示最终图像之前对经渲染的图像执行诸如等比缩小(down-scaling)之类的特定形式的后处理的情况。
在处理用于显示的图形时(在显示计算机生成的图像时),所遇到的一个问题是:显示图像被量化成所用的显示器(例如监视器或打印机)的离散像素位置。这样做限制了被显示的图像的分辨率,并且可能产生非预期的视觉伪像,例如输出显示设备的分辨率不足够高以显示平滑线条。这些效应通常被称为“锯齿效应(aliasing)”。
图1示出了这种锯齿效应。图1的左侧示出所要绘制的图像,而右侧示出被显示的实际图像。如可以看出的那样,白色对象的预期平滑曲线实际上在显示器上具有锯齿状外观。这正是锯齿效应。(在图1中,每个正方形均代表显示器的像素,并且十字形标记代表的是处于每个(x,y)像素位置的点,为该点确定(采样)该像素位置的色值)。例如,图1中的像素A被绘制成全白,这是因为该像素位置的颜色采样点落入白色对象以内。应该指出,在图1中只示出了所关注像素上的采样十字形标记,但在实践中,所有像素都会被采样)。
可以被肉眼看到的所有锯齿效应伪像都可以通过使用分辨率足够高的显示器来去除。但是,电子显示器和打印机的分辨率通常是有限的,并且很多图形处理系统使用其他技术来尝试去除或减小锯齿效应的影响。这些技术通常被称为抗锯齿技术。
一种已知的抗锯齿技术被称为超级采样(supersample)或过采样(oversample)。
在该方案中,存在最终显示的每个像素的多个采样点(位置),并且为每个(被覆盖的)单个采样点(例如通过将每个采样点渲染成单独碎片)取得单独的颜色采样。这样做的效果是在渲染处理期间为被图元覆盖的显示像素的每个采样点取得不同的颜色采样。
这意味着为显示器的每个像素都取得多个颜色采样(由于为每个采样点渲染了单独的色值,因此,一个颜色采样对应于像素的每个采样点)。然后,在显示像素时,这多个颜色采样被组合成像素的单个颜色。这样做的效果是在所讨论的像素位置处平滑或平均了来自初始图像的色值。
图2示出的是超级采样处理。在图2所示的示例中,为显示器中的每个像素确定四个采样点,并且在渲染处理期间为每个采样点取得单独的颜色采样。(相应地,每个这样的采样实际都可以被认为是“子像素”,其中显示器中的每个像素均由四个这样的子像素构成)。然后,指定像素的四个色值采样(子像素)被组合(下滤波(downfilter)),以使用于显示器中的像素的最终颜色是为该像素取得的四个颜色采样的颜色的恰当平均(混合)。
这样做有下述效果:平滑了被显示的图像,并且例如,通过在锯齿效应伪像周围环绕颜色的中间阴影来减小锯齿效应伪像的突出部分。在图2中可以看到这种处理,其中像素A现在具有两个“白色”采样和两个“黑色”采样,并因此在显示图像中被设置成是50%“白色”。以这种方式,基于例如发现了多少采样落在所述边缘的每一侧来对围绕白色对象边缘的像素进行模糊,从而产生更平滑的边缘。
事实上,超级采样以比将实际用于显示的分辨率高很多的分辨率来处理屏幕图像,并且然后在显示图像之前缩放和滤波(下采样)经过处理的图像,以达到最终的分辨率。这具有下述效果:提供了具有减小的锯齿效应伪像的改进图像,但却需要更高的处理能和/或时间,这是因为图形处理系统事实上必须处理与所存在的采样一样多的碎片(从而使得例如,对4x超级采样(即,其中为每一个显示像素取得4个采样)来说,处理需求比如果没有超级采样将高出四倍)。
因此,已经提出了其他的抗锯齿技术,其在仍然提供图像质量的某些改进的同时,具有比完全超级采样低的处理需求。
该技术中的一种常见技术被称为“多点采样(multi-sampling)”。
在多点采样的情况下,同样为每一个显示像素测试多个采样点,以便在将图像光栅化成碎片时(在光栅化阶段)确定指定图元是否覆盖采样点。由此,多点采样系统中的图元的采样点覆盖是以与“超级采样”系统相似的方式加以确定的(并且因此,在多点采样系统中,图元的外部几何边缘的位置实际上仍被“超级采样”(过采样)了)。
但是,在多点采样系统的渲染处理中,被所讨论的图元覆盖的指定显示像素的所有采样点都被分配了相同的单个公共数据集(例如深度值,色值等等)(而不像超级采样的情况那样每一个都具有其自己的单独数据集)。
因此,在多点采样中,同样为将构成最终显示的每个像素取得多个采样,但是对于被发现属于最终图像中的同一对象的显示像素而言,确定单个色值,并将该单个色值应用到所有的采样,而不是在渲染“像素”时为每一个采样确定单独的色值(如完全超级采样系统的情况那样)。换句话说,多点采样为场景中的指定对象的指定显示像素计算单个色值,该色值被应用于(重复用于)被该对象覆盖的显示像素的所有采样(子像素)(与为每个采样确定单独的色值的超级采样相反)。
由于只有单个色值用于指定显示像素的多个采样,因此,多点采样不如超级采样处理密集,因此可以允许比超级采样更快的处理和性能。但是,与超级采样相比,存在显示图像的质量的降低,这是因为虽然对象的边缘仍旧以较高的分辨率被采样,但颜色却并非如此。
尽管这样,很多图形处理系统使用多点采样抗锯齿技术,因为多点采样通常可以在经渲染的图像中提供足够的(以及与根本没有多点采样或超级采样时相比改善的)抗锯齿处理,而没有完全超级采样所承担的数量极大的额外处理和计算负担。
在超级采样和多点采样两方案中还可以通过为每一个显示像素取得更多采样来提高抗锯齿性能。例如,代替为每个显示像素取得4个采样(4x抗锯齿)的是,也可以改为取得16个采样(16x抗锯齿)。但是,这样做的后果是显著地增加了处理需求(如果从4x到16x,则会增加4倍),因为将需要处理更多的碎片来处理数量增长的采样,所以这可能未必是理想的或可能的。

发明内容

因此,申请人相信仍然存在对抗锯齿技术的改进,而该改进不会具有过高的性能损失。
根据本发明的第一个方面,提供了一种处理用于显示的图形的方法,该方法包括:
生成和渲染图形碎片,以生成待显示图像的采样点的已渲染图形数据;其中:
被渲染的每个图形碎片与待显示图像的采样点集合相关联,并且将被用于为与所述碎片相关联的采样点集合的采样点中的一个或多个生成已渲染图形数据;以及
被渲染的图形碎片可以与包含不同数量的采样点的采样点集合相关联。
根据本发明的第二个方面,提供了一种图形处理系统,其包括:
用于生成和渲染图形碎片以生成待显示图像的采样点的已渲染图形数据的装置;其中:
被渲染的每个图形碎片与待显示图像的采样点集合相关联,并且将被用于为与所述碎片相关联的采样点集合的采样点中的一个或多个生成已渲染图形数据;以及
被渲染的图形碎片可以与包含不同数量的采样点的采样点集合相关联。
在本发明中,通过渲染碎片(每个碎片均与图像的采样点集合相对应)来处理图像以用于显示。然而,在本发明中,为图像渲染的碎片可以被关联于(对应于和表示)包含不同数量的采样点的采样点集合。例如(并且如下文中将进一步讨论的那样),在一个优选实施例中,被渲染的指定碎片可以与包含图像的4个采样点的采样点集合相关联,或者它可以与包含图像的16个采样点的采样点集合相关联。
相应地,本发明提供了一种方案,其中可以使用将被渲染的单个碎片来表示不同数量的采样点。该方案尤其在为了渲染指定数量的采样点而需要通过渲染处理(管线)发送的碎片数量方面提供了灵活性。
例如,在每一个碎片始终与四个采样点(4x采样掩码(sampling mask))相对应而实现16x采样的系统中,将必须渲染四倍之多的碎片(如上所述,然后会承担性能损失)。
然而,在本发明中,如果例如如上所述,可以用指定碎片来表示4或16个采样点,那么作为示例,如果希望使用16x采样,则会发现同一图元覆盖了指定的16x采样掩码的所有16个采样点,具有与其相关联的16个采样点集合的单个碎片可以用于渲染被覆盖的16x掩码的所有16个采样点,而不是必须使用四个碎片来那样做。另一方面,当指定的图元没有覆盖指定的16x掩码的所有16个采样点时,则16x掩码可以改为例如使用下述碎片来加以渲染,所述碎片中的每一个对应于四个采样点,以允许在渲染处理中反映掩码的16个采样点的不完全覆盖。
由此,本发明尤其可以有效地允许使用增加的采样率(抗锯齿率等等),而不需要完全按比例增加下述碎片的数量,所述碎片被渲染以与增加的采样率完全匹配。这是因为本发明允许使用一些碎片来渲染更多数量的采样点,由此避免了改为渲染更多数量的碎片以渲染那些采样点的需要。特别地,虽然对于增加的采样率而言,本发明确实可能仍需要增加被渲染的碎片的数量,但是与如果没有使用本发明以及简单地按比例增长被渲染碎片的数量以获得增加的采样率相比,碎片数量的增加将是较小的。
此外,申请人已经认识到,在本发明中,为了增加的采样率而在待渲染碎片的数量方面的增加在实践中将是相对较小的,因为在大多数情况下,用于采样图像的较高采样率的掩码将会完全被指定图元所覆盖,并因此仍旧可以使用单个碎片(但是代表了更多的采样点)来加以渲染,且因此不需要对附加的碎片进行渲染以获得更高的采样率。
相应地,申请人相信,本发明可以允许获得更高的抗锯齿率,而不需要显著增加图形处理器的尺寸和能力,并且即使有性能降低,所述性能降低也只是相对小的。
在这里应该了解的是,在本发明中,碎片可以与包含所使用的不同数量的采样点的采样点集合动态地相关联。由此,例如,对于被渲染的任何指定图像()来说,为了渲染该图像而生成的碎片可以(优选地)与具有不同数量的采样点的采样点集合相关联。最优选的是,对于被渲染的任何指定图元来说,用于渲染该图元的碎片可以与具有不同数量的采样点的采样点集合相关联。最优选的是,碎片可以有选择地与具有不同数量的采样点的采样点集合相关联,例如且优选地,如将在下文中进一步讨论的那样,所述关联优选是以被所讨论的采样点的图元覆盖为基础的。
与每一个碎片相关联的采样点集合可以根据需要来选择。正如本领域中已知的那样,每一个采样点集合(以及相应地,每一个采样点)将表示待显示图像中的位置(x,y位置)。
在每一个采样点集合中,采样点的模式和(相对)位置(采样模式)可以根据需要来选择。例如,任何已知的适当抗锯齿采样模式都是可以使用的,例如有序网格采样(ordered grid sampling)。最优选的是,如本领域已知的那样,使用旋转网格采样模式,因为该模式提供了更好的采样效果。
如通常情况那样,当图像将被显示在具有显示器或是包含多个像素的输出的输出设备上时,可以与待渲染的碎片相关联的每一个采样点集合都优选地对应于输出设备(例如显示器)的指定像素(像素位置)的采样点集合,或是对应于输出设备(例如显示器或打印机)的像素的一部分(例如子像素)的采样点集合。在后一个方案中,多个采样点集合的群组优选地构成了显示器的像素的完整的采样点集合。在这些方案中,每一个碎片将会有效地渲染输出设备(例如显示器或打印机)的指定像素的碎片数据。
在待渲染的图形碎片可以对应于(可以表示)的采样点集合中,采样点的数量可以根据需要来选择。例如,可能存在多个等级的采样点集合,每一个等级都包含不同数量的采样点,例如包含1个采样点的集合,包含4个采样点的集合,包含16个采样点的集合,包含64个采样点的集合等等。在特别优选的实施例中,可以与图形碎片相对应的每一个采样点集合都包含多个采样点。优选地,图形碎片可以与4或16采样点的集合相关联。
在特别优选的实施例中,仅存在可以与碎片相关联的两个不同的采样点数量(等级)集合。最优选的是,这些集合是4采样点集合和16采样点的集合。
优选地,在每个不同编号的采样点集合中的采样点的数量和层级(hierarchy)中的其直接相邻的采样点集合(或多个集合)中的采样点数量与同一乘数的乘积相关。优选地,每个集合具有是紧接着该集合且编号较低的相邻集合的采样点的四倍的采样点。
同样,可以与碎片相对应的每个较小的采样点集合优选地对应于或表示较大的采样点集合的特定部分或子区域,例如较大的采样点集合的特定行或列。在特别优选的该方案中,每个较小的采样点集合都表示且对应于其紧挨着的较大相邻采样点集合的四分之一或一个象限(quadrant)。由此,例如,当指定的碎片可以与16采样点集合或是4采样点集合相关联时,每一个4采样点集合都可以优选地用于表示16采样点集合的四分之一或是一个象限。
在特别优选的实施例中,可以与碎片相关联的采样点集合中的每个都对应于采样掩码(抗锯齿掩码(mask))或是此类掩码的一部分,该掩码可以被并且旨在被应用于将要在所讨论的图形处理系统中加以渲染的图像。正如本领域中知道的那样,在将对图像进行渲染以显示时,通常,表示采样点集合的预定义采样掩码将被重复地应用于图像,以对图像进行采样。典型地并且优选地,采样掩码的每一个应用将对应于预期的输出设备(例如显示器或打印机)的指定输出像素。
因此,例如优选地,将与16x采样(例如并且优选地,多点采样)掩码对应的16采样点集合以及可与4x采样掩码或是16x采样掩码的四分之一对应的4采样点集合可以与碎片相关联。
因此,在特别优选的实施例中,指定图形碎片可以被关联于(并且用于渲染)采样掩码(或是抗锯齿掩码)的所有采样点,所述采样掩码(或是抗锯齿掩码)将被应用于待渲染的图像,或者所述指定图形碎片可以关联于(并且用于渲染)采样掩码的采样点的子集,所述采样掩码将被应用于待渲染的图像。换句话说,优选地,采样掩码到图像的指定应用可以使用单个碎片(其表示整个采样掩码)、或者通过使用一个或多个碎片(其表示采样掩码的子集)或是通过此类碎片的组合而被渲染。
同样,可以优选地使用对应于整个采样掩码的碎片和/或使用对应于采样掩码的特定子区域或部分(诸如对应于采样掩码的行、列,或者优选地采样掩码的四分之一或一象限)的碎片来渲染采样掩码的指定实例。
应该了解的是,在这些方案中,本发明实际会允许诸如16x掩码之类的指定采样掩码(例如多点采样掩码)由单个碎片来表示并且作为单个碎片而被处理,或者作为多个碎片而被处理(例如被划分成一个或多个用于渲染的较小碎片)。实际上,采样掩码可以以两个(或更多)不同的等级来表示,以便进行渲染,从而使得,例如,如果整个掩码都被覆盖,则其可以被作为单个碎片(在一“级”)来渲染,但是如果其仅被部分覆盖,那么例如,它可以被作为一个或多个较大和/或较小的“补片(patch)”(被划分成用于渲染的较小补片)来渲染,例如该渲染是使用与较少数量的采样点(在较低的等级)相关联的碎片来进行的。如上所述,这是有利的。
由此,根据本发明的第三个方面,提供了一种在图形处理系统中处理用于显示的图形的方法,在该图形处理系统中,包含采样点集合的采样掩码将被应用于待显示的图像,以便对待显示的图像进行采样,并且其中:
使用单个碎片或使用多个碎片,可以渲染与采样掩码到图像的指定应用相对应的采样点集合,从而为该采样点集合生成已渲染图形数据。
根据本发明的第四个方面,提供了一种图形处理系统,其中包含采样点集合的采样掩码将被施加于待显示的图像,以便对待显示的图像进行采样,并且其中:
使用单个碎片或使用多个碎片,可以渲染与采样掩码到图像的指定应用相对应的采样点集合,从而为该采样点集合生成已渲染图形数据。
同样,根据本发明的第五个方面,提供了一种在图形处理系统中处理用于显示的图像的方法,该方法包括:
将包含采样点集合的采样掩码应用于待显示图像,以对待显示图像进行采样;以及
生成和渲染图形碎片,以便生成用于显示的图像的采样点的已渲染碎片数据;其中:
被渲染的每一个碎片可以与对应于采样掩码的所有采样点的采样点集合、或者对应于采样掩码的采样点的子集的采样点集合相关联。
根据本发明的第六个方面,提供了一种图形处理系统,包括:
用于将包含采样点集合的采样掩码应用于待显示图像,以对待显示图像进行采样的装置;以及
用于生成和渲染图形碎片,以生成用于显示的图像的采样点的已渲染碎片数据的装置;以及
用于将被渲染的每一个碎片与对应于采样掩码的所有采样点的采样点集合、或者对应于采样掩码的采样点的子集的采样点集合相关联的装置。
如本领域技术人员将会了解的那样,当恰当时(as appropriate),本发明的这些方面和实施例可以并且优选地包括本文所描述的本发明的任何一个或多个或所有优选和可选的特征。因此例如,抗锯齿掩码优选包含16个采样点,并且优选地可以使用与16或是4个采样点相对应的碎片来进行渲染。
优选的,可以使用表示整个掩码的碎片或是使用表示采样掩码的特定子区域或部分的碎片来渲染抗锯齿掩码。
最优选地,可以使用表示所述掩码的所有采样点的单个碎片来渲染所应用的采样掩码的指定实例,或者可以使用与所述掩码的较小部分或子区域(例如四分之一或象限)相对应的一个或多个碎片来渲染所应用的采样掩码的指定实例,或者可以既使用表示所述掩码的所有采样点的碎片又使用作为与采样掩码的较小部分或子区域相对应的一个或多个碎片来渲染所应用的采样掩码的指定实例。
虽然在本发明中碎片可以与包含不同数量的采样点的采样点集合相关联,但是典型地且优选地,在使用本发明时,对于所有不同编号(numbered)的采样点集合来说,无论每一个集合中有多少个采样点,在可以与碎片相关联的不同编号的采样点集合中的单独的采样点将始终处于相同的采样分辨率。
因此,例如,如果将16x采样掩码应用于图像,那么本发明将例如使用一个与16个采样点相对应的碎片来渲染该掩码的所有16个点,或者例如使用一个或多个碎片(假定该一个或多个碎片中的每一个都对应于所述掩码的四个采样点)来渲染所述掩码的采样点。但是,每个集合的单独的采样点自身将始终是每一个均表示相同的采样分辨率;只有指定碎片可以用于渲染那些采样点中的更多或更少的采样点。
由此,在特别优选的实施例中,可以与本发明中的碎片相关联的采样点集合中的采样点的每一个均表示被采样的图像中的相同采样分辨率。
在本发明中,指定图形碎片可以与包含不同数量的采样点的采样点集合相关联。同样,例如可以使用单个碎片、或使用多个碎片、和/或使用表示采样掩码的不同子部分的碎片来处理指定的采样掩码。因此,将与一个或多个碎片相关联的采样点的数量可以在使用中动态地改变。当对指定图像进行处理以便显示时,这可以优选地被选择性地进行。
由此,本发明优选地包括用于选择将与待渲染的碎片相关联的采样点集合的步骤或装置。
同样,本发明优选包括下述步骤或装置,所述步骤或装置用于有选择地处理应用于待显示图像的采样掩码的采样点集合作为代表采样掩码的所有采样点的单个碎片、或者作为每一个都代表采样掩码的采样点的子集的一个或多个碎片、或者作为代表采样掩码的所有采样点的碎片的组合以及每一个都代表采样掩码的采样点的子集的一个或多个碎片的组合。
由此,在特别优选的实施例中,本发明包括下述步骤或装置,所述步骤或装置用于有选择地将被渲染的每个碎片与对应于采样掩码的所有采样点的采样点集合或对应于采样掩码的采样点的子集的采样点集合相关联。
选择将什么采样点集合与给定碎片相关联以及选择如何处理采样掩码的给定实例(instance)优选地基于由正被处理(采样)的图元对采样点集合和/或采样掩码的覆盖。
由此,例如并且优选地,如果给定采样掩码(采样点集合)完全被图元所覆盖,那么优选地使用与采样掩码的所有采样点相对应的单个碎片来对其进行渲染。但是,如果采样掩码没有完全由被采样的图元覆盖,则可以改为例如将所述采样掩码处理为一个或多个碎片,所述一个或多个碎片中的每一个都对应于采样掩码的子补片(sub-patch)。
由此,在特别优选的实施例中,本发明包括下述步骤或装置,所述步骤或装置用于确定由将被渲染的图元对采样点集合的覆盖,以及根据所确定的由被采样的图元对采样点的覆盖来选择将与将被渲染的碎片相关联的采样点的数量。
同样,本发明优选地包括下述步骤或装置,所述步骤或装置用于确定由将被渲染的图元对包括采样点集合的采样掩码的覆盖,并且根据由将被渲染的图元对采样掩码的覆盖来将对应于采样掩码的采样点集合有选择地渲染作为对应于采样掩码的所有采样点的单个碎片,或者作为对应于采样掩码的采样点的子集的一个或多个碎片,或者作为其组合。
由此,在特别优选实施例中,本发明包括用于通过下述方式处理待显示图像的图形图元的步骤或装置,所述方式为:
为多采样点集合的每一个采样点确定图形图元是否覆盖了所述采样点;以及
如果图元覆盖了采样点集合的所有采样点,那么生成对应于将被渲染的多采样点集合的单个图形碎片,从而为采样点生成渲染碎片数据;或者
如果图元没有覆盖采样点集合的所有采样点,那么有选择地生成一个或多个与用于渲染的采样点集合的全部采样点或采样点的子集相关联的碎片,从而为采样点生成渲染碎片数据。
应当理解,尽管在本发明运作的很多情况下碎片所对应于的采样点集合将完全由正被采样的对象(例如图元)覆盖,然而这并不总是这样的情况,并且如果是那样的话,仅有一些而不是所有的与碎片相关联的采样点将被例如所讨论的图元覆盖。在后者的情况下,正如本领域所已知的那样,碎片的渲染碎片数据应当用于那些被(图元)覆盖的采样点,而不应当用于那些没有被(图元)覆盖的采样点(因为那些采样点实际上会被例如图像的另一个图元覆盖)。这将例如没有必要为那些没有被覆盖的采样位置在渲染碎片数据阵列中存储渲染碎片数据。
由此,在一个特别优选实施例中,每个图形碎片已经与其数据相关联,所述数据指示碎片对应的采样点集合中的哪些采样点被(例如,并且优选地,正被采样的图元)覆盖,即,事实上,碎片正被用于渲染碎片所对应的采样点集合中的哪些采样点。然后,系统优选地运行从而为所指示的被覆盖的采样位置而不是为剩余的与碎片相关联的采样位置在碎片数据阵列中存储渲染碎片数据。
指示碎片正被用于渲染哪些被覆盖的采样点的信息优选地与下述碎片的碎片数据相关联或是下述碎片的碎片数据的一部分,所述碎片通过渲染器(例如碎片的阿尔法值和RGB)。优选地,对于与碎片相关联的采样位置集合的每个采样位置,以覆盖掩码的形式指示采样位置是否被覆盖,实际上也就是碎片是否正被用于渲染那个采样点(即,是否应当为那个采样点存储它的数据)。优选地,这个覆盖掩码具有代表采样位置的位图的形式。
已经发现这个方案是一种将给定碎片与适当的采样点相关联的非常方便的方式。
在这些方案中,虽然将可以单独地用与碎片相关联的覆盖信息来指定每个采样位置的覆盖(例如,采用16-位置的覆盖掩码用于对应于16个采样点的集合的碎片,以及采用4-位置的覆盖掩码用于对应于4个采样点的集合的碎片),但是在优选实施例中,覆盖信息(掩码)能够(有选择地)共同地(collectively)指示多个采样位置的覆盖(优选地采用单个位)。这允许使用较小的覆盖掩码等,即使碎片对应于更多采样位置。
最优选地,每个碎片与相同大小的覆盖掩码相关联(根据采样位置的数量,覆盖掩码能够指示是否被覆盖),而不管碎片可以表示多少实际采样位置。换句话说,根据在与所讨论的碎片相关联的采样点集合中有多少采样点,与碎片一起使用的覆盖信息(掩码)优选地具有固定数量的位置(例如,并且优选地,4),其能够指示是否被覆盖,并且每个这样的位置表示一个或者多个采样点。
在一个这样的特别优选的实施例中,每个碎片使其与表示4个可能的采样位置的覆盖信息(覆盖掩码)相关联,并且覆盖掩码的每个这样的位置能够表示单个采样点(如果碎片与4个采样点的集合相关联)或者4个采样点(如果碎片与16个采样点的集合相关联)。
我们相信这样的方案对它们本身来说会是新的并且有益的。
由此,根据本发明的第七个方面,提供了一种处理显示的图形的方法,包括:
将待渲染的图形碎片与覆盖掩码相关联,所述覆盖掩码用于指示每个碎片正被用于渲染的被覆盖的采样位置;其中
每个覆盖掩码具有多个位置,所述多个位置中的每个能够用于指示采样点是否被覆盖;以及
能够将碎片有选择地与其中覆盖掩码中的每个这样的位置表示图像的第一数量的采样点的覆盖掩码相关联,或者与其中覆盖掩码中的每个这样的位置表示图像的第二、不同数量的采样点的覆盖掩码相关联。
根据本发明的第八方面,提供一种图形处理系统,包括:
用于将待渲染的图形碎片与覆盖掩码相关联的装置,所述覆盖掩码用于指示每个碎片正被用于渲染的被覆盖的采样位置;其中:
每个覆盖掩码具有多个位置,所述多个位置中的每个能够用于指示采样点是否被覆盖;以及
能够将碎片有选择地与其中覆盖掩码中的每个这样的位置表示图像的第一数量的采样点的覆盖掩码相关联,或者与其中覆盖掩码中的每个这样的位置表示图像的第二、不同数量的采样点的覆盖掩码相关联。
正如本领域技术人员所领会到的那样,如果适合的话,本发明的这些方面和实施例能够并且优选地包含在此描述的本发明的优选和可选的特征中的任意一个、或多个或全部。由此,例如,每个覆盖掩码位置能够优选地表示一个或4个采样点。同样地,覆盖掩码优选地具有4位置位图的形式。
在对所有的碎片使用相同的覆盖掩码结构的情况下,无论碎片表示多少采样位置,都优选在覆盖掩码(信息)中的每个位置表示一个对应的位置或者采样点集合中的位置集合。由此,例如,在使用4-位置覆盖掩码、以及可将碎片与4或16个采样点相关联的情况下,覆盖掩码中的每个位置当用于16采样点碎片时,优选地表示对应于该位置的16-采样点集合的4个采样点的四分之一(quarter)或者象限(quadrant)。
除了与给定碎片所对应的采样点的覆盖有关的信息之外,在本发明中还可能是必要的是:提供指示例如碎片所对应的采样点集合的大小和/或在例如碎片所对应的给定采样掩码内的子集(子位置)的信息。可以按照所期望的,例如通过例如采用在现有碎片数据字段中可获得的备用容量(spare capacity)再次将信息与所讨论的碎片相关联来提供该信息。
尽管已经特别参考表示16x采样掩码及此种掩码的1/4的碎片的使用描述了以上方案,但是当然其他方案也将是可能的,并且在一个优选的实施例中其他方案被使用。
如果需要,例如,可以对碎片使用4-位(bit)位置覆盖掩码来以不同的方式表示16x采样掩码。例如,在覆盖掩码中的每一位位置(bit position)不需要表示16x掩码的象限,但是能够例如表示16x掩码的行或列、或一些其他部分。
具有多于一个等级的采样掩码的子划分也将是可能的(并且在一个优选实施例中,这被实施),以至于,例如,系统可以使用64x采样掩码(其然后能被表示为64x“补片(patch)”)作为一个或多个16x“子补片”和/或作为一个或多个4x“子补片”等等。仅在一个方向上实施任意采样掩码子划分同样也将是可能的(并且在一个优选实施例中,这被实施),以至于如果需要,则会具有例如32x和/或8x“子补片”。
同时,例如,可以定义指示没有(“0”)覆盖的覆盖掩码作为表示替代的另一个覆盖模式(代替0覆盖),诸如:对应于覆盖掩码的不同形式,其中,可能就是这样,在实践中从来不会想过将具有零覆盖的碎片发送通过渲染处理(以至于覆盖“0”掩码实质上就是“备用”覆盖掩码值)。
将会领会到的是,例如,在本发明中,所应用的采样掩码的给定实例可以例如被渲染成为表示掩码的所有采样点的单个碎片,或者可以例如被渲染成一个或多个对应于掩码的较小部分的碎片,或者是两者的结合。因此,可以期望的是,确保为相关的采样点生成相同的渲染数据值(例如,合成色值),而不管是否利用对应于整个掩码的单个碎片来渲染“掩码”。
由此,在优选实施例中,碎片的处理被配置从而使得能够(并且将)为每个相应的采样点生成相同的渲染碎片数据值,而不管在与用于渲染采样点的碎片相关联的采样点集合中的采样点的数量(例如,并且优选地,不管是否利用单个碎片或者作为一个或多个子补片来渲染采样掩码的给定实例)。
由此,在优选实施例中,如果质心映射被禁用,那么对每个碎片使用相同的重心坐标,而无论有多少采样点在与碎片相关联的采样点集合中(也就是说,以至于,尤其是,包含比全采样掩码(即,其中采用较小“补片”来处理采样掩码)少的采样点的采样点集合相关联的碎片使用相同的重心坐标作为表示全采样掩码的碎片)。这会具有如下效果:每个较小“补片”碎片的纹理坐标将与当单个碎片用于采样掩码的所有采样点时相同。实际上,这还会具有加速处理的效果,因为纹理缓存会经历更多的点击数(hits)。
另一方面,如果允许质心映射,那么优选地将质心映射单独地应用于每个对应于采样掩码的子集(子补片)的碎片。
另外一个事实是一些图形处理器渲染特定群组中(例如2x2组中)的碎片,并且要求特定的组排列或顺序,以达到例如生成诸如用于导出派生物(derivatives)的数据以用于渲染处理的目的。在这种情况下,其中渲染每一个都对应于采样掩码的子集的碎片,于是必要时,优选地在适当的群组(例如,2x2组)中通过渲染处理来处理碎片,其中每个群组例如在组中的适当位置中例如包括表示来自每个相应的原始采样掩码的采样点的碎片,以便保存正确的数据(例如派生物生成结果)。
可替换地或附加地,待渲染的一个或多个碎片上可以包括附加信息(数据)(例如通过将该数据放置在待渲染碎片的冗余采样点位置中)以允许当渲染碎片时仍然能导出正被渲染的碎片所需的数据,诸如派生物,其可能依赖于其他碎片或采样掩码应用等。
可以以任意适当的和所期望的方式来执行本发明中的碎片的产生和渲染,并且本发明中的碎片的产生和渲染可以包含例如任意适当的和所期望的光栅化(rasterising)以及然后是渲染处理。例如,该渲染处理可以包括碎片着色(fragmentshading)、混合、纹理映射等等。
同样,可以以任意适当的和所期望的方式来执行给单个或多个碎片等“分配”采样掩码。优选地,这作为光栅化处理的一部分或者在光栅化之后,但在碎片进入“着色”(渲染)管线之前执行,因为这将会变得更方便。
正如本领域所已知的那样,为每个碎片和采样点确定和存储的渲染碎片数据应当被存储在适当的采样数据阵列中。这个阵列应当,正如本领域知晓的那样,表示例如采样位置的二维阵列,其之后能被适当地处理以例如显示像素的2D阵列。
正如本领域技术人员所领会到的那样,本发明比如以16x采样而不是4x采样来用于处理图像,这将会导致渲染碎片数据4倍于采样位置。
考虑到这个,简单地增加渲染碎片数据阵列的大小将会是可能的。然而,在一个优选实施例中,其中采用了较高的采样率,以压缩的形式存储渲染碎片数据。这能够避免增加渲染碎片数据阵列大小的需求,但是仍然不应当对输出图像质量太有害,因为压缩将会处于子显示像素等级并且所以任意压缩赝像将仅会非常少地继承显示像素等级。
在这里我们应当注意,正如从以上能够领会到的那样,本发明涉及产生和渲染碎片以便为各个采样点产生渲染的图形数据(而不是,例如为了显示该数据而读取已经生成的采样数据的处理)。于是,正如本领域所已知的那样,如此生成的渲染数据会如上所述地被存储在诸如区(tile)和/或帧缓冲器之类的适当的缓冲器或采样数据阵列中,用于随后向显示设备供应。正如本领域所已知的那样,如果需要,可能会存在以固定或以可变形式的、从采样缓冲器到帧缓冲器和/或输出显示的下采样。
将领会到的是,因为待显示图像通常会由多个图元组成,所以在实践中将会为组成图像的每个图元重复本发明的方法,从而使得最终为显示整个图像(或者,例如在基于区块的渲染系统中的图像的相关部分)所需的图像的每个采样点生成了适当的渲染碎片数据集合,然后其数据可以例如被下采样用于显示。优选地,在被采样的整个图像上应用相同大小的采样掩码。
可以将给定的图形处理器配置为一直以本发明的方式来运行。然而,在优选实施例中,方案是这样,以使得能够可选择地将图形处理器设置为以本发明的方式来运行。
最优选地,图形处理器能够以本发明的方式来运行,或者能够采用每个碎片的固定的采样点集合来渲染图像。例如,在一个特别优选实施例中,可以以本发明的方式运行的图形处理器能够被可选择地配置为采用4x采样掩码(该情况下将不使用本发明)或者采用16x采样掩码(在该情况下使用本发明)来处理显示的图像。
最优选地,能够通过正调用图形处理的应用程序来设置这些不同的操作模式。于是,这将允许例如应用程序开发者在比如“普通”4x多点采样或采用本发明的16x多点采样之间进行选择。事实上,本发明的优点在于其不需要对处理器的硬件做出明显的改变就便利了采用不同的多点采样等等、速率。
在一个特别优选实施例中,在单个图形处理平台上实施本发明的各种功能,所述图形处理平台产生并输出被写到显示设备的帧缓冲器的数据。
本发明适用于任意形式或配置的渲染器,诸如具备“管线”布置的渲染器(在这种情况下,渲染器将具有渲染管线的形式)。在一个优选实施例中,这被应用于硬件图形渲染管线。例如,并且优选地,通过合适的功能单元、处理逻辑、处理器、电路、处理电路、微处理器装置等等,能够按照期望来实现本发明的各种功能和元件等。
尽管本发明特别适用于采用延迟模式渲染的图形渲染器并且尤其是基于区块的渲染器,但是本发明适用于所有形式的渲染,诸如即时模式渲染、延迟模式渲染、基于区块的渲染等等。
就像将会从以上所领会到的那样,尽管不是排他地,但是本发明特别适用于3D图形处理器和处理设备,并且相应地扩展到3D图形处理器和3D图形处理平台,所述3D图形处理平台包括根据在此描述的本发明的任意一个或多个方面的装置或者根据在此描述的本发明的任意一个或多个方面进行操作的装置。关于执行以上所讨论的特定功能所必需的任意硬件的问题,此种3D图形处理器另外可以包括3D图形处理器所包括的任意一个或多个或者所有的通用的功能单元等等。
同样地,本发明扩展到2D图形处理器和2D图形处理。
本领域技术人员同样将领会到,本发明的所有实施例和所描述的方面可以,并且优选地,酌情包括在此描述的任意一个或多个或者所有的优选和可选特征。
至少部分地采用软件(例如计算机程序),可以实施根据本发明的方法。于是我们将会看到,当从更进一步的方面看时,本发明提供了当被安装在数据处理装置中时特别适于执行在此描述的方法的计算机软件、包含当程序组件在数据处理装置上运行时用于执行在此描述的方法的计算机软件代码部分的计算机程序组件,以及包含适于当程序在数据处理系统上运行时执行方法或在此描述的方法的所有步骤的代码装置的计算机程序。数据处理器可以是微处理器系统、可编程FPGA(现场可编程阵列)等等。
本发明还扩展到包含此种软件的计算机软件载体,当利用该种软件操作包含数据处理装置的图形处理器、渲染器或微处理器系统时引起所述数据处理装置、所述处理器、渲染器或系统协力来执行本发明方法的步骤。此种计算机软件载体可以是物理存储介质(例如ROM芯片、CD ROM或磁盘),或者可能是一种信号(例如电线上的电信号光信号或者无线信号(例如到卫星等))。
将会更进一步地领会到,并不是本发明的方法的所有步骤都必须由计算机软件来执行,并且由此,从更宽泛的方面来看,本发明提供了计算机软件以及在计算机软件载体上安装的、用于执行在此提出的方法的至少一个步骤的该软件。
因此,本发明可以适于被体现为用于与计算机系统一起使用的计算机程序产品。该实施方式可以包含一系列固定在有形介质上(例如计算机可读介质,例如磁碟、CD-ROM、ROM或硬盘)的计算机可读指令,或者经由调制解调器或其他接口设备经过有形介质(包括但不限于光或模拟通信线路)或采用无线技术的无形事物(包括但不限于微波、红外线或其他传输技术)可传输至计算机系统的计算机可读指令。该计算机可读指令序列体现了在此先前描述的全部或部分功能。
本领域技术人员将领会到,可以以大量的用于与很多计算机体系结构或操作系统一起使用的编程语言来编写这样的计算机可读指令。更进一步,可以采用任意的现在的或将来的存储技术来存储这样的指令,所述存储技术包括但并不限于半导体、磁的或光的,或者可以采用任意的现在的或将来的通信技术来传输这样的指令,所述通信技术包括但并不限于光的、红外线或微波。可以预期的是,这样的计算机程序产品可以作为具有附随的印刷或电子文档的可移动介质(例如,收缩包装软件)发布、被预先装载在计算机系统中(例如,在系统ROM或固定盘上)或者从服务器或电子公告板通过网络(例如,因特网或万维网)发布。
附图说明
仅通过示例的方式并且参考附图来描述本发明的多个优选实施例,在附图中:
图1示意性地示出了锯齿效应;
图2示意性地示出了超级采样抗锯齿技术;
图3示意性地示出了待显示的图像;
图4示出了示范性的用于本发明实施例中的采样模式;
图5示出了可以根据本发明操作的图形处理平台的实施例;
图6示出了图3的像素的放大图;
图7图解说明了与在本发明实施中将要渲染的碎片相关联的数据;
图8示意性地示出了本发明实施例中的、碎片与不同数量的采样点的集合的关联;
图9图解说明了与在本发明实施例中将要渲染的碎片相关联的数据;以及
图10和11示意性地示出了本发明的更进一步优选的方案。

具体实施方式

现在,将会在处理显示的3D图形的情况下说明本发明的优选实施例。然而,正如本领域技术人员将领会到的那样,本发明不限于处理3D图形并且还有其他的应用。
正如本领域所已知的那样,且如上所述,当将要显示3D图形图像时,其首先通常被定义为一系列图元(多边形),该图元然后被依次划分(光栅化)为图形碎片用于图形渲染。在普通的3D图形渲染操作期间,渲染器会修改与每个碎片相关的(例如)色彩(红、绿和蓝,RGB)和透明度(阿尔法,a)数据,以使碎片能够被正确地显示。一旦碎片已经完全经过渲染器,则在存储器中存储它们的相关联数据值,为输出用于显示作准备。
特别地,本发明涉及当显示图形图像时使抗锯齿操作更为便利。正如本领域所已知的那样,通过得到待显示图像的多个采样并且然后将那些采样下采样到显示的输出分辨率来实施抗锯齿。
示意性地示出了在本实施例中采用的基本抗锯齿方案的图3示出了采样掩码34到待显示图像的重复应用。采样掩码34的每个应用对应于图像的像素,就像它将被显示那样。
正如本领域所已知的那样,每个采样掩码包括采样点集合,所述采样点集合将用于采样所讨论的输出像素的图像,并且相应地确定在最终的显示上将如何显示像素。
在本实施例中,采样掩码34的每一个实例可以取16个采样点或可以取图像的4个采样点。示出了这些采样掩码的展开图的图4图解说明了这一点。
图4示出了2个16x采样掩码37、38,它们中的每一个都表示16个采样位置35的阵列。第一掩码37具有采样位置35的有序栅格,而第二掩码38具有采样位置的旋转的栅格。图4还示出了两个对应的4x采样掩码39(具有有序的栅格)、34(具有旋转的栅格),其每一个都表示4个采样位置36的集合。
正如将会在以下进一步讨论的那样,在本实施例中,可以采用图4中示出的4x采样掩码中的任一个或16x采样掩码中的任一个来处理图像。
图3还示出了以单个图元32的形式覆盖在采样掩码阵列30上的图像。(将领会到的是,为了简便起见,在图3中将图像显示为包含单个图元,并且如本领域所已知的那样,在实践中图像可以、并且通常会包含很多重叠、图元)。正如可以从图3看到的那样,图元32完全地叠加在采样掩码阵列30中的某些采样掩码上面,但仅穿过其他采样掩码的某些的部分。
实质上,为了处理图像的图元32,渲染系统将在光栅化阶段确定每个采样掩码应用的每个采样点集合中的哪些采样点被图元32覆盖,并且然后为那些被覆盖的采样点渲染和存储数据,以使得图元32的图像能被适当地显示在显示设备上。
现在将参考图5来描述在本实施例中以这种方式处理图元32的图像以用于显示,图5示意性地示出了能够根据本发明操作的3D图形处理平台的实施例。在图5中示出的3D图形处理平台是基于区块的渲染器,虽然如本领域技术人员将领会到的那样,可以采用其他的渲染装置(并且事实上,本发明还可以同等地用于二维图形处理)。
在图5中示出的图形处理平台包括光栅化器(rasteriser)50,其接收用于渲染的图形图元,以及将图元数据转换为用于渲染图元的具有适当位置的图形碎片。
之后,还有具有渲染管线形式的渲染器51,其接收来自光栅化器50的用于渲染的图形碎片,并且对那些图形碎片应用多个渲染操作(例如纹理映射、雾化、混合等等),来为碎片的显示生成适当的碎片数据。在渲染管线的区块缓冲器52中存储来自渲染器51的渲染碎片数据以用于随后的处理。
正如本领域所已知的那样,区块缓冲器(tile buffer)52存储表示待显示图像的部分的碎片数据阵列。一旦处理完每个区块,它的数据将会被输出至适当的存储器,并且之后处理下一个区块,诸如此类,直到已经处理了足够的区块来显示整个图像。
在本实施例中,提供了3个区块缓冲器52。每个区块缓冲器以32x32阵列(即,对应于待显示图像中的采样位置的32x32阵列)存储它的碎片数据。这些区块缓冲器可以作为独立的缓冲器被提供,或者实际上可以全部是同一个较大的缓冲器的部分。它们位于(局部于)图形处理平台(芯片)上。
正如本领域所已知的那样,将来自区块缓冲器52的数据输入至下采样单元53,并且从那里输出至显示设备55的帧缓冲器54(其可能不在图形处理平台本身上)以用于在显示设备55上显示。显示设备55可以包含,例如包含像素阵列的显示器(诸如计算机监视器或打印机)。
下采样单元53对存储在区块缓冲器中的碎片数据进行下采样以达到显示设备55的适当分辨率(即,从而使得产生对应于显示设备像素的像素数据阵列)。
由此,例如,每个32x32数据位置区块缓冲器将对应于待显示图像中的16x16像素阵列,其中在区块缓冲器和显示帧缓冲器之间采用4x下采样(因为在这种情况下每个像素实际上会具有4个与其相关的采样点)。
在这个实施例中,采用三个区块缓冲器中的两个来为每个采样点存储色彩(红、绿、蓝)值(采用一个区块缓冲器用于这个目的也是可能的,但是优选地是两个),并且采用一个区块缓冲器来为每个采样点存储Z(深度)值和模板值。当然,其他的方案也是可以的。
在本实施例中,不是为区块缓冲器52中的每个单独的采样(数据)位置(即,为每个单独的采样点)渲染分别的碎片,而是为多个采样点的集合渲染一个碎片。
首先将描述这个处理,其中对所要显示的图像应用具有4个采样位置的采样掩码(即,4x采样掩码)。
在这种情况下,为对应于采样掩码的给定应用的每个4个采样点集合渲染一个碎片。换句话说,一次采用单个碎片来一起渲染采样掩码(并且相应地图像中的像素)的给定应用的采样点集合的所有4个采样点。
然后,一旦已对碎片渲染,就将渲染碎片数据以多个备份存储在区块缓冲器52中的适当采样位置中,以便为采样掩码的每个单独采样位置提供独立的碎片数据集合。
由此,在本示例中,考虑到包含图3中所示图元32的图像,光栅化器50将从图形处理系统接收那个图元,并且之后确定图像的哪些采样点集合(即,事实上在阵列30中的采样掩码34的哪些应用)包括被图元32覆盖的采样点。(这可以以本领域已知的任意适当方式来执行)。然后,光栅化器50将会为被发现包括被图元32覆盖的采样点的采样掩码的每个应用生成碎片。之后,其将传送那些碎片到渲染器51中以用于渲染。
图7示意性地示出了数据70,该数据在每个碎片被渲染之前被为每个碎片生成并通过渲染器51。如在图7中示出的那样,与每个碎片相关联的数据包括,尤其是,碎片的x,y位置71(其表示在碎片所对应的采样点集合(采样掩码的应用)的图像中的x,y位置(实际上在图像中的相关像素的本实施例中),连同必需的每碎片数据72(例如碎片的色彩(RGB)、透明度(阿尔法)、深度(Z)以及模板值)。正如本领域所已知的,这个每碎片(per fragment)数据72被渲染器51的渲染单元使用并且适当地修改以提供碎片的碎片数据的输出集合,其之后被存储在区块缓冲器52中。
与碎片相关联的数据70还包括具有表示在碎片所对应的采样点集合(采样掩码)内的每个采样位置的、位阵列形式的覆盖掩码73。如果在光栅化阶段发现对应的采样位置被所讨论的图元覆盖,则将位阵列覆盖掩码73中的每个位置设置为“1”;如果采样位置没有被所讨论的图元覆盖,则设为“0”。这允许渲染处理知道与给定碎片相关联的哪些采样点实际上被所讨论的图元32覆盖,从而使得渲染处理可以确保仅为被图元所覆盖的采样点利用(和例如存储)碎片的渲染碎片数据。
这是必要的,因为正如从图3可以看到的那样:并不是用于采样掩码34的应用的采样点集合的所有采样点都会必然被图元覆盖。
例如,正如在图6(其示出了与所要渲染的图元32相关的、图3中的采样掩码应用(像素)33的采样点集合的放大视图)中所描述的那样,可以看出就采样掩码33的4个采样点的集合来说,图元32覆盖了采样点43和44,但是该图元没有覆盖采样点45和46。
因此,光栅化器50将为采样掩码33的采样位置集合生成用于渲染的碎片,因为那个采样位置集合包括两个被图元32覆盖的采样位置43、44。然而,由于图元32仅覆盖了采样位置43、44,所以应当针对那些采样位置而不是针对采样位置45和46来将渲染碎片数据仅存储在区块缓冲器52中。
因此,针对图6中示出的采样掩码(像素)33的采样位置集合,光栅化器将生成“0101”形式的覆盖掩码73(如在图7中所示出的那样)以指示碎片70正在渲染采样位置43和44,但是该碎片并没有在渲染采样位置45和46(因为图元32没有覆盖它们)。
由此,当光栅化器50接收到用于渲染的图元32时,它会首先确定阵列30的哪些采样点集合(采样掩码)包括被图元32覆盖的采样点,并且为那些采样点集合的每一个生成碎片,所述碎片使其自己与图7中所示出形式的数据相关联。
之后,每个碎片将被依次通过渲染器51以用于渲染。在本实施例中,发送碎片至渲染器51以用于以2x2碎片的块进行渲染,即,从而使得渲染引擎有效地以4碎片块、2碎片宽乘2碎片高来处理碎片。当然,其他的方案(例如在渲染器中逐一地处理碎片)也是可以的。
正如本领域已知的那样,渲染器51将在它所接收的碎片上执行渲染操作。例如,这些渲染操作会包括修改碎片的色彩(RGB)和透明度(A)值来为每个碎片提供最后的渲染碎片数据。在本实施例中,渲染器51包括纹理映射阶段,所述阶段基于与每个碎片相关联的纹理位置数据(s,t)(这在图7中并未示出)来执行纹理映射处理。
在本实施例中,根据共同地将碎片用于渲染的被覆盖采样点在图像中的定位(位置),来选择在图像中的、纹理映射处理用以确定将被应用于碎片的纹理(色彩)的位置,即,采用“加权的”纹理采样位置。
当然,其他的纹理采样位置方案也是可以的。例如,可以简单地在所讨论的采样图案(sampling pattern)的中心执行全纹理查找(all texture look-ups)。
这里将领会到,因为每个碎片都经历了单个纹理查找,所以在本实施例中与每个碎片相对应的采样点集合会共同经历单个纹理查找(即,对与碎片相关联的采样点集合的所有采样点使用纹理操作),即,以多点采样的方式来有效地处理采样点集合。
一旦碎片已被渲染,它们的数据需要被适当地存储在区块缓冲器52中。依据本实施例,将每个所渲染碎片的数据存储在区块缓冲器阵列中的适当的一个或多个采样位置中,正如与每个碎片相关联的覆盖掩码73所指示的那样。由此,在图7中所示例的碎片70的情况下,例如,将该碎片的渲染数据存储在区块缓冲器52中的两个采样位置中,而不是在其他的、与碎片70相关联的两个采样位置中。
如上所述,存储在区块缓冲器52中的碎片数据包含每个采样位置的色彩(RGB)、透明度(A)、深度(Z)和模板值。可以以任意适合的形式来存储该数据。
正如本领域技术人员将领会到的那样,将被存储在区块缓冲器中的新渲染碎片数据可以并且通常会需要与已经存储在区块缓冲器中的数据混合,正如本领域所知的那样。由此,在采用给定碎片来共同渲染多于一个采样位置的情况下(即,从而使得来自碎片的数据将被存储在区块缓冲器中的多个采样位置中),于是应当以适当的方式来执行这个混合操作以达到此,即,将新渲染碎片数据适当地混合到区块缓冲器中的每个适当的采样位置中。由此,例如,可以例如以适当地“并行的”方式来执行混合操作以将渲染碎片数据混合到多个、并行的区块缓冲器中。
一旦对所有涉及图元32的碎片完成这个处理,之后就可以对图像的接下来的图元重复这个处理(因为,如上所述,图像通常将会由多个图元而不仅是单个图元32构成)。对图像的所有图元重复上述处理,直到区块缓冲器52已经将适当的数据存储在每一个它们的采样位置中。
之后,正如本领域所知的那样,可以将区块缓冲器中存储的数据输出至下采样单元53以用于下采样以及接下来向帧缓冲器54输出以用于显示。可以以任意适合的方式来实施这个下采样。在本实施例中,采用数据的线性混合来下采样它。然而,如果期望,其他的方案也是可行的。
在这个方案中,下采样单元53将提供4x下采样采样操作,即,以使存储在区块缓冲器52中的4个数据条目(即2x2采样位置)将被下采样为帧缓冲器54的单个输出数据值(像素)。这是下采样单元53的普通操作模式,因为它会获取对应于为输出图像的每个像素(如图3中所示)获取的4个采样的4个采样值(因为正在使用4x采样掩码),并且将其下采样成单个值。在这个方案中,相应地将会将32x32阵列区块缓冲器52下采样为(并且对应于)帧缓冲器54中的16x16像素阵列。
如果需要,下采样单元53还可以对其输出至帧缓冲器54的数据应用适当的伽校正,或者这可以例如作为碎片着色操作来执行,或以任何其他适合的和所期望的方式来执行。
在待显示的图像包含多个、重叠的图元的情况下,正如本领域所知的那样,对于渲染处理而言还必要的是:确定事实上是否会在给定的采样点处实际地看到任何给定的图元。在本实施例中,正如本领域所知的那样,当渲染碎片时通过为碎片比较深度(Z)值来执行这一点。特别地,当要渲染新的碎片时,将与该碎片相关联的深度(Z)值与碎片所对应的、已经为区块缓冲器52中的采样位置存储的碎片数据的深度值进行比较,并且如果该比较指示将看不见新的碎片,那么将不会再进一步处理新的碎片。另一方面,如果深度值的比较指示:事实上在区块缓冲器52中的当前存储碎片的地方可以看见新的碎片,则渲染新的碎片,并且它的渲染碎片数据被存储以取代区块缓冲器52中的适当采样位置的现有数据。
以上描述了当对待显示图像应用4x采样掩码时,本实施例的操作。然而,如上所述,在本实施例中,当采样待显示图像时还可以采用16x采样掩码。现在将描述当采用16x采样掩码时,本实施例的操作。
在本实施例中,当采用16x采样掩码来采样图像时,图形处理器的操作实质上与如上所述的采用4x采样掩码的情况相同。由此,对图像应用采样掩码、获取采样、生成并渲染碎片,从而为每个被覆盖的采样位置生成渲染碎片数据,以及适当地对所渲染的采样进行下采样,以提供输出像素用于显示。
由此,若无其他的指示,当采用16x采样掩码时图形处理系统的操作与采用4x采样掩码时的操作是相同的。因此,下面的描述将着眼于上述两种操作模式之间的区别。
在本实施例中当采用16x采样掩码时在操作上的关键区别在于:给定碎片在被渲染时可以与16x采样掩码的给定应用的所有16个采样位置相关联,或者它可以仅与16x采样掩码的4个采样位置相关联。
特别地,为了将它的采样点与将被渲染的碎片相关联,16x采样掩码可以被划分为2级层级,即第一级和第二级,在第一级中,碎片与16x采样掩码的所有16个采样点相关联,在第二级中,碎片仅与16x采样掩码的4个采样点相关联。
于是,正如以上所述的那样,其效果在于,对于采样掩码的任意给定应用,例如,如果正被采样的图元完全覆盖了采样掩码,那么可以采用对应于采样掩码的所有16个采样点的单个碎片来渲染采样掩码,反之,如果图元仅仅是部分地覆盖采样掩码,那么例如,其可以被细分为更小的补片并采用单独的碎片来渲染它,所述补片中的每一个对应于16x采样掩码的4个采样位置。由此,将完全被覆盖的采样掩码渲染为单个碎片,而部分被覆盖的采样掩码可能最终成为1到4个碎片。
在光栅化阶段,图形处理器确定由经采样(光栅化)的图元(图像)对采样掩码的每个应用的覆盖,并且之后基于由经采样的图元对16x采样掩码的采样位置的覆盖,来可选择地将每个采样掩码应用的采样位置处理和渲染为对应于采样掩码的所有16个采样位置的单个碎片,或者处理和渲染为对应于16x采样掩码的4个采样位置的一个或多个碎片,或者处理和渲染为对应于所有16个采样位置的碎片和对应于4个采样位置的一个或多个碎片的组合。
图8描述了这个处理并且示出了16x采样掩码的给定应用的不同覆盖的实例,以及与待渲染碎片相关联的对应采样点“补片”来渲染采样掩码的采样位置。
在图8中,等级“0”的输出补片表示与16x采样掩码的所有16个采样位置相关联的碎片。等级“1”的输出补片表示与16x采样掩码的4个采样位置相关联的碎片。正如在图8中所示出的那样,在本实施例中,每个等级1(4个采样位置)的碎片对应于16x采样掩码的特定象限。
由此,正如图8中的第一个实例80所示出的那样,如果正被采样的图元完全覆盖了16x采样掩码81,那么将采样掩码渲染为单个等级0的输出补片,即,渲染为对应于采样掩码81的所有16个采样点的单个碎片82。在这种情况下,正如在图8中所示出的那样,因为所有采样位置均被覆盖,所以将碎片82表示为其所有采样位置被覆盖。
在图8中示出的第二个实例83中,覆盖了16x采样掩码84的下半部。在这种情况下,可以采用对应于采样掩码84的所有16个采样点的单个等级0的碎片85来再次渲染采样掩码84,但是在这种情况下,如图8中所示,与碎片85相关联的覆盖信息指示仅覆盖采样掩码的下半部。
图8中的实例86示出了类似的情况,但是在这种情况下,覆盖了16x采样掩码87的右侧。在这种情况下,再次将采样掩码渲染为对应于采样掩码87的所有16个采样点的单个碎片88,但是与碎片88相关联的覆盖信息指示:覆盖采样掩码的右半部分。
在图8中示出的下一个实例90中,再次部分地覆盖16x采样掩码89,但是在这种情况下,覆盖是这样的:没有完全覆盖采样掩码89的四分之一(象限)。在这种情况下,通过产生两个等级1的碎片91、92来相应地渲染采样掩码89,所述碎片中的每一个对应于被覆盖的采样位置所位于的采样掩码89的各个下四分之一(lower quarter)的4个采样点。碎片91对应于四分之一93,而碎片92对应于四分之一94。这里不需要生成用于渲染采样掩码89的上半部分的碎片,因为采样掩码的该部分没有被覆盖。
在图8中的实例95示出了另一种情况,其中采样掩码96被部分地覆盖。
在这种情况下,除了采样掩码96的上部左侧四分之一之外的所有部分均被完全覆盖,并且因此可以采用适当的等级0(即,16个采样点)的碎片97来渲染那些采样位置,正如在图8中所示出的那样。
然后,采用单个等级1(4个采样点)的碎片98来渲染被部分覆盖的采样掩码97的上部左侧四分之一。再次,可以从图8看到与碎片97、98相关联的覆盖信息指示:对应于碎片的哪些采样位置被图元覆盖。
(此处应当注意到,采用图8中的被覆盖采样位置的不同阴影来图解说明用于渲染那些采样位置的不同的碎片等级。它并不表示由不同的图元覆盖采样位置。)
图8中的实例99示出了16x采样掩码100的下部右侧四分之一被完全覆盖,但是剩余的其他四分之一仅被部分地覆盖的情况。在这种情况下,采用等级0(16个采样位置)的碎片101来渲染采样掩码100以渲染采样掩码100的下部右侧四分之一的采样位置,以及采用三个等级1(4个采样点)的碎片102、103和104来渲染采样掩码100以渲染采样掩码100的剩余的其他四分之一。
图8中的实例105再次示出了不同的情况,其中部分地覆盖16x采样掩码106。在这种情况下,没有覆盖采样掩码106的下部左侧四分之一,但是剩余的其他四分之一包含了被覆盖的采样点。通过生成三个等级1(4个采样点)的、对应于包含被覆盖采样位置的各个四分之一的碎片107、108和109来渲染这种情况。
最后,图8中的实例110示出了下述情况,其中完全覆盖了16x采样掩码111的右上和左下四分之一,而其他四分之一仅被部分地覆盖。在这种情况下,采用等级0(16个采样位置)的碎片112来渲染采样掩码111,以渲染采样掩码111的右上和左下四分之一的采样位置,以及采用两个等级1(4个采样位置)的碎片113、114来渲染采样掩码111,以渲染16x采样掩码111的其他四分之一的被覆盖采样位置。
正如在图8中所示出的那样,如上所述的关于4x采样掩码的使用,为每个碎片指示出所述碎片所对应的哪些采样位置被覆盖是必要的。这通过如上所述及在图7中示出的那样采用与每个碎片相关联的覆盖掩码来完成。
图9图解说明了这点。
由此,例如,正如在图9中所示出的那样,对于对应于16x采样掩码并被完全覆盖的碎片82而言,当被渲染时,该碎片与覆盖掩码“1111”相关联。同样地,被部分覆盖的碎片85(其表示全16x采样掩码)具有覆盖掩码“0011”,以指示采样掩码的下半部被覆盖,以及碎片88(其也表示全16x采样掩码)具有作为它的覆盖掩码“0101”,以指示采样掩码的右半部被覆盖。
应当注意到,在这些实例的每一个中,尽管碎片表示且被用于渲染16x采样掩码的全部16个采样点,但是仅存在由与每个碎片相关联的覆盖掩码73表示的4个覆盖位置。每个相应的覆盖掩码位置实际上相应地指示:是否覆盖了采样掩码的四分之一(象限),即,4个采样点。
为了考虑到这种可能性,覆盖掩码73中的给定位置实际上可以对应于4个采样位置,每个碎片将其与指示字段120的等级或层级相关联,所述字段120被设置为“0”以指示等级0的碎片,即,表示覆盖掩码的全部16个采样点的碎片(并且相应地用于其每个覆盖掩码73位置表示采样掩码的四分之一的四个采样点),或者设置为“1”以指示碎片是仅对应于4个采样点的等级1的碎片(并且相应地用于其在覆盖掩码73中的每个位置表示单个采样点)。
在碎片82、85和88的情况下,正如在图9中所示出的那样,将这个层级字段120设置为“0”,以指示它们是对应于且被用于渲染采样掩码的全部16个采样点的等级0的碎片。
图9还示出了图8的碎片91和92的碎片数据。在这种情况下,因为该碎片的下半部被覆盖,所以碎片91具有覆盖掩码“0011”,以及碎片92具有覆盖掩码“0111”。这些碎片中的每一个还将它的层级字段120设置为“1”,以指示它们是等级1的碎片,即,碎片仅对应于4个采样位置。
最后,图9还示出了被生成用于渲染图8中示出的采样掩码111的碎片。在这种情况下,正如以上所描述的那样,存在第一、等级0的16采样点碎片112,其具有覆盖掩码“0110”及等级字段“0”,并且然后是两个等级1的碎片(每一个对应于4个采样点)113和114,分别具有采样掩码“0001”和“1000”,并且它们的等级字段120设置为“1”。
可以看到,在这个实施例中,配置碎片数据的方式允许采用4-位覆盖掩码,即使碎片可以对应于16个采样位置。例如,这避免了必须为这样的碎片采用16-位覆盖掩码的需要。采用附加位来指示碎片的“等级”(即,碎片对应于多少采样点),但是这仍然需要比当采用16-位覆盖掩码时更少的附加数据。
为每个仅表示4个采样点的等级1的碎片指示它对应于16x采样掩码的哪个四分之一(象限)也可能是必需的。例如采用为了这个目的而加入的碎片数据的特定字段中的两个位,或者在碎片数据的现有字段中的两个位可以提供该信息。然而,尽管采用这附加的两个位用于指示碎片所对应的四分之一,但是这仍然需要比对每个碎片采用全16位置覆盖掩码更少的数据容量。
当然,如果期望,以不同的方式对碎片采用4-位位置覆盖掩码来表示16x采样掩码也是可行的。例如,覆盖掩码中的每个位位置不需要表示16x掩码的四分之一,但是能够例如表示16x掩码的行或列或者某些其他的部分。
具有多于一个等级的采样掩码的细分也是可行的,从而使得,例如,系统能够采用64x采样掩码,其于是能够被表示为64x“补片”、表示为一个或多个16x“子补片”和/或表示为一个或多个4x“子补片”等等。如果期望,仅在一个方向上做任意采样掩码细分也是可行的,以便具有例如32x和/或8x“子补片”。
此外,例如,可以将指示无(“0”)覆盖的覆盖掩码定义为表示替代的另一个覆盖模式(代替0覆盖),例如对应于不同形式的覆盖掩码,其中,情况很可能就是如此,实际上将不会有任何期望去将具有0覆盖的碎片发送通过渲染处理(从而使得覆盖“0”掩码实质上是“备用的”覆盖掩码值)。
一旦如上所述地生成并配置与图8和9相关的、用于渲染覆盖掩码的每个应用的碎片,就以普通的方式将它们发送至渲染管线以用于渲染。一旦渲染了碎片,则以以上所描述的方式在区块缓冲器52中适当地存储它们的渲染碎片数据并且最后对所述渲染碎片数据进行下采样以用于显示。
在这种情况下,由于针对每个“输出”像素会存在16个采样位置,因此将会应用16x下采样。
为了使这一点更容易,在本实施例中,下采样单元53被设置以使其能够可选择地对存储在区块缓冲器52中的数据应用两种不同等级的下采样,即4x或16x下采样。在这个实施例中,在逐帧的基础上设置将被应用的下采样的等级,并且将所述等级存储在渲染处理能够在其接收到用于渲染的帧时查找的适当的寄存器中。
在本实施例的一个优选方案中,为了在采用16x采样掩码时允许渲染碎片数据以相同的像素分辨率存储在区块缓冲器中(即,使得每个区块缓冲器仍然对应于输出像素的16x16阵列,即使现在每个输出像素有16个采样,而不是每个输出像素4个采样(这将会是采用4x采样掩码时的情况)),当采用16x采样掩码时对每个采样位置的渲染碎片数据进行压缩。可以采用任意适合的数据压缩技术来完成这一点。
该压缩意味着与采用4x采样掩码时相比,当采用16x采样掩码时或许会存在些许降低的质量(例如色彩准确性),但是任何该质量损失将处于子输出像素等级,并因此由压缩导致的任何赝象(如果其发生的话)应当仅仅非常少地遗传到输出的像素等级。
在本实施例中,当采用16x采样掩码时,然后为了与全16x采样掩码处理相一致(即,其中没有像在本实施例中那样共同地处理采样点),如果质心映射被禁止,那么将被发送通过渲染处理的每个碎片的重心坐标设置为是相同的。这应当确保每个子采样掩码碎片具有与普通16x采样所具有的相同的纹理坐标查找(lookup)。(因为纹理高速缓存应当经历更多的点击,故而它还会导致处理加速)。
另一方面,如果质心映射被启用,那么为每个碎片单独地执行质心映射(每个碎片得到它自己的纹理坐标)。
此外,正如以上所述的那样,在本实施例中,渲染处理以2x2群组来渲染碎片。在未启用质心映射的情况下,对于2x2碎片中的每一个而言向管线发送相同的子掩码碎片可能是不必要的,因为正如以上所描述的那样,会为所有子掩码碎片固定重心坐标。然而,仍然会需要对正被以每个2x2群组渲染的碎片进行一些排序或配置,例如为了导出派生物。
在这种情况下,优选地,被处理的每个2x2碎片群组包括在群组中的适当位置处的、表示来自适当的相应原始采样掩码应用的采样点的碎片,以便保持正确的例如派生物产生结果(derivative generation result)。可以通过适当地配置光栅化器来做这个以达到上述效果。
图10图解说明了这一点,并示出了应当被处理为具有通过渲染处理的那种配置的2x2群组的2x2采样(像素)网格。相应地,当将各个采样掩码应用划分为它们的适当碎片(补片)以用于渲染时,如图10中所示,将该碎片的每个群组配置为包括:在2x2碎片群组中的每个相应位置处的、对应于用来渲染2x2采样掩码(像素)网格130中的对应采样掩码应用的碎片。
由此,例如,如图10中所示,被处理的第一2x2碎片群组131包括对应于采样掩码133的第一等级0的碎片132,对应于采样掩码135的等级0的16采样位置的碎片134,对应于采样掩码137的等级0的碎片136,以及对应于采样掩码139的等级1(4采样位置)的碎片138。
类似地,将被渲染的第二2x2碎片群组132包含对应于采样掩码133的等级0的碎片140、对应于采样掩码135的等级1的(4采样位置)碎片141、对应于采样掩码137的等级1的碎片142,以及对应于采样掩码139的等级1的碎片143。
如图10中所示,如果没有启用质心映射,则然而在每个2x2碎片群组内的碎片的顺序自身可以是随机的。
图10图解说明了这样的情况,其中覆盖了给定2x2采样掩码群组中的所有2x2采样掩码应用(像素)。然而,如果仅覆盖了2x2采样掩码(像素)网格中的采样掩码应用之一,那么在本实施例中采用替换的方案。这在图11中示出。
如图11中所示,在这种情况下仅覆盖2x2采样掩码(像素)网格151的一个采样掩码应用150。在这种情况下,将采样掩码150处理为2x2碎片的群组152,其每一个都表示采样掩码150的对应象限。
然而,仍然为了允许适当的派生物产生等等,采用覆盖掩码及未被覆盖的碎片(并且特别是在2x2碎片群组152中根本没被覆盖的碎片153)来存储适当的信息,其中需要所述信息来允许导出派生物等,即使2x2碎片群组152仅包括来自相同采样掩码150的碎片。
以上描述了可以如何利用本实施例来执行待显示图像的4x多点采样或16x多点采样。在这个实施例的图形处理器的使用中,把图像发送给用于处理的图形处理器的应用将指示:将要对图像采用哪种形式的多点采样(4x或16x),并且图形处理器之后将配置其自身并相应地运作。
可以从上述内容看到,本发明(至少在其优选实施例中),允许实质上采用被配置为执行4x多点采样(抗锯齿)的体系结构来获得16x多点采样(抗锯齿)。相应地,用户有在普通的4x多点采样或具有16x的多点采样之间进行选取的选择,可能会有少许性能下降,但是不管怎样还是比通过采用4x多点采样以及4x下采样来获得全16x多点采样要快,并且具有比通过采用全16x多点采样而无下采样来获得全16x多点采样少得多的成本。
相应地,本发明可以免去增加图形处理器内核的尺寸以获得16x采样的需求,并且因此,例如,可以允许用较少的电力使用来获得16x采样。例如,本发明可以提供遍及系统的电能优势,其采用全16x采样的区块缓冲器。
相应地,本发明允许获得更高速率的抗锯齿,却不需要图形处理器在尺寸和电力使用方面的显著增加。此外,由于彻底地覆盖了大部分像素,所以任何的性能下降应当是较小的。
至少,在本发明的优选实施例中,通过将采样掩码划分为各个等级来获得上述效果,从而使得如果覆盖了整个采样掩码,那么将它作为对应于整个采样掩码的单个碎片来发送以通过管线,但是如果仅覆盖了部分采样掩码,那么可以将它划分为更小的补片并且采用每一个都表示采样掩码的子补片的碎片来进行渲染。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈