CN103871095B - 图形处理系统中的隐藏面消除 - Google Patents
图形处理系统中的隐藏面消除 Download PDFInfo
- Publication number
- CN103871095B CN103871095B CN201310693216.6A CN201310693216A CN103871095B CN 103871095 B CN103871095 B CN 103871095B CN 201310693216 A CN201310693216 A CN 201310693216A CN 103871095 B CN103871095 B CN 103871095B
- Authority
- CN
- China
- Prior art keywords
- segment
- early stage
- sampled point
- test
- stage
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
-
- 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
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Abstract
图形处理系统中的隐藏面消除。图形处理流水线(1)的早期深度测试阶段(4、13)被配置为:将关于通过这些早期深度测试的片段等的信息广播(9、10、11、14)至流水线中的其它阶段(3、4、6、12)。流水线中的其它阶段随后利用早期深度测试通过信息来确定对它们当前处理的任何片段的处理是否可停止。
Description
技术领域
本发明涉及计算机图形处理,并且具体地说,涉及图形处理中的隐藏面消除。
背景技术
如本领域中已知的,通常通过以下步骤执行图形处理:首先将图形处理(渲染)输出(诸如要显示的帧)分为多个相似的基本组成(称为“基元”)以使得能够更加容易地执行图形处理操作。这些“基元”通常采用简单多边形(诸如三角形)的形式。
用于输出(诸如要显示的帧)的基元通常利用从需要图形处理的应用(例如游戏)接收到的图形绘制指令(请求)由用于图形处理系统的应用程序接口生成。
各个基元在这个阶段通常通过一组顶点限定并由其表示。基元的各个顶点与表示所述顶点的一组数据(诸如位置、颜色、纹理和其它属性数据)关联。随后例如当对所述顶点(与所述顶点相关的基元)进行栅格化和渲染时,使用该数据,例如以用于显示。
一旦生成和限定了基元和它们的顶点,它们可通过图形处理系统进行处理,以例如显示帧。
该处理基本上涉及以下步骤:确定在将要处理的覆盖输出区域的一系列采样点中哪些采样点被基元覆盖,以及随后确定各个采样点应该具有的外观(例如,就其颜色等而言)以在所述采样点表示基元。这些处理通常分别被称作栅格化和渲染。
栅格化处理确定应该用于基元的采样点(即,要用于在渲染输出(例如,要显示的帧)中表示基元的采样点的(x,y)位置)。这通常利用基元的顶点的位置来实现。
渲染处理因此导出在所述采样点表示基元所需的数据,诸如红色、绿色和蓝色(RGB)颜色值和“Alpha”(透明度)值(即,为各个采样点“着色”)。如本领域中所知的,这个过程可涉及施加纹理、混合采样点数据值等。
(在3D图形文献中,术语“栅格化”通常用于意指基元转换至采样位置和渲染这二者。然而,本文中,“栅格化”将仅用于表示将基元数据转换至采样点地址。)
这些处理通常通过以下步骤执行:测试多组一个或一个以上采样点,以及随后针对发现包括在关注的(正被测试的)基元内(或被所述基元覆盖)的采样点的各组采样点生成离散图形实体(通常称作“片段”,在其上执行图形处理操作(诸如渲染))。因此,覆盖的采样点实际上作为片段被处理,所述片段将用于在关注的采样点渲染基元。“片段”是经过渲染处理(渲染流水线)的图形实体。根据图形处理系统的配置方式,生成和处理的各个片段可例如表示单个采样点或一组多个采样点。
(因此,“片段”是插值到基元的给定输出空间采样点中的有效的一组基元数据(与所述一组基元数据关联)。“片段”还可包括每基元和在关注的采样点(片段位置)处为基元着色所需要的其它状态数据。各个图形片段通常可以与输出的像素(例如,输出帧)具有相同尺寸和处于相同位置(由于像素在最终显示中是奇点,因此在图形处理器进行工作(渲染)的“片段”与显示的像素之间可一一映射)。然而,可存在片段和显示像素之间不一一对应的情况,例如在显示最终图像之前,在渲染的图像上执行具体形式的后处理,诸如缩减采样。)
(还存在这样的情况:随着在给定位置的例如来自不同交叠基元的多个片段可彼此影响(例如,由于透明度和/或混合),最终像素输出可取决于在该像素位置的多个或全部片段。)
(对应地,在采样点和显示器像素之间可一一对应,但在采样点和显示器像素之间更通常不一一对应,由于可在渲染的采样值上执行缩减采样以生成用于显示最终图像的输出像素值。类似地,随着在给定位置的例如来自不同交叠基元的多个采样点值彼此影响(例如,由于透明度和/或混合),最终像素输出将还取决于在该像素位置的多个交叠采样值。)
在通常称作“立即模式”图形处理或渲染的图形处理的一个已知技术中,基元逐个地随着生成而被处理(栅格化和渲染)。
在这种系统中,基元(它们的顶点)按照先来先处理的原则被递送至图形系统,并因此按照基元的接收顺序渲染基元。
还已知,在图形处理系统中,使用所谓的“基于拼块的”渲染或“延迟”渲染。在基于拼块的渲染处理中,不是整个渲染输出(例如在按照立即模式进行渲染的一个系统中有效地进行处理的帧),而是例如要显示的帧的渲染输出被分为多个较小的子区域,通常称作“拼块”。各个拼块(子区域)被独立地渲染(通常逐个地渲染),并且渲染的拼块(子区域)随后再组合以提供完整的渲染输出,例如,用于显示的帧。在这些布置方式中,渲染输出通常分为规则大小和形状的子区域(拼块)(它们通常为例如方形或矩形),但这不是必要的。
在立即模式和基于拼块的渲染处理这二者中,栅格化和渲染处理的输入将通常包括要由图形处理器执行的一系列图形命令。如本领域中所知的,该“命令列表”将包括指示图形处理器绘制基元的命令和指示其它图形处理的命令(诸如渲染状态变化、开始和结束拼块命令(在基于拼块的系统中)等)。
在立即模式渲染中,该命令列表将简单地列出要逐个地执行的命令,而在基于拼块的渲染中,所述列表可以并且通常分为“拼块”(即,将针对各个拼块(独立于针对其它拼块的命令)列出命令)。
当前图形处理系统的一个缺点在于,因为基元被按顺序处理,并且通常不是按照完美的从前向后的顺序处理,所以随着一个输出被处理(例如以用于显示),给定采样点(进而片段和像素)可多次着色。当第一个接收到和渲染的基元随后被后来的基元覆盖时,发生这种情况,从而在关注的像素(和采样点)实际上看不到渲染的第一基元。基元可按照这种方式被覆写许多次,并且这通常导致针对被渲染的各个渲染输出(例如帧)执行多个最终冗余的渲染操作。这种现象通常称作“重复渲染”。
执行这些最终冗余的操作的结果包括帧率降低和内存带宽需求增大(例如,作为针对将被后来的基元覆写的基元获取数据的结果)。这二者均是不期望的,并且降低了图形处理系统的整体性能。随着渲染输出(诸如要渲染的帧)变大和变得更加复杂(如在潜在可视图中将出现更多面),并且随着可编程片段着色的使用增加(随着利用可编程片段着色为给定片段着色的开销相对更大),这些问题将往往变得严重。
通过按照从前向后顺序发送基元以用于渲染可明显减小“重复渲染”的问题。然而,其它图形处理需求(诸如针对资源(诸如纹理)的相干入口需求和最小化每帧的API调用的次数的需求)通常批准基元的其它优选的顺序需求。另外,在仍保持基元至图形处理单元的足够输送量的同时,在渲染之前,完全从前向后对基元进行排序可能不实际。这些和其它因素意味着针对给定渲染输出(例如帧)的基元的从前向后排序在实际中通常是不可能或不期望的。
因此,提出了尝试减小当处理渲染输出(诸如用于显示的帧)时执行的“重复渲染”的量(隐藏面的冗余处理量)(即,避免渲染不可见的基元和/或片段等)的其它多种技术。
例如,已知在发送基元和/或片段以进行渲染之前执行各种形式的隐藏面消除,以观察基元或片段等是否将被已被渲染的基元遮蔽(在这种情况下,不需要渲染新的片段和/或基元)。这种隐藏面消除可包括例如早期遮挡剔除,诸如本领域中所知的早期Z(深度)和/或模板测试处理。
这些布置方式尝试在后来的片段发送至渲染流水线之前识别例如将被已经处理的基元遮挡(并且因此不需要处理)的片段。在这些布置方式中,针对深度缓冲器中的片段位置,将例如要处理的新片段的深度值与当前深度值进行比较,以确定新片段是否被遮挡。这可有助于避免通过渲染流水线发送被已经处理的基元遮挡的片段。
然而,这些“早期”(在渲染之前)隐藏面消除技术仅考虑了在例如新的基元或片段(正进行“早期”测试的基元或片段)正被测试的同时已经完成它们的处理(已被渲染)的片段。这是因为相关测试数据(诸如Z-缓冲器)仅包含来自已经被处理的片段的数据。
发明内容
因此,申请人相信仍有空间来改进用于图形处理系统中的隐藏面消除的技术。
根据本发明的第一方面,提供了一种操作图形处理流水线的方法,所述图形处理流水线包括多个处理阶段,其包括:栅格化器,其对输入基元进行栅格化以生成要处理的图形片段,各个图形片段具有与其关联的一个或更多个采样点;以及渲染器,其处理由栅格化器生成的片段,以生成输出片段数据,所述方法包括以下步骤:
在由栅格化器生成的片段被发送至渲染器以进行处理之前,关于与该片段关联的至少一个采样点执行早期剔除测试;以及
如果至少一个采样点通过早期剔除测试,则向前发送片段以进行处理,并且,作为至少一个采样点通过早期剔除测试的结果,确定在图形处理流水线中的另一采样点的处理是否可停止。
根据本发明的第二方面,提供了一种图形处理流水线,该图形处理流水线包括:
多个处理阶段,其包括:栅格化器,其对输入基元进行栅格化以生成要处理的图形片段,各个图形片段具有与其关联的一个或更多个采样点;渲染器,其处理由栅格化器生成的片段以生成输出片段数据;以及早期剔除测试阶段,在由栅格化器生成的片段被发送至渲染器以进行处理之前,关于与所述片段关联的采样位置执行早期剔除测试;其中,所述图形处理流水线被配置为:
响应于与由栅格化器生成的片段关联的至少一个采样位置通过早期剔除测试,向前发送片段以进行处理,并且,作为至少一个采样位置通过早期剔除测试的结果,确定在图形处理流水线中的另一采样位置的处理是否可停止。
本发明的图形处理流水线在图形处理流水线的渲染器阶段之前包括早期剔除测试,诸如早期深度测试,以在图形实体(诸如采样点、片段和/或基元)通过渲染器处理之前尝试剔除它们,如本领域中所知的。
然而,本发明使用采样点通过早期剔除测试的结果来确定在图形处理流水线中正被处理的另一采样点的处理是否可停止。换句话说,本发明在栅格化阶段时或栅格化阶段之后扩展了早期剔除测试的效果,以使得早期剔除测试也能够潜在地剔除已被栅格化并被发送至流水线的其余部分以进行处理的基元的采样点。
因此,这意味着早期剔除测试的结果可用于避免和/或停止处理(以“终止”)先前通过所述测试并且仍然在流水线中的基元的采样点,而不是简单地停止新基元(例如,将被遮挡)的采样点以防其被渲染。这样做的优点在于,例如,针对先前已通过早期剔除测试的基元在流水线中的采样点,如果在它们的处理完成之前生成将遮挡它们的稍后的基元的片段,则对它们的处理仍可停止。
因此,例如,不同于现有技术,本发明还可在基元和/或片段实际上被渲染顺序中的稍后的基元遮挡的情况下降低或避免“重复渲染”。
这样做的效果是,与例如现有的早期深度测试技术相比,本发明可进一步降低在图形处理流水线中隐藏面被不必要地处理的程度。此外,在进行渲染之前,不需要执行昂贵的采样/片段的每采样或每片段排序。
实际上,本发明的一个重要优点在于,当设置的基元顺序最佳(即,从前向后)时,其将实际上不干涉,从而在这种情况下,在“标准的”早期深度测试布置方式上获得最小的开销增加,但当基元顺序“非最佳”时,本发明将起作用,以消除从后向前的基元使得不用处理它们(并且至少在其优选实施方式中,达到在渲染之前可与将所有基元按照从前向后的顺序排序一样有效地去除隐藏面的程度)。使用本发明的开销也独立于所使用的多点采样的防混叠处理的水平,从而相对便宜地使用更高等级的多点采样的防混叠处理(并且更高等级的多点采样防混叠处理的使用更加便宜)。
图形处理流水线的栅格化器可被配置为按照任何合适和期望的方式操作,例如如按照已知的栅格化布置方式。如本领域中所知的,栅格化器应该操作以生成用于处理的图形片段,基于此,通过栅格化器接收到的给定基元等(至少部分地)覆盖覆盖图形处理流水线的输出区域的一系列采样点中的采样点(或多组采样点)。栅格化器针对正被栅格化的(各个)基元覆盖的各个采样点,和/或针对包括正被栅格化的(各个)基元覆盖的采样点的各组多个采样点(例如,采样掩模)优选地生成图形片段。
由栅格化器生成的各个片段可根据需要表示单个采样点或多个采样点(与单个采样点或多个采样点关联)。在优选实施方式中,各个片段表示一组多个(优选地四个(2x2))采样点。
栅格化器可被配置为一次生成一个片段,但是在优选实施方式中,能够(同时)一次生成多个片段(例如,在基元覆盖多个空间上相邻的采样点或多组采样点的情况下)。在这种情况下,如果栅格化器同时生成一组多个片段,则所述组中的片段仍通过流水线的片段处理部分(诸如片段着色器)被优选地单独处理。栅格化器同时生成多个片段有助于形成背压,从而使渲染流水线中“充满”片段。
在尤其优选的实施方式中,栅格化器是分级栅格化器,其进行操作以相对于采样点的越来越小的补片反复地测试基元直至优选地选择的(优选地预定的)最小补片尺寸,从而丢弃不覆盖(至少部分地)基元的任何补片,并且随后生成一个或多个片段,以对应于被基元至少部分地覆盖的采样点的一个或多个补片进行渲染。优选地测试的采样点的各个补片对应于整数片段,诸如16x16、8x8、4x4和/或2x2片段。
栅格化器优选地从渲染目标区域的大补片开始并测试关注的基元是否在该补片内。如果否,则丢弃整个补片,并且测试下一补片,等等。另一方面,如果发现基元在所述补片内(以至少部分地覆盖所述补片),则将所述补片优选地再次划分为4份,并且随后按照相同方式测试各个“子补片”,等等,直至达到最小补片尺寸(在优选实施方式中,最小补片尺寸对应于2x2片段组)(但是可例如为单独的采样点、单独的片段或不同尺寸的片段组)。
在该布置方式中,最小补片尺寸包含多个采样点,在最终补片中,栅格化器优选地随后测试单独的采样点以确定它们是否被基元覆盖,并且随后对应地生成片段。
在由栅格化器生成的片段可与多组多个采样点关联(并对应于多组多个采样点并表示多组多个采样点)的情况下,各个这种图形片段优选地与指示与片段对应的所述一组采样点中的哪些采样点被覆盖(例如,优选地,被正被采样的基元覆盖)的数据关联,即,实际上,与指示与所述片段对应的所述一组采样点中的那些采样点的数据关联,所述片段正被用于渲染。
指示所述片段的哪些覆盖的采样点正被用于渲染的信息优选地与通过渲染器的片段的片段数据的一部分(诸如片段的RGB和透明值)关联。优选地,采用覆盖掩模的形式,针对与所述片段关联的一组采样点的各个采样位置,其指示采样位置是否被覆盖,即,实际上,片段是否正被用于渲染采样点(即,针对该采样点,其数据是否应该被存储)。优选地,这种覆盖掩模采用位图的形式,其表示采样位置。栅格化器优选地生成覆盖掩模。
本发明的操作使用的早期剔除测试可包括任何合适的这种测试,诸如早期遮挡测试,诸如深度(Z)测试和/或早期模板测试。在尤其优选的实施方式中,本发明的操作使用的早期剔除测试包括早期深度(Z)测试(或多个测试)。在优选实施方式中,本发明的操作使用的早期剔除测试包括早期深度和早期模板测试二者。
图形处理流水线的可用的早期剔除测试(早期剔除测试阶段)中的任一个或全部可被配置为按照本发明的方式操作(触发操作)。在图形处理流水线包括一个以上早期剔除测试(早期剔除测试阶段)时,优选地,所有的早期剔除测试阶段可触发按照本发明的方式的操作。因此,在流水线中优选地存在一个以上早期剔除测试。
早期剔除测试阶段可在(多组)多个片段的补片上操作。例如,在栅格化器可将基元栅格化为多个片段的补片时,这些补片可随后作为一个整体经受早期剔除测试。在这种情况下,早期剔除测试将因此涉及一组多个片段(即,被考虑的片段的补片),并且关于与片段关联的至少一个采样点执行早期剔除测试将包括关于由栅格化器生成的多个片段的至少一组(补片)执行早期剔除测试(确实关于与片段关联的至少一个采样点执行剔除测试,这是由于其针对与所述一组多个片段中的片段关联的所有采样点有效地执行早期剔除测试)。
因此,在优选实施方式中,流水线包括共同测试多个片段的补片(组)的早期深度(或早期深度和模板)测试器。该测试优选地仅针对完全(完整地)被关注的基元覆盖的多个片段的补片(组)执行,并且优选地使用多个片段的补片(组)的深度值范围。
优选地,通过早期“补片”剔除(例如,深度和/或模板)测试的多个片段的任何补片(组)可触发按照本发明的方式的操作。
早期剔除测试可(另外或作为替代)优选地,以及(另外)优选地在单个片段上操作。因此,流水线优选地包括测试单独的片段的早期剔除测试器,优选地,早期深度(或早期深度和模板)测试器。该测试优选地仅针对完全(完整地)被关注的基元覆盖的片段执行,并且优选地针对片段整体使用深度值范围或单个深度值。
优选地,通过该(单个片段)早期剔除(例如,深度和/或模板)测试的任何片段可触发按照本发明的方式的操作。
在优选实施方式中,早期剔除测试(存在早期剔除测试)(另外或作为替代),并且优选地(另外)在单个采样点和/或与给定片段所关联的多组采样点相比包含较少采样点的多组采样点(诸如,针对与片段关联的四个采样点中的两个)上操作(测试)。在这种情况下,早期剔除测试优选地在单个(覆盖的)采样点上操作。在这种情况下,各个采样点将具有用于剔除测试的关联的深度值,即,将针对各个采样点具有深度值(可与其它采样点共享)。
再者,优选地,通过该采样点早期剔除(例如,深度和/或模板)测试的任何采样点可触发按照本发明的方式的操作。
在尤其优选的实施方式中,流水线包括测试多组多个片段和/或单独的片段(关于此,可触发按照本发明的方式的操作)的早期剔除测试,接着是测试单独的采样点的早期剔除测试(再次,优选地,关于此,可触发按照本发明的方式的操作)。这可继而使得本发明能够从例如覆盖基元的完全拼块至单个片段和/或采样点颗粒生成隐藏面消除事件。
在尤其优选的实施方式中,所述系统包括早期剔除测试,其将与采样点、片段和/或一组多个片段(的补片)关联的深度值范围与存储的与关注的采样点、片段或一组多个片段(的补片)的位置关联的深度值范围进行比较,以确定正被测试的采样点、片段或一组多个片段(的补片)是否通过早期剔除测试。
优选地针对可考虑的(剔除测试的)片段的各个补片存储深度值范围。
早期剔除测试本身可按照任何合适和期望的方式执行,例如,按照本领域中已知的正常方式和/或关注的图形处理系统中所使用的方式执行。例如,它们可具体地测试所述采样点(或各个采样点),或者即使它们不具体地测试所述采样点(或各个采样点),也可为具有测试采样点的效果的测试。
在尤其优选的实施方式中,在渲染一组基元(例如,针对拼块或绘制调用)之前,系统(和优选地栅格化器)针对各个采样位置、多组采样位置、片段、片段位置、片段的补片和/或多组片段位置生成和/或存储期望的深度值和优选地期望的深度值范围,当测试由栅格化器生成的基元和片段等时,剔除测试可以并且优选地在该深度值范围内进行。这些期望的深度值范围应该针对关注的补片等表示(涵盖)深度值的所有可能的结果,并且优选地随着继续栅格化和渲染而利用针对单独的采样位置、片段、片段的补片等的深度值和深度值范围进行更新,所述单独的采样位置、片段、片段的补片被生成并存储为采样点和片段,它们在通过图形处理流水线处理时经历早期和后期深度测试。
早期剔除测试可实现为例如栅格化器的一部分,或在栅格化器之后(但在渲染器之前),或作为它们的组合(例如,存在一个以上早期剔除测试)。在优选实施方式中,它或它们实现为栅格化处理的一部分和/或在栅格化器之后但在图形处理流水线的其余部分之前。
如果正被测试的采样点或一个或多个片段未通过早期剔除测试(例如,发现被遮挡),则该采样点或一个或多个片段优选地从流水线中的进一步处理中“剔除”,如本领域中所知的。
可按照任何期望和合适的方式实现(和提供)这种剔除。例如,在剔除测试是关于整个片段(或一组多个整个片段)的时,则优选地所述片段或一组多个片段未通过流水线向前发送以进行处理(例如,进行渲染)(即,它们“被剔除”),如本领域中所知的。
另一方面,如果剔除测试是关于比与要渲染的片段关联的所有采样点更少的采样点的,则优选地防止(停止)关注的采样点(即,未通过剔除测试)的进一步处理,例如,通过将采样点标记为“失效”(例如,通过指示它们未被与关注的片段关联的覆盖掩模覆盖),或者按照任何其它合适的方式,但是关注的片段仍然(通过流水线)向前发送,使得与片段关联的“未剔除的”采样点仍被处理。
如果正被测试的至少一个采样点通过早期剔除测试,则被测试的采样点(即,与采样点关联的片段)、片段或一组多个片段被向前发送以进行处理(例如,朝着渲染器),仍然如本领域中所知的。然而,在这种情况下,作为采样点通过早期剔除测试的结果,还确定在流水线中的另一采样点的处理是否可停止(并且如果作为采样点等通过早期剔除测试的结果,确定已在流水线中的采样点的处理可停止,则采样点的处理优选地随后停止)。
在这点上,处理可在采样点水平(分辨率)(而非例如关于整个片段)进行操作,进而进行测试,并停止进一步处理与已在流水线中的片段关联的单独的采样点。在早期剔除测试测试单独的采样点时,这可尤其合适,并将使得例如所述处理能够“除掉”与流水线中的片段关联的采样点(例如,直至其采样点全部“停止”,此时可随后丢弃整个片段)。
同样地,处理可被配置为另外或替代性地关于整个片段进行操作,即,使得如果整个片段(或一组多个片段)通过早期剔除测试,则确定流水线中的任何片段的处理是否可停止。在早期剔除测试测试片段以及替代性地测试单独的采样点时,这可尤其合适。
因此,在优选实施方式中,早期剔除测试测试片段和/或多组多个片段,并且如果正被测试的片段或一组片段通过早期剔除测试,则作为片段或一组片段通过早期剔除测试的结果,确定已在流水线中的片段的处理是否可停止。
在优选实施方式中,以渲染流水线在其上操作的实体(诸如(优选地)片段)的分辨率执行所述确定。
作为至少一个采样点和/或片段通过早期剔除测试的结果,优选地确定已在流水线中的多个采样点和/或片段中的任一个的处理是否可停止。
已在流水线中的任何其它采样点和/或片段的处理是否可停止的确定可基于任何期望和合适的标准。在尤其优选的实施方式中,其基于已经通过剔除测试的采样点和/或片段是否将重复渲染(并且优选地,它们是否将遮挡)已在流水线中的采样点和/或片段(由于如果稍后的采样点和/或片段已通过例如早期深度测试,则这应该指示这些采样点和/或片段将位于表示先前已通过早期深度测试的相同位置的任何采样点和/或片段之前(并因此遮挡(如果它们为不透明的)任何采样点和/或片段))。
因此,在早期剔除测试“通过”事件中,对不再需要被处理的这些采样点和/或片段的确定优选地通过图形处理流水线的稍后的一个或多个阶段执行,所述一个或多个阶段识别(确定)将被通过早期剔除测试的一个或多个采样点和/或一个或多个片段(合适的)重复渲染的当前包含(例如,被处理)的任何采样点和/或片段。
可按照任何合适和期望的方式执行这种处理,但是优选地通过将当前占据流水线阶段的采样点和/或片段中的一个或一些或全部的(例如,(x,y))位置与通过早期剔除测试的采样点和/或片段的(例如,(x,y))位置进行比较来实现。
在考虑采样点(相对于整个片段)时,这一点通过将关注的采样点的“实际”位置(但是在优选实施方式中,通过将表示关注的采样点的片段的位置)与片段中的采样点的相对位置进行比较来实现(例如,基于与片段关联的覆盖掩模)。
在考虑片段时,这一点优选地通过将当前占据流水线阶段的片段中的一个或一些或全部片段的位置与通过早期剔除测试的片段的位置进行比较来实现。
在考虑一组多个片段(即,已通过早期剔除测试)时,这一点优选地通过将当前占据流水线阶段的片段中的一个或一些或全部片段的位置与由已通过早期剔除测试的所述一组多个片段中的片段覆盖的位置(区域)的范围进行比较来实现。
在渲染输出(的平面)中与通过早期剔除测试的采样点和/或片段(合适的)占据相同位置(即,具有相同(x,y)位置)的任何当前采样点和/或片段的处理可因此,并且优选地,(选择性地)停止(例如,以符合的用于停止采样点处理的其它标准为准)。
在优选实施方式中,对采样点和/或片段是否可从进一步处理中丢弃的确定以进一步的检查和/或标准为准。优选地,首先检查流水线中的可能被丢弃(例如,将被遮挡)的片段(或采样点)的其它属性,以在停止其处理之前确定片段(或采样点)是否因为任何其它原因仍应该被处理。这种检查优选地包括确定片段(或采样点)是否因为遮挡查询(具有其附带的有效的遮挡查询)或其它副作用而仍被需要(在这种情况下,不应该将其丢弃)。
因此,在尤其优选的实施方式中,图形处理流水线被配置为响应于与通过早期剔除测试的片段关联的至少一个采样点选择性地停止已经在流水线中的采样点和/或一个或多个片段的处理。
当采样点或一个或多个片段通过早期剔除测试时,可按照任何合适和期望的方式实现确定在流水线中的任何采样点和/或片段的处理是否可停止的操作。
优选地,采样点或一个或多个片段通过早期剔除测试的事件触发将相关信息(诸如,并优选地,通过测试的采样点或片段的位置)广播至处理流水线中的其它(例如稍后的)阶段,那些其它(例如稍后的)阶段优选地随后利用该信息来估计它们当前处理的任何采样点或片段的处理是否可停止(例如,并优选地,按照上面讨论的方式)。
在测试关于整个片段时,该位置信息优选地包括关注的片段的(x,y)位置,如上面的讨论。在测试关于一组多个片段时,该位置信息优选地包括由关注的所述一组多个片段中的片段覆盖的(x,y)位置范围(又如上面的讨论)。在测试关于采样点时,位置信息优选地包括与采样点关联的片段的(x,y)位置,以及关于采样点是哪个用于片段的采样点位置的指示(优选地以覆盖掩模的形式,如上面的讨论)。
因此,在尤其优选的实施方式中,图形处理系统被配置为,如果与片段关联的至少一个采样点通过早期剔除测试,则将关于已通过早期剔除测试的至少一个采样点(和/或关注的片段)的信息广播至图形处理流水线的至少一个,优选地其它(以及优选地,稍后的)阶段,并且图形处理流水线的至少一个阶段被配置为利用广播的与通过早期剔除测试的至少一个采样点和/或片段关联的信息来确定与当前在该阶段中的片段关联的任何片段和/或采样点的处理是否可停止。
如上面的讨论,最优选地,早期剔除测试包括早期深度测试,和/或图形处理流水线的至少一个阶段被配置为利用广播的与通过早期剔除测试的采样点和/或片段关联的信息来确定当前在该阶段的任何采样点和/或片段是否将被通过早期剔除测试的采样点和/或片段重复渲染,并且如果存在任何这样的采样点或片段,则选择性地停止这些重复渲染的采样点和/或片段的以后的处理。
如上面的讨论,最优选地,广播至图形处理流水线的阶段的信息包括通过早期剔除测试的采样点和/或片段的位置,和/或图形处理流水线的至少一个阶段被配置为利用广播的与通过早期剔除测试的采样点和/或片段关联的位置信息来确定当前在该阶段的任何采样点和/或片段是否与通过早期剔除测试的采样点和/或片段在渲染目标(目的缓冲器)(例如,正被处理的拼块)中占据相同位置,并且选择性地停止与通过早期剔除测试的采样点和/或片段在渲染目标中占据相同位置的任何采样点和/或片段的以后的处理。
在早期剔除测试“通过”事件中确定任何采样点和/或片段是否不再需要被处理的处理流水线的一个或多个阶段可包括图形处理流水线的任何期望和合适的阶段。它们优选地包括图形处理流水线的至少一个稍后的阶段(即,在早期剔除测试和/或栅格化器之后的阶段)。为此,所述处理流水线可根据需要分为许多阶段。
在一个优选实施方式中,该阶段是图形处理流水线的渲染器(该确定由渲染器实现)。可能的是,例如,渲染器作为整体按照本发明的方式操作的单个阶段进行处理,或者作为(并分为)彼此独立地起作用的多个分离的阶段进行处理。因此,在优选实施方式中,早期剔除测试“通过”事件信息被(至少)广播至图形处理流水线的渲染器和/或渲染器的一个或多个部分(渲染器或渲染器的一个或多个部分随后按照本发明的方式操作)。
在早期剔除测试“通过”事件中确定任何采样点或片段是否不再需要被处理的处理流水线的一个或多个阶段优选地还(或替代性地)包括可以有效地剔除片段的流水线的其它阶段,诸如早期剔除测试(从而尝试剔除例如仍经历早期剔除测试的片段(例如,在早期剔除测试流水线中稍后的片段)),和/或栅格化器(从而尝试剔除例如仍经历栅格化的较早的片段(和/或片段的补片)(未完全栅格化的))。
在尤其优选的实施方式中,多个片段(以及优选地阶段中的所有片段)和/或采样点可并行测试。这随后有利于有效地利用可一次测试例如多个片段的补片的早期剔除测试。优选地,布置方式为使得流水线阶段可将采样点和片段以与早期剔除测试通过事件可生成潜在的剔除机会的速率相同的速率丢弃,等。
确定其处理可停止的采样点和/或片段的处理可停止和/或按照任何期望和合适的方式省略。优选地,这通过将识别出的采样点和/或片段标记为“终止”(无效)来实现,相关处理阶段随后在对其进行任何进一步处理之前检查采样点和/或片段是否未终止(有效)。这将随后避免和/或停止这些采样点和/或片段的任何非必要的处理。
就采样点而言,采样点优选地通过针对关注的片段在覆盖掩模中合适地设置其值来被标记为无效。
当考虑片段整体时,各个片段可例如具有与其关联的“终止”(“无效”)比特(例如,作为其关联的片段数据的一部分),该比特被设置时,指示片段不需要被处理(并且可被丢弃)。在一个优选实施方式中是这样做的。处理阶段可随后例如检查它们接收的各个片段的无效比特以进行处理。如果单独的采样点的测试最终使与片段关联的所有采样点无效,则也可设置该比特。
另选的布置方式(诸如使具有有效标签的像缓存区那样操作的片段队列在设置片段的无效标签时释放队列(缓存区)行)可用作替代,或根据需要另外使用。
虽然任何“终止”片段可仍在流水线中(但未处理),但是在优选实施方式中,采取步骤以从流水线中去除无效片段。这一点可优选地通过在流水线中设置可操作以从流水线中去除(它们接收的)无效片段的一个或更多个压缩阶段来实现。所述压缩阶段可包括例如FIFO(先进先出)队列,随着片段通过FIFO前进,队列进行操作以去除任何无效片段(以清除任何空位)。
申请人认识到,采样点越多,本发明将越有利,并且在具体片段中,其可操作以“终止”(无效)。因此,在优选实施方式中,流水线被配置为尝试增加流水线中的可受到按照本发明的方式的操作的片段的数量。
在一个优选实施方式中,这一点可通过在流水线中的一个或更多个点处在片段行进时引入延迟(例如,通过停止流水线操作)来实现,以便为按照本发明的方式的操作提供更多的时间来使流水线中的那一点之前的片段无效。
在尤其优选的实施方式中,通过增加可在流水线中早期剔除测试阶段之后的片段的数量可以增加经受按照本发明的方式的操作的片段的数量。这可在片段输送量中替代性地或另外引入延迟,如上面的讨论。
例如通过使流水线更长,可根据需要增加流水线中的片段数量。在尤其优选的实施方式中,这一点通过在流水线中包括片段在到达下一处理阶段之前必须经过的一个或更多个队列(队列阶段)来实现。多个队列可被包括在流水线中。在优选实施方式中,单个队列添加至流水线。队列长度优选地选为尝试使按照本发明的方式的操作的有效性最优化。
当在流水线中包括延迟和/或队列时,优选地,在处理流水线的进一步的处理加强阶段(诸如片段着色器(如果有))之前包括它们。这样做的优点在于,延迟或队列可进行操作以减小将到达流水线的进一步的处理加强阶段的要处理的片段数量。因此,如果处理流水线具有联动点(gearing point),其中联动点之后的片段处理的相对速度比联动点之前的片段处理(实际上,生产)的速度慢,则延迟和/或队列优选地布置在流水线中的联动点之前。
因此,在优选实施方式中,图形处理流水线包括片段必须经过的布置在图形处理流水线的渲染器(片段着色器)之前的队列。类似地,队列优选地布置在图形处理流水线的一个或多个早期剔除测试阶段之后。优选地,图形处理流水线在栅格化器处或栅格化器中或栅格化器之后包括早期剔除测试阶段,并且在早期剔除测试阶段和渲染器(渲染阶段)之间包括队列阶段。
在流水线包括压缩阶段时,如上面的讨论,基于相同的原因,其优选地布置在队列和/或延迟阶段之后和后续的片段处理阶段之前。
在流水线包括队列时,早期剔除测试通过事件信息优选地被广播至队列。
在尤其优选的实施方式中,如果通过了早期剔除测试,则与所述测试关联和/或包含关于所述测试的数据的任何数据缓冲器(诸如深度缓冲器等)也被更新,例如,并且优选地,用与已通过剔除测试的采样点或一个或多个片段关联的相关数据值(例如深度值)进行更新。这意味着例如深度缓冲器将因此表示例如深度缓冲器在流水线中的那一点处的当前状态(而非例如有效地表示位于仅当片段退出流水线的端部时更新深度缓冲器的流水线的端部的深度缓冲器的状态)。这因此进一步提高了隐藏面消除操作的效率,由于当任何先前的片段完成它们的深度测试时,正生成的任何新的片段将相对于更加当前的一组数据(例如深度值),而非简单地基于可布置在深度缓冲器中的数据(例如深度值和/或深度值范围)进行测试。
虽然可关于通过早期剔除测试(也就是说,与通过早期剔除测试的采样点关联)的每个片段执行按照本发明的方式的操作(以潜在地“终止”图形流水线中的其它片段等),但是在尤其优选的实施方式中,仅关于选择的片段,优选地符合特定选择的(优选地预定的)标准的片段(并且通过早期剔除测试),执行按照本发明的方式的操作。
用于通过早期剔除测试随后触发按照本发明的方式的操作的片段的标准可为任何选择的和合适的标准。在优选实施方式中,它们包括以下的一个或更多个并且优选地全部:具有全RGB写掩模的片段;不具有依赖于先前RGBA值的混合功能的片段;用于不从拼块缓冲器读取的片段的着色器程序;完全不透明的片段;以及未强制(通过应用程序员)执行后期深度更新的片段。
在尤其优选的实施方式中,仅关于完全不透明的片段执行本发明的操作(片段通过一个或多个早期剔除测试的事件通过该操作随后用于确定处理流水线中的任何片段是否可丢弃,等)。因此,如果通过早期剔除测试的片段或一组多个片段是或者包括透明的片段(即,非完全不透明的片段),则所述片段或一组片段优选地仍然前进以进行处理,但优选地与片段或一组片段关联的早期剔除测试通过事件不用于确定已在处理流水线中的任何片段是否可丢弃,等。
这直接使用于需要经历透明测试和透明至覆盖测试的片段的本发明的潜在片段或采样点“终止”操作失效(并等同于直接允许较近的透明的片段和/或采样点可不防止较远的片段和/或采样点在最终输出中仍可见的事实)。
优选地关于并针对栅格化器生成的各个不透明的片段或一组不透明的片段执行按照本发明的方式的操作,以通过渲染器(潜在地)进行处理。
早期剔除测试(剔除测试阶段)可被配置为按照任何合适和期望的方式按照本发明的方式操作。在优选实施方式中,剔除测试阶段包括组合的测试和更新逻辑,其可进行操作以执行剔除测试,并且如果通过剔除测试,并且片段符合任何需要的标准(诸如为不透明的),则将通过事件和与其关联的必要的信息“广播”至图形流水线的合适的阶段,并且更新例如深度缓冲器(在其中进行)中的深度信息。
响应于早期剔除“通过”事件的图形处理流水线的一个或多个阶段可被配置为按照任何合适和期望的方式工作。优选地,它们使为关注的阶段中的片段负责并接收早期剔除测试“通过”信息的代理与它们关联,并且因此可进行操作以识别在它们的“域”(阶段)中不再需要被处理的任何片段和/或采样点,并且随后停止和/或防止这些片段和/或采样点的任何非必要的进一步处理。
在一些实施方式中,图形处理流水线包括存储本文所述的数据和/或存储用于执行本文所述的处理的软件的一个或更多个存储器和/或存储器装置,和/或与它们进行通信。图形处理流水线还可与主机微处理器进行通信,和/或与基于图形处理器所生成的数据显示图像的显示器进行通信。
图形处理流水线的渲染器应该可操作以渲染(着色)其接收的图形片段,以生成期望的输出图形片段数据,如本领域中所知的。图形处理流水线的渲染器可包含任何合适和期望的渲染元件,并可按照任何合适和期望的方式被构造。因此,例如,图形处理流水线的渲染器可包括固定功能渲染流水线,包括一个或更多个固定功能渲染阶段,诸如纹理映射器、混合器、雾化单元等。在优选实施方式中,渲染器包括片段着色器(着色器流水线)(即可编程流水线阶段,其可操作和可编程以在片段上执行片段着色程序,从而渲染它们)。在使用片段着色时,本发明可尤其有利,由于片段着色可为相对昂贵的处理,并且更有效的早期隐藏面消除在进行了片段着色之处尤其有利。
本领域技术人员应该理解,渲染器将处理其接收的片段,随后生成输出渲染的片段数据,其中渲染的片段数据随后优选地写至外部存储器中的输出缓冲器,诸如帧缓冲器,以进行使用(例如,在显示器上显示帧)。
不管图形处理系统可提供的输出形式如何,都可使用本发明。因此,例如,在渲染输出旨在形成用于(例如,在屏幕或打印机上)显示的图像(帧)时,可使用本发明(并且在一个优选实施方式中就是这种情况)。然而,本发明还可用于渲染输出不旨在用于显示的情况,例如渲染输出是使用图形处理系统生成的纹理(例如,在“渲染至纹理”操作中),或者实际上,使用图形处理系统生成的输出是任何其它形式的数据阵列。
可按照任何期望和合适的方式执行本发明的各种功能。例如,本发明的功能可根据需要在硬件或软件中实现。因此,例如,本发明的各种功能性元件、处理阶段和“装置”可包括可操作以执行各种功能等的合适的一个或多个处理器,一个或多个控制器、功能性单元、电路、处理逻辑、微处理器布置方式等,诸如可编程以按照期望方式操作的合适地构造的专用硬件元件或处理电路和/或可编程硬件元件或处理电路。
在这里还应该注意,本领域技术人员应该理解,本发明的各种功能等可在给定处理器上并行地复制和/或执行。同样地,各种处理阶段可根据需要共享处理电路等。
本发明可应用于具有“流水线”布置方式的图形处理系统、图形处理器和渲染器的任何合适的形式或构造。图形处理流水线可包含图形处理流水线正常包括的任何合适和期望的处理阶段等。在尤其优选的实施方式中,图形处理系统是基于拼块的图形处理系统。类似地,在优选实施方式中,所述图形处理系统是多核系统(即,包括多个图形处理核)。
因此,本发明延伸至包括根据本文描述的本发明的各方面中的任何一个或更多个的设备,或根据本文描述的本发明的各方面中的任何一个或更多个的方法操作图形处理器和图形处理平台。以上面讨论的执行特定功能所必需的任何硬件为条件,所述图形处理器可另外包括图形处理器包括的通常功能性单元等的任何一个或更多个或全部。
本领域技术人员还应该理解,本发明的所有描述的方面和实施方式可合适地包括本文所述的优选和可选特征中的任何一个或更多个或全部。
根据本发明的方法可至少部分地利用例如计算机程序的软件实施。因此,可看出,当从其它方面看时,本发明提供了当安装在数据处理装置上时特别适于执行本文所述的方法的计算机软件,和适于执行本文所述的一个或多个方法的所有步骤的包括代码装置的计算机程序(当所述程序在数据处理系统上运行时)。数据处理系统可为微处理器、可编程FPGA(现场可编程门阵列)等。
因此,本发明可合适地实现为用于计算机系统的计算机程序产品。这种实现可包括固定在有形介质(诸如非暂时性计算机可读介质,例如,磁盘、CD ROM、ROM或硬盘)上的一系列计算机可读指令。这种实现还包括可通过调制解调器或其它接口装置通过有形介质(包括但不限于,光学或模拟通信线路)或利用无线技术(包括但不限于,微波、红外或其它传输技术)无形地传输至计算机系统的一系列计算机可读指令。所述一系列计算机可读指令实现本文先前描述的功能的全部或一部分。
附图说明
现在将仅通过举例的方式并参照附图描述本发明的多个优选实施方式,附图中:
图1示意性地示出了根据本发明的图形处理系统的实施方式。
具体实施方式
现在将描述本发明的多个优选实施方式。将主要参照本发明在图形处理系统中的使用描述这些实施方式。然而,如上所述,本发明可应用于包括早期“数据实体”剔除测试的其它流水线数据处理系统。
图1示意性地示出了可根据本发明操作的图形处理器1。
图1示出了关于当前实施方式的操作的图形处理器1的主要元件和流水线阶段。本领域技术人员应该理解,可存在未在图1中示出的图形处理器的其它元件。在这里应该注意,图1仅是示意性的,并且即使示出的功能性单元和流水线阶段在图1中示意性地示出为分离的阶段,例如在实践中它们也可共享重要的硬件电路。还应该理解,图1所示的图形处理器的各个阶段、元件和单元等可根据需要实现,并且将因此包括例如用于执行必要的操作和功能的合适的电路和/或处理逻辑等。
图1所示的图形处理系统是基于拼块的系统。因此,如本领域中所知的,图形处理器1将生成渲染输出数据阵列(诸如要生成的输出帧)的拼块。(本发明可等同地应用于其它系统,诸如上面讨论的立即模式渲染系统。)如本领域中所知的,输出数据阵列可通常为旨在显示在显示装置(诸如屏幕或打印机)上的输出帧,但可还例如包括图形处理器的“渲染到纹理”输出等。
图1示意性地示出了已经生成用于输入至栅格化处理的图形基元(多边形)2之后的流水线阶段。因此,此时图形数据(顶点数据)已经历变形和光照操作(未示出),并且基元设置阶段(未示出)已响应于命令和提供至图形处理器1的顶点数据设置要被渲染的基元,如本领域中所知。
如图1所示,图形处理器1的这部分片段处理流水线包括多个处理阶段,该多个处理阶段包括:栅格化阶段3、早期分级ZS(深度和模板)测试阶段4、早期ZS(深度和模板)阶段13、片段着色阶段6形式的渲染阶段和后期ZS(深度和模板)测试阶段7。
如本领域中所知的,栅格化阶段3进行操作以将构成渲染输出(例如,要显示的图像)的基元栅格化为单独的图形片段以进行处理。因此,栅格化器3接收图形基元2以进行渲染,将基元栅格化为采样点并生成具有合适的位置(表示合适的采样位置)的图形片段,以渲染基元。在当前实施方式中,通过栅格化器3生成的各个图形片段表示多个(通常4个)采样位置(与所述多个采样位置关联)。(当然,其它布置方式将是可以的)。各个图形片段与指示片段表示多个采样位置的哪个采样点的覆盖掩模关联,它实际上用于渲染(即,实际由关注的基元覆盖)。
在当前实施方式中,栅格化器3是分级栅格化器,其进行操作以相对于越来越小的采样点补片(因此,相对应地,片段补片)反复地测试基元,直至对应于2x2片段组的最小补片尺寸(即,直至可被栅格化为2x2片段组的一系列采样点),丢弃不(至少部分地)覆盖基元的任何补片。测试的各个补片对应于给定的一组片段。
通过栅格化器3来实现这一点:即从渲染目标区域的大补片开始并测试关注的基元是否在该补片内。如果不是这样,则丢弃整个补片,并测试下一补片,等等。另一方面,如果发现基元位于所述补片内(以至少部分地覆盖所述补片),则将该补片再次划分为4部分,并且随后按照相同方式测试每个“子补片”,等等,直至达到最小补片尺寸。
一旦达到最小补片尺寸(即,至少部分地覆盖已被识别的基元的2x2片段的补片),栅格化器3就随后测试该最终补片中的单独的采样点以确定采样点是否被所述基元覆盖。栅格化器3随后对应于发现被基元覆盖的采样点生成和输出单独的片段,以进行渲染。
无论采样位置是否被覆盖(即,实际上,无论片段是否用于渲染该采样点(即针对该采样点,无论其数据是否应该被存储)),针对与片段关联的一组采样位置中的各个采样位置,栅格化器3还与位图形式的覆盖掩模指示的各个片段关联。
当然,其它栅格化布置方式是可以的。
如图1所示,栅格化器3还与早期“分级”深度(Z)和模板测试阶段4关联。该分级深度和模板测试阶段4在通过栅格化器3生成的补片上执行“早期”深度和模板测试以确定这些补片是否可被剔除。
因此,由栅格化器生成的采样点(实际上,片段)的各个补片被发送至早期分级深度和模板测试阶段4,其随后在采样点(片段)的补片上执行Z(深度)测试以在该阶段确定补片是否可被丢弃(剔除)。因此,早期分级深度和模板测试器4针对其从栅格化器3接收的各个补片通过在补片上进行合适的深度采样导出深度值范围,并且将该深度值范围与先前导出并存储的与补片覆盖的采样(片段)位置关联的深度值范围进行比较,以尝试确定补片是否将被要渲染的其它片段和采样点遮挡,或是否重复渲染要渲染的其它片段和采样点(例如,将随后出现在流水线上,或者已经被渲染的片段和采样点)。与此同时,执行早期模板测试。
如果正被测试的补片未通过早期深度和模板测试,则在任何进一步处理中将其丢弃(剔除)。
如果正被测试的补片通过早期深度和模板测试,则其返回至栅格化器3以进一步再次划分为更小的“子补片”,如上面的讨论。各个“子补片”随后返回至早期深度和模板测试器4以进行测试,等等,直至达到最小补片尺寸。
当在从栅格化器3接收的多个采样点的补片上执行深度和模板测试时早期分级深度和模板测试阶段4所使用的深度值范围被存储在深度和模板缓冲器5中。针对缓冲器表示的各个补片尺寸和位置,将深度值(和模板值)的范围存储在深度和模板缓冲器5中(尤其是针对栅格化器3针对正被处理的拼块可生成的各个补片尺寸和位置)。
将针对各个补片存储的深度值范围初始设置为缺省值,或设置为补片的期望深度值范围(如果可确定)。(在一些布置方式中,可预先已知用于拼块的基元可具有的可能的深度值范围。随后,其可用于为深度缓冲器5设置关注的补片的期望深度值的范围。)随后,随着通过早期分级深度和模板测试阶段4、早期深度和模板测试阶段13和后期深度和模板测试阶段7测试的补片和/或采样点通过各个深度和模板测试,存储的补片深度值范围得到更新。
即使已经在相同位置的流水线中的较早的片段还未完成任何深度或模板测试(例如,未经历早期分级深度和模板测试4和早期深度和模板测试13,并且未经历后期深度和模板测试7),针对正在深度和模板缓冲器5中渲染的拼块的多个采样点位置(因此,片段)的补片存储期望范围的深度值也意味着早期分级深度和模板测试器4可仍关于栅格化器3生成的采样点位置的补片执行深度和模板测试。这是因为即使还未执行关于较早的片段的深度测试,期望的深度值范围也可用于确定深度测试(例如)可具有何种结果。因此,这允许早期分级深度和模板测试4用于(潜在地)按照本发明的方式使流水线中的较早的片段的处理停止,即使这些较早的片段实际上还未经历深度或模板测试也是如此。
针对采样点位置的补片存储和测试深度值的范围意味着采样点位置的较大补片可容易受到早期深度和模板测试(由于存储的范围允许测试以确定补片是否将完全在存储的范围之外,并且因此,例如完全通过早期分级深度和模板测试)。因此,如将在以下进一步讨论的,这可有利于广播在单个处理周期中影响渲染目标的大得多的区域的早期深度和模板测试通过事件,从而其可因此能够(潜在地)在一个处理周期中使补片区域中的整个片段组的处理停止(而不用例如必须潜在地使各个片段的处理逐个地停止)。
早期分级深度和模板测试阶段4被配置为按照适当地保守的方式操作,如本领域中所知的。
一旦达到最小补片尺寸(在该实施方式中,2x2片段的补片),栅格化器3就将表示通过早期分级Z和模板测试阶段4的补片(因此,采样点)的片段发布到图形处理流水线的其余部分,以进行处理。
该处理的第一部分是在早期深度和模板测试阶段13使通过栅格化器3发布(输出)的各个片段受到早期深度和模板测试。这种早期深度和模板测试阶段13在与通过栅格化器3发布的片段关联的单独的(覆盖的)采样位置上执行深度和模板测试(即,每采样点分辨率)。
因此,早期深度和模板测试器13使用存储在深度和模板缓冲器5中的每采样位置深度和模板值。因此,除每补片深度值范围之外,深度和模板缓冲器5针对缓冲器表示的各个采样点(尤其是针对正被处理的拼块的各个采样点位置)分别存储合适的深度(Z)值和模板值。当正被早期深度和模板测试阶段13和后期深度和模板测试阶段7测试的采样点通过各个深度和模板测试时,这些值被存储在深度和模板缓冲器5中。
在该实施方式中,深度和模板缓冲器5被配置为两个不同的缓冲器(但是它们可在同一物理存储器中),一个缓冲器存储每补片深度范围,并且另一个存储每采样深度值。当然,其它布置方式是可以的。
早期深度和模板测试阶段13再次被配置为按照适当地保守的方式操作,如本领域中所知的。
因此,通过“队列”12(这种队列12的功能和目的将在下面更详细地讨论)将通过早期深度和模板测试阶段13的片段(即,具有通过早期深度和模板测试阶段13的至少一个关联的采样位置的片段)向前发送到片段着色阶段6(渲染器),如图1所示。
(未通过早期深度和模板测试阶段13的片段被早期深度和模板测试阶段13剔除,如本领域中所知的。)
片段着色阶段6在其接收的片段上执行合适的片段处理(渲染)操作,以针对渲染输出(例如,用于片段的显示)处理片段,从而生成合适的片段数据等,如本领域中所知的。
该片段处理可包括任何合适和期望的片段着色处理,诸如在片段上执行片段着色程序、对片段应用纹理、对片段应用混合、雾化或其它操作等,以生成合适的片段数据,如本领域中所知的。在当前实施方式中,片段着色阶段6采用着色器流水线(可编程片段着色)的形式,但是如果需要的话,诸如另外使用或取代固定功能片段着色单元的其它布置方式也是可以的。
接着是“后期”片段Z和模板测试阶段7,除了别的以外,(如果要在例如未经历早期Z和模板测试的片段上执行该阶段7)该阶段7在着色的片段(在与着色的片段关联的覆盖的采样点上)上执行流水线深度测试的末尾,以确定渲染的片段表示的采样点是否将重复渲染其值被当前存储在拼块缓冲器5中的片段(即,确定用于从片段着色阶段6发布的片段的片段数据是否应该被存储在拼块缓冲器中(应该替代或修改已被渲染的片段的拼块缓冲器中的片段数据))。
因此,后期深度测试阶段7将从片段着色阶段6发布的片段(与该片段关联)的深度值与针对关注的采样位置的存储在深度缓冲器5中的(每采样位置)深度值进行比较。通过后期深度测试7的采样点的深度值也合适地写到Z-缓冲器5以进行更新,如本领域中所知的。
这种后期片段深度和模板测试阶段7还在片段上执行任何必要的“后期”透明和/或模板测试。
通过后期片段测试阶段7的片段随后受到片段上所需的任何其余操作,诸如与帧缓冲器混合、抖动等(未示出)。
最后,输出片段数据值写到合适的拼块缓冲器8,如本领域中所知,所述拼块缓冲器8针对缓冲器表示的各个采样点(本质上针对正被处理的拼块的各个采样点)存储合适的值(例如颜色值)。
一旦已经处理了各个拼块,其数据就例如从拼块缓冲器8输出至主存储器(例如,主存储器中的帧缓冲器)(未示出)以进行存储,并且下一拼块随后被处理,等等,直至已经处理了足够多的拼块以生成整个渲染输出(例如,要显示的帧(图像))。
当然,用于片段处理流水线的其它布置方式是可以的。
上面描述了图1所示的图形处理系统的基本栅格化和渲染处理。现在,将相应地描述根据本发明的实施方式的图1所示的图形处理系统的操作。
根据本发明,当前实施方式分别使用通过早期分级深度测试4的补片的结果,或通过早期深度测试13的片段的结果,以确定在图形处理流水线中的其它片段的处理是否可停止(即,确定旧的片段是否可“终止”,因为它们将在相同位置上完全被新的片段重复渲染)。
因此,如图1所示,早期分级深度和模板测试阶段4和早期深度和模板测试阶段13被配置为:如果片段的补片或片段分别通过对应的早期剔除测试,则不仅将补片或片段传递至处理流水线中的下一阶段,而且还将与早期剔除测试“通过”事件相关的信息广播至流水线的各阶段(如图1中的虚线9、10、11、14所示)。
在当前实施方式中,当采样点的补片通过早期分级深度测试4时,早期分级深度和模板测试阶段4将通过测试的补片覆盖的(x,y)位置广播9、10、11至队列12、片段着色阶段6、栅格化器3和早期分级深度和模板测试阶段4本身(如图1中的虚线11所示)。如将在下面讨论的,图形处理流水线的这些阶段随后使用该位置信息以估计它们当前处理的任何片段是否可停止处理。
在当前实施方式中,早期分级深度测试通过事件被广播至分级深度和模板测试阶段4和栅格化器3,因为如上面的讨论,栅格化器3和早期分级深度和模板测试阶段4按照反复方式操作,并且因此可存在仍经历栅格化和早期分级深度和模板测试处理的先前生成的采样点的补片,如果采样位置的例如稍后的补片被分级深度和模板测试阶段4确定重复渲染它们,则可省略它们的处理。
除将早期分级深度测试通过事件广播至图形处理流水线的其它阶段之外,早期分级深度(Z)和模板测试阶段4还被配置为利用用于通过早期分级深度测试的采样点的补片的相关深度值范围和/或模板值更新深度和模板缓冲器5。因此,这使得这些缓冲器能够包含(例如)已经历(并通过)早期分级深度和模板测试4的补片的深度值范围的最新记录,从而使得早期分级深度和模板测试更加有效。
深度缓冲器等的这种更新按照合适地保守方式执行,以避免更新可在补片等的处理中导致错误的任何风险。
对应地,在当前实施方式中,当片段通过早期深度测试13时,早期深度和模板测试阶段13将通过测试的片段覆盖的(x,y)位置广播14至队列12,以及至片段着色阶段6(如图1中的虚线14所示)。如将在下面讨论的,图形处理流水线的这些阶段再次利用该位置信息来估计它们当前处理的任何片段是否可停止处理。
再者,除将早期深度测试通过事件广播至图形处理流水线的其它阶段之外,早期深度(Z)模板测试阶段13被配置为利用用于与通过早期深度测试的片段关联的采样点的相关深度值和/或模板值更新深度和模板缓冲器5。因此,这使得这些缓冲器能够包含(例如)已经历(并通过)早期分级深度和模板测试13的采样点的深度值范围的最新记录,从而使得早期和后期分级深度和模板测试更加有效。
在当前实施方式中,并不针对通过早期分级深度测试4和早期深度测试13的所有补片和片段而是仅针对符合特定标准的补片和片段执行剔除测试“通过”事件的广播和深度缓冲器的更新等。这是为了避免当稍后的片段通过早期深度测试时错误地丢弃流水线中的片段。
当前实施方式在早期分级深度和模板测试单元4和早期深度和模板测试单元13中使用“自动检测”方案来确定早期深度测试“通过”事件是否应该广播至流水线。这种自动检测方案针对将早期深度测试“通过”事件广播(发送)至流水线具有以下需求:新的补片或片段需要已通过早期z/s测试(并通过早期z/s测试而非后期z/s测试处理);新的补片或片段需要具有全rgb写掩模(z/模板已写至其上)和不依赖于先前的rgba值的混合功能;用于新的补片或片段的着色器不能读拼块缓冲器;以及新的补片或片段不需要强制进行后期z更新。
(由于以下原因,新的补片或片段需要强制进行后期z更新:例如:透明测试;透明覆盖;着色器包含丢弃;混合着色器包含丢弃;或者着色器中的较早的片段强制进行后期z更新。因此,这种“强制后期z更新”需求意味着按照本发明的方式的操作仅针对完全不透明的补片和片段执行。这直接允许较近的透明的补片或片段可不防止较远的片段在最终输出中仍然可见的事实。)
虽然当前实施方式使用“自动检测”方案来触发与通过早期分级深度测试4或早期深度测试13的补片或片段有关的早期深度测试通过事件信息的广播,但是当前实施方式也可使用状态位作为用于此的备用布置方式。状态位可设置为关闭“自动检测”方案,并且作为替代,通过另一(例如,剔除测试通过事件“激活”)状态位的设置(与否)来触发早期剔除测试通过事件信息广播。这将继而使得例如应用程序员能够设置是否要执行剔除测试通过事件操作(通过设置合适的状态位)。
早期分级深度和模板测试阶段4和早期深度和模板测试阶段13包括组合的测试和更新逻辑,它们可进行操作以执行剔除测试,并且如果通过测试并且补片或片段符合需要的标准,则将通过事件和与其关联的必要的位置信息“广播”至图形流水线的合适阶段,并且更新例如深度缓冲器中的深度信息等。
响应于通过早期分级深度和模板测试阶段4以及早期深度和模板测试阶段13广播的早期深度测试“通过”事件位置信息,处理流水线的接收所述信息的阶段随后利用该信息来确定它们当前包含的任何片段是否不再需要进行处理,作为早期剔除测试“通过”事件的结果。通过将当前占据流水线阶段的所有片段的(x,y)位置与通过早期分级深度和模板测试阶段4或早期深度和模板测试阶段13广播的通过早期剔除测试的片段和/或补片的(x,y)位置进行比较来执行该处理(实际上,这将识别将被通过早期深度和模板测试的补片或片段遮挡的当前处于该阶段中的任何片段)。
以同样符合的用于使片段的处理停止的特定其它标准为准,随后,与通过早期剔除测试的补片或片段具有相同的(x,y)位置的任何当前片段的处理停止。具体地说,还检查流水线中的可能将要丢弃(即,将被遮挡)的片段是否因为任何其它原因应该仍然接受处理,所述其它原因例如,因为其具有诸如与未解决的遮挡查询关联的仍被需要的副作用。如果被遮挡的片段不具有其附带的仍然有效的遮挡查询(并且不具有其它需要的副作用),则将其丢弃(其处理停止),当如果其确实具有其附带的有效的遮挡查询(或一些其它仍被需要的副作用),则不将其丢弃(即,继续其处理)。通过关注的图形处理流水线的阶段执行这种检查。
在早期剔除测试“通过”事件中按照合适地保守的方式执行对不再需要处理的片段的确定,以降低不正确地丢弃片段使其不再进行后面的处理的风险。
图形处理流水线的各个阶段并行地测试所述阶段中的所有片段。这使得流水线阶段能够以与早期剔除测试通过事件可生成可能的剔除机会的速率相同的速率丢弃片段。
通过将识别出的片段标记为“终止”(无效)使稍后的处理阶段中的片段的处理停止。为了促进这一点,使各个片段具有与其关联的“终止”比特(例如,作为其关联的片段数据的一部分),如果对该比特进行设置,则指示该片段不需要被处理(并且可丢弃)。流水线处理阶段被配置为检查它们接收以进行处理的各个片段的终止比特(并且因此随后处理或不处理所述片段)。
另选的布置方式(诸如使具有有效标签的像缓存区那样操作的片段队列在设置片段的无效标签时释放队列(缓存区)行)可用作替代,或根据需要另外使用。
将早期剔除测试通过事件广播至其的图形处理流水线的各个阶段具有对在其本地域中(即,在关注的阶段或处理阶段的一部分中)的所有片段负责的对应的代理。各个代理将关于所述片段的信息保持在其本地域中,并可进行操作以响应于其接收的早期剔除测试通过事件将片段标记为终止(无效),从而避免和/或停止对它们的不必要的处理。代理被配置为能够并行地测试它们的本地域中的所有片段。
如图1所示,在当前实施方式中,图形处理流水线包括片段必须经过的队列12,队列12布置在图形处理流水线的片段着色器6之前。队列12被配置为能够保持完整的拼块尺寸的一组片段,但是其它布置方式当然也是可以的。
队列12具有增加可在早期剔除测试阶段之后(即,在分级深度和模板测试器4和早期深度和模板测试器13之后)的流水线中的片段数量的效果,从而增加可按照本发明的方式进行操作的片段的数量。使用队列12可明显增大仅最终可见片段到达队列12之后的片段着色阶段6(并被片段着色阶段6处理)的可能性。这是有利的,因为片段着色通常对每片段而言是相对昂贵的处理,并且因此越少的片段进入片段着色器就越好。
进入队列12的片段按照相同的顺序退出队列,但是“终止”片段在退出队列时触发资源的解除。
从上面可以看出,至少在本发明的优选实施方式中,本发明提供了用于进一步减少可在流水线图形处理系统中发生的隐藏面的(最终冗余的)处理量的机制。此外,本发明的布置方式为:当用于经典渲染流水线的渲染顺序为最佳时,其将不干涉(从而在具有最佳渲染顺序的现有渲染流水线布置方式上获得最小开销),但当渲染顺序并非最佳时,其将起作用,并且在这种情况下,至少在本发明的优选实施方式中,其可消除从后向前的片段和隐藏面,以达到在隐藏面消除方面与每采样或每片段预渲染排序处理一样有效的程度。在要渲染的内容使得排序算法不能容易地检测最佳排序方式的情况下(例如,基元交叉或具有交叠的深度范围),本发明可还能够比排序更有效地进行这种操作。
本发明的技术还独立于所使用的多点采样的防混叠处理的水平,从而使得较高等级的多点采样的防混叠处理的使用明显更便宜。
Claims (18)
1.一种操作图形处理流水线的方法,所述图形处理流水线包括多个处理阶段,该多个处理阶段包括:栅格化器,其将输入基元栅格化以生成要处理的图形片段,各个图形片段具有与该图形片段关联的一个或更多个采样点;以及渲染器,其对由所述栅格化器生成的片段进行处理以生成输出片段数据,所述方法包括以下步骤:
在由所述栅格化器生成的片段被发送至所述渲染器以进行处理之前,针对与该片段关联的至少一个采样点执行早期剔除测试;
如果至少一个采样点通过所述早期剔除测试,则向前发送所述片段以进行处理,并且,作为所述至少一个采样点通过所述早期剔除测试的结果,确定在所述图形处理流水线中的另一采样点的处理是否能够停止;
如果与片段关联的至少一个采样点通过所述早期剔除测试,则将通过测试的采样点或片段的位置广播至所述图形处理流水线的至少一个处理阶段;以及
所述图形处理流水线的所述至少一个处理阶段利用所广播的位置信息来估计对所述至少一个处理阶段当前处理的任何采样点或片段的处理是否能够停止。
2.根据权利要求1所述的方法,该方法包括以下步骤:执行针对单个采样点和多个片段的补片这二者的早期剔除测试。
3.根据权利要求1或2所述的方法,该方法还包括以下步骤:在渲染一组基元之前,针对所述一组基元的多组采样位置存储期望的深度值的范围。
4.根据权利要求1或2所述的方法,其中,作为所述至少一个采样点通过所述早期剔除测试的结果,确定在所述图形处理流水线中的另一采样点的处理是否能够停止的步骤包括以下步骤:将当前占据流水线阶段的采样点和/或片段的位置与通过所述早期剔除测试的所述至少一个采样点的位置进行比较。
5.根据权利要求1或2所述的方法,其中,作为所述至少一个采样点通过所述早期剔除测试的结果,确定在所述图形处理流水线中的另一采样点的处理是否能够停止的步骤还包括以下步骤:在停止所述另一采样点的处理之前,检查所述另一采样点的其它属性,以确定所述另一采样点是否应该仍然进行处理。
6.根据权利要求1或2所述的方法,其中,以下步骤:
在由所述栅格化器生成的片段被发送至所述渲染器以进行处理之前,针对与该片段关联的至少一个采样点执行早期剔除测试;以及
如果所述至少一个采样点通过所述早期剔除测试,则向前发送所述片段以进行处理,并且,作为所述至少一个采样点通过所述早期剔除测试的结果,确定在所述图形处理流水线中的另一采样点的处理是否能够停止包括以下步骤:
在通过流水线向前发送由所述栅格化器生成的片段以进行处理之前,针对与所述片段关联的至少一个采样点执行早期深度测试,和/或在通过流水线向前发送由所述栅格化器生成的至少一个片段以进行处理之前,针对所述至少一个片段执行早期深度测试;
如果所述至少一个采样点或所述至少一个片段通过所述早期深度测试,则向前发送所述片段或所述至少一个片段以进行处理,并将关于通过所述早期深度测试的所述至少一个采样点或所述至少一个片段的位置的信息广播至所述图形处理流水线的至少一个处理阶段;以及
所述图形处理流水线的所述至少一个处理阶段利用与通过所述早期深度测试的所述至少一个采样点或所述至少一个片段关联的所广播的位置信息来确定当前在该阶段中是否存在与通过所述早期深度测试的所述至少一个采样点或所述至少一个片段占据相同位置的任何采样点或片段,并且如果存在任何这些采样点或片段,则选择性地停止对与通过所述早期深度测试的所述至少一个采样点或所述至少一个片段占据相同位置的这些采样点或片段的进一步处理。
7.根据权利要求1所述的方法,其中,早期剔除测试通过事件信息被广播至所述图形处理流水线的所述早期剔除测试、所述栅格化器和所述渲染器的中一个或更多个。
8.根据权利要求1或2所述的方法,该方法还包括以下步骤:
如果所述至少一个采样点通过所述早期剔除测试,则利用与通过所述早期剔除测试的所述至少一个采样点关联的任何相关数据值来更新包含与所述早期剔除测试相关的数据的数据缓冲器。
9.一种图形处理流水线,该图形处理流水线包括:
多个处理阶段,该多个处理阶段包括:栅格化器,其将输入基元栅格化以生成要处理的图形片段,各个图形片段具有与该图形片段关联的一个或更多个采样点;渲染器,其对由所述栅格化器生成的片段进行处理以生成输出片段数据;以及早期剔除测试阶段,在由所述栅格化器生成的片段被发送至所述渲染器以进行处理之前,该早期剔除测试阶段针对与所述片段关联的采样位置执行早期剔除测试;其中,所述图形处理流水线被配置为:
响应于与由所述栅格化器生成的片段关联的至少一个采样点通过所述早期剔除测试,向前发送所述片段以进行处理,并且,作为所述至少一个采样点通过所述早期剔除测试的结果,确定在所述图形处理流水线中的另一采样点的处理是否能够停止;
如果与片段关联的至少一个采样点通过所述早期剔除测试,则将通过测试的采样点或片段的位置广播至所述图形处理流水线中的至少一个处理阶段;并且
所述图形处理流水线中的所述至少一个处理阶段被配置为利用广播的位置信息来估计对当前处理的任何采样点或片段的处理是否能够停止。
10.根据权利要求9所述的图形处理流水线,该图形处理流水线包括:
针对由所述栅格化器生成的多个片段的补片执行早期剔除测试的早期剔除测试阶段;以及
针对与由所述栅格化器生成的片段关联的单个采样点执行早期剔除测试的早期剔除测试阶段。
11.根据权利要求9或10所述的图形处理流水线,其中,所述图形处理流水线还被配置为:在渲染一组基元之前,针对所述一组基元的多组采样位置存储期望的深度值的范围。
12.根据权利要求9或10所述的图形处理流水线,其中,所述图形处理流水线被配置为:通过将当前占据流水线阶段的采样点和/或片段的位置与通过所述早期剔除测试的所述至少一个采样点的位置进行比较,作为所述至少一个采样点通过所述早期剔除测试的结果,确定在所述图形处理流水线中的另一采样点的处理是否能够停止。
13.根据权利要求9或10所述的图形处理流水线,其中,所述图形处理流水线被配置为:在停止对所述另一采样点的处理之前,检查所述另一采样点的其它属性,以确定所述另一采样点是否应该仍然进行处理。
14.根据权利要求9或10所述的图形处理流水线,其中,
在由所述栅格化器生成的片段被发送至所述渲染器以进行处理之前,所述早期剔除测试阶段针对与所述片段关联的采样点执行早期深度测试;并且
所述图形处理流水线被配置为:
响应于与由所述栅格化器生成的片段关联的至少一个采样点通过所述早期深度测试,向前发送所述片段以进行处理,并将关于通过所述早期深度测试的所述至少一个采样点的位置的信息广播至所述图形处理流水线的至少一个处理阶段;并且
所述图形处理流水线的所述至少一个处理阶段被配置为:利用广播的与通过所述早期深度测试的所述至少一个采样点关联的位置信息来确定当前在该阶段是否存在与通过所述早期深度测试的所述至少一个采样点占据相同位置的任何采样点,并且如果存在任何这些采样点,则选择性地停止对与通过所述早期深度测试的所述至少一个采样点占据相同位置的这些采样点的进一步处理。
15.根据权利要求9或10所述的图形处理流水线,其中,
在由所述栅格化器生成的片段或多个片段的补片被发送至所述渲染器以进行处理之前,所述早期剔除测试阶段针对所述片段或多个片段的补片执行早期深度测试;并且
所述图形处理流水线被配置为:
响应于由所述栅格化器生成的片段或片段的补片通过所述早期深度测试,通过流水线向前发送所述片段或片段的补片以进行处理,并将与通过所述早期深度测试的所述片段或片段的补片的位置相关的信息广播至所述图形处理流水线的至少一个处理阶段;并且
所述图形处理流水线的所述至少一个处理阶段被配置为:利用广播的与通过所述早期深度测试的所述片段或片段的补片关联的位置信息来确定当前在该阶段是否存在与通过所述早期深度测试的所述片段或片段的补片占据相同位置的任何片段,并且如果存在任何这些片段,则选择性地停止对与通过所述早期深度测试的所述片段或片段的补片占据相同位置的这些片段的进一步处理。
16.根据权利要求9所述的图形处理流水线,其中,早期剔除测试通过事件信息被广播至所述图形处理流水线的早期剔除测试阶段、所述栅格化器、队列和所述渲染器中的一个或更多个。
17.根据权利要求9或10所述的图形处理流水线,其中,所述图形处理流水线还被配置为:
当与由所述栅格化器生成的片段关联的至少一个采样点通过所述早期剔除测试时,利用与通过所述早期剔除测试的所述至少一个采样点关联的任何相关数据值来更新包含与所述早期剔除测试相关的数据的数据缓冲器。
18.一种存储计算机程序的计算机可读介质,所述计算机程序在数据处理装置上运行以执行根据权利要求1至8中的任一项所述的方法。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/716,952 US9153070B2 (en) | 2012-12-17 | 2012-12-17 | Hidden surface removal in graphics processing systems |
US13/716,952 | 2012-12-17 | ||
US13/909,561 US9214006B2 (en) | 2013-06-04 | 2013-06-04 | Hidden surface removal in graphics processing systems |
US13/909,561 | 2013-06-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103871095A CN103871095A (zh) | 2014-06-18 |
CN103871095B true CN103871095B (zh) | 2018-07-17 |
Family
ID=50031027
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310692576.4A Active CN103871020B (zh) | 2012-12-17 | 2013-12-17 | 图形处理系统中的隐藏面消除 |
CN201310693216.6A Active CN103871095B (zh) | 2012-12-17 | 2013-12-17 | 图形处理系统中的隐藏面消除 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310692576.4A Active CN103871020B (zh) | 2012-12-17 | 2013-12-17 | 图形处理系统中的隐藏面消除 |
Country Status (3)
Country | Link |
---|---|
KR (2) | KR102057166B1 (zh) |
CN (2) | CN103871020B (zh) |
GB (2) | GB2511177B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9292898B2 (en) * | 2013-03-15 | 2016-03-22 | Intel Corporation | Conditional end of thread mechanism |
US9846959B2 (en) * | 2014-07-03 | 2017-12-19 | Mediatek Inc. | Apparatus and method for controlling early depth processing and post depth processing |
GB2540227B (en) * | 2015-12-21 | 2018-01-17 | Imagination Tech Ltd | Allocation of tiles to processing engines in a graphics processing system |
US10417815B2 (en) * | 2017-01-27 | 2019-09-17 | Advanced Micro Devices, Inc. | Out of order pixel shader exports |
GB2571979B8 (en) * | 2018-03-15 | 2023-07-12 | Advanced Risc Mach Ltd | Graphics processing |
CN112116519B (zh) | 2019-06-19 | 2022-12-27 | 畅想科技有限公司 | 图形处理系统中的粗略深度测试 |
KR200491938Y1 (ko) | 2020-05-06 | 2020-07-03 | 조현근 | 기능성 멀티 스카프 |
GB2608094A (en) | 2021-01-27 | 2022-12-28 | Advanced Risc Mach Ltd | Graphics processing |
CN116894906A (zh) * | 2023-09-11 | 2023-10-17 | 瀚博半导体(上海)有限公司 | 图形渲染方法和处理器硬件架构 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6646639B1 (en) * | 1998-07-22 | 2003-11-11 | Nvidia Corporation | Modified method and apparatus for improved occlusion culling in graphics systems |
CN1512454A (zh) * | 2002-12-24 | 2004-07-14 | ض� | 用于图形渲染的z-缓冲技术 |
CN1848179A (zh) * | 2004-12-29 | 2006-10-18 | 英特尔公司 | 高效z测试 |
CN101533522A (zh) * | 2008-01-31 | 2009-09-16 | Arm挪威股份有限公司 | 用于处理计算机图形的方法和设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6525737B1 (en) * | 1998-08-20 | 2003-02-25 | Apple Computer, Inc. | Graphics processor with pipeline state storage and retrieval |
US8711155B2 (en) | 2004-05-14 | 2014-04-29 | Nvidia Corporation | Early kill removal graphics processing system and method |
JP4116648B2 (ja) | 2006-05-22 | 2008-07-09 | 株式会社ソニー・コンピュータエンタテインメント | オクルージョンカリング方法および描画処理装置 |
US8207972B2 (en) * | 2006-12-22 | 2012-06-26 | Qualcomm Incorporated | Quick pixel rendering processing |
GB201004673D0 (en) * | 2010-03-19 | 2010-05-05 | Imagination Tech Ltd | Processing of 3D computer graphics data on multiple shading engines |
GB201116438D0 (en) * | 2011-09-22 | 2011-11-02 | Advanced Risc Mach Ltd | Occlusion queries in graphics processing |
-
2013
- 2013-12-17 CN CN201310692576.4A patent/CN103871020B/zh active Active
- 2013-12-17 GB GB1322284.9A patent/GB2511177B/en active Active
- 2013-12-17 GB GB1322278.1A patent/GB2511176B/en active Active
- 2013-12-17 KR KR1020130157253A patent/KR102057166B1/ko active IP Right Grant
- 2013-12-17 CN CN201310693216.6A patent/CN103871095B/zh active Active
- 2013-12-17 KR KR1020130157252A patent/KR102057163B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6646639B1 (en) * | 1998-07-22 | 2003-11-11 | Nvidia Corporation | Modified method and apparatus for improved occlusion culling in graphics systems |
CN1512454A (zh) * | 2002-12-24 | 2004-07-14 | ض� | 用于图形渲染的z-缓冲技术 |
CN1848179A (zh) * | 2004-12-29 | 2006-10-18 | 英特尔公司 | 高效z测试 |
CN101533522A (zh) * | 2008-01-31 | 2009-09-16 | Arm挪威股份有限公司 | 用于处理计算机图形的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
GB201322278D0 (en) | 2014-01-29 |
GB2511177A (en) | 2014-08-27 |
GB2511176B (en) | 2015-04-15 |
KR102057166B1 (ko) | 2019-12-18 |
GB2511176A (en) | 2014-08-27 |
GB201322284D0 (en) | 2014-01-29 |
CN103871020B (zh) | 2018-10-16 |
CN103871020A (zh) | 2014-06-18 |
CN103871095A (zh) | 2014-06-18 |
GB2511177B (en) | 2015-04-15 |
KR102057163B1 (ko) | 2019-12-18 |
KR20140078569A (ko) | 2014-06-25 |
KR20140078568A (ko) | 2014-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103871095B (zh) | 图形处理系统中的隐藏面消除 | |
CN104424621B (zh) | 基于图块的图形处理流水线和操作图形处理流水线的方法 | |
US9552665B2 (en) | Hidden surface removal in graphics processing systems | |
CN101604454B (zh) | 图形处理系统 | |
US9779536B2 (en) | Graphics processing | |
US9153070B2 (en) | Hidden surface removal in graphics processing systems | |
US9214006B2 (en) | Hidden surface removal in graphics processing systems | |
EP1738330B1 (en) | Scalable shader architecture | |
US10311016B2 (en) | Hidden surface removal in graphics processing systems | |
US9558585B2 (en) | Hidden surface removal in graphics processing systems | |
CN106408505A (zh) | 图形处理系统 | |
US10013790B2 (en) | Executing conditional tasks in a graphics processing pipeline | |
US9070200B2 (en) | Graphics processing systems | |
CN107438865B (zh) | 图形处理系统及其操作方法 | |
GB2516344A (en) | Graphics processing systems | |
CN110036414A (zh) | 在z-剔除之后去除或识别重叠片段 | |
US10769838B2 (en) | Hierarchical graphics processing for primitives | |
CN110276711A (zh) | 图形处理 | |
CN109643460A (zh) | 使用推迟图元批量合并和分类的混合渲染器 | |
US11132835B1 (en) | Suspending and resuming operations in graphics processing systems | |
US11127188B1 (en) | Suspending and resuming operations in graphics processing systems | |
US20220358616A1 (en) | Graphics processing | |
US20230298264A1 (en) | Graphics processing | |
US20240037692A1 (en) | Graphics processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |