CN110036414B - 在z-剔除之后去除或识别重叠片段 - Google Patents
在z-剔除之后去除或识别重叠片段 Download PDFInfo
- Publication number
- CN110036414B CN110036414B CN201780075287.6A CN201780075287A CN110036414B CN 110036414 B CN110036414 B CN 110036414B CN 201780075287 A CN201780075287 A CN 201780075287A CN 110036414 B CN110036414 B CN 110036414B
- Authority
- CN
- China
- Prior art keywords
- fragments
- buffer
- segment
- primitives
- pixel
- 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.)
- Active
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/10—Geometric effects
- G06T15/40—Hidden part removal
- G06T15/405—Hidden part removal using Z-buffer
-
- 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
- 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
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
公开了用于在z‑剔除之后去除或识别片段流中的重叠片段的技术。所述技术包括维持存储z‑剔除后片段的先进先出缓冲区。每当在所述缓冲区处接收到新片段时,对照所述缓冲区中的所有其他片段检查所述片段的所述屏幕位置。如果所述片段的所述屏幕位置与所述缓冲区中的片段的所述屏幕位置匹配,则将所述缓冲区中的所述片段去除或标记为重叠。如果所述片段的所述屏幕位置与所述缓冲区中的任何片段的所述屏幕位置都不匹配,则不对所述缓冲区中已有的片段执行修改。在任一种情况下,所述片段都被添加到所述缓冲区。所述缓冲区的内容被传输到所述像素着色器以便稍后进行像素着色。
Description
相关申请的交叉引用
本申请要求2016年12月9日提交的美国专利申请号15/374,752和2016年12月13日提交的欧洲申请号EP16203877.2的权益,这两个申请如同在本文完整阐述一样以引用的方式并入。
技术领域
所公开的实施方案总体上涉及图形处理,且具体地涉及在z-剔除之后去除被遮挡的片段。
背景技术
用于渲染三维图形的硬件接受指定要绘制到屏幕的图元的输入、将该输入转换为三角形,并处理三角形以生成用于在屏幕上显示的颜色。该过程包括像素着色,所述像素着色是确定像素颜色的过程。像素着色通常涉及至少一些“过度绘制”,当像素着色器不必要地计算特定像素的多于一种颜色时(当最终仅使用一种颜色时),会出现这种情况。例如,当两个三角形在屏幕空间中重叠时,可能发生过度绘制。在这种情况下,像素着色器可确定第一三角形内的像素的第一颜色,然后确定第二三角形内的相同像素的第二颜色。可仅使用一个这样的像素,因此丢弃所确定的颜色值中的一个。减少过度绘制是提高图形处理硬件性能的重要方面。
附图说明
可从结合附图以举例的方式给出的以下描述中获得更详细的了解,在附图中:
图1为可实现一个或多个公开的实施方案的示例性装置的框图;
图2为根据示例的加速处理装置的框图;
图3为示出了图2所示的图形处理流水线的附加细节的框图;
图4为根据示例的由图3的入库器执行的操作的图示;
图5为根据示例的由图3的扫描转换器和图3的z-剔除单元执行的操作的图示;
图6为根据示例的用于丢弃被后来接收的片段遮挡的片段的方法的流程图;并且
图7示出了根据示例的用于丢弃被后来接收的片段遮挡的片段的示例性操作。
具体实施方式
本公开涉及用于在完成z-剔除之后去除或识别片段流中的重叠片段的技术。所述技术包括维持存储z-剔除后片段的先进先出(“FIFO”)缓冲区。每当在缓冲区处接收到新片段时,对照缓冲区中的所有其他片段检查片段的屏幕位置。如果片段的屏幕位置与缓冲区中的片段的屏幕位置匹配,则将缓冲区中的片段去除或标记为重叠。如果片段的屏幕位置与缓冲区中的任何片段的屏幕位置都不匹配,则不对缓冲区中已有的片段执行修改。在任一种情况下,片段都被添加到缓冲区。缓冲区的内容被传输到像素着色器以便稍后进行像素着色。
图1为实现本公开的一个或多个方面的示例性装置100的框图。例如,装置100包括计算机、游戏装置、手持式装置、机顶盒、电视机、移动电话或平板计算机。装置100包括处理器102、存储器104、存储装置106、一个或多个输入装置108以及一个或多个输出装置110。装置100还包括分别驱动输入装置108和输出装置110的输入驱动器112和输出驱动器114。应理解,装置100可包括图1中未示出的其他部件。
处理器102包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一晶粒上的CPU和GPU,或一个或多个处理器核心,其中每个处理器核心可以是CPU或GPU。存储器104与处理器102位于同一晶粒上,或可与处理器102分开定位。存储器104包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM或高速缓存。
存储装置106包括固定或可移动存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入装置108包括键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速计、陀螺仪、生物识别扫描器或网络连接件(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。输出装置110包括显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线或网络连接件(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器112与处理器102和输入装置108通信,并且容许处理器102接收来自输入装置108的输入。输出驱动器114与处理器102和输出装置110通信,并且容许处理器102向输出装置110发送输出。输出驱动器114包括耦合到显示装置118的加速处理装置(“APD”)116。APD 116被配置为接受来自处理器102的计算命令和图形渲染命令,处理那些计算和图形渲染命令,并向显示装置118提供像素输出以进行显示。
APD 116包括被配置为根据单指令多数据(“SIMD”)范式执行计算的一个或多个并行处理单元。然而,描述为由APD 116执行的功能也可由不根据SIMD范式处理数据的处理装置来执行。
图2为根据示例的加速处理装置116的框图。处理器102在系统存储器104中维持一个或多个控制逻辑模块,以供处理器102执行。控制逻辑模块包括操作系统120、驱动器122和应用程序126。这些控制逻辑模块控制处理器102和APD 116的操作的各个方面。例如,操作系统120直接与硬件通信,并且为在处理器102上执行的其他软件提供到硬件的接口。驱动器122通过例如向在处理器102上执行的软件(例如,应用126)提供应用编程接口(“API”)来访问APD 116的各种功能来控制APD 116的操作。驱动器122还包括即时编译器,该即时编译器编译用于由APD 116的处理部件(诸如下面更详细讨论的SIMD单元138)执行的程序。
APD 116执行用于选定功能的命令和程序,诸如可适合用于并行处理的图形操作和非图形操作。APD 116可用于基于从处理器102所接收的命令来执行图形流水线操作,诸如像素操作、几何计算,以及向显示装置118渲染图像。APD 116还基于从处理器102所接收的并且不是图形处理流水线134的“正常操作流”的一部分的命令来执行与图形操作不直接相关(不相关)的计算处理操作,诸如与视频、物理学模拟、计算流体动力学或其他任务相关的操作。
APD 116包括着色器引擎132(其可在本文中统称为“可编程处理单元202”),所述着色器引擎包括一个或多个SIMD单元138,该一个或多个SIMD单元被配置为根据SIMD范式以并行方式在处理器102的请求下执行操作。SIMD范式是其中多个处理元件共享单个程序控制流单元和程序计数器并因此执行相同程序但能够用不同数据执行该程序的范式。在一个示例中,每个SIMD单元138都包括十六个通道,其中每个通道都与SIMD单元138中的其他通道同时执行相同的指令,但可用不同的数据执行该指令。如果不是所有通道都需要执行给定的指令,则可以预测关闭通道。预测还可以用于用发散控制流执行程序。更具体地,对于具有条件分支或其他指令(其中控制流是基于个别通道执行的计算)的程序,对与当前未执行的控制流路径对应的通道的预测以及不同控制流路径的串行执行允许遵循任意控制流。
着色器引擎132中的基本执行单元为工作项。每个工作项都表示要在特定通道中并行执行的程序的单个例示。工作项可以作为单个SIMD单元138上的“波前”被同时执行。多个波前可包括在“工作组”中,该工作组包括被指定执行相同程序的工作项集合。可通过执行组成工作组的波前中的每个来执行工作组。波前可在单个SIMD单元138上顺序执行或者在不同SIMD单元138上部分或全部并行执行。波前可被认为是可在单个SIMD单元138上同时执行的最大的工作项集合。因此,如果从处理器102所接收的命令指示特定程序将被并行化至程序不能同时在单个SIMD单元138上执行的程度,则该程序被分解成波前,所述波前在两个或多个SIMD单元138上并行化或在同一SIMD单元138上串行化(或根据需要并行化和串行化)。调度器136被配置为执行与调度不同着色器引擎132和SIMD单元138上的各个波前有关的操作。调度涉及分配波前以在SIMD单元138上执行、确定波前何时结束、确定波前何时停止且应何时用其他波前换出,以及执行其他调度任务。
着色器引擎132提供的并行性适合用于图形有关的操作,诸如像素值计算、顶点变换和其他图形操作。因此,接受来自处理器102的图形处理命令的图形处理流水线134向着色器引擎132提供计算任务以并行执行。
着色器引擎132还用于执行与图形无关或不作为图形流水线134的“正常”操作的一部分执行的计算任务(例如,被执行以补充针对图形处理流水线134的操作而执行的处理的自定义操作)。在处理器102上执行的应用程序126或其他软件将定义这样的计算任务的程序(通常称为“计算机着色器程序”)传输给APD 116以供执行。
图3为示出了图2所示的图形处理流水线134的附加细节的框图。图形处理流水线134包括世界空间流水线302、入库器304、扫描转换器306、z-剔除单元308、延迟像素着色单元310、像素着色器312和输出合并器314。输出合并器314将像素数据输出到帧缓冲区316,该帧缓冲区存储数据以在显示装置118上显示。帧缓冲区可用于除在显示装置118上显示数据之外的目的。
世界空间流水线302执行顶点和图元操纵,从而将在三维世界空间中定义的对象转换为在屏幕空间中定义的三角形。世界空间流水线302从用户填充的缓冲区(例如,在由处理器102执行的软件诸如应用程序126的请求下填充的缓冲区)读取图元数据并将该数据汇编成图元以供流水线的其余部分使用。世界空间流水线302执行用于将从处理器102所接收的输入转换为更适于渲染成屏幕像素的形式的功能。更具体地,世界空间流水线302执行顶点着色功能、可选的曲面细分功能(如果启用了曲面细分),以及可选的几何着色功能(如果启用了几何着色)。
顶点着色包括执行各种逐顶点操作,诸如变换、蒙皮、渐变和逐顶点光照。变换操作可包括用于变换顶点坐标的各种操作。这些操作可包括模型变换、视图变换、投影变换、透视除法和视口变换中的一个或多个。本文中,这样的变换被认为是修改在其上执行变换的顶点的坐标或“位置”。顶点着色的其他操作可修改除坐标之外的属性。顶点着色部分地或全部地实现为要在一个或多个着色器引擎132上执行的顶点着色器程序。在一些示例中,顶点着色器程序由处理器102提供并且基于由计算机程序员预先编写的程序。驱动器122编译这样的程序以生成具有适合在着色器引擎132内执行的格式的顶点着色器程序。在其他示例中,顶点着色器程序是由驱动器122直接提供的、是从APD 116自身的存储器中检索的,或者是通过任何其他技术上可行的手段提供的。
曲面细分通过细分图元来将简单的图元转换为更复杂的图元。曲面细分涉及基于输入图元生成补片以进行曲面细分、针对补片生成样本集,以及计算与补片的样本对应的顶点的顶点位置。可通过在可编程处理单元202上执行的着色器程序来部分地或完全地执行曲面细分。
几何着色在逐图元的基础上执行顶点操作。可经由几何着色来执行多种不同类型的操作,包括诸如点精灵扩展、动态粒子系统操作、皮毛生成、阴影体积生成、单遍渲染到立方图、逐图元材料变换和逐图元材料构建的操作。可通过在可编程处理单元202上执行的着色器程序来执行几何着色的操作。
世界空间流水线302可实现为硬件(包括固定功能和可编程硬件)和软件的组合、实现为所有硬件(包括所有固定功能硬件、所有可编程硬件或其组合),或完全实现为在硬件处理器上执行的软件。世界空间流水线302输出图元(通常为三角形)以供图形处理流水线134中的其他单元处理,以最终转换为要被写入到帧缓冲区316并输出到显示装置118的屏幕像素。
可选的入库器304接受来自世界空间流水线302的图元并将每个图元都分配给一个或多个“库”。库是与屏幕空间的特定细分部相关联的像素数据的逻辑分组。例如,一个库可能包含屏幕空间的左上角的像素数据组(例如,屏幕空间的顶部64x64像素)。入库器304填充库直到满足特定触发条件,然后将库按顺序传输到扫描转换器306以进行处理。入库的目的是允许图形处理流水线134中的后来的单元根据在任何给定时间处理的屏幕部分来以“聚焦”方式处理像素。这种“聚焦”旨在减少在任何特定处理部分期间要维护的工作数据量,这允许高速缓存或缓冲区更小和/或更有效地使用(例如,通过具有更高的命中率等)。例如,通过发送与屏幕的左上角相关联的数据然后再发送任何其他数据,存储与左上角相关联的数据的缓冲区和高速缓存将仅具有针对屏幕的该左上角的数据。这将允许这样的缓冲区或高速缓存更小和/或具有更高的命中率。下面相对于图4提供入库器304的操作的示例。在2013年3月29日提交且标题为“Hybrid Render with Deferred Primitive BatchBinning”的美国专利申请号13/853,422和在2016年8月29日提交且标题为“Hybrid Renderwith Preferred Primitive Batch Binning and Sorting”的美国专利申请号15/250,357中提供关于入库器操作的附加细节,这两个专利的全部内容都以引用方式并入本文。
扫描转换器306从入库器304接收图元并对这些图元执行光栅化。光栅化涉及确定哪些屏幕像素(或子像素,针对每个屏幕像素生成多个颜色值样本的模式,为了诸如抗混叠的目的)被特定图元覆盖。应理解,术语“像素”在本文中可被“子像素样本”取代。子像素样本为屏幕空间的在每个像素生成多个样本的情况下小于像素的一部分。例如,抗混叠算法可每个像素利用多个样本以降低边缘的明显陡度。
扫描转换器306生成并输出“片段”,所述片段为特定像素的数据的未完成描述。片段行进穿过图形处理流水线134的其余部分并被处理以识别片段的颜色以及可能的其他值。片段可能由于深度测试或其他原因而被剔除,或者可能继续存在并被作为颜色值写入到帧缓冲区316以供在显示装置118上显示。扫描转换器306可将多个片段分组为“四元组”,所述四元组是在屏幕空间中连续的2x2片段组,并且被从扫描转换器306中输出。每个四元组都可对应于唯一地定义屏幕空间中的四元组的位置的四元组地址。例如,如果四元组为2x2片段组,则四元组地址可为四元组中的片段的屏幕位置除以2,该片段具有偶数x和偶数y屏幕位置。在一个示例中,四元组具有四个带有屏幕位置[0,0]、[1,0]、[0,1]和[1,1]的片段。该四元组的四元组地址为具有偶数屏幕位置(0,0)的片段的坐标除以2(0,0)。对于具有四个带有屏幕位置[10,8]、[11,8]、[10,9]、[11,9]的片段的四元组,四元组地址为具有这两个偶数像素坐标([10,8])的片段的屏幕位置,其中这两个坐标除以2([5,4])。每个四元组都包括覆盖度图,该覆盖度图指示四元组中的哪些片段被图元覆盖,哪些片段没有被图元覆盖。例如,光栅化可确定图元覆盖特定四元组的四个片段中的三个。该四元组的覆盖度图将指示三个片段被覆盖,并且剩余一个片段未被覆盖。
z-剔除单元308丢弃被确定为被已经看到的片段遮挡的片段,如由后来看到的片段和已经看到的片段的深度值所确定。累积深度数据每帧进行重置。在一个示例中,对于z-剔除单元308未针对当前帧处理片段的特定屏幕位置,z-剔除单元308接收深度为5的第一片段,然后是深度为8的第二片段,然后是深度为2的第三片段。z-剔除单元308并不丢弃第一片段,因为该屏幕位置还不存在深度数据。然而,第二片段的深度值指示该片段比第一片段更远离相机(例如,8的深度高于5的深度),因此z-剔除单元308丢弃第二片段。z-剔除单元308并不丢弃第三片段,因为深度值为2的该片段比深度值为5的另一个最近的片段更近。z-剔除单元308还将屏幕位置的深度值更新为2,以处理后面看到的片段。对于四元组的处理,丢弃片段可包括修改四元组的覆盖度图,并且可包括在更新四元组的覆盖度图之后,在无片段可见的情况下丢弃整个四元组。
延迟像素着色单元310保持从z-剔除单元308所接收的片段,以对照将覆写所保持片段的较新片段来测试片段。执行该测试以减少要由像素着色器312处理的片段的数量。回到相对于z-剔除单元308所讨论的示例性三个片段,在由z-剔除单元308处理的三个片段中,仅第三片段最终将是可见的,因为该片段最接近相机并且因此会遮挡其他两个片段。然而,z-剔除单元308使具有深度5的第一片段和具有深度2的第三片段两者都通过。为了防止在最终场景中不可见的第一片段被像素着色器312处理,延迟像素着色单元310进一步处理片段以去除被z-剔除单元308通过的片段中的至少一些,尽管它们会被后来看到的片段遮挡。至少在图6和图7以及相关公开内容中提供与延迟像素着色单元310的操作相关的细节。
像素着色器312实现像素着色。像素着色涉及基于在世界空间流水线302中生成的图元以及光栅化和z-剔除的结果来确定片段的值(诸如颜色等)。像素着色可包括应用来自纹理存储器的纹理、应用着色算法和/或应用其他操作。像素着色的操作可由在可编程处理单元202上执行的一个或多个着色器程序执行。
输出合并器314处理从像素着色器312所接收的片段,以输出到帧缓冲区316。帧缓冲区存储像素数据以输出到显示装置118或用于其他目的。
世界空间流水线302、入库器304、扫描转换器306、z-剔除单元308、延迟像素着色单元310、像素着色器312和输出合并器314中的每一个都可实现为硬件(包括固定功能和可编程硬件)和软件的组合、实现为所有硬件(包括所有固定功能硬件、所有可编程硬件或其组合),或完全实现为在硬件处理器上执行的软件。
图4为根据示例的由图3的入库器304执行的操作的图示。示出了屏幕空间402,其被划分为若干屏幕空间细分部404。屏幕空间402表示其中可渲染像素以最终输出到显示装置118的几何区域。每个屏幕空间细分部404都为屏幕空间402的空间上不同的部分。
图4示出了从世界空间流水线302所接收的五个不同的图元406。不同的图元406覆盖不同的屏幕空间细分部404。第一图元406(1)覆盖屏幕空间细分部404(1)、屏幕空间细分部404(2)、屏幕空间细分部404(4)和屏幕空间细分部404(5)。第二图元406(2)覆盖屏幕空间细分部404(1)、屏幕空间细分部404(2)和屏幕空间细分部404(3)。第三图元406(3)覆盖屏幕空间细分部404(5)。第四图元406(4)覆盖屏幕空间细分部404(3)、屏幕空间细分部404(5)和屏幕空间细分部404(6)。第五图元406(5)覆盖屏幕空间细分部404(5)、屏幕空间细分部404(6)、屏幕空间细分部404(7)、屏幕空间细分部404(8)和屏幕空间细分部404(9)。
入库器304生成库1-9(包括库1 408(1)、库2 408(2)等,一直到库9 408(9))。每个库408都包括图元406,所述图元覆盖与该特定库相关联的屏幕空间细分部404。库408被按顺序传输到图形处理流水线134的其余部分以进行处理。所描绘的特定顺序是从左到右且逐行的,尽管库408被传输以进行处理的顺序可为任何技术上可行的顺序。
尽管图元406在图4中被示为被相关联的屏幕空间细分部404的边界“切断”,但整个图元都包括在每个特定库中。与相关联的屏幕空间细分部404的边界对齐的裁剪矩形与每个库408一起传输到图形处理流水线134的其余部分,使得图形处理流水线134的其余部分知道处理在屏幕空间细分部404内但不在外面的片段的数据。可修改裁剪矩形的边界以用于可能需要这样的修改的各种操作,诸如使用了来自相邻像素的数据的抗混叠或其他操作。
库408与裁剪矩形一起由图形处理流水线134的其余部分处理,以按照库的顺序来将图元渲染成像素。例如,306确定第一库408(1)、第二库408(2)、第三库408(3)等中的图元的像素覆盖度。扫描转换器306光栅化第一库408(1)的图元、第二库408(2)的图元、第三库408(3)的图元等等。如上所述,光栅化涉及识别被特定图元覆盖的屏幕位置。裁剪矩形将所识别的屏幕位置限制为仅包括在与特定库408相关联的屏幕空间细分部404内的那些屏幕位置。因此,对于库408中的每个图元406,用于特定库408的扫描转换器306的输出包括位于与库408相关联的屏幕空间细分部404中的并且被该图元406覆盖的片段。对于每个图元406,用于特定库408的像素着色器312的输出包括覆盖该图元406并且位于与该库408相关联的屏幕空间细分部404内的着色片段。
图5为根据示例的由图3的扫描转换器306和图3的z-剔除单元308执行的操作的图示。扫描转换器306接收由世界空间流水线302和入库器304处理的图元406并且执行扫描转换(也称为“光栅化”)。扫描转换涉及识别图元406覆盖哪些屏幕位置502。用于确定特定图元是否覆盖特定屏幕位置502的规则可以是变化的,并且可使用任何技术上可行的方式来识别图元406覆盖哪个屏幕位置502。用于确定图元是否覆盖像素的一个示例性技术是确定像素的中心点是否在图元的边缘内。在该示例中,如果像素的中心点在图元的边缘内,则认为图元覆盖该像素。在该示例中,如果像素的中心点不在图元的边缘内,则认为图元不覆盖该像素。替代地,可使用用于确定像素是否被图元覆盖的任何其他技术上可行的技术。在一些情况下,图形处理流水线134在帧缓冲区316中生成每个屏幕像素包括多个“样本”(例如,颜色值)的图像。多样本图像可用于各种任务诸如多样本抗混叠,该多样本抗混叠基于针对每个屏幕像素生成的多个样本来为该像素生成单个颜色值。在此类情况下,扫描转换器306确定像素内每个样本的覆盖度,并输出像素中的每个被覆盖样本的片段。扫描转换器306还可针对每个像素生成覆盖掩模,其中覆盖掩模指示图元覆盖像素中的哪些样本。扫描转换器306输出被图元406覆盖的片段504以供z-剔除单元308处理。在图5中,六个屏幕位置502被认为被图元406覆盖。
在图5中示出对应于六个屏幕位置502的六个片段504(504(1)至504(6))。每个片段504也具有示出的深度值,该深度值是在每个片段504内描绘的数字。在图5所示的示例中,每个片段504的深度值为6,但在其他示例中,相同图元的片段可具有不同的深度值。
为了执行z-剔除,z-剔除单元308将所接收的片段504的深度值与深度缓冲区506中的深度值进行比较。如果深度缓冲区506中的对应深度值指示正在考虑的片段504被已由z-剔除单元308处理的片段遮挡,则丢弃该片段504。如果深度缓冲区506中的对应深度值指示正在考虑的片段504未被已由z-剔除单元308处理的片段遮挡,则该片段504通过z-剔除单元308并且深度缓冲区506中的深度值更新以与通过的片段504的深度值匹配。
针对在图元406本地的屏幕区域508示出深度缓冲区506中的深度值,但为了简单和清楚起见,从深度缓冲区506的其他部分省去所述深度值。然而,应理解,深度缓冲区506将存储屏幕的其他区域的深度值。
在图元406本地的屏幕区域508示出了十二个深度值,该十二个深度值按照从左到右和从上到下的顺序,分别为2、9、9、9、2、9、9、9、2、9、9和9。基于图元406生成的片段504的位置对应于不同的深度值,如深度缓冲区506中的图元406的位置所示。更具体地,片段504(1)与最顶部深度值2重叠,片段504(2)与中间深度值2重叠,片段504(4)与底部深度值2重叠,片段504(3)与左中深度值9重叠,片段504(5)与左下深度值9重叠,并且片段504(6)与下中深度值9重叠。
z-剔除单元308将片段504的深度值和被深度缓冲区506中的片段504重叠的深度值进行比较。如果深度缓冲区506中的深度值低于重叠片段504的深度值(并且因此相关联的片段比重叠片段504更靠近相机),则重叠片段504被已由z-剔除单元308处理的片段遮挡。在那种情况下,z-剔除单元308丢弃重叠片段。在图5中,最左边的片段504(片段504(1)、片段504(2)和片段504(4))具有深度值6,并且深度缓冲区506中的重叠深度值等于2。因此,z-剔除单元308丢弃最左边的片段504(该丢弃用“X”表示)。如果深度缓冲区506中的深度值大于重叠片段504的深度值,则重叠片段504不被已由z-剔除单元308处理的任何片段504遮挡。在这种情况下,z-剔除单元308并不丢弃片段504,而是用未被遮挡的片段504的深度值更新存储在深度缓冲区506中的深度值。在图5中,更新对应于片段504(3)、片段504(5)和片段504(6)的三个深度值。因此,在深度缓冲区更新之后,存在三个深度值为2,三个深度值为6,其余深度值为9。
总而言之,z-剔除单元308维持深度缓冲区506,该深度缓冲区存储已由z-剔除单元308处理的片段504的最低深度值。从z-剔除单元308输出的后来的片段不能被从z-剔除单元308输出的较早片段遮挡。然而,从z-剔除单元308输出的较早片段可能被后来由z-剔除单元308处理的片段遮挡。本文描述了特定“深度模型”,其中较低深度值意味着与较高深度值相比,片段更靠近相机。然而,本领域的技术人员应理解,本文提供的教导内容不限于该特定“深度模型”,并且本文提供的教导内容可应用于任何其他技术上可行的深度模型。在一个示例中,较高深度值意味着片段比具有较低深度值的片段更靠近相机。任何其他技术上可行的深度模型也是可能的。
由于这个原因,延迟像素着色单元310“保持”从z-剔除单元308输出的片段,以检查遮挡较早片段的后来的片段。图6为根据示例的用于丢弃被后来接收的片段遮挡的片段的方法600的流程图。尽管相对于关于图1至图5所示和所述的系统进行了描述,但应理解,被配置为以任何技术上可行的顺序执行该方法的任何系统都落入本公开的范围内。
如图所示,方法600在步骤602处开始,其中扫描转换器306光栅化图元以获得对应于图元的片段集。可如关于图3和图5所描述的那样执行光栅化。如果使用了入库,则所获得的片段集为对应于图元并且在特定屏幕空间细分部404内的片段。在步骤604处,z-剔除单元308从扫描转换器306接收光栅化的片段,并对这些片段执行z-剔除。Z-剔除包括将所接收的片段的深度值与存储在深度缓冲区中的深度值进行比较。深度值大于深度缓冲区中的对应值的片段被先前处理的片段遮挡,且因此被丢弃。深度值小于深度缓冲区中的对应值的片段不会被先前处理的片段遮挡。在那种情况下,z-剔除单元308用片段的深度值更新深度缓冲区中的深度值,并将片段传递到延迟像素着色单元310。
在步骤606处,延迟像素着色单元310将所接收的片段与存储在先进先出(“FIFO”)缓冲区中的片段进行比较,该先进先出缓冲区存储先前由延迟像素着色单元310处理的片段。更具体地,延迟像素着色单元310确定传入片段的屏幕位置是否与存储在FIFO缓冲区中的片段的屏幕位置匹配。入库提高了在FIFO缓冲区中发生匹配的可能性,因为通过入库,屏幕空间的与库相关联的一小部分的片段,而不是屏幕空间的其他部分的片段,在延迟像素着色单元310中一起进行处理。
在步骤608处,对于屏幕位置与FIFO缓冲区中的片段的屏幕位置匹配的片段,延迟像素着色单元310从FIFO缓冲区中去除最旧匹配片段。如果在传入片段与FIFO缓冲区中的片段之间不存在屏幕位置匹配,则延迟像素着色单元310不丢弃来自FIFO缓冲区的任何片段。在步骤610处,延迟像素着色单元310将所接收的片段放入FIFO缓冲区中。在该步骤中,延迟像素着色单元310将片段放入FIFO缓冲区中,而不管当在步骤606处比较时,这样的片段是否与FIFO缓冲区中已有的片段匹配。
延迟像素着色单元310继续填充FIFO直到满足刷新条件,此时,延迟像素着色单元310将FIFO中的片段传输到像素着色器312,以按FIFO指示的顺序进行处理。刷新包括:1)FIFO已满;2)入库器304向延迟像素着色单元310指示特定库408的所有图元都已由入库器304传输;3)入库器304向延迟像素着色单元310指示当前帧已完成并且下一帧将被处理;或4)指示将由于任何原因执行刷新的任何其他事件,包括由装置驱动器122或应用程序126设置的可编程刷新条件。
上述方法600可用于在每个屏幕像素存在单个片段或每个屏幕像素存在多个片段的情况下处理片段。此外,尽管关于步骤604描述了特定“深度模型”(其中较低深度值指示与较高深度值相比片段更靠近相机的一种深度模型),但替代地可使用其他深度模型。
图7示出了根据示例的用于丢弃被后来接收的片段遮挡的片段的示例性操作。图7示出了在第二输入图元702(2)输入到延迟像素着色单元310之前输入到延迟像素着色单元310的第一输入图元702(1)。第一输入图元702(1)包括四元组0到9(其中0到9被称为相应的“四元组标识符”),其中x和y屏幕位置值如针对相应的四元组所示。第二输入图元702(2)具有四元组10到19(其中10到19被称为相应的“四元组标识符”),其中x和y屏幕位置值也如图所示。更具体地,第一输入图元702(1)在位置0,0处具有四元组0,在位置1,0处具有四元组1,在位置2,0处具有四元组2,在位置3,0处具有四元组3,在位置0,1处具有四元组4,在位置1,1处具有四元组5,在位置2,1处具有四元组6,在位置0,2处具有四元组7,在位置1,2处具有四元组8,以及在位置0,2处具有四元组9。第二输入图元702(2)在位置0,0处具有四元组10,在位置1,0处具有四元组11,在位置2,0处具有四元组12,在位置3,0处具有四元组13,在位置1,1处具有四元组14,在位置2,1处具有四元组15,在位置3,1处具有四元组16,在位置2,2处具有四元组17,在位置3,2处具有四元组18,以及在位置3,3处具有四元组19。每个四元组的覆盖度都以图形方式指示。四元组中的被覆盖像素用特定阴影线示出,而未被覆盖的像素无阴影线。例如,在四元组3中,在左上像素、右上像素和左下像素中存在覆盖,但在右下像素中不存在覆盖。图7中示出了四元组而不是个别片段,以说明覆盖掩模与延迟像素着色单元310的操作之间的相互作用。
先进先出(“FIFO”)缓冲区状态706示出了FIFO缓冲区的状态(示为一排20个框,其中每个框都对应于不同的FIFO缓冲区条目)以及FIFO缓冲区如何随着在延迟像素着色单元310处接收到四元组而变化。FIFO缓冲区包括FIFO条目,所述FIFO条目存储关于从z-剔除单元308所接收的四元组的数据。FIFO缓冲区的目的是允许对照存储在FIFO缓冲区中的较旧四元组的屏幕位置来检查传入四元组的屏幕位置,以确定是否应由于被较新四元组遮挡而丢弃较旧四元组或其一部分。如上所述,z-剔除单元308保证后来处理的片段不会被较早处理的片段遮挡。因此,对于与较早处理的片段处于相同屏幕位置中的后来处理的片段,后来处理的片段遮挡了较早处理的片段,因此较早处理的片段被丢弃。
每当接收到新四元组时,延迟像素着色单元310对照FIFO缓冲区中的所有四元组的屏幕位置,检查该四元组的屏幕位置。如果没有发生匹配(在FIFO缓冲区中的四元组的屏幕位置与所接收的四元组的屏幕位置相同的情况下发生匹配),则延迟像素着色单元310不对FIFO缓冲区中已存储的四元组作出改变。如果确实发生匹配并且新四元组具有被覆盖且与FIFO缓冲区中的匹配四元组的被覆盖片段重叠的至少一个片段,则延迟像素着色单元310更新FIFO缓冲区以消除FIFO缓冲区中的被传入四元组的至少一个片段重叠的片段。无论是否发生匹配,延迟像素着色单元310都使四元组下移1(在图7中向右)并将新四元组存储在FIFO缓冲区中、在FIFO缓冲区的对应于“最新条目”的末端处(图7中FIFO缓冲区的最左端)。
第一FIFO缓冲区状态706(1)示出了在接收到第一输入图元702(1)的四元组0之后FIFO缓冲区的状态。第二FIFO缓冲区状态706(2)示出了在接收到第一输入图元702(1)的四元组1之后FIFO缓冲区的状态。向前跳跃,第三FIFO缓冲区状态706(3)示出了FIFO缓冲区中的第一输入图元702(1)的所有四元组。在将第一输入图元702(1)的所有四元组都输入到FIFO缓冲区之后,延迟像素着色单元310处理第二输入图元702(2)的四元组。在第一输入图元702(1)的四元组之后处理第二输入图元702(2)的四元组的事实是由于扫描转换器306按此顺序输出四元组的事实引起的。该特定排序可以是扫描转换器306首先处理第一输入图元702(1)然后处理第二输入图元702(2)的事实的结果,且因此将第一输入图元702(1)的四元组在第二输入图元702(2)的四元组之前发送到延迟像素着色单元310。由于在光栅化之后但在延迟像素着色单元310的操作之前执行z-剔除,因此后来接收的图元(第二输入图元702(2))的每个片段都保证不会被较早接收的图元(第一输入图元702(1))的任何片段遮挡。
在第三FIFO缓冲区状态706(3)之后,延迟像素着色单元310接收四元组10并对照FIFO缓冲区中的四元组检查四元组10。延迟像素着色单元310确定四元组0具有与四元组10相同的屏幕位置。在第四FIFO缓冲区状态706(4)中用围绕四元组0的粗体矩形指示该冲突。在这种情况下,延迟像素着色单元310修改或消除FIFO缓冲区中的较旧冲突四元组,即四元组0。该修改或消除是基于较旧冲突四元组和较新冲突四元组中的重叠覆盖的程度。更具体地,如果新四元组具有与FIFO缓冲区中已有的四元组相同的屏幕位置,则延迟像素着色单元310确定新四元组的覆盖度与旧四元组的覆盖度之间的重叠程度。如果存在部分重叠,则更新旧四元组,使得将旧四元组的被新四元组重叠的部分从FIFO缓冲区中去除。部分重叠意味着旧四元组覆盖了被新四元组覆盖的四元组的至少一些,而不是全部。如果存在完全重叠,则延迟像素着色单元310从FIFO缓冲区中去除旧四元组。完全重叠意味着旧四元组被新四元组完全覆盖(即,被指示为被旧四元组覆盖的四元组的所有部分都被新四元组覆盖)。如果不存在重叠,则延迟像素着色单元310不对FIFO缓冲区中的旧四元组作出改变。不存在重叠意味着被指示为被旧四元组覆盖的四元组中没有一个部分被新四元组覆盖。
四元组10与四元组0处于相同的屏幕位置。然而,四元组0覆盖屏幕位置的整个区域,而四元组10仅覆盖右上部分。在这种情况下,延迟像素着色单元310确定四元组0被四元组10部分重叠,且因此修改FIFO缓冲区中的四元组0以去除重叠部分。因此,在状态706(5)下,四元组0被示出为仅包括左下部分而不是右上部分,该右上部分已被去除。
同样在状态706(5)下,延迟像素着色单元310确定四元组11具有与FIFO缓冲区中的另一个四元组(四元组1)相同的屏幕位置,(这两个四元组都具有屏幕位置1,0)。作为响应,延迟像素着色单元310确定四元组11覆盖四元组1的哪个部分。由于四元组11与四元组1完全重叠,因此延迟像素着色单元310从FIFO缓冲区中去除四元组1。因此,在状态706(6)中,四元组1被示出为不具有覆盖度,这指示四元组1为“空”四元组并且不应被转发到像素着色器312。在所示的示例性实现方式中,空四元组保持在FIFO缓冲区中而不是释放由空四元组占用的槽,但在替代实现方式中,可释放槽并且可将非空四元组移向释放的槽。在状态706(6)中,延迟像素着色单元310确定四元组12与四元组2完全重叠,且因此从FIFO缓冲区中去除四元组2。
向前跳跃,FIFO缓冲区状态706(7)示出了在处理输入图元702(1)和输入图元702(2)的四元组之后的FIFO缓冲区。被后面的四元组10部分重叠的四元组0仅具有剩余的不重叠部分。四元组1、2和3被四元组11、12和13完全重叠,且因此被从FIFO缓冲区中去除。四元组4未被示出的后面的四元组覆盖,且因此保留在FIFO缓冲区中。四元组5被四元组14部分重叠,且因此仅不重叠部分保留在FIFO缓冲区中。四元组6被四元组15完全重叠,且因此被从FIFO缓冲区中去除。四元组7、8和9不被后续四元组重叠,且因此在FIFO缓冲区中不被修改。类似地,输入图元702(2)的所有四元组不被任何其他四元组重叠,且因此在FIFO缓冲区中不被修改。
FIFO缓冲区的内容被传输到流水线的其余部分以进行处理,并在帧缓冲区316中产生输出图元704(1)和输出图元704(2)(假设与输出图元704(1)或输出图元704(2)重叠的后来的图元中没有图元被处理)。如图所示,输出图元704(1)被输出图元704(2)裁剪。像素着色器312并不处理图元的裁剪部分,因为在发送到像素着色器312之前,这些裁剪部分被从FIFO缓冲区中去除。
以上讨论是每个像素存在一个样本的示例。然而,上面讨论的技术可应用于每个像素具有多个样本的情况。
对上述技术的一种修改涉及将片段标记为重叠,而不是删除那些片段。更具体地,当在传入四元组和FIFO缓冲区中的四元组之间存在匹配并且延迟像素着色单元310确定在两个四元组之间存在覆盖重叠时,延迟像素着色单元310将这两个四元组的重叠片段标记为重叠。随后,像素着色器312使用该重叠信息以确保在较新重叠片段之前处理较旧重叠片段。像素着色器312可使用屏障操作来使像素着色器312中的操作等到处理了较旧的片段之后,再处理较新的重叠片段。当透明度打开时,可使用这种“标记”操作模式。在透明度打开的情况下,与另一个片段重叠的片段不会仅覆写该片段,而是可在混合操作中与该片段混合。在此类情况下,不是去除FIFO缓冲区中的最旧匹配片段,而是将FIFO缓冲区中的匹配的每个片段都标记为重叠。透明度打开时的另一种替代方案是绕过FIFO缓冲区。在此类情况下,延迟像素着色单元310被有效地关掉或绕过。片段不会被放入FIFO缓冲区中,也不会进行检查以确定传入片段是否与存储在FIFO缓冲区中的片段匹配。
尽管FIFO缓冲区在图7中被示出为存储对应于四元组的条目,但条目可替代地对应于个别像素或对应于大于2x2的像素组。对于对应于个别像素的条目,如果在输入像素和FIFO缓冲区中的像素之间存在屏幕位置匹配,则不检查覆盖度。相反,如果存在这种匹配,则只需从FIFO中删除该条目。在个别FIFO缓冲区条目对应于大于2x2的像素组的情况下,以与上述描述中类似的方式执行覆盖度检查,不同的是以更精细的粒度执行覆盖度检查。
APD 116可包括并行操作的多个不同的FIFO缓冲区,其中的每一个都被分配不同的屏幕空间部分。由图形处理流水线134中的各种单元处理和输出的片段序列在本文中可称为“流”。
入库被执行的事实允许FIFO缓冲区具有相对小的尺寸和/或提高FIFO缓冲区的命中率。更具体地,由于FIFO缓冲区在接收到特定库的所有片段之后被清空,因此可以设想,FIFO缓冲区将仅存储在任何特定时间落入特定库中的片段。因此,FIFO缓冲区中的“命中”的机会大于任何屏幕位置处的片段可存储在FIFO缓冲区中的机会。命中率的这种增加提高了去除被遮挡片段的速率,这减少了像素着色器312执行的不必要的工作量。
提供一种用于识别片段流中的重叠片段以供像素着色器处理的方法。该方法包括从z-剔除的片段流接收第一片段,该第一片段具有第一屏幕位置。该方法还包括在存储片段的延迟像素着色缓冲区中识别第二片段,该第二片段具有与第一屏幕位置匹配的第二屏幕位置。该方法还包括响应于识别,基于匹配来修改延迟像素着色缓冲区。该方法还包括将延迟像素着色缓冲区的片段传输到像素着色器以进行着色。
还提供一种加速处理装置。该加速处理装置包括z-剔除单元,该z-剔除单元被配置为对片段集的片段进行z-剔除以生成z-剔除的片段流。该加速处理装置还包括像素着色器,该像素着色器被配置为对提供给像素着色器的片段执行像素着色操作。该加速处理装置还包括延迟像素着色单元。该延迟像素着色单元被配置为从z-剔除的片段流接收第一片段,该第一片段具有第一屏幕位置。该延迟像素着色单元还被配置为在存储片段的延迟像素着色缓冲区中识别第二片段,该第二片段具有与第一屏幕位置匹配的第二屏幕位置。该延迟像素着色单元还被配置为响应于识别,基于匹配来修改延迟像素着色缓冲区。该延迟像素着色单元还被配置为将延迟像素着色缓冲区的片段传输到像素着色器以进行着色。
提供一种存储指令的非暂时性计算机可读介质,所述指令在由处理器执行时,使处理器执行用于识别片段流中的重叠片段以供像素着色器处理的方法。该方法包括从z-剔除的片段流接收第一片段,该第一片段具有第一屏幕位置。该方法还包括在存储片段的延迟像素着色缓冲区中识别第二片段,该第二片段具有与第一屏幕位置匹配的第二屏幕位置。该方法还包括响应于识别,基于匹配来修改延迟像素着色缓冲区。该方法还包括将延迟像素着色缓冲区的片段传输到像素着色器以进行着色。
应理解,基于本文的公开内容,许多变型是可能的。尽管上文以特定组合描述了特征和元件,但是每个特征或元件可在没有其他特征和元件的情况下单独使用,或者可在具有或没有其他特征和元件的情况下以各种组合使用。
可在通用计算机、处理器或处理器核心中实现所提供的方法。合适的处理器包括例如通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、其他任何类型的集成电路(IC)和/或状态机。可通过使用处理后的硬件描述语言(HDL)指令的结果和包括网表的其他中间数据(这些指令能够存储在计算机可读介质上)配置制造过程来制造这种处理器。这种处理的结果可以是掩模作品,该掩模作品随后在半导体制造过程中用来制造实现实施方案的各方面的处理器。
本文提供的方法或流程图可用并入非暂时性计算机可读存储介质中以供通用计算机或处理器执行的计算机程序、软件或固件来实现。非暂时性计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓冲存储器、半导体存储器装置、诸如内部硬盘和可移动磁盘的磁性介质、磁光介质以及诸如CD-ROM盘和数字通用盘(DVD)的光学介质。
Claims (16)
1.一种用于识别片段流中的重叠片段以供像素着色器处理的方法,所述方法包括:
从z-剔除的片段流接收传入存储片段的延迟像素着色缓冲区中的新片段,所述新片段具有第一屏幕位置;
在所述延迟像素着色缓冲区中识别存在的片段,所述存在的片段具有与传入所述延迟像素着色缓冲区中的所述新片段的所述第一屏幕位置匹配的第二屏幕位置;
响应于所述识别,并且在没有将所述存在的片段的深度与所述新片段的深度进行比较的情况下,基于所述匹配来修改所述延迟像素着色缓冲区,所述修改包括以下至少一项:将所述存在的片段和所述新片段标记为重叠,和从所述延迟像素着色缓冲区中丢弃所述存在的片段;
将所述新片段存储到所述延迟像素着色缓冲区中;以及
将所述延迟像素着色缓冲区存储的所述片段传输到像素着色器以进行着色。
2.如权利要求1所述的方法,其还包括:
将多个输入图元入库以生成多个入库的输入图元;
光栅化所述多个入库的输入图元以生成片段集;以及
对所述片段集进行z-剔除以产生所述z-剔除的片段流。
3.如权利要求2所述的方法,其中:
将所述多个输入图元入库以生成所述多个入库的输入图元包括将所述多个输入图元的所述图元分配给库,其中每个库都与屏幕空间的不同部分相关联,并且
所述多个入库的输入图元包括所述多个输入图元的图元,所述图元基于屏幕空间的被所述多个输入图元的所述图元重叠的部分来排序。
4.如权利要求2所述的方法,其中对所述片段集进行z-剔除包括:
对于所述片段集中的每个片段,确定深度缓冲区是否存储指示所述片段被遮挡的深度值;以及
如果所述片段被遮挡,则丢弃所述片段,并且
如果所述片段未被遮挡,则将所述深度值更新为等于所述片段的深度值。
5.如权利要求2所述的方法,其中光栅化所述多个入库的输入图元以生成所述片段集包括:
对于每个输入图元,识别由所述输入图元覆盖的屏幕位置并针对所述被覆盖的屏幕位置生成片段,其中所述生成的片段包括在由光栅化器生成的所述片段集内并且进行z-剔除以产生所述z-剔除的片段流。
6.如权利要求1所述的方法,其中:
将所述延迟像素着色缓冲区的所述片段传输到所述像素着色器以进行着色是响应于以下各项中的一个或多个进行的:检测到在所述延迟像素着色缓冲区处已经接收到对应于用于库的所有图元的片段;检测到在所述延迟像素着色缓冲区处已经接收到用于帧的所有图元;以及检测到所述延迟像素着色缓冲区已满。
7.如权利要求1所述的方法,其中:
所述延迟像素着色缓冲区与屏幕空间的第一部分相关联;并且
所述方法还包括对于与所述屏幕空间的第二部分相关联的第二延迟像素着色缓冲区执行接收、识别、修改和传输步骤。
8.一种加速处理装置(“APD”),其包括:
z-剔除单元,所述z-剔除单元被配置为对片段集中的片段进行z-剔除以生成z-剔除的片段流;
像素着色器,所述像素着色器被配置为对提供给所述像素着色器的片段执行像素着色操作;以及
延迟像素着色单元,所述延迟像素着色单元被配置为:
从所述z-剔除的片段流接收传入存储片段的延迟像素着色缓冲区中的新片段,所述新片段具有第一屏幕位置,
在所述延迟像素着色缓冲区中识别存在的片段,所述第二存在的片段具有与传入所述延迟像素着色缓冲区中的所述新片段的所述第一屏幕位置匹配的第二屏幕位置,
响应于所述识别,并且在没有将所述存在的片段的深度与所述新片段的深度进行比较的情况下,基于所述匹配来修改所述延迟像素着色缓冲区,所述修改包括以下至少一项:将所述存在的片段和所述新片段标记为重叠,和从所述延迟像素着色缓冲区中丢弃所述存在的片段,
将所述新片段存储到所述延迟像素着色缓冲区中,以及
将所述延迟像素着色缓冲区的所述片段传输到所述像素着色器以进行着色。
9.如权利要求8所述的APD,其还包括:
入库器,所述入库器被配置为将多个输入图元入库以生成多个入库的输入图元;以及
扫描转换器,所述扫描转换器被配置为光栅化所述多个入库的输入图元以生成所述片段集。
10.如权利要求9所述的APD,其中:
将所述多个输入图元入库以生成所述多个入库的输入图元包括将所述多个输入图元的所述图元分配给库,其中每个库都与屏幕空间的不同部分相关联,并且
所述多个入库的输入图元包括所述多个输入图元的图元,所述图元基于屏幕空间的被所述多个输入图元的所述图元重叠的部分来排序。
11.如权利要求9所述的APD,其中所述z-剔除单元被配置为通过以下方式对所述片段集中的所述片段进行z-剔除:
对于所述片段集中的每个片段,确定深度缓冲区是否存储指示所述片段被遮挡的深度值;以及
如果所述片段被遮挡,则丢弃所述片段,并且
如果所述片段未被遮挡,则将所述深度值更新为等于所述片段的深度值。
12.如权利要求9所述的APD,其中所述扫描转换器被配置为通过以下方式光栅化所述多个入库的输入图元以生成所述片段集:
对于每个输入图元,识别由所述输入图元覆盖的屏幕位置并针对所述被覆盖的屏幕位置生成片段,其中所述生成的片段包括在由光栅化器生成的所述片段集内并且进行z-剔除以产生所述z-剔除的片段流。
13.如权利要求8所述的APD,其中所述延迟像素着色单元被配置为响应于以下各项中的一个或多个而将所述延迟像素着色缓冲区的所述片段传输到所述像素着色器以进行着色:检测到在所述延迟像素着色缓冲区处已经接收到对应于用于库的所有图元的片段;检测到在所述延迟像素着色缓冲区处已经接收到用于帧的所有图元;以及检测到所述延迟像素着色缓冲区已满。
14.一种存储指令的非暂时性计算机可读介质,所述指令在由处理器执行时,使所述处理器执行用于识别片段流中的重叠片段以供像素着色器处理的方法,所述方法包括:
从z-剔除的片段流接收传入存储片段的延迟像素着色缓冲区中的新片段,所述新片段具有第一屏幕位置;
在所述延迟像素着色缓冲区中识别存在的片段,所述存在的片段具有与传入所述延迟像素着色缓冲区中的所述新片段的所述第一屏幕位置匹配的第二屏幕位置;
响应于所述识别,并且在没有将所述存在的片段的深度与所述新片段的深度进行比较的情况下,基于所述匹配来修改所述延迟像素着色缓冲区,所述修改包括以下至少一项:将所述存在的片段和所述新片段标记为重叠,和从所述延迟像素着色缓冲区中丢弃所述存在的片段;
将所述新片段存储到所述延迟像素着色缓冲区中;以及
将所述延迟像素着色缓冲区存储的所述片段传输到像素着色器以进行着色。
15.如权利要求14所述的非暂时性计算机可读介质,其中所述方法还包括:
将多个输入图元入库以生成多个入库的输入图元;
光栅化所述多个入库的输入图元以生成片段集;以及
对所述片段集进行z-剔除以产生所述z-剔除的片段流。
16.如权利要求14所述的非暂时性计算机可读介质,其中:
将所述延迟像素着色缓冲区的所述片段传输到所述像素着色器以进行着色是响应于以下各项中的一个或多个进行的:检测到在所述延迟像素着色缓冲区处已经接收到对应于用于库的所有图元的片段;检测到在所述延迟像素着色缓冲区处已经接收到用于帧的所有图元;以及检测到所述延迟像素着色缓冲区已满。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/374,752 US10943389B2 (en) | 2016-12-09 | 2016-12-09 | Removing or identifying overlapping fragments after z-culling |
US15/374,752 | 2016-12-09 | ||
EP16203877.2 | 2016-12-13 | ||
EP16203877.2A EP3333805B1 (en) | 2016-12-09 | 2016-12-13 | Removing or identifying overlapping fragments after z-culling |
PCT/US2017/061825 WO2018106422A1 (en) | 2016-12-09 | 2017-11-15 | Removing or identifying overlapping fragments after z-culling |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110036414A CN110036414A (zh) | 2019-07-19 |
CN110036414B true CN110036414B (zh) | 2022-11-22 |
Family
ID=57914625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780075287.6A Active CN110036414B (zh) | 2016-12-09 | 2017-11-15 | 在z-剔除之后去除或识别重叠片段 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10943389B2 (zh) |
EP (1) | EP3333805B1 (zh) |
JP (1) | JP7086073B2 (zh) |
KR (1) | KR102547879B1 (zh) |
CN (1) | CN110036414B (zh) |
WO (1) | WO2018106422A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10460513B2 (en) * | 2016-09-22 | 2019-10-29 | Advanced Micro Devices, Inc. | Combined world-space pipeline shader stages |
WO2018105655A1 (ja) * | 2016-12-09 | 2018-06-14 | 株式会社ソニー・インタラクティブエンタテインメント | 画像処理装置、画像処理方法およびプログラム |
US10692253B2 (en) * | 2017-03-31 | 2020-06-23 | Oracle International Corporation | Using a nested pixel map for chart rendering optimization |
GB2574361B (en) * | 2017-12-18 | 2021-03-24 | Advanced Risc Mach Ltd | Graphics Processing |
US11010954B2 (en) * | 2018-12-11 | 2021-05-18 | Samsung Electronics Co., Ltd. | Efficient redundant coverage discard mechanism to reduce pixel shader work in a tile-based graphics rendering pipeline |
US11481967B2 (en) * | 2020-08-31 | 2022-10-25 | Advanced Micro Devices, Inc. | Shader core instruction to invoke depth culling |
US11954757B2 (en) * | 2021-12-28 | 2024-04-09 | Advanced Micro Devices, Inc. | Method and apparatus for implementing a rasterizer in GPU operations |
US20230298261A1 (en) * | 2022-03-21 | 2023-09-21 | Advanced Micro Devices, Inc. | Distributed visibility stream generation for coarse grain binning |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7804499B1 (en) * | 2006-08-28 | 2010-09-28 | Nvidia Corporation | Variable performance rasterization with constant effort |
WO2015153162A1 (en) * | 2014-04-05 | 2015-10-08 | Sony Computer Entertainment America Llc | Method for efficient construction of high resolution display buffers |
US9218689B1 (en) * | 2003-12-31 | 2015-12-22 | Zilabs Inc., Ltd. | Multi-sample antialiasing optimization via edge tracking |
CN105321143A (zh) * | 2014-07-29 | 2016-02-10 | 辉达公司 | 来自片段着色程序的采样掩膜的控制 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100546383B1 (ko) * | 2003-09-29 | 2006-01-26 | 삼성전자주식회사 | 눈에 보이지 않는 프래그먼트를 처리하기 위한 3차원그래픽스 렌더링 엔진 및 그 방법 |
US8933933B2 (en) * | 2006-05-08 | 2015-01-13 | Nvidia Corporation | Optimizing a graphics rendering pipeline using early Z-mode |
KR100790892B1 (ko) * | 2006-10-18 | 2008-01-02 | 삼성전자주식회사 | 투명 객체의 화질 향상을 위한 3차원 그래픽스 데이터렌더링 방법 및 장치 |
GB0810311D0 (en) * | 2008-06-05 | 2008-07-09 | Advanced Risc Mach Ltd | Graphics processing systems |
US8692829B2 (en) * | 2009-10-05 | 2014-04-08 | Nvidia Corporation | Calculation of plane equations after determination of Z-buffer visibility |
JP5708196B2 (ja) * | 2011-04-21 | 2015-04-30 | セイコーエプソン株式会社 | 衝突検出システム、ロボットシステム、衝突検出方法及びプログラム |
US9153070B2 (en) | 2012-12-17 | 2015-10-06 | Arm Limited | Hidden surface removal in graphics processing systems |
GB2509113B (en) * | 2012-12-20 | 2017-04-26 | Imagination Tech Ltd | Tessellating patches of surface data in tile based computer graphics rendering |
US9142040B2 (en) * | 2013-03-15 | 2015-09-22 | Nvidia Corporation | System, method, and computer program product for processing graphics data associated with shading |
US10169906B2 (en) * | 2013-03-29 | 2019-01-01 | Advanced Micro Devices, Inc. | Hybrid render with deferred primitive batch binning |
US9355483B2 (en) * | 2013-07-19 | 2016-05-31 | Nvidia Corporation | Variable fragment shading with surface recasting |
US10055883B2 (en) * | 2015-01-08 | 2018-08-21 | Nvidia Corporation | Frustum tests for sub-pixel shadows |
-
2016
- 2016-12-09 US US15/374,752 patent/US10943389B2/en active Active
- 2016-12-13 EP EP16203877.2A patent/EP3333805B1/en active Active
-
2017
- 2017-11-15 WO PCT/US2017/061825 patent/WO2018106422A1/en active Application Filing
- 2017-11-15 KR KR1020197016619A patent/KR102547879B1/ko active IP Right Grant
- 2017-11-15 JP JP2019530409A patent/JP7086073B2/ja active Active
- 2017-11-15 CN CN201780075287.6A patent/CN110036414B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9218689B1 (en) * | 2003-12-31 | 2015-12-22 | Zilabs Inc., Ltd. | Multi-sample antialiasing optimization via edge tracking |
US7804499B1 (en) * | 2006-08-28 | 2010-09-28 | Nvidia Corporation | Variable performance rasterization with constant effort |
WO2015153162A1 (en) * | 2014-04-05 | 2015-10-08 | Sony Computer Entertainment America Llc | Method for efficient construction of high resolution display buffers |
CN105321143A (zh) * | 2014-07-29 | 2016-02-10 | 辉达公司 | 来自片段着色程序的采样掩膜的控制 |
Non-Patent Citations (2)
Title |
---|
Delay streams for graphics hardware;Timo Aila, Ville Miettinen, and Petri Nordlund.;《ACM Transactions on Graphics》;20030701;792–800 * |
The design of LLVM-based shader compiler for embedded architecture;L. -W. Kuo, C. -C. Yang, J. -K. Lee and S. -Y. Tseng;《2014 20th IEEE International Conference on Parallel and Distributed Systems (ICPADS)》;20150430;961-968 * |
Also Published As
Publication number | Publication date |
---|---|
US20180165872A1 (en) | 2018-06-14 |
KR102547879B1 (ko) | 2023-06-27 |
WO2018106422A1 (en) | 2018-06-14 |
US10943389B2 (en) | 2021-03-09 |
EP3333805A1 (en) | 2018-06-13 |
JP2019537164A (ja) | 2019-12-19 |
CN110036414A (zh) | 2019-07-19 |
JP7086073B2 (ja) | 2022-06-17 |
KR20190093579A (ko) | 2019-08-09 |
EP3333805B1 (en) | 2019-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110036414B (zh) | 在z-剔除之后去除或识别重叠片段 | |
CN105321199B (zh) | 图形处理流水线及其操作方法与介质 | |
CN111066066B (zh) | 可变比率着色 | |
EP3754612B1 (en) | Primitive fragment processing in the rasterization phase of a graphics processing system | |
US10796483B2 (en) | Identifying primitives in input index stream | |
US11195326B2 (en) | Method and system for depth pre-processing and geometry sorting using binning hardware | |
CN110192225B (zh) | 无序像素着色器导出 | |
GB2579429A (en) | Primitive fragment processing in the rasterization phase of a graphics processing system | |
US11972518B2 (en) | Hybrid binning | |
US20220319091A1 (en) | Post-depth visibility collection with two level binning | |
US20210398349A1 (en) | Fine grained replay control in binning hardware | |
US20230298261A1 (en) | Distributed visibility stream generation for coarse grain binning | |
US20240087078A1 (en) | Two-level primitive batch binning with hardware state compression | |
CN115769264A (zh) | 用于多采样抗锯齿的加载指令 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |