当前位置: 首页 > 专利查询>ARM有限公司专利>正文

图形处理系统中的隐藏面消除技术方案

技术编号:29589561 阅读:26 留言:0更新日期:2021-08-06 19:49
本公开涉及图形处理系统中的隐藏面消除。具体的,涉及一种图形处理器,该图形处理器执行关于渲染输出的区块的图元的早期深度测试,以及渲染输出的采样位置的深度测试,保持存储区块的深度值以供区块早期深度测试使用的每区块深度缓冲器以及每样本深度缓冲器。当在完成渲染输出之前停止渲染输出的处理时,将每样本深度缓冲器中的每样本深度值写至储存器,以使可以恢复所述每样本深度值,但是将每区块深度缓冲器中的每区块深度值信息丢弃。然后,在恢复渲染输出的处理时,将每样本深度缓冲器值加载到每样本深度缓冲器中,并且还将所加载的每样本深度缓冲器值用于恢复每区块深度缓冲器,以供在继续渲染输出的处理时使用。

【技术实现步骤摘要】
图形处理系统中的隐藏面消除
本文所描述的技术涉及计算机图形的处理,特别是涉及图形处理中的隐藏面消除(hiddensurfaceremoval)。
技术介绍
正常情况下,执行图形处理首先是通过将图形处理(渲染)输出(诸如待显示的帧)划分成多个相似的基本组件(所谓的“图元(primitives)”),以使更容易执行图形处理操作。这些“图元”通常采用简单多边形的形式,诸如三角形。通常由图形处理器的驱动器基于从需要图形处理的应用(例如,游戏)接收到的图形绘制指令(请求),来生成用于输出(诸如待显示的帧)的图元。各个图元在这个级通常是由顶点集限定并表示的。图元的各个顶点已经关联其与表示该顶点的数据集(诸如位置、颜色、纹理以及其它属性数据)。然后,例如在栅格化(rasterising)和渲染(rendering)顶点(与该顶点相关的图元)时使用这种数据,例如用于显示。一旦生成和定义了图元及其顶点,就可以由图形处理器对它们进行处理,以便例如显示该帧。该处理基本上涉及确定覆盖待处理的渲染输出面积的采样点阵列中的哪些采样点被图元覆盖,然后确定各个采样点应具有的表现(例如,根据其颜色等)来表示该采样点处的图元。这些处理分别被通称为栅格化和渲染。栅格化处理确定应当用于图元的采样点(即,要用于表示渲染输出(例如,待显示的帧)中的图元的采样点的(x、y)位置)。这通常是使用图元的顶点的位置来完成的。渲染处理然后导出为表示采样点处的图元(即,“着色(shade)”各个采样点)所必需的数据(诸如红、绿以及蓝(RGB)颜色值,和“Alpha”(透明度)值)。这可以涉及应用纹理、混合采样点数据值等。(在图形文献中,有时使用术语“栅格化”是指图元转换成样本位置和渲染。然而,本文中使用“栅格化”仅仅是指将图元数据转换成采样点地址。)这些处理通常通过以下步骤来执行:测试多组一个或一个以上的采样点,并接着针对被发现包括处于所讨论(被测试)图元内部(被其覆盖)的一采样点的每组采样点,来生成通常被称为执行图形处理操作(诸如渲染)的“片段”的离散图形实体。因此,实际上,将所覆盖采样点处理为将用于渲染所讨论采样点处的图元的片段。“片段”是经过渲染处理(渲染流水线)的图形实体。根据图形处理如何配置,生成和处理的各个片段例如可以表示单个采样点或一组多个采样点。(因此,“片段”实际上是(与之相关联的)一组图元数据,这些图元数据被插值到图元的给定的一个或多个输出空间采样点。片段还可以包括为在所讨论采样点(片段位置)处着色图元所需的每图元和其它状态数据。各个图形片段的大小和位置通常可以与输出(例如,输出帧)的“像素”相同(因为像素是最终显示器中的奇点(singularity),所以图形处理器操作(渲染)的“片段”与显示器的像素之间可以存在一对一的映射)。然而,可能会存在以下情况:片段与显示像素之间不存在一对一的对应关系,例如,在显示最终图像之前,对经渲染的图像执行特定形式的后处理(诸如下采样)的情况下。)(还存在以下情况:由于给定位置处的多个片段(例如,来自不同的重叠(overlapping)图元)可能会彼此影响(例如,由于透明度和/或混合),因此,最终像素输出可能取决于该像素位置处的多个或所有片段。)(相应地,采样点与显示器的像素之间可能存在一对一的对应关系,但更典型地,采样点与显示像素之间可能不存在一对一的对应关系,这是因为可能会对经渲染的样本值进行下采样以生成用于显示最终图像的输出像素值。类似地,在给定位置处的多个采样点值(例如,来自不同的重叠图元)彼此影响(例如,由于透明度和/或混合)的情况下,最终像素输出还将取决于该像素位置处的多个重叠样本值。)一些图形处理系统使用所谓的“基于图块(tile)”或“延迟式”的渲染。在基于图块的渲染方面,不是将整个渲染输出(例如,帧)一次性地进行有效处理,而是将该渲染输出(例如,待显示的帧)划分成多个较小面积的区域,通称为“图块”。各个图块(区域)单独进行渲染(通常是一个接一个地),然后将经渲染的图块(子区域)重新组合,以提供完整的渲染输出,例如,用于显示的帧。在这样的布置中,通常将渲染输出划分(按面积)成规则尺寸和形状的渲染区域(图块)(其例如通常是正方形或矩形)。但是这不是必需的。(通常用于“图块化(tiling)”和“基于图块(tile-based)”渲染的其它术语包括“分块(chunking)”(渲染图块被称为“块(chunk)”)和“桶形(bucket)”渲染。为方便起见,将在本文中使用术语“图块”和“图块化”。但应理解,这些术语旨在覆盖其中将渲染输出渲染为多个较小面积的区域的所有另选和等同术语和技术)。当前图形处理系统的一个问题是,由于图元是按顺序进行处理的,并且通常不是按完美的前后顺序来进行处理的,因此,给定的采样点(以及因此的片段和像素)可能随着对输出进行处理(例如,用于显示)而被多次着色。当第一个被接收到并经渲染的图元随后被稍后的图元覆盖时,就会发生这种情况,使得经渲染的第一图元实际上在所讨论的像素(和采样点)处是看不到的。可能以这种方式将图元盖写多次,这可以导致针对正被渲染的各个渲染输出(例如,帧)执行了多次最终多余的渲染操作。这种现象通常称为“过度绘制(overdraw)”。执行这样的最终多余的操作的结果包括降低的帧速率和增加的存储带宽要求(例如,由于获取将被稍后的图元盖写的图元的数据)。这两个事项都是所不希望的,并且降低了图形处理系统的总体性能。随着渲染输出(诸如待渲染的帧)变得更大和更复杂(因为在潜在可见的视图中将存在更多的表面),并且随着可编程片段着色的使用增加,这些问题将趋于变得更加严重。为了设法减少“过度绘制”的量,申请人先前已经例如在其美国专利9558585(通过引用其全部内容而并入本文)中提出了,在发送图元和/或片段以用于渲染之前执行某一形式的早期深度(Z)测试,以查看该图元或片段等是否会被已经进行了渲染的图元所遮蔽(在该情况下,无需渲染该新的片段和/或图元)。这些布置设法标识例如以下新图元的采样点:该新图元将在稍后的采样点被发出至渲染流水线之前被已经处理过(因此无需进行处理)的图元遮蔽。在这些布置中,针对所讨论的采样位置处的当前“输出”图元,将例如要在那些采样位置处进行处理的新图元的深度值与那些采样位置的深度值进行比较,以查看该新图元是否在所讨论的采样位置被遮蔽。这可以帮助避免通过渲染流水线发送被已经处理过的图元遮蔽的片段。本申请人认为当在图形处理系统中执行隐藏面消除时仍然存在改进的范围。
技术实现思路
根据本公开的一方面,提供了一种操作图形处理器的方法,所述图形处理器包括:栅格化器,所述栅格化器对输入的图元进行栅格化,以生成待处理的图形片段,各个图形片段具有与该图形片段相关联的一个或更多个采样点;以及渲染器,所述渲染器对所述栅格化器生成的片段进行处理以生成输出片段数据;其中,所述栅格化器在接收到待栅格化的图元时,针对表示待生成的渲染输出的相应本文档来自技高网
...

【技术保护点】
1.一种操作图形处理器的方法,所述图形处理器包括:/n栅格化器,所述栅格化器对输入的图元进行栅格化,以生成待处理的图形片段,各个图形片段具有与该图形片段相关联的一个或更多个采样点;以及/n渲染器,所述渲染器对所述栅格化器生成的片段进行处理以生成输出片段数据;/n其中,所述栅格化器在接收到待栅格化的图元时,针对表示待生成的渲染输出的相应不同区域的一个或更多个区块中的各个区块,相对于该图元来测试该区块,以确定该图元是否至少部分地覆盖该区块;/n所述图形处理器还包括:/n区块早期深度测试电路,所述区块早期深度测试电路被配置成,关于渲染输出的以下区块来执行图元的早期深度测试:所述栅格化器发现所述图元至少部分地覆盖该区块;以及/n样本深度测试电路,所述样本深度测试电路被配置成,针对发现被图元覆盖的采样位置执行深度测试;/n所述方法包括以下步骤:在处理图元以生成渲染输出时,进行如下操作:/n存储所述渲染输出的每区块深度缓冲器,所述每区块深度缓冲器针对表示正被生成的所述渲染输出的相应不同区域的一个或更多个区块中的各个区块,存储该区块的深度值信息,以供所述区块早期深度测试电路在关于该区块执行图元的区块早期深度测试时使用;以及/n存储所述渲染输出的每样本深度缓冲器,所述每样本深度缓冲器存储正被生成的所述渲染输出的一个或更多个采样位置中的各个采样位置的深度值,以供所述样本深度测试电路在关于正被生成的所述渲染输出的采样位置执行图元的深度测试时使用;/n所述方法还包括以下步骤:/n所述图形处理器停止处理所述渲染输出,并且在所述图形处理器这样做时,进行如下操作:/n将所述每样本深度缓冲器中的所述每样本深度值写至储存器,以使能够在继续所述渲染输出的处理时恢复所述每样本深度值,但是丢弃所述每区块深度缓冲器中的所述每区块深度值信息;/n并且/n所述图形处理器恢复所述渲染输出的处理;并且在所述图形处理器这样做时,进行如下操作:/n将被写出至储存器的所述每样本深度缓冲器值加载到每样本深度缓冲器中,以供在继续所述渲染输出的处理时使用;以及/n使用所加载的每样本深度缓冲器值,在每区块深度缓冲器中存储每区块深度值信息集,以在继续所述渲染输出的处理时,由所述区块早期深度测试电路在执行图元的区块早期深度测试时使用。/n...

【技术特征摘要】
20200121 US 16/748,7121.一种操作图形处理器的方法,所述图形处理器包括:
栅格化器,所述栅格化器对输入的图元进行栅格化,以生成待处理的图形片段,各个图形片段具有与该图形片段相关联的一个或更多个采样点;以及
渲染器,所述渲染器对所述栅格化器生成的片段进行处理以生成输出片段数据;
其中,所述栅格化器在接收到待栅格化的图元时,针对表示待生成的渲染输出的相应不同区域的一个或更多个区块中的各个区块,相对于该图元来测试该区块,以确定该图元是否至少部分地覆盖该区块;
所述图形处理器还包括:
区块早期深度测试电路,所述区块早期深度测试电路被配置成,关于渲染输出的以下区块来执行图元的早期深度测试:所述栅格化器发现所述图元至少部分地覆盖该区块;以及
样本深度测试电路,所述样本深度测试电路被配置成,针对发现被图元覆盖的采样位置执行深度测试;
所述方法包括以下步骤:在处理图元以生成渲染输出时,进行如下操作:
存储所述渲染输出的每区块深度缓冲器,所述每区块深度缓冲器针对表示正被生成的所述渲染输出的相应不同区域的一个或更多个区块中的各个区块,存储该区块的深度值信息,以供所述区块早期深度测试电路在关于该区块执行图元的区块早期深度测试时使用;以及
存储所述渲染输出的每样本深度缓冲器,所述每样本深度缓冲器存储正被生成的所述渲染输出的一个或更多个采样位置中的各个采样位置的深度值,以供所述样本深度测试电路在关于正被生成的所述渲染输出的采样位置执行图元的深度测试时使用;
所述方法还包括以下步骤:
所述图形处理器停止处理所述渲染输出,并且在所述图形处理器这样做时,进行如下操作:
将所述每样本深度缓冲器中的所述每样本深度值写至储存器,以使能够在继续所述渲染输出的处理时恢复所述每样本深度值,但是丢弃所述每区块深度缓冲器中的所述每区块深度值信息;
并且
所述图形处理器恢复所述渲染输出的处理;并且在所述图形处理器这样做时,进行如下操作:
将被写出至储存器的所述每样本深度缓冲器值加载到每样本深度缓冲器中,以供在继续所述渲染输出的处理时使用;以及
使用所加载的每样本深度缓冲器值,在每区块深度缓冲器中存储每区块深度值信息集,以在继续所述渲染输出的处理时,由所述区块早期深度测试电路在执行图元的区块早期深度测试时使用。


2.根据权利要求1所述的方法,其中,所述栅格化器是分层栅格化器,所述分层栅格化器工作以针对渲染输出的以下区块来迭代地测试图元:所述区块的尺寸逐步变小直至最小区块尺寸,并且所述渲染输出的被执行所述早期深度测试的区块对应于所述渲染输出的以下区块:所述栅格化器为了所述栅格化处理而对所述区块进行了测试。


3.一种操作图形处理器的方法,所述图形处理器包括:
栅格化器,所述栅格化器对输入的图元进行栅格化,以生成待处理的图形片段,各个图形片段具有与该图形片段相关联的一个或更多个采样点;以及
渲染器,所述渲染器对所述栅格化器生成的片段进行处理以生成输出片段数据;
其中,所述栅格化器在接收到待栅格化的图元时,针对表示待生成的渲染输出的相应不同区域的一个或更多个区块中的各个区块,相对于该图元来测试该区块,以确定该图元是否至少部分地覆盖该区块;
所述图形处理器还包括:
区块早期深度测试电路,所述区块早期深度测试电路被配置成,关于渲染输出的以下区块来执行图元的早期深度测试:所述栅格化器发现所述图元至少部分地覆盖该区块;以及
样本深度测试电路,所述样本深度测试电路被配置成,针对发现被图元覆盖的采样位置执行深度测试;
所述方法包括以下步骤:
所述图形处理器进行如下操作:
将每样本深度缓冲器值加载到每样本深度缓冲器中,以供在处理渲染输出时使用,所述每样本深度缓冲器存储正被生成的所述渲染输出的一个或更多个采样位置中的各个采样位置的深度值,以供所述样本深度测试电路在关于正被生成的所述渲染输出的采样位置执行图元的深度测试时使用;以及
使用所加载的每样本深度缓冲器值,在每区块深度缓冲器中存储每区块深度值信息集,以供在处理所述渲染输出时,由所述区块早期深度测试电路在执行区块早期深度测试时使用,所述每区块深度缓冲器针对表示正被生成的所述渲染输出的相应不同区域的一个或更多个区块中的各个区块,存储该区块的深度值信息,以供所述区块早期深度测试电路在关于该区块执行图元的区块早期深度测试时使用。


4.根据权利要求1至3中任一项所述的方法,其中,所述每区块深度缓冲器存储如下各个区块的最小深度值和最大深度值:各个区块的深度值信息已被存储。


5.根据权利要求4所述的方法,其中,
使用所加载的每样本深度缓冲器值,在每区块深度缓冲器中存储每区块深度值信息集,以供在处理所述渲染输出时,由所述区块早期深度测试电路在执行图元的区块早期深度测试时使用的步骤包括:
将经恢复的每区块深度缓冲器中的区块的最小深度值设定成落入该区块内的所述采样位置的、已经被加载至所述每样本深度缓冲器的每样本深度值中的最小每样本深度值;并且将区块的最大深度值设定成落入该区块内的所述采样位置的、已经被加载至所述每样本深度缓冲器的每样本深度值中的最大每样本深度值。


6.根据权利要求1至5中的任一项所述的方法,其中,将所述每样本深度缓冲器值加载到每样本深度缓冲器中以供在处理所述渲染输出时使用的步骤包括:
使用直接存储器存取处理来加载所述每样本深度值。


7.根据权利要求1至6中的任一项所述的方法,其中,将所述每样本深度缓冲器值加载到每样本深度缓冲器中以供在处理所述渲染输出时使用的步骤包括:
按照逐区块的顺序加载所述每样本深度值。


8.根据权利要求1至7中的任一项所述的方法,其中,所述每区块深度缓冲器被配置成,存储区块的分层布局的深度值;并且其中,
使用所加载的每样本深度缓冲器值,在每区块深度缓冲器中存储每区块深度值信息集,以供在处理所述渲染输出时,由所述区块早期深度测试电路在执行图元的区块早期深度测试时使用的步骤包括:
使用所加载的每样本深度缓冲器值,在每区块深度缓冲器中存储每区块深度值信息集,以供在处理所述渲染输出时,由所述区块早期深度测试电路在执行图元的区块早期深度测试时使用,从而设定区块细分层级中的最小区块的每区块深度值;以及
基于区块层级中的较大区块分别包含的小区块的每区块深度值,设定所述较大区块的每区块深度值。


9.根据权利要求1至8中的任一项所述的方法,其中:
因正被处理的所述渲染输出的待处理的当前数据结构被耗尽而触发所述图形处理器停止处理所述渲染输出;并且
因存在准备要处理的所述渲染输出的包含新数据的新数据结构而触发所述图形处理器恢复处理所述渲染输出。


10.根据权利要求1至9中的任一项所述的方法,其中,待生成的渲染输出包括通过所述图形处理器生成的总体输出的图块。


11.一种图形处理器,所述图形处理器包括:
栅格化器,所述栅格化器对输入的图元进行栅格化,以生成待处理的图形片段,各个图形片段具有与该图形片段相关联的一个或更多个采样点;以及
渲染器,所述渲染器对由所述栅格化器生成的片段进行处理以生成输出片段数据;
其中,所述栅格化器被配置成,当所述栅格化器接收到待栅格化的图元时,针对表示待生成的渲染输出的相应不同区域的一个或更多个区块中的各个区块,相对于该图元来测试该区块,以确定该图元是否至少部分地覆盖该区块;
所述图形处理器还包括:
区块早期深度测试电路,所述区块早期深度测试电路被配置成,关于渲染输出的以下区块来执行图元的早期深度测试:所述栅格化器发现所述图元至少部分地覆盖该区块;以及
样本深度测试电路,所述样本深度测试电路被配置成,针对发现被图元覆盖的采样位置执行深度测试;
所述图形处理器还配置成,在处理图元以生成渲染输出时,进行如下操作:
存储所述渲染输出的每区块深度缓冲器,所述每区块深度...

【专利技术属性】
技术研发人员:A·D·恩格哈斯特韦德A·E·查芬F·赫格伦德
申请(专利权)人:Arm有限公司
类型:发明
国别省市:英国;GB

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1