用于处理计算机图形的方法和装置与流程

文档序号:14624847发布日期:2018-06-08 17:19阅读:170来源:国知局
用于处理计算机图形的方法和装置与流程

本发明涉及计算机图像的处理,并且特别地涉及在处理计算机图形时用于执行反混叠(anti-aliasing)的方法以及装置。



背景技术:

如本领域已知的,通常通过首先将要被生成的输出(诸如将被显示的帧)划分成多个类似的基本组成(所谓的“图元”)来执行图形处理,以允许将更容易地执行图形处理操作。这些“图元”常常采用简单多边形,诸如三角形的形式。

该图形图元常常由用于图形处理系统的应用程序通过使用从需要图形输出的应用(例如,游戏)接收的图形绘画指令(请求)来生成。

每个图元处于常常由一组顶点限定和作为一组顶点表示的这个阶段。用于图元的每个顶点具有与其相关联的表示该顶点的一组数据(诸如位置、颜色、纹理以及其他属性数据)。然后在例如栅格化(rastersing)并渲染该顶点时使用该数据(该顶点所涉及的一个或多个图元),以便生成该图形处理系统的期望的输出。

一旦图元和其顶点已经被生成且被限定,则它们能够由该图形处理系统处理以便例如显示该帧。

该处理基本上涉及确定采样点阵列中的哪些采样点覆盖由图元覆盖的将被处理的输出区域,并且然后确定每个采样点应当具有的外观(例如,在其颜色方面等)以表示该采样点处的图元。这些过程通常分别被称为栅格化和渲染。

栅格化过程确定应当被用于图元的采样位置(即,将被用于表示输出(例如,将被显示的场景)中的图元的采样点的(x,y)位置)。这通常通过使用图元的顶点的位置来完成。

该渲染过程然后得到在采样点处表示图元所必需的数据,诸如红、绿和蓝(RGB)色值以及“阿尔法”(透明度)值(即每个采样点的“颜色深浅(shades)”)。如本领域中众所周知的,这可以涉及应用纹理、混合采样点数据值等。

(在图形学中,术语“栅格化”有时被用于意指图元到采样位置的转换和渲染两者。然而,本文中“栅格化”将仅被用来指代将图元数据转换成采样点地址)。

这些过程通常通过测试一个或一个以上的采样点的集合,并且然后针对被发现包括在讨论中的所述图元(正在被测试的)内部(被覆盖的)的采样点的每个采样点的集合,来生成离散图形实体,该离散图形实体通常指的是“片元”,在其上执行图形处理操作(诸如渲染)。实际上,被覆盖的采样点因此被处理为将被用来渲染讨论中的采样点处的图元的片元。该“片元”是通过该渲染过程(该渲染管线)的图形实体。生成或处理的每个片元可以取决于如何配置该图形处理系统来表示单个采样点或多个采样点的集合。

(当其被插值到给定输出空间采样点或图元点时,“片元”因此实际上是(已经与其相关联的)图元数据的集合。其还可以包括每图元以及其他状态数据,其被要求使讨论中的采样点处(片元位置)的图元颜色渐变。每个图形片元可以通常和该输出(例如,输出帧)的“像素”具有相同的大小和位置(因为当该像素在最终显示中是奇异点时,可能在该图形处理器对其操作(渲染)的“片元”与显示的像素之间存在一对一的映射)。然而,可能的情况是,在片元和显示像素之间不存在一对一的对应,例如在显示最终图像之前在所渲染的图像上执行的特定形式的后置处理(诸如降采样)的情况下)。

(还可能的情况是,因为在给定位置处的多个片元(例如来自不同的重叠图元)可能彼此影响(例如由于透明度和/或混合),所以最终像素输出可能取决于在该像素位置处的多个或所有片元)。

(相应地,可以在该采样点和显示的像素之间存在一对一的对应,但是更普遍的是可能在采样点和显示像素之间不存在一对一的对应,因为可能在渲染的采样值上执行降采样以生成用于显示最终图像的输出像素值。类似地,在给定位置处的多个片元(例如来自不同的重叠图元)彼此影响(例如由于透明度和/或混合)的情况下,最终像素输出也将取决于在该像素位置处的多个重叠采样值)。

在处理用于显示的图形时(在显示计算机生成的图像时)遇到的一个问题是该显示的图像被量化成该显示(例如正在被使用的监视器或打印机)的离散像素位置。这限制了被显示的图像的分辨率并且可能产生不想要的视觉假象,例如,在输出显示设备的分辨率不足够高以显示平滑线条的情况下。这些影响通常被称为“混叠”。

图1举例说明了此类混叠影响。图1的左手侧示出了将被描画的图像,而右手侧示出了被显示的实际图像。如可以被看到的,白体的期望的平滑曲线实际上在显示上具有锯齿状的外观。这就是混叠。(在图1 中,每个正方形表示该显示的像素,并且交叉点表示在用于确定(采样)该像素位置的色值的每个(x,y)像素位置处的点。 例如,图1中的像素A被描画为全白色,因为用于该像素位置的颜色采样点落入该白体内。应当注意的是,虽然在实际中将对所有像素进行采样,但仅示出感兴趣的像素上的采样交叉点)。

对于裸眼可视的所有混叠假像可以通过使用足够高分辨率的显示器来去除。然而,电子显示器和打印机的分辨率通常有限,并且因此许多图形处理系统使用其他技术来试图去除或减小混叠的影响。这样的技术通常被称为反混叠技术。

人们已知的反混叠技术被称为超级采样或过采样。

在这样的布置中,存在每个最终显示的像素的多个采样点(位置),并且针对每个(被覆盖的)个体采样点(例如,通过将每个采样点渲染为单独片元)来进行单独的颜色采样。这样的作用是在渲染过程期间,针对由图元所覆盖的显示像素的每个采样点来进行不同的颜色采样。

这意味着针对该显示的每个像素来进行多个颜色采样(由于针对每个采样点来渲染单独的色值,所以一个颜色采样针对用于该像素的每个采样点)。在显示该像素时,这些多个颜色采样然后被组合成用于该像素的单色。这具有平滑或平均来自讨论中的像素位置处的原始图像的色值的作用。

图2举例说明了此类超级采样过程。在图2示出的示例中,针对在该显示中的每个像素确定四个采样点并且在渲染过程期间针对每个采样点来进行单独的颜色采样。(每个这样的采样可以因此实际上被看作“子像素”,其中在该显示中的每个像素由四个这样的子像素构成。)然后将针对给定像素的所述四个色值采样(子像素)进行组合(向下滤波),从而使得用于该显示中的像素的该最终颜色是针对该像素所进行的四个颜色采样的颜色的适当的平均值(混合)。

这具有平滑被显示的图像的作用,并且,例如,通过用中间渐变的颜色围绕它们来减少混叠假象的显著性。这可以在图2中看到,其中该像素A现在具有两个“白”采样以及两个“黑”采样并且因此被设置成在显示的图像中的50%“白”。通过这种方式,该白体边缘周围的像素被模糊以产生更光滑的边缘,例如,基于找到有多少采样落在该边缘的每侧上。

在实际中超级采样以比将实际上被用于该显示的分辨率高得多的分辨率来处理该屏幕,并且然后在其被显示前,对所处理的图像缩放和过滤(降采样)成最终分辨率。这具有提供具有减小的混叠假象的改善的图像的作用,但是要求更大的处理功率和/或时间,因为图形处理系统必须在实际中处理和存在的采样一样多的片元(例如,从而使得针对4x 超级采样(即在针对每个显示像素进行4个采样的情况下),该处理要求将是如果不存在超级采样的情况的四倍)。

其他反混叠技术因此已经被提出的是,虽然仍在图像质量上提供某些改善,但比完全超级采样具有更少的处理要求。

一个通常这样的技术被称为“多重采样”。

就多重采样来说,多个采样点针对每个显示像素而被再次测试以确定在该图像被栅格化成片元时(在栅格化阶段)给定图元是否覆盖采样点。因此,以类似于“超级采样”系统的方式来确定多重采样系统中的图元的采样点覆盖范围(并且因此图元的外部几何边缘的位置仍实际上在多重采样系统中被“超级采样”(过采样))。

然而,在多重采样系统的渲染过程中,针对由讨论中的图元覆盖的给定显示像素的所有采样点被分配色值数据的相同的单个公共集合(而不是每个具有其自己的单独的数据集合,如将是用于超级采样的情况)。

因此,在多重采样中,针对每个像素再次进行多个采样,这将组成最终显示,但是在渲染“像素”时(如将是在针对完全超级采样系统的情况)不是针对每个采样来确定单独的色值,对于被发现属于最终图像中的同一物体的像素而言,单色值被确定并被应用于所有采样。换言之,多重采样针对用于在场景中给定物体的给定显示像素来计算单色值,该色值被应用于(重复用于)由该物体覆盖的显示像素的所有采样(子像素)(与针对每个采样来确定单独的色值的超级采样相比)。

由于只有单色值被用于针对给定显示像素的多重采样,所以多重采样比超级采样具有更少的处理密集性并且从而可以允许比超级采样更快的处理和性能。然而,与超级采样相比较,存在在显示的图像的质量上的降低,因为虽然物体的边缘仍以较高的分辨率进行采样,但是颜色不是。

尽管如此,许多图形处理系统使用多重采样反混叠技术,因为多重采样通常可以在被渲染的图像中提供适当的(并且与在根本不存在多重采样或超级采样的时候相比是改进的)反混叠,但是没有完全超级采样承担的显著的额外处理和计算负担。

许多图形处理系统被配置成能够支持给定水平的多重采样反混叠(MSAA)“原生地”(即,被优化用于执行给定水平的MSAA)。例如,基于瓦片的图形处理器可以被配置成基于4×MSAA将正被使用,来通过以下以全速度支持4x MSAA:将栅格化器配置成能够测试每时钟周期每(输出)像素的四个采样点,将混合器配置成能够将每个时钟周期的四个采样进行混合,将深度(模板)测试单元配置成能够针对每个时钟周期的四个采样进行深度/模板检查,调整用于每个输出像素的四个采样的瓦片缓冲器,将瓦片回写配置成将能够求出被回写至主存储器的每个像素的四个采样的平均值,并且将任何计算单元配置成能够针对图心映射选择正确的采样点。这样的配置可以然后允许图形处理器来支持具有很少或没有性能损失的4x MSAA。

然而,针对图形API需要更高水平的反混叠现在变得更普遍。例如,针对Direct3D 11顺应性而言,8 x MSAA是必需的特征。一种解决这个的方式将是配置图形处理器以“原生地”支持更高水平的反混叠,例如,支持对每个周期的每件事进行八个而不是四个。然而,这将是相对昂贵的,例如,在硬件方面。

还可能的是通过使用4 x MSAA加2x超级采样(2 x SSAA)来接近 8 x MSAA。然而,这将仅仅是对“真”8 x MSAA的近似。例如,如果使用图心映射(其中在与片元相关联的覆盖的采样点的近似中心处评估变化,而不是在(输出)像素的中心(或所有采样点的中心,无论覆盖还是未覆盖)处),则使用4 x MSAA加2xSSAA将在不同于“真”8 x MSAA的位置处评估变化,潜在地产生了完全不同的结果。因为Direct3D 11 需要用于8 x MSAA的准确的并且预定义的的采样点的集合,诸如近似将不符合Direct3D 11标准。

申请人因此相信的是仍然存在用于在图形处理系统中支持更高水平的反混叠的改进的技术的范围。

根据本发明的第一方面,提供了一种在具有多个处理阶段的图形处理管线中执行更高水平的多重采样的反混叠的方法,多个处理阶段中的至少某些被配置成原生地支持较低水平的多重采样反混叠,所述方法包括:

在执行所述较高水平的多重采样反混叠时:

图形处理管线的栅格化器生成图形片元,该图形片元均表示用于较高水平的反混叠的采样点的集合,并且将那些片元传递至所述图形处理管线的随后阶段以用于处理;

图形处理管线中的一个或多个随后处理阶段处理其接收用于在处理经过(pass)中处理的每个图形片元,所述处理经过并行地处理片元表示的所有采样点;并且

图形处理管线中的一个或多个其他的随后处理阶段处理其接收的每个图形片元,以用于在一个或多个处理经过中进行处理,每个此类处理经过处理所述片元表示的采样点集合中的所述采样点的子集。

根据本发明的第二方面,提供了图形处理管线,其包括:

生成图形片元的栅格化器,该图形片元均表示用于给定水平的反混叠的采样点的集合,并且将那些片元传递至所述图形处理管线的随后阶段以用于处理;

栅格化器之后的一个或多个处理阶段处理其接收用于在处理经过中处理的每个图形片元,所述处理经过并行处理所述片元表示的所有采样点;并且

栅格化器之后的一个或多个处理阶段被配置成原生地支持多重采样反混叠的水平,该水平低于反混叠的给定水平并且所述一个或多个处理阶段被配置成处理其接收用于在一个或多个处理经过中处理的每个图形片元,所述图形片元表示用于给定水平的反混叠的采样点的集合,每个此类处理经过处理所述片元表示的采样点集合中的所述采样点的子集。

根据本发明的第三方面,提供了图形处理管线,其包括:

生成图形片元的栅格化器,该图形片元均表示将被处理的采样点的集合,并且将那些片元传递至所述图形处理管线的随后阶段以用于处理;

栅格化器之后一个或多个处理阶段,在执行第一水平的多重采样反混叠时,其处理其接收用于在处理经过中处理的每个图形片元,所述处理经过并行处理所述片元表示的所有采样点;并且在执行更高水平的反混叠时,其处理其接收用于在处理经过中处理的每个图形片元,所述处理经过并行处理所述片元表示的所有采样点;并且

栅格化器之后一个或多个处理阶段,在执行第一水平的多重采样反混叠时,其处理其接收用于在处理经过中处理的每个图形片元,所述处理经过并行处理所述片元表示的所有采样点;但是在执行更高水平的反混叠时,其处理其接收用于在一个或多个处理经过中处理的每个图形片元,每个此类处理经过处理所述片元表示的采样点集合中的所述采样点的子集。

在本发明中,具有被配置成支持给定水平的多重采样反混叠的一个或多个处理阶段的图形处理管线被用来执行更高水平的多重采样反混叠。这是通过(潜在地)多次运行处理管线的某些阶段来完成的,每次处理表示更大的采样点集合的片元的给定部分。(例如,如果在被配置成执行4x MSAA的管线中执行8x MSAA,则每个8x片元可以(并且将优选地)被处理为两部分,其中每部分处理8x片元中的4个采样点)。然而,在该处理管线的其他部分中,该“更大”的片元在单个经过中作为一个整体被处理。

如将在下文中进一步讨论的,这提供了用于执行更高水平多重采样反混叠的机制,而不需要例如提供用于图形管线的所有阶段中的更高水平处理的完全“原生”支持,但是其可以仍保持符合“真”更高水平多重采样反混叠处理。特别地,申请人已经承认在执行更高水平多重采样反混叠以在多个经过中执行所述更高水平多重采样时在某些图形处理阶段中其仍是可用的(并且是符合的),每个处理采样点集合的较小的部分,并且通过那样做可以避免在那些处理阶段中对于提供完全更高水平反混叠支持的需要。这可以然后允许与例如在图形处理管线的所有阶段中提供完全更高水平反混叠支持相比以低得多的硬件成本来执行更高水平多重采样反混叠。

申请人已经进一步认识到,可以存在某些图形处理阶段,在那里更高水平反混叠采样点的集合必须在单个经过中作为一个整体被并行地处理,以便将符合“真”更高水平反混叠。因此,本发明针对一个或多个图形处理阶段仍这样做,但是通过限制这样做用于的阶段的数目,与此相关联的成本可以被减少和/或最小化。



技术实现要素:

本发明因此提供一种在“原生地”支持较低水平的反混叠(其被优化用于较低水平的反混叠)的图形处理器中支持更高水平多重采样反混叠的方法,而没有显著的附加硬件成本。此外,虽然本发明可能不能够提供与如果图形处理器被配置成原生地支持更高水平多重采样反混叠的情况相同的用于更高级别多重采样反混叠性能,但是申请人已经认识到这是可以接受的,因为更高水平的多重采样反混叠可能不被普遍地使用,并且在其被使用时,其可能没有必要以完全(“原生的”(最佳的))速度来运行。因此,申请人相信与可以原生地支持更高水平多重采样反混叠的系统相比,由本发明提供的成本效益可以在胜过任何潜在的性能缺点。提供的性能不是关键的,本发明在其优选的实施例中至少可以允许图形处理器支持比用很少或实质上没有范围开销来主要配置的多重采样反混叠具有更高水平的多重采样反混叠。

申请人因此相信本发明可以允许更高速率的反混叠将被实现,而不需要在图形处理器的尺寸和功率上显著增加,并且具有可接受的(如果有的话)性能降低。

图形处理管线可以包含任何适合且期望的图形处理管线可以包含的处理阶段。在优选实施例中,其优选地按照这个顺序包括以下各项中的一个或多个并且优选的包括所有:栅格化器;早期深度(或早期深度和模板)测试器;片元着色器;与该片元着色器相关联的变化位置评估(插值器);后期深度(或深度和模板)测试器;混合器;一个或多个瓦片缓冲器(在基于瓦片渲染的管线的情况下);以及瓦片回写单元(再一次在基于瓦片渲染的管线的情况下)。

图形处理管线优选的是基于瓦片渲染的管线。

该图形处理管线被配置成“原生地”支持的较低水平的多重采样反混叠(即,该多重采样反混叠的“第一”水平,针对其,相关图形处理阶段在单个处理经过中处理片元表示的所有采样点)可以是任何期望水平的多重采样反混叠。在优选实施例中,其被配置成支持4 x MSAA。为此,可以并且优选地如上述讨论那样配置各种处理阶段。因此,例如,针对被配置成以完全速度支持4x MSAA的基于瓦片的图形处理器,栅格化器可以被配置成能够每个时钟周期每像素测试的四个采样点,混合器可以被配置成能够每个时钟周期混合四个采样,深度(以及模板)测试单元可以被配置成能够针对每个时钟周期的四个采样进行深度/模板检查,可以针对每个输出像素的四个采样调整瓦片缓冲器的大小,瓦片回写可以被配置成将能够求出被回写至主存储器的每个像素的四个采样的平均值,并且任何计算单元可以被配置成能够基于将正被使用的4x MSAA来选择用于图心映射的正确的采样点。

在将原生地支持其他水平的多重采样反混叠的情况下,各种处理阶段然后应当并且优选地相应地被配置成对其进行支持。

可以(并且正在)被执行的更高水平的多重采样反混叠(即,“更高”水平的多重采样反混叠,针对其,相关图形处理阶段处理片元在子集中表示的采样点)可以是原生地支持的任何倍数的反混叠水平。优选地是原生地支持的整数倍数的反混叠水平。因此其可以并优选的是原生地支持的反混叠水平的二和/或四倍。因此,在图形处理系统的处理阶段原生地支持 4 x MSAA的情况下,执行(以及能够执行)的更高水平的反混叠优选地包括8 x MSAA和/或 16 x MSAA。

因此,在优选实施例中,图形处理管线具有被配置成(原生地)支持A x MSAA(例如,并且优选地4 x MSAA)的多个处理阶段,并且更高水平的多重采样反混叠包括nA x MSAA,其中n是大于1的整数。优选地,该系统可以支持多个更高水平的反混叠,例如,对于n=2、4、8和16。

该图形处理管线可以被配置成总是操作更高水平的反混叠。然而,在优选实施例中,该布置是这样的,使得图形处理管线能够选择性地被设置成采用本发明的方式来在更高水平的反混叠下进行操作。

最优选地,该图形处理管线可以在其“原生”水平的多重采样反混叠下进行操作,并且采用本发明的方式在更高水平的反混叠下进行操作。例如,在特定优选实施例中,可以采用本发明的方式进行操作的图形处理管线可以被选择地配置成使用4x MSAA或使用8x MSAA来处理用于显示的图像。

最优选地,这些不同的操作模式可以由要求图形处理的应用来设定。这将然后允许例如应用的开发者在比方说“普通”的4x 多重采样或8x多重采样之间进行选择。事实上,本发明的优点是其促进使用不同的多重采样等,速率,而不需要对处理器硬件进行显著改变。

如本领域已知的,栅格化器将生成将被渲染的图形片元以针对期望的图形输出(诸如将被显示的帧)的采样点来生成渲染的图形数据。由栅格化器生成的每个图形片元已经将其与该图形输出的采样点的集合相关联,并且将被用来针对与该片元相关联的采样点集合的采样点中的一个或多个来生成渲染的图形数据。

可以按照期望来选择与每个片元相关联的采样点的集合。如本领域已知的,每个采样点集合(以及因此每个采样点)将表示在图形输出(例如,将被显示的帧)中的位置(x,y位置)。在每个采样点集合(采样图案)中采样点的图案以及(相对)位置也可以按照期望来进行选择。例如,可以使用任何已知适合的反混叠采样图案,诸如顺序栅格采样。优选地使用旋转栅格采样图案,因为其提供更好的采样效果,如本领域所已知的。

如通常将是的情况,图形输出将在具有包括多个像素的显示器或输出的输出设备上被显示情况下,片元将被渲染的每个采样点集合可以与针对输出设备(例如,显示器或打印机)的给定像素(像素位置)的采样点的集合,或与针对输出设备的像素的一部分(例如,子像素)的采样点集合相关联优选地相对应。在随后的布置中,一组多个采样点集合优选地组成针对显示的像素的采样点的全部集合。在这些布置中,每个片元将实际上针对输出设备(例如,显示器或打印机)的给定像素来渲染片元数据。

在特定的优选实施例中,片元可以与其中的每个相关联的采样点集合与采样掩码(反混叠掩码)或此类掩码的一部分相对应,其可以是并且预期被应用于将在讨论中的图形处理系统中被渲染的输出。如本领域已知的,当图像,例如将被渲染用于显示的图像,通常是表示采样点集合的预定义的采样掩码,将被反复地应用于该图像以对该图像进行采样。通常,并且优选地,采样掩码中的每个应用将对应于预期输出设备(例如,显示器或打印机)的给定输出像素。

因此在特别优选的实施例中,给定的图形片元可以与(并且被用来渲染)将被应用的采样掩码(或反混叠掩码)中的所有采样点相关联;例如,用于将被渲染的图像或可以与(并且被用来渲染)将被应用的采样掩码的采样点的子集相关联。

可以按照期望来选择将被渲染的片元可以对应的(可以表示的)采样点的集合中采样点的数目。最优选地,每个片元已经将其与对应于正在被使用的反混叠的水平的采样点集合相关联。因此,例如并且优选地,在执行 A x MSAA(例如4 x MSAA)时,由栅格化器生成的每个片元将具有与其相关联的A(例如4)个采样点的集合,并且在执行更高水平nAx MSAA(例如,8 x MSAA)时,由栅格化器生成的每个片元将具有与其相关联的nA(例如8)个采样点的集合。

因此,在本发明的优选实施例中,在执行nA x 多重采样反混叠时,图形处理管线的栅格化器将生成均表示nA个采样点的集合的图形片元(并且将那些片元传递至图形处理管线的随后阶段用于处理),图形处理管线的随后处理阶段中的一个或多个将处理表示在处理经过中nA个采样点的集合的每个此类图形片元,该处理经过(并行地)处理该片元作为一个整体表示的nA个采样点,并且图形处理管线的一个或多个其他随后处理阶段将在一个或多个处理经过中处理表示nA个采样点的集合的每个图形片元,每个此类处理经过处理该片元表示的nA个采样点的集合中的采样点的子集(并且优选A个)。

因此,在本发明中,由栅格化器生成的片元可以优选地与(并且对应于并且表示)包含不同数目的采样点的采样点的集合相关联。

将认识到的是,虽然在本发明的操作中的许多情况下,片元对应的采样点的集合将被正在被采样的物体(例如,图元)完全覆盖,这将不是一直的情况,并且在那个情况下,只有某些但是不是所有与该片元相关联的采样点将被例如所讨论的图元覆盖。在随后的情况下,用于该片元的渲染的片元数据将被用于那些被覆盖(由图元)的采样点,但是不用于那些不被覆盖(由图元)的采样点(因为那些采样点将在实际中由例如另一个输出的图元覆盖),如本领域所已知的。例如,将不需要针对没有被覆盖的那些采样位置来将渲染的片元数据存储在渲染的片元数据阵列中。

因此,在特定优选实施例中,每个图形片元已经将其与指示该片元对应于的采样点集合中的哪些采样点被覆盖的数据相关联(例如,并且优选地,由正在被采样的图元),即,实际上,片元正被用来渲染该片元对应的采样点集合中的哪些采样点。系统优选地然后操作来将渲染的片元数据存储在片元数据阵列中,所述片源数据阵列针对被指示的覆盖的采样位置,但是不针对与该片元相关联的剩余采样位置。

指示片元正被用来渲染的哪些覆盖的采样点的信息优选地与用于通过渲染器的片元的片元数据(诸如用于该片元的RGB和阿尔法值)相关联或者是其一部分。优选地采用覆盖掩码的形式,针对与该片元相关联的采样位置集合中的每个采样位置,该覆盖掩码指示该采样位置是否被覆盖,即,实际上,该片元是否正在被用来渲染那个采样点(即,其数据是否应当被存储用于那个采样点)。优选地,该覆盖掩码采用表示采样位置的位图的形式。

已经发现这个布置将成为将给定片元与适当采样点相关联的特别方便的方式。

还将可能例如使用不同大小的覆盖掩码用于其支持的每个不同水平的反混叠(即,用于片元可以与其相关联的每个不同数目的采样位置),诸如4位覆盖掩码用于4x MSAA以及nA位覆盖掩码用于(一个或多个)更高的反混叠(例如,8位覆盖掩码用于8x MSAA)。然而,在特别优选的实施例中,每个片元常常与针对更高(或最高)水平的反混叠来调整大小的覆盖掩码相关联并且当执行(一个或多个)较低水平的反混叠时,在覆盖掩码中的适当位被简单地清除(例如,并且优选的,设置成零)。例如,每个片元可以与指示该片元正在被用来渲染的采样点的nA位(例如,8位,在8x MSAA是最高水平的反混叠的情况下 )覆盖掩码相关联(如上述讨论的)。使用此类更大的覆盖掩码可能是免费的,例如如果该片元数据存储器已经具有用于此的容量。

因此,在特别优选的实施例中,由栅格化器生成的每个片元与对应于可以被执行的更高(并且优选最高)水平的反混叠的采样点覆盖掩码相关联,并且在执行较低水平(即,不是更高(或最高)水平的)反混叠时,清除覆盖掩码中的适当位。这可以简化用于不同水平的反混叠的片元的处理。

采用这种方法,在执行更低水平反混叠时,优选地清除更大覆盖掩码的适当的高位。例如,在原生地支持4x MSAA的系统中,但是其中可以采用本发明的方式执行8x MSAA,在执行8x MSAA时,每个片元可以与被全部使用的8位覆盖掩码相关联,但是在执行4x MSAA时,清除该覆盖掩码的高4位。

除了与给定片元对应的采样点的覆盖有关的信息之外,在本发明中提供指示例如片元对应的采样点集合的大小的信息也是必要的。可以按照期望提供该信息,例如,通过再次将其与讨论中的片元相关联,例如,使用在现有片元数据字段中的可用的备用容量。

栅格化器可以被配置成生成用于以任何期望且适合的方式进行渲染的片元。如本领域所已知的,其将接收例如将被栅格化的图元,针对采样点位置集合来测试那些图元,并且因此生成表示图元的片元。

该栅格化器可以被配置成测试将与用于支持的每个水平的反混叠的单个处理经过中的片元相关联的需要数目的采样点(即,为了提供用于(一个或多个)更高水平反混叠的完全、“原生”栅格化支持)。

然而,在特别优选的实施例中,该栅格化器被配置成处理将与用于在多个经过中的(一个或多个)更高水平的反混叠(即,(一个或多个)更高水平反混叠采样掩码)的片元相关联的采样点集合,其中每个经过测试用于片元的采样点的(不同)子集(即,采样掩码的子集)(即,在执行更高水平的反混叠时,该栅格化器被优选地配置成运行每个片元多次,以便测试所有要求的采样)。

换言之,针对(一个或多个)更高水平的反混叠,该栅格化器优选地针对将被生成的每个片元执行多个栅格化经过(例如,针对将被测试的每个采样掩码),每个经过测试将被生成用于该片元的采样位置集合的集合的子集(采样掩码的子掩码),并且然后将这些栅格化经过的结果组合以生成被传递到剩余的图形管线上的片元。因此该栅格化器优选地测试多个“子片元”,其然后被组合以给出由该栅格化器输出的片元。

在该布置中,可以按照期望选择在每个栅格化经过中处理的片元(采样掩码的)的采样点的数目。在优选的实施例中,在每个经过中处理的采样点(采样点的子集)的数目包括将针对图形处理管线原生地支持的反混叠水平所处理的采样点的数目。因此,例如对于原生地支持Ax MSAA (例如 4x MSAA)的管线,每个栅格化经过在执行更高水平的反混叠时优选地处理将被生成的片元的A(例如,4)个采样点。

用于生成片元的栅格化经过的数目应当对应于需要处理将与片元相关联的所有采样点的处理经过的数目。因此,例如,针对原生地支持Ax MSAA的处理管线,在执行nAx MSAA时(在n是大于一的整数的情况下),栅格化器应当执行n个栅格化经过(其中每个栅格化经过处理将与该片元相关联的nA个采样位置中的A个采样位置的不同子集)以生成每个栅格化输出片元。

因此,该栅格化器优选地被配置成能够,在执行更高水平的反混叠时,将图元栅格化成多个“子片元”,每个表示与将被栅格化器输出的片元相关联的采样点的(不同)子集,并且然后将如此生成的子片元组合成用于传递到图形处理管线的下一个阶段的输出片元。

因此,例如,针对原生地支持 4 x MSAA的管线中的8 x MSAA,该栅格化器将执行两个栅格化经过,其中一个栅格化经过,例如,并且优选地,测试 8x采样掩码的上半部分,并且其他栅格化经过测试该8x采样掩码的下半部分。类似布置可以被用于其他更高水平的MSAA。为了支持此类操作,该栅格化器应当并且优选地被配置成支持附加“子掩码”采样图案。

该栅格化器操作可能需要非常小的附加的控制逻辑以及在采样位置查找表中的附加条目(以指示被需要用于(一个或多个)更高水平的反混叠的附加采样图案)。该栅格化性能还将相对需要的附加栅格化经过的数目成比例的减少(如果使用“原生的”4x MSAA栅格化器来执行8 x MSAA,则减少一半)。然而,如上所讨论的,申请人相信与例如,提供用于(一个或多个)反混叠的完全“原生的”栅格化支持相比较,这将是可接受的。

由栅格化器生成的片元被传递至图形处理管线的随后阶段用于处理,以生成用于该片元表示的(覆盖的)采样点的渲染的片元数据,如本领域所已知的。这些渲染处理可以包括例如,片元着色、混合、纹理映射等。

如以上所讨论的,在本发明中,这些随后处理阶段中的某些被配置成(常常)将片元作为一个整体在处理经过中进行处理,但是某些被配置成,在执行更高水平的反混叠时,在多个经过中处理处于“多个部分(parts)”中的片元。

图形处理管线的随后处理阶段(相对于栅格化器)在执行更高水平的反混叠时(以及所有水平的反混叠)时将图形片元作为一个整体在(单个)处理经过中进行处理的情况下,优选地包括基于每个片元而不是基于每个采样进行操作的图形处理阶段中的一个或多个,并且优选地包括该图形处理阶段的全部。申请人已经认识到,针对基于每个片元进行操作的处理阶段,在片元的部分上执行此类处理,并且然后例如重新组合片元部分,可以导致与如果该片元被作为一个整体进行处理的不同结果。因此优选地针对图形处理管线的这些阶段来在单个处理经过中在作为一个整体执行更高水平反混叠时处理表示更高数目的采样位置的片元。

片元着色是在片元上作为一个整体执行的一个这样的处理阶段。因此,在优选的实施例中,在执行更高水平的反混叠时,片元着色器被配置成在处理经过中将每个片元作为一个整体进行处理。

在整个片元上进行操作的另一个处理阶段是变化的插值器,至少在其例如选择用于图心映射的采样点时。因此,在优选的实施例中,变化的插值器在处理经过中的整个片元上进行操作,在正执行更高水平的反混叠时,至少在选择用于图心映射的采样点时。这将然后允许变化的插值器来,尤其是选择用于图心映射的采样点,该图心映射针对“真”更高水平反混叠来进行校正。(在不执行图心映射时,变化的插值器不需要操作在作为一个整体的片元上,并且因此在此情况下片元可以反而在多个经过中按部分进行处理,如果期望的话)。

为了促进这样做,在执行更高水平的反混叠时该变化的插值器应当被配置成能够处理需要的更大数目的位,并且其对应的采样位置查找表因此被扩充。例如,在从 4 x MSAA进行到8 x MSAA的情况下,变化的插值器位扫描仪将需要处理附加的4位,并且将需要在恒定采样位置查找表中存在附加的8个条目。

因此,在特别优选的实施例中,常常处理其接收用于在处理经过中处理的每个图形片元处理阶段,包括片元着色器和变化的插值器中的一个或多个,并且优选的包括其所有,所述处理经过处理所述片元作为整体表示的所有采样点。

图形处理管线的随后一个或多个阶段(相对于栅格化器),在执行更高水平的反混叠时将片元在一个或多个处理经过(每个经过处理与该片元相关联的采样点的子集)中进行处理的情况下,优选地包括图形处理管线的随后的一个或多个阶段,并且优选地包括所有随后阶段,该图形处理管线在通过该管线的片元上执行每采样(每采样点)(而不是每片元)操作。

申请人已经认识到,在采样点上个别地执行每采样操作时,有可能在片元的采样点上单独地执行那些操作(即,不是在一个处理经过中在作为一个整体的片元上)并且仍保持符合“真”更高级别的反混叠。因此针对在图形处理管线中的每采样操作,有可能通过每个片元运行那些操作多次来实现更高水平的反混叠。此外,那样做显著地减少了支持更高水平的反混叠的硬件成本。

因此,在优选的实施例中,让每个片元经受一个或多个处理经过(每个经过处理片元表示的采样点的子集)的随后图形处理阶段(相对于栅格化器),在执行更高水平反混叠时,包括以下各项中的一个或多个,并且优选地包括所有:混合器(或多个混合器);以及一个或多个深度(或深度和模板)测试器。在该管线包括早期和后期深度(或深度和模板)测试器两者的情况下,则优选地将早期和后期测试器均配置成采用这种方式进行操作。

(虽然优选的针对采用这种方式进行操作的图形处理管线的所有每采样操作阶段,但是其他布置,诸如在某些阶段中提供用于更高水平的反混叠的原生地支持,但是采用这种方式操作其他布置将是可能的,如果期望的话,在执行更高水平的反混叠时)。

在图形处理阶段被配置成在一个或多个经过中处理每个片元的情况下,每个经过处理与该片元相关联的采样位置的子集(即,处理与该片元相关联的采样位置集合中的某些而不是所有),则可以按照期望来选择在每个经过中处理的片元的采样点的数目。在优选的实施例中,在每个经过中处理的采样点(采样点的子集)的数目包括将针对图形处理管线阶段原生地支持的反混叠水平所处理的采样点的数目。因此,例如对于原生地支持Ax MSAA (例如 4x MSAA)的管线阶段,每个处理经过在执行更高水平的反混叠时优选地处理片元的A(例如,4)个采样点。

用于处理片元的处理经过的数目应当达到处理与片元相关联的所有采样点所需要的处理经过的数目。因此,例如,对于原生地支持Ax MSAA的处理管线阶段,在执行nAx MSAA时(在n是大于一的整数的情况下),每个片元应当经受达到在讨论中的管线处理阶段中的n个处理经过(其中每个处理经过处理与该片元相关联的nA个采样位置的A个采样位置的不同子集)。

将是可能的简单方式的是,使片元经受处理与片元相关联的所有采样点所必要的处理经过的数目(所以是在以上示例中n个处理经过),并且在一个优选的实施例中,采用这种方法。然而,在特别优选的实施例中,有可能省去和/或放弃用于实际上没有采样位置被覆盖的采样位置的子集的处理经过(即,在该子集中没有采样位置将实际(潜在地)有助于输出的情况下)。在该情况下,“早期输出”机制可以被用来跳过此类多余的处理经过。在这些布置中,通过执行一个或多个处理经过将因此处理给定片元,达到处理与片元相关联的所有采样点所必要的处理经过的数目。

随后的图形处理阶段可以被配置成采用这种方式以任何适当且期望的方式进行操作。例如,在(一个或多个)混合器的情况下,该混合器可以被配置成运行每个片元多次,以便混合所有期望的采样。类似地,在(一个或多个)深度测试和/或深度和模板测试的情况下,该(一个或多个)深度或深度和模板测试器可以被配置成运行每个片元多次,以便测试所有期望的采样。对此的成本是小量的控制代码,虽然最大的混合或测试等的速率将对应于需要针对每个片元执行的处理经过的数目而减小(如果使用“原生的”4x MSAA混合器等来执行8x MSAA,那么就减小一半)。

为了促进此类操作,(一个或多个)混合器和/或(一个或多个)深度或深度和模板测试器等被优选地配置成能够将来自图形处理管线的前述阶段其接收用于处理的输入片元分离成均表示与该输入片元相关联的采样点的(不同)子集的多个子片元,然后处理彼此独立的子片元(并且优选地一个接一个),并且然后将处理的子片元重新组合成用于传递到图形处理管线的下一个阶段的输出片元。

因此,在特别优选的实施例中,图形处理管线的一个或多个处理阶段被配置成能够将来自图形处理管线的前述阶段的其接收用于处理的输入片元分离成均表示与该输入片元相关联的采样点的(不同)子集的多个子片元,然后处理彼此独立的子片元(并且优选地一个接一个),并且将处理的子片元重新组合成用于传递到图形处理管线的下一个阶段的输出片元。这些阶段优选的是执行每采样操作的阶段,诸如(一个或多个)混合器、(一个或多个)深度(或深度和模板)测试器等。

如以上所讨论的,混合器等优选地还包括用来放弃或跳过将实际上无助于讨论中的片元的输出的用于采样点的子集的处理经过的机制。

一旦生成的片元已经被渲染以便生成用于片元表示的相应采样点的渲染的图形数据,则如此生成的渲染的片元数据将需要被存储在适当的采样数据阵列或缓冲器中,诸如瓦片和/或帧缓冲器,用于后续输出,例如,输出到显示设备,如本领域所已知的。如本领域所已知的,该阵列应当表示例如采样位置的二维阵列,其可以然后被适当地处理来例如显示像素的2D阵列。

如本领域的技术人员将认识到的,在本发明被用来在更高水平反混叠下处理图像时,比方说8x采样 ,如与4x采样形成对照,其将产生用于更多(例如两倍那样多)采样位置的渲染的片元数据。该“额外的”采样位置数据将需要被存储在采样数据阵列中,例如,瓦片缓冲器中。

一种这样做的方法将被简化成增加渲染的片元数据阵列的大小以允许这样做。因此,例如,在基于瓦片的系统中,(一个或多个)瓦片缓冲器(以及管线缓冲器的任何其他端部,诸如深度缓冲器)可以在增加尺寸(例如,加倍)以能够容纳需要用于在期望的(一个或多个)更高水平的反混叠下的整个瓦片的所有采样位置。其还将或者相反可能例如使用单个替代双缓冲(在支持双缓冲的情况下)来提供用于附加采样数据的容量。

然而,在特别优选的实施例中,在基于瓦片的渲染管线中,不是增加瓦片缓冲器等的尺寸以便容纳用于更高水平的反混叠的附加采样位置,而是,将每个瓦片在多个更小的部分中被处理,即,实际上作为多个“子瓦片”,每个表示将被渲染的瓦片的一部分。一旦其被采用正常方式进行处理,每个此类瓦片部分(“子瓦片”)则可以被写出到主存储器(例如,帧缓冲器),并且下一个瓦片部分(子瓦片)然后被处理并且被写出,以此类推。在不需要增加瓦片缓冲器等的尺寸的情况下,这将然后允许将被执行的更高水平的反混叠(虽然以必须处理每个“瓦片”多次为代价)。

在这些布置中,在图形处理管线将处理在多个更小部分中的每个渲染瓦片的情况下,然后可以按照期望来选择每次处理的瓦片部分的尺寸。在优选的实施例中,在瓦片缓冲器等被配置成原生地支持特定水平的反混叠下的特定尺寸的瓦片的情况下,每当执行对应于将填充现有的(一个或多个)瓦片缓冲器的更高水平的反混叠时,处理该瓦片部分(“子瓦片”)。因此例如对于原生地支持Ax MSAA的具有(一个或多个)瓦片缓冲器的管线,则在使用 nA x MSAA处理瓦片时,该瓦片应当按每个对应于瓦片的 1/n的部分来进行处理。

用于处理瓦片的部分(“子瓦片”)的数目应当对应地作为用来处理整个瓦片部分需要的部分的数目。因此,例如,针对具有原生地支持Ax MSAA的瓦片缓冲器的处理管线,在执行nAx MSAA时(在n是大于一的整数的情况下),每个瓦片应当按n个部分进行处理(当n=“子瓦片”时)(其中每个部分(子瓦片)对应于瓦片的 1/n)。

因此,例如在具有调整尺寸并且被配置成支持4 x MSAA的图形处理管线中执行8 x MSAA的情况下,每个瓦片被优选地渲染两次,即,使用两个渲染经过,其中每个渲染经过渲染瓦片的一半。例如,第一渲染经过可以渲染该瓦片的上半部分而第二渲染经过可以渲染该瓦片的下半部分(或反之亦然)。针对其他水平的多重采样反混叠,应当执行适当数目的渲染经过。

可以按照期望来配置图形处理管线来这样做。在优选的实施例中,栅格化器被配置成多次读取用于瓦片的瓦片列表,但是被配置成每次处理该瓦片的不同部分。用于这样的成本将是少量的控制逻辑和对通过该瓦片列表(瓦片中的所有图元)运行多次的需要。栅格化器(栅格化处理)被优选地配置成能够有效地放弃将不针对给定渲染经过而进行处理的瓦片的部分。在优选的实施例中,使用分级的栅格化处理,因为分级的栅格化处理可以更有效地这样做。

一旦该采样(例如,瓦片)缓冲器已经被填充,其将需要被回写到主存储器(例如,到帧缓冲器),如本领域所已知的。如本领域所已知的,其还可以存在降采样(求平均值),采用固定或可变的模式,从缓冲器(例如瓦片)中的采样值到将被写入到主存储器(例如帧缓冲器)的最终输出(像素)值和/或其他输出,如果期望的话。

用来将采样值分解成将被写出到主存储器的像素值的降采样(求平均值),可以被配置成原生地支持将被使用的更高水平的反混叠(即,将能够在单个降采样操作中降采样(求平均值)用于(一个或多个)更高水平的反混叠的需要数目的采样点),如果期望的话。然而,在优选的实施例中,在执行更高水平的反混叠时,该降采样被配置成仍然在更低的、原生地支持的水平的降采样(反混叠)下进行操作,其中针对瓦片的不同部分,通过操作降采样(求平均值)操作多次来实现该更高水平的反混叠降采样操作,并且然后将结果组合以给出将被回写到主存储器的总的输出像素值。

因此,例如,针对被配置用于4 x MSAA的降采样(求平均值),在执行8 x MSAA时,应当运行该降采样两次,一次针对采样点的8 x MSAA 集合中的4个采样点的每个不同的集合(一次针对每个“子像素”),并且然后在另一个降采样经过中产生的降采样的(求平均值的)两个值被混合(平均)到一起以给出被写出到主存储器的输出(最终像素)值。换言之,针对每个8 x MSAA像素,在多个经过中完成对采样值的求平均值,以生成应当被回写到主存储器的最终像素值。(这实际上等同于用于进行(2 x (4 x MSAA)) + 2 x SSAA))的机制)。

因此,在执行更高水平的反混叠时,瓦片降采样(分解)以及回写操作被优选地配置成在多个连续的阶段中被完成。第一阶段优选地单独地对用于片元的采样点的集合的多个子集进行降采样(求平均值),其中每个子集优选地包含该降采样单元被配置成原生地降采样的采样点的数目。得到的如此降采样的(求平均值的)的值优选地然后在进一步降采样(求平均值)处理(其再次优选地对达到降采样单元原生地降采样的值的数目的值的集合进行降采样(求平均值))中被降采样的(求平均值),并且以此类推(如果需要的话),直到获得用于(输出)像素的采样点集合的单个降采样的(求平均值的)输出值,其中单个值然后被适当地回写到主存储器。

因此,在瓦片降采样和回写单元被配置成支持A个值(即,A x MSAA)的降采样(求平均值)的情况下,则针对更高水平的反混叠,用于片元的采样点的集合将优选地被降采样为多个、单独的部分,每个包含A个采样点。如果遵循这样,存在A个或更少的输出值,将在单个进一步降采样操作中将那些值进行降采样(求平均值)以给出被回写到主存储器的输出的降采样的值。另一方面,如果遵循这样,存在超过A个输出值,那些输出值然后优选地再次被降采样为多个单独的部分,每个包含(多达)A个值。然后,如果遵循这样,存在A个或更少的输出值,将在单个进一步降采样操作中将那些值进行降采样(求平均值)以给出被回写到主存储器的输出的降采样的值(或者如果遵循这样,存在超过A个输出值,那些输出值然后优选地再次被降采样为多个单独的部分,每个包含(多达)A个值,并且以此类推)。

申请人已经认识到,在多个阶段处理中采样值的此类降采样(分解)可以正确地复制在单个步骤中对用于更高水平的反混叠的所有采样值进行降采样的效果。

本发明可以被用于所有形式的输出,图形处理管线可以被用来生成这些形式的输出,诸如用于显示的帧,渲染到纹理输出等。

将认识到的是,因为将由图形处理管线渲染的输出将通常由多个图元(记忆在基于瓦片的系统中)组成,在实践中本发明的方法将被重复用于组成该输出的每个图元(以及瓦片),从而使得最终针对该需要输出的每个采样点已经生成渲染的片元数据的适当集合。

在特别优选的实施例中,在单个图形处理平台上执行本发明的各种功能,该图形处理平台生成并输出例如被写入到用于显示设备的帧缓冲器的渲染的片元数据。

本发明可以在任何适当的系统中,诸如基于适当地配置的微处理器的系统中加以实现。在优选的实施例中,在基于计算机和/或微处理器的系统中实现本发明。

可以以任何期望且适合的方式来执行本发明的各种功能。例如,可以按照期望以硬件或软件形式来实现本发明的各种功能。因此,例如,本发明的各种功能化元件和“装置”可以包括一个或多个适当的处理器、一个或多个控制器、功能化单元、电路、处理逻辑、微处理器布置等,其可操作成执行各种功能等,诸如适当的专用硬件元件和/或可以被编程以期望的方式进行操作的可编程硬件元件。

这里还应当注意的是,如本领域技术人员将理解的是,本发明的各种功能等可以在给定处理器上被复制和/或被并行地执行。

本发明可适用于任何形式或配置的图形处理管线并且适用于任何形式的渲染,诸如中间模式渲染、延缓模式渲染、基于瓦片的渲染等。其特别地适用于使用延缓模式渲染的图形渲染器以及特别地适用于基于瓦片的渲染器。在基于瓦片的渲染器的情况下,本发明可以是特别有利的,因为瓦片的渲染器通常具有比中间模式渲染器低得多的用于帧缓冲器的存储器带宽。本发明可以允许有效瓦片的渲染器来执行具有比将以其他方式被需要的更低成本的更高水平的反混叠。

因此本发明适用扩展到图形处理器以及图形处理平台,该图形处理平台包括根据本文所述的本发明的一个或多个方面的装置或根据本发明的一个或多个方面进行操作。受到执行上述讨论的特定功能所必要的任何硬件的影响,这样的图形处理器可以以其他方式包括图形处理器包括的普通功能单元等中的任何一个或多个或所有。

本领域技术人员还将认识到的是,在适当时本发明的所有描述的方面和实施例可以并且优选地确实包括,本文所描述的优选的且可选的特征中的任何一个或多个或所有。

使用例如计算机程序的软件可以至少部分地实现根据本发明的方法。因此将看到的是,在从其他方面查看时,本发明提供了计算机软件,其在被安装在数据处理装置上时特别适合于执行本文所述的方法,计算机程序元素,其包括在该程序元素在数据处理装置上运行时用于执行本文所述的方法的计算机软件代码部分,以及计算机程序,其包括在数据处理系统上运行该程序时适合于执行本文所述的一个或多个方法中的所有步骤的代码装置的计算机程序。数据处理器可以是微处理器系统、可编程FPGA(现场可编程门阵列)等。

本发明还扩展到包括此类软件的计算机软件载体,其在被用来操作图形处理器、渲染器或包括数据处理装置的微处理器系统时,引起结合所述数据处理装置、所述处理器、渲染器或系统来执行本发明的方法的步骤。此类计算机软件载体可以是物理存储介质,诸如ROM芯片、CD ROM或磁盘,或可以是信号,诸如通过电线的电信号、诸如到卫星的光信号或无线电信号,等等。

还将认识到的是,不是本发明的方法的所有步骤都需要由计算机软件来执行并且因此根据本发明的进一步广泛方面提供了计算软件,以及被安装在计算机软件载体上的此类软件,以便执行本文阐述的方法的步骤中的至少一个。

本发明可以因此被适当地体现为供计算机系统使用的计算机程序产品。此类实施方式可以包括一系列计算机可读指令,其被安装在有形的非瞬时介质上,诸如计算机可读介质,例如软磁盘、CD-ROM、 ROM、或硬盘,或可传输到计算机系统,经由调制解调器或其他接口设备、通过有形的介质(包括但不限于光或模拟通信线路)或使用无线技术无形地(包括但不限于微波、红外或其他传输技术)传输。该系列的计算机可读指令体现了本文先前所描述的功能的全部或一部分。

本领域的技术人员将认识到的是,此类计算机可读指令可以按照供许多计算机体系结构或操作系统使用的多种编程语言进行编写。此外,可以通过使用现在或未来的,包括但不限于半导体、磁、或光的任何存储技术来存储此类指令,或通过使用现在或未来的,包括但不限于光、红外或微波的任何通信技术来传输此类指令。要考虑的是,此类计算机程序产品可以被分布为具有附随的打印的或电子的文档编制的可移除介质(例如,压缩打包的软件),其用计算机系统(例如,在系统ROM或固定磁盘上)预加载,或从网络(例如,因特网或万维网)上的服务器或电子布告板分发。

附图说明

现在将仅借助于示例的方式并且参考附图来描述本发明的多个优选的实施例,其中:

图1示意性地示出了混叠的影响;

图2示意性地示出了超级采样反混叠技术;

图3示意性地示出了将被显示的图像;

图4示出了供在本发明的实施例中使用的示例性采样图案;

图5示出了可以根据本发明进行操作的图形处理管线的实施例;

图6示意性地示出了在执行4 x MSAA时图5的图形处理管线的操作;

图7图示出了在本发明的实施例中与将被渲染的片元相关联的数据;

图8示意性地示出了在执行8 x MSAA时图5的图形处理管线的操作;以及

图9和10图示出了在执行8 x MSAA时图5的图形处理管线的操作的方面;

相同的附图标记被用于在图中适当地方的相同部件。

具体实施方式

在用于显示的计算机图形的处理的情境中,现在将描述本发明的优选的实施例。

如本领域所已知的,并且如以上所讨论的,在计算机图形图像将被显示时,其通常首先被定义为一系列图元(多边形),其中图元然后依次被划分(栅格化)成用于图形渲染的图形片元。在正常图形渲染操作期间,渲染器将修改与每个片元相关联的(例如)颜色(红、绿和蓝,RGB)以及透明度(阿尔法,a)数据,从而使得该片元可以被正确地显示。一旦该片元已经完全地穿过渲染器,那么其关联的数据值被存储在存储器中,准备输出用于显示。

本实施例特别地涉及在尤其是显示计算机图形图像时促进反混叠操作。如本领域已知的,通过进行将被显示的图形的多个采样来执行反混叠,并且然后将那些采样降采样成该显示的输出分辨率。

示意性地示出了在本实施例中使用的基本反混叠布置的图3,示出了将被显示的图像的采样掩码34的重复应用。采样掩码34中的每个应用对应于将被显示的图像的像素。

如本领域已知的,每个采样掩码包括采样点的集合,该采样点的集合将被用来采样用于讨论中的输出像素的图像,并且因此确定该像素将如何被显示在最终显示上。

在本实施例中,采样掩码34的每个实例可以取图像的8个采样点或可以取图像的4个采样点。示出了这些采样掩码的扩充视图的图4对此进行图示。

图4示出了针对给定像素的表示8个采样位置35的阵列的8x采样掩码37。8x掩码37是针对Direct3D 11定义的采样掩码。图4还示出了两个4x采样掩码39(具有顺序栅格),以及34(具有旋转栅格),其中每个表示4个采样位置36的集合。

如将在下文进一步讨论的,在本实施例中,可以使用图4中所示的4x和8x采样掩码中的任何一个来处理图像。

图3还示出了采用单个图元32形式的采样掩码阵列30上重叠的图像。 (这里将认识到,为了简化已经在图3中将图像示为包括单个图元。实际上该图像(或其他输出)可以并且通常将包括许多重叠的图元,如本领域所已知的。)正如可以从图3看到的,图元32完全地覆盖了采样掩码阵列30中的采样掩码中的某些,但是仅通过其他采样掩码中的某些的一部分。

为了处理图像的图元32,渲染系统将本质上确定在栅格化阶段处由图元32覆盖每个采样掩码应用的采样点的每个集合中的那些采样点,并且然后渲染并存储用于那些被覆盖的采样点的数据,从而使得图元32的图像可以被适当地显示在显示设备上。

现在将参考图5来描述采用本实施例中的这种方式处理用于显示的图元32的图像,图5示意性地示出了可以根据本发明进行操作的图形处理管线1。在图5中示出的图形处理管线1是基于瓦片的渲染器并且将因此,如本领域已知的,产生渲染器的瓦片输出数据阵列,诸如将被生成的输出帧。(如本领域的技术人员将理解的是,如果期望的话,可以使用其他渲染布置)。

(如本领域已知的,在基于瓦片的渲染中,不是例如当在即时模式渲染中一口气(in one go)有效地被处理的帧的整个渲染输出,而是例如将被显示的帧的渲染输出,被划分成多个更小的子区域,通常被称为“瓦片”。每个瓦片(子区域)被单独地渲染(通常是一个接一个),并且渲染的瓦片(子区域)然后被重新组合以提供完整的渲染输出,例如,用于显示的帧。在此类布置中,渲染输出通常地被划分成规则尺寸和形状的子区域(瓦片)(其通常是,例如,正方形或长方形),但是这不是必要的)。

如本领域已知的,渲染输出数据阵列可以典型地是意图用于在显示设备(诸如屏幕或打印机)上显示的输出帧,但是还可以例如包括意图用于供在随后渲染经过中使用的中间数据(也被称作“渲染到纹理”输出)等。

图5示出了与本实施例的操作相关的图形处理管线1的主元件和管线阶段。如本领域的技术人员将认识到的是,可以存在图5中没有图示出的图形处理管线的其他元件。这里还应当注意的是,图5仅仅是示意性的,并且例如实际上示出的功能单元和管线阶段可以共享重要的硬件电路,即使其在图5中被示意性地示为单独的阶段。还将认识到的是,如图5中示出的图形处理管线中的阶段、元件和单元等中的每个可以按照期望被实现,并且将因此包括,例如适当的电路和/或处理逻辑等,用于执行必要的操作和功能。

图5示意性地示出了在用于输入到已经生成的栅格化处理的图形图元(多边形)2之后的管线阶段。因此,如本领域已知的,响应于被提供给图形处理器的命令和顶点数据,此刻图形数据(顶点数据)已经经受片元前端操作8(诸如转换和照明操作(未示出)),以及图元建立阶段(未示出),以建立将被渲染的图元。

如图5中所示,图形处理管线1的该部分包括多个阶段,包括栅格化阶段3、早期Z(深度)和模板测试阶段4、片元着色阶段6、后期Z(深度)和模板测试阶段7、混合阶段9、瓦片缓冲器10和降采样和回写(多重采样分解)阶段11。

如以上所讨论的,本发明涉及使用具有被配置成“原生地”支持第一水平反混叠的处理阶段的图形处理管线以在处理将由图形处理管线生成的输出时执行第二更高水平的反混叠。在本实施例中,假设图形处理管线1的阶段原生地支持4 x MSAA,并且假设将采用本发明的方式执行的更高水平的反混叠是8 x MSAA。当然,其他布置将是可能的。

如本领域已知的,图形处理管线1的栅格化阶段3操作成将组成渲染输出的图元(例如,将被显示的图像)栅格化成用于处理的个别的图形片元。为此,栅格化器3接收用于渲染的图形图元2,将该图元栅格化到采样点并生成具有适当位置的图形片元(表示适当的采样位置),以用于渲染该图元。

在本实施例中,该栅格化器是分层栅格化器,其操作成反复地测试渐进地对着片元的更小的面的图元。其通过从输出区域的大的面开始操作并且测试讨论中的图元是否在该面内。如果不在,那么整个面被丢弃,并且测试下一个面,以此类推。另一方面,如果图元被发现将在该面内(将被该面至少部分地覆盖的),则该面被划分成4部分,然后以同样方式测试每个此类“子面”,以此类推,直到达到最小面尺寸(其在本实施例中是2 x 2的采样掩码组(即,对应于2 x 2的片元组)(但是其可以例如是个别的采样,个别的采样掩码(片元),或不同尺寸的采样掩码(片元)组)。

当在该实施例中最小的面尺寸包含多个采样点(即,是2 x 2的采样掩码(片元)组)时,在最终面中的该个别的采样点然后通过使用单独的采样测试器加以测试。在本实施例中,栅格化器3的采样测试器被配置成能够测试每个时钟周期包含四个采样点的采样掩码(即,实际上,测试四个采样点的集合,其将与片元相关联,该片元将针对四个采样点的集合被生成,如果它们中的至少一个在该图元内),并且因此栅格化器3“原生地”支持4 x MSAA。

该“分层的”栅格化机制允许栅格化器迅速地丢弃空面(并且因此迅速地集中于图元实际所在的瓦片的部分)。

栅格化器生成用于被发现包括图元的采样掩码的每个应用的片元。这些片元然后向前被发送给剩余的管线以用于处理。

如本领域已知的,早期Z/模板阶段4在其从栅格化器3接收的片元上执行Z(深度)测试,用于发现在此阶段是否可以丢弃(剔除)任何片元。为此,其将从栅格化器3发出的片元(与其关联的)的深度值与已经被渲染的片元的深度值(这些深度值被存储在深度(Z)缓冲器中,该深度(Z)缓冲器作为瓦片缓冲器10的一部分)相比较以确定新片源是否将被已经被渲染的片元所堵塞(或没有)。同时,执行早期模板测试。

早期深度和模板测试4被配置成能够针对每个时钟周期的四个采样进行深度和模板测试,并且因此“原生地”支持4 x MSAA。

经过片元早期 Z和模板测试阶段4的片元然后被发送到片元着色阶段6。片元着色阶段6在经过早期 Z和模板测试的片元上执行适当的片元处理操作,以便处理片元以生成适当的片元数据等,用于渲染输出(例如用于片元的显示),如本领域已知的。

该片元处理可以包括任何适合且期望的片元着色过程,诸如在片元上执行片元着色器程序,应用纹理到片元,应用雾化或其他操作到片元等,以生成适当的片元数据,如本领域已知的。在本实施例中,片元着色阶段6采用着色器管线的形式(可编程的片元着色器),但是其他布置,诸如也使用或替代为固定功能片元着色单元将是可能的,如果期望的话。

片元着色器6被配置成并行处理与其接收的片元相关联的所有采样点,即,处理其作为一个整体接收的每个片元。

片元着色阶段6已经将其与变化的插值器(变化位置鉴别器)12相关联,该变化的插值器12被用来确定用于当前片元的正确的变化值。针对特定插值模式,诸如图心映射,该变化的插值器使用片元的关联的覆盖掩码来在片元内选择正确的位置以插值变化的数据。因此,该变化的插值器12被配置成能够并行处理与其接收的片元相关联的所有采样点,以便能够选择用于图心映射的正确的插值位置,无论片元具有四个还是八个与其相关联的采样点。

然后存在“后期”片元Z和模板测试阶段7,其尤其是在着色的片元上执行管线深度测试的末端以确定是否渲染的片元将实际上在最终图像中被看到。该深度测试使用被存储在瓦片缓冲器10中的Z缓冲器中的用于片元位置的Z缓冲值来确定是否用于新片元的片元数据应当替换已经被渲染的片元的片元数据,如本领域已知的,通过将从片元着色阶段6发出的片元(与其关联的)深度值与已经被渲染的片元的深度值(如被存储在深度缓冲器中的)相比较。该后期片元深度和模板测试阶段7还在片元上执行任何必要的“后期”阿尔法和/或模板测试。

后期深度和模板测试阶段7还被配置成能够针对每个时钟周期的四个采样进行深度和模板测试,并且因此“原生地”支持4 x MSAA。

如果需要的话,经过后期片元测试阶段7的片元然后经受任何必要混合操作,该混合操作具有已经被存储在混合器9中的瓦片缓冲器10中的片元。在片元上必要的任何其他剩余的操作,诸如递色等(未示出)也在这个阶段处被执行。

混合器9被配置成能够每个时钟周期混合四个采样,并且因此“原生地”支持4 x MSAA。

最终,(混合的)输出片元数据(值)被写入到瓦片缓冲器10,从那里它们例如可以被输出到用于显示的帧缓冲器。用于输出片元的深度值还被适当地写入到瓦片缓冲器10内的Z缓冲器中。(如本领域已知的,瓦片缓冲器和Z缓冲器将分别存储适当的颜色等或Z值,用于缓冲器表示的每个采样点(本质上用于正在被处理的瓦片的每个采样点)。)如本领域已知的,该瓦片缓冲器存储表示渲染输出(例如,将被显示的图像)的一部分的片元数据的阵列。

在本实施例中,提供了三个瓦片缓冲器。每个瓦片缓冲器将其片元数据存储在32 x 32阵列中(即,对应于将被生成的输出中的采样位置的32 x 32阵列,例如,在将被显示的图像中)。每个32 x 32数据位置瓦片缓冲器可以因此对应于(并且将“原生地”支持)例如在4x 反混叠下(即,在每个像素取4个采样时)的将被显示的帧的16 x 16像素“瓦片”。

这些瓦片缓冲器可以被提供为单独的缓冲器,或可以实际上全部作为同一更大的缓冲器的一部分。它们被定位在图形处理管线(芯片)上(或被定位到图形处理管线(芯片))。

在该实施例中,三个瓦片缓冲器中的两个被用来存储用于每个采样点的颜色(红、绿、蓝)值(出于此目的,将可能使用一个瓦片缓冲器,但是两个是优选的),并且一个瓦片缓冲器被用来存储用于每个采样点的Z(深度)值和模板值。当然,其他配置将是可能的。

来自瓦片缓冲器10的数据被输入到降采样(多重采样分解)单元11,并且从那里输出(回写)到输出缓冲器13(其可以不在图形处理平台自身上),诸如显示设备的帧缓冲器(未示出)。(该显示设备可以包括,例如包括像素阵列的显示器、诸如计算机监视器或打印机)。

降采样单元11将被存储在瓦片缓冲器10中的片元数据降采样到用于输出缓冲器(设备)的适当的分辨率(即,从而使得对与输出设备的像素相对应的像素数据的阵列被生成),以生成用于输出到输出缓冲器13的输出值(像素)14。

在本实施例中,图形处理管线1中的降采样单元11被配置成能够在一个降采样操作(时钟周期)中将来自瓦片缓冲器10的四个采样位置值降采样到用于输出到输出缓冲器13的单个输出值例如14。因此在本实施例中,该降采样和回写单元11被配置成“原生地支持”4x反混叠。

可以以任何适当的方式进行该降采样。在本实施例中,数据的线性混合被用来对其降采样。然而,如果期望的话,其他布置将是可能的。如果需要的话,降采样单元11还可以应用适当的伽玛校正到其输出到输出缓冲器13的数据,或这可以例如,当片元着色操作时,或采用任何其他适合且期望的方式来完成。

一旦渲染输出的瓦片已经被处理并且其数据被导出到主存储器(例如,到主存储器中的帧缓冲器(未示出))以用于存储,下一个瓦片然后被处理,以此类推,直到足够的瓦片已经被处理以生成整个渲染输出(例如将被显示的帧(图像))。

当然,用于图形处理管线1的其他配置将是可能的。

现在将描述根据本发明的实施例的图5中示出的图形处理管线的操作。

首先将描述在执行4 x MSAA时图形处理管线1的操作,并且然后将描述在执行8 x MSAA时的操作。

图6示意性地示出了在执行4 x MSAA时图形处理管线1的操作。

如图6中所示,当正执行4 x MSAA时,栅格化器3将应用具有四个采样位置(即,4x采样掩码)的(测试)采样掩码到将被生成的输出,并且将其生成用于渲染的每个片元与对应于采样掩码的给定应用的四个采样点的集合相关联。换言之,单个片元被用来一起一口气渲染采样掩码(并且因此在输出中的像素)的给定应用的采样点的集合的所有四个采样点。

因此在本示例中,考虑到包括图3中示出的图元32的图像,栅格化器3将接收来自图形处理系统的片元前端处理阶段8的图元,并且然后确定哪些图像的采样点集合(即,实际上在阵列30中采样掩码34的那些应用)包括被图元32覆盖的采样点。(这可以采用本领域已知的任何适当方式加以执行。)栅格化器3将然后生成用于被发现包括被图元32覆盖的采样点的采样掩码的每个应用的片元。因此,栅格化器3将生成与四个采样点的集合相关联的片元。其将然后将那些片元输出到图形处理管线1的随后阶段以用于处理。

图7示意性地示出了用于并且与由栅格化器3所生成的每个片元相关联而生成的数据70。如图7中所示,与每个片元相关联的数据尤其包括,片元的x,y位置71(其表示片元对应的(在本实施例中实际上是在输出帧中的相关像素的)采样点(采样掩码的应用)的集合的图像中的x,y位置),连同必要的每片元数据72,诸如用于片元的颜色(RGB)、透明度(阿尔法)、深度(Z)以及模板值。如本领域已知的,该每片元数据72被图形处理管线1的随后处理阶段使用和适当地修改以提供用于片元的片源数据的输出集合,该输出集合然后被存储在瓦片缓冲器10中。(图7示出了用于片元的单个深度(Z)值。如果期望的话,其将可能改为例如具有或计算用于与片元相关联的每个采样位置的单独的深度(Z)值)。

与片元相关联的数据70还包括采用表示采样点集合(采样掩码)内的每个采样位置的位阵列形式的覆盖掩码73,片元与采样点相关联并且相对应。如果对应的采样位置被发现被有栅格化阶段处的讨论中的图元所覆盖,那么位阵列覆盖掩码73中的每个位置被设定成“1”,并且如果采样位置不被讨论中的图元所覆盖,那么被设定成“0”。这允许渲染过程来了解与给定片元先关联的哪些采样点实际上被讨论中的图元覆盖,从而使得渲染过程可以确保用于片元的渲染的片元数据仅被用于(以及例如被存储)由图元所覆盖的采样点。

这是必要的,因为如可以从图3中看到,不是用于采样掩码34的应用的采样点集合中的所有采样点都将有必要地被图元所覆盖。

在本实施例中,如图7中所示,由栅格化器生成的每个片元都与8位覆盖掩码73相关联。与每个片元70相关联的覆盖掩码73包含8位以允许将在执行8 x MSAA时与该片元相关联的八个采样点的集合(如将在下文进一步讨论的)。

在执行4 x MSAA时,每个片元70仍具有与其相关联的8位覆盖掩码73,但是因为在执行4 x MSAA时,每个片元70将仅具有与其相关联的四个采样点的集合,所以在执行4 x MSAA时,用于片元的覆盖掩码73的高4位74被自动地清除(设定成“0”)。因此,在执行4 x MSAA时,仅有覆盖掩码73的低4位75被用来表示与该片元相关联的采样点集合中的采样点。

(应当注意的是,虽然在执行4 x MSAA时,每个片元仍具有与其相关联的8位覆盖掩码,因为执行4 x MSAA时,覆盖掩码73的高4位74被设定成“0”,但用于避免处理对于其没有采样点被图元覆盖的子片元的下文讨论的“早期输出”机制意味着在进行4 x MSAA时每个片元将仅被处理一次(经受一个处理经过),用于图形处理管线的每个阶段处的覆盖掩码73的相关“有效的”下半部分75。(换言之,将覆盖掩码73的高4位74设定成“0”确保在执行4 x MSAA时,覆盖掩码的那个部分将根据被图形处理管线的相关阶段所正处理而被自动地省略(覆盖掩码的那个部分的处理将被自动地跳过))。

因此,在执行4 x MSAA时,当栅格化器3接收用于渲染的图元时,其将首先确定采样点阵列中的四个采样点(采样掩码)的集合中的哪些对应于包括由图元覆盖的采样点的输出的相应像素,并且针对四个采样点的那些集合中的每个,生成具有与其相关联的来自图7中所示的数据的片元。

其还将要将用于片元的覆盖掩码73的高上4位74设定成“0”,并且将覆盖掩码73的低4位75设定成“1”或“0”,取决于与片元相关联的四个采样位置的集合中有多少被讨论中的图元覆盖。

例如,如果该图元仅覆盖与片元相关联的四个采样位置中的两个,那么栅格化器3将生成覆盖掩码73,例如采用图7中示出的形式,其中覆盖掩码73的高4位74被设定成“0”,并且覆盖掩码73的低4位75被设定成指示四个采样位置中的两个正在被片元70渲染,但是另外两个采样位置没有正在被片元渲染(因为它们没有被讨论中的图元所覆盖)。

每个此类片元将然后被输出(向前传递)到剩余的图形处理管线1以用于处理,如图6中所示。

(为了方便起见,图6仅示意性地示出了用于每个片元的覆盖掩码的下“有效”部分75(在执行4 x MSAA时),并且不示出未被使用的用于每个片元和像素的覆盖掩码的上部分74)。

由栅格化器3输出的片元首先在早期深度和模板测试阶段4中经受早期深度和模板测试。如以上所讨论的,因为早期深度和模板测试阶段4被配置成能够每个时钟周期测试四个采样点,所以其可以并且完成对与其在单个经过中接收的每个4 x MSAA 片元相关联的所有(“有效”)采样点的测试,并且然后将如此测试的片元输出到片元着色器6。

如以上所讨论的,片元着色器6被配置成并行处理(着色)其接收用于处理的每个片元的所有采样点,如是变化的插值器(变化位置鉴别器)12(在需要的情况下)。

着色的片元然后通过后期深度和模板测试阶段7经受由后期深度和模板测试。关于早期深度和模板测试阶段4,因为后期深度和模板测试阶段7被配置成能够每个时钟周期测试四个采样点,所以该后期深度和模板测试阶段7测试与其在单个经过中接收的每个片元关联的所有(有效)采样点,并且然后将如此测试的片元输出到混合器9。

混合器9然后将其接收的片元与已经被存储在瓦片缓冲器10中的对应的片元数据适当地混合。因为混合器9被配置成能够每个时钟周期混合四个采样点,所以其可以再次将与其在单个经过中接收的片元相关联的所有四个“有效”采样点混合,并且因此这样混合其在单个处理经过中接收的每个片元。

一旦片元已经被混合,则它们的数据被适当地存储在瓦片缓冲器10中。用于每个渲染片元的数据被存储在瓦片缓冲器阵列10中的适当的(一个或多个)采样位置中,如由与每个片元相关联的覆盖掩码73所指示的,以便提供用于与片元相关联的每个个别覆盖的采样位置的片元数据的单独的集合。因此,在图7中例示的片元70的情况下,例如,用于该片元的渲染数据将被存储在瓦片缓冲器10中的(有效)采样位置中的两个中,但是不被存储在与片元70相关联的另外两个(有效)采样位置中。

被存储在瓦片缓冲器10中的片元数据包括用于每个采样位置的颜色(RGB)、透明度(A)、深度(Z)和模板值,如以上所讨论的。可以采用任何适当的形式来存储该数据。

当瓦片缓冲器10均包含32 x 32 数据位置,瓦片缓冲器10可以存储用于16 x 16像素瓦片的每个像素的四个采样点值,即,瓦片缓冲器10原生地支持用于 16 x 16像素瓦片的4 x MSAA。

一旦已经完成了针对关于给定图元的所有片元的这个过程,则针对输出的随后的图元,例如,图像(因为,如以上所讨论的,该图像通常将由多个图元,而不是仅仅单个图元组成)重复该过程。针对讨论中的瓦片内的所有图元重复该过程,直到瓦片缓冲器10具有被存储在它们的采样位置的每一个中的适当数据为止。

被存储在瓦片缓冲器10中的数据然后被导出到用于降采样的降采样单元11,并且随后导出到例如用于显示的帧缓冲器13,如本领域已知的。

如以上所讨论的,降采样单元11可以提供4x 降采样,即,从而使得被存储在瓦片缓冲器10中的四个数据条目将被降采样至每个时钟周期的单个输出数据值(像素)14。因此,在执行4 x MSAA时,降采样单元11将取四个采样值,对应于针对输出图像的每个像素所取得的四个采样(如图3中所示)(因为正在使用4x 采样掩码)并且将它们降采样至用于在单个经过(时钟周期)中输出到帧缓冲器13的单个像素输出值14。

一旦输出的给定瓦片(例如,帧)已经采用这种方式被处理,那么下一个瓦片可以采用同样方式被处理,以此类推,直到组成期望的输出(例如用于显示的帧)的所有瓦片已经被处理并且被输出到例如,帧缓冲器。下一个输出,例如,用于显示的帧,可以然后采用同样方式被生成,以此类推。

以上描述了在使用4x MSAA来处理(例如)将被显示的帧时本实施例的操作。然而,如以上讨论的,在本实施例中,其还可能使用8x MSAA来处理(例如)将被显示的帧。现在将参考图8描述在使用8x MSAA时本实施例的操作。

在本实施例中使用8x MSAA用于采样的帧时,图形处理器的操作本质上与以上所描述的针对正使用4x MSAA的情形相同。因此,采样掩码被应用于输入图像,取得采样,片元被生成并且被渲染以生成针对每个覆盖的采样位置的渲染片元数据,并且渲染采样被适当地降采样以提供用于显示的输出像素。

因此,除非以其他方式指示,在执行8x MSAA时图形处理管线1的操作与执行4x MSAA时的操作相同。以下描述将因此集中在两个操作模式之间的区别。

如图8中所示,该过程再次从栅格化器3接收用于栅格化成用于渲染的片元的图元2开始。在执行8x MSAA时,栅格化器必须并且确实生成具有与输出片元相关联的八个采样点的集合的输出片元(而不是如是针对 4x MSAA的情况具有与输出片元相关联的四个采样点),即,表示给定输出像素的(应用于输入图元的给定8x采样掩码的)所有采样点的片元。

然而,不是栅格化器3被配置成直接地测试8x采样掩码,而是在本实施例中,栅格化器3被配置成在图形处理管线1将执行 8x MSAA时,来测试两个4x“子掩码”,每个表示整个8x采样掩码的相应的一半,以便从而实际上生成两个子片元,每个具有与它们相关联的8x采样掩码中相应的一半,并且然后,如图8中所示,将该两个如此生成的子片元组合(聚集)以提供具有八个采样点的全部集合的输出片元以及与其相关联的对应的八个采样点覆盖掩码(在执行8x MSAA时,片元的8位覆盖掩码73中的所有采样点位置被使用且“有效”,并且因此全部8位覆盖掩码被用于每个片元,如图8中所示)。

换言之,栅格化器3,在执行8x多重采样的反混叠时,将每个片元通过其自己“原生的”4x MSAA采样测试器两次,一次用于单独地测试8x采样掩码的每半个,并且然后将结果组合以生成具有与其相关联的八个采样点的集合的输出8x MSAA片元(以及对应的覆盖掩码73)。

为了促进该操作,栅格化器3被配置成支持在这样做时其将使用的必要的附加“半个”8x采样图案。这样做的成本是很少量的控制逻辑,以及在采样位置查找表中必要的附加条目。当与执行4x MSAA时相比栅格化性能也被减半。

具有与它们相关联的八个采样点的集合的输出片元然后再次在早期深度和模板测试阶段4中经受早期深度和模板测试。当与执行4x MSAA时相比时,早期深度和模板测试4的操作被修改以说明8x MSAA正在被执行的事实。如图8中所示,不是使深度和模板测试器4在一个时钟周期中测试与8x MSAA片元相关联的所有八个采样点,而是早期深度和模板测试4反而被配置成将其接收的每个8x片元分离成两个单独的4x“子片元”,每个表示8x片元的相应的半个,并且然后来将如此测试的子片元重新组合,以再次提供具有与其相关联的全部8x覆盖掩码的输出8x片元。

换言之,早期深度和模板测试4类似栅格化器3,被配置成在多个部分中处理8x片元,从而使得其可以在它的“原生”测试速度下进行操作,其中相应的部分然后被重新组合以提供期望的输出8x片元。用于该操作的成本是小量的控制代码,并且与执行4x MSAA时相比,早期深度和模板测试最大通过速率被减半。

早期深度和模板测试4还被配置成具有“早期输出”机制以允许其跳过针对其实际上没有采样点被讨论中的片元实际覆盖的子片元的深度和模板测试。(如以上所讨论的,在执行4xMSAA时该机制被用来跳过(避免)对与4xMSAA片元相关联的8位覆盖掩码的未使用的上半部分74进行测试)。

来自早期深度和模板测试器4的8x片元输出然后被输入到片元着色器6。如图8中所示出,片元着色器6被配置成处理其作为一个整体接收的每个8x片元。这是必要的以确保执行“真”8x MSAA。

评估的变化位置(变化的插值器)12被类似地配置成处理作为一个整体的8x片元(在需要的情况下)。这是必要的以确保用于为8x MSAA所需的图心映射的正确的采样点例如在处理8x片元时被选择。这样做的成本是在位扫描仪中附加的4位以及在用于变化的插值器12的恒定采样查找表中的附加的八个条目。

片元着色的8x片元从片元着色器6输出然后在后期深度和模板测试器7中经受后期深度和模板测试。关于早期深度和模板测试器4,后期深度和模板测试器7被配置成在两部分中处理其接收的8x片元,如相应的“子片元”均对应于与片元相关联的八个采样点中的相应的四个采样点。类似地,后期深度和模板测试器7具有“早期输出”机制以允许其跳过针对其实际上没有采样点被讨论中的片元实际覆盖的子片元的深度和模板测试。

离开后期深度和模板测试器7的重新组合的8x片元然后在混合器9中被混合(如果需要的话)。类似早期和后期深度和模板测试器,混合器9被配置成在多个部分中处理每个8x片元,每个对应于表示与该片元相关联的八个采样点集合中的四个采样点的子片元。再次这样以便允许混合器9在其被配置成支持的4x速率下操作其混合过程,而不需要也将其配置成“原生地”支持8x混合。再次,混合器9具有“早期输出”机制以允许其跳过针对其实际上没有采样点被讨论中的片元实际覆盖的子片元的深度和模板测试。

来自混合器9的8x片元输出然后被存储在瓦片缓冲器10中。然而,在执行8x MSAA时,每瓦片将存在的采样点将是如用于4x MSAA将存在的采样点那样多的两倍。为了说明这点而不需要增加瓦片缓冲器的尺寸,图形处理管线1被配置成,在执行8x MSAA时,渲染每个瓦片两次,一次用于渲染该瓦片的上半部分并且然后渲染该瓦片的下半部分。

这在图9中被举例说明,其示出了用于8x MSAA的两个栅格化经过,第一个经过将16 x 16像素瓦片的上半部分的16 x 8像素栅格化,并且第二个经过渲染16 x 16瓦片的下半部分的16 x 8像素。图9还示出了与在执行4x MSAA时将完成的栅格化该瓦片的所有的16 x 16像素的单个栅格化经过的比较。

当在任何一次只有半个瓦片正在被处理时,则在瓦片缓冲器中存在足够空间用于该半个瓦片的所有采样(在8x MSAA下)。当栅格化器3分层地操作时(如以上所讨论的),在给定渲染经过中将不被处理的瓦片的一半的省略可以被非常有效率地完成。这样做的成本是很少量的控制逻辑,以及针对要被处理的每个瓦片执行两个渲染经过的要求(即,在瓦片中从头到尾运行所有图元两次)。

图10对应地示出了用于每个处理经过的瓦片缓冲器10的内容(content)。因此,如图10中所示,在执行8x MSAA时,第一经过将用用于瓦片的上半部分的16 x 8 像素的每个像素八个采样来填充该瓦片缓冲器,并且第二渲染经过将用用于瓦片的下半部分的16 x 8 像素的每个像素八个采样来填充该瓦片缓冲器。(相比之下,如图10中所示,执行4x MSAA时,存在单个经过,其用用于瓦片的16 x 16 像素中的每个的每像素四个采样来填充该瓦片缓冲器)。

一旦相关的半个瓦片已经被处理并且瓦片缓冲器10用相关的采样数据填充,则再次将该瓦片数据降采样并回写到帧缓冲器。

如图8中所示,降采样(多重采样分解)单元11被配置成在多个部分中处理每个8x像素,每个表示针对讨论中的像素所需要被降采样的八个采样点中的四个采样点的相应的集合。这再次允许降采样器11在它的“原生的”降采样速率下进行操作,即,执行4x降采样。

如本领域的技术人员将认识到是,每个4x降采样操作将产生输出值。这两个输出值(一个来自8x像素中的每个部分)将然后需要被组合在一起以给出被输出(回写)到例如帧缓冲器的最终单个像素值。

在本实施例中,降采样单元11包括用于执行2x超级采样反混叠(2x SSAA)的单独的电路,并且因此该电路被用来在不需要附加时钟周期的情况下,组合来自针对给定输出像素的八个采样点的集合的相应的半部分上的每个4x降采样操作(经过)的两个降采样的结果值,以给出用于8x像素的单个输出值(其然后被回写到帧缓冲器)。

因此,降采样和瓦片回写操作在执行8xMSAA时被本质上配置成操作为其将用于4x MSAA + 2 x SSAA(唯一的区别是其还需要考虑瓦片中的哪半个部分正在被回写)。为此的面积开销是可以忽略的。

在降采样单元11不原生地支持(例如,包括单独的电路用于)2x SSAA的情况下,则来自针对给定输出像素的八个采样点的集合的相应的半部分上的每个4x降采样操作的两个降采样的结果值可以反而例如适当地被组合(被平均)以给出用于在随后降采样经过中(在下一个时钟周期中)的8x像素的单个输出值,如果期望的话。

可以使用允许渲染的片元数据将在执行8xMSAA时以相同像素分辨率被存储在瓦片缓冲器中的其他布置(即,从而使得每个瓦片缓冲器仍对应于输出像素的16 x 16阵列,即使将存在每个输出像素8个采样,而不是每个输出像素四个采样),诸如在正在使用8xMSAA时针对每个采样位置压缩渲染的片元数据,如果期望的话。

以上描述了可以如何将本实施例用于执行将由图形处理管线生成的输出(诸如将被显示的帧)的4x多重采样或8x多重采样。发送数据到图形处理器以用于处理的应用可以指示哪种形式的多重采样(4x或8x)将被使用,并且该图形处理器将然后将其自身进行配置并且相应地进行操作。

虽然以上关于通过使用具有被配置成原生地支持4x MSAA的处理阶段的图形处理管线执行8xMSAA来描述了本实施例,但同样的原理可以被应用于任何数目的采样以及任何更高水平的多重采样反混叠,诸如16 x MSAA或更高。同样地,图形处理管线可以被配置成原生地支持某些其他水平的多重采样反混叠,其中同样的原理则被应用于相应的更高水平的多重采样反混叠。

可以从以上看到的是,本发明,至少在其优选的实施例中,提供了一种使用被配置成原生地支持更低水平的反混叠的图像处理管线来实现更高水平的多重采样反混叠并且不必须引发显著的附加硬件成本的方法。

因此,例如,本发明,至少在其优选的实施例中,允许通过本质上使用被配置成执行4x多重采样(反混叠)的体系结构来实现8x多重采样(反混叠)。用户因此具有在4x多重采样和8x多重采样之间进行选择的选择权,尽管性能降低,但是不管怎样比必须配置体系结构以支持“完全速度”8x多重采样的反混叠的成本低得多。

本发明可以因此允许实现更高速率的反混叠,而不需要在图形处理器的尺寸和功率使用上的显著的增加。

至少在本发明的优选实施例中,这是通过在执行更高水平的多重采样反混叠时,在图形处理管线的选择的部分上运行多次,并且然后将该结果进行组合来实现。图形处理管线的其他选择的部分被配置成在执行更高水平的多重采样反混叠时处理作为一个整体的片元,以便确保符合期望的更高水平的多重采样反混叠。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1