在图形处理系统中处理具有未解析片段的基元技术方案

技术编号:13492026 阅读:93 留言:0更新日期:2016-08-07 03:54
本发明专利技术涉及在图形处理系统中处理具有未解析片段的基元。一种图形处理系统对基元的片段执行隐藏面消除和纹理化/着色化。该系统包括用于存储解析片段的深度值的主深度缓冲器(PDB)以及用于存储未解析片段的深度值的次级深度缓冲器(SDB)。针对来自PDB或SDB的深度值对传入片段进行深度测试。当片段通过深度测试时,如果其为解析片段(例如,如果其不透明或半透明)则其深度值被存储在PDB中,并且如果其为未解析片段(例如,如果其为穿通片段)则其深度值被存储在SDB中。这为后续不透明对象提供更多机会以重写通过深度测试的穿通片段,由此减少可能花费在最终将不贡献于最终渲染图像的片段上的不必要的处理和时间。

【技术实现步骤摘要】
【专利摘要】本专利技术涉及在图形处理系统中处理具有未解析片段的基元。一种图形处理系统对基元的片段执行隐藏面消除和纹理化/着色化。该系统包括用于存储解析片段的深度值的主深度缓冲器(PDB)以及用于存储未解析片段的深度值的次级深度缓冲器(SDB)。针对来自PDB或SDB的深度值对传入片段进行深度测试。当片段通过深度测试时,如果其为解析片段(例如,如果其不透明或半透明)则其深度值被存储在PDB中,并且如果其为未解析片段(例如,如果其为穿通片段)则其深度值被存储在SDB中。这为后续不透明对象提供更多机会以重写通过深度测试的穿通片段,由此减少可能花费在最终将不贡献于最终渲染图像的片段上的不必要的处理和时间。【专利说明】在图形处理系统中处理具有未解析片段的基元
本专利技术涉及图形处理系统,具体涉及在图形处理系统中处理具有未解析片段的基J L ο
技术介绍
图形处理系统被用于处理图形数据以便渲染图像。作为由图形处理系统执行的处理的部分,三维场景中的对象的基元被处理以确定基元中的哪些基元在图形处理系统的渲染空间的每个样本位置处可见,并且确定在样本位置处的可见基元的外观。在一些示例中,单个样本位置可以与最终渲染的图像的像素位置相对应,但是在其他示例中,多于一个(例如,四个)样本位置可以与每个像素位置相对应。典型的图形处理系统的两个阶段为:(i)隐藏面消除(HSR),其中由场景中的其他面隐藏的面被消除,以及(ii)纹理化和/或着色化,其中对象的面被给予合适的外观。在延迟渲染图形处理系统中,隐藏面消除阶段在纹理化/着色化阶段之前被实施。延迟渲染图形处理系统100的部分的示例被示出在图1中。系统100包括图形处理单元(GPU)102,其包括HSR模块104以及用于对基元的片段执行纹理化和/或着色化的片段处理模块106。作为术语,“片段”为在样本位置处的基元的元素。系统100还包括存储器108,其被布置为向GPU 102提供基元并从GPU 102接收经处理的像素。HSR模块104包括深度测试逻辑110、深度缓冲器112以及标签缓冲器114。在延迟渲染系统100中,HSR模块104被布置为从存储器108接收基元。深度缓冲器112存储针对样本位置的数组的深度值以指示在每个样本位置处的当前深度。深度测试逻辑110使用存储在深度缓冲器112中的深度值以执行针对传入片段的深度测试以确定片段是否由先前经处理的片段隐藏。如果传入片段未被隐藏,则深度缓冲器112中的合适深度值能够被更新以反映传入片段的深度。在与不透明对象类型或半透明对象类型相关联的片段的存在和/或深度值将不被片段处理模块106更改的意义上,这些片段为解析片段。如下面所描述的,在此引用的“存在”是基元中的存在,而非例如最终图像(其中诸如遮挡的其他因素可以应用)中的存在。因此,如果传入片段是不透明的或半透明的,则深度测试逻辑110将使用(通过深度测试的)传入片段的深度值来将深度值重写到深度缓冲器112中。如果传入片段是不透明的,则重写的片段能够被丢弃,因为它们将不贡献于最终渲染的图像。然而,如果传入片段是半透明的,则重写的片段可能仍然贡献于最终渲染的图像。因此,半透明的片段被处理使得使用由应用指示的混合方程来将新的半透明的片段值与先前片段值进行组合。通常,混合方程被实施在片段处理模块106中并且在被称为“阿尔法混合”的过程中使用源自于纹理的阿尔法值以便确定片段多么透明。其他类型的对象可以包括未解析片段。如果片段的存在和/或深度值由片段处理模块106更改,则片段可以为“未解析”的。例如,当穿通对象类型到达HSR模块104时生成的片段最初是未解析片段,因为它们的存在尚待由片段处理模块106解析。具有穿通对象类型的基元可以具有通过纹理化和着色化操作确定的孔(即,透明区域)。片段在其与基元的不透明区域相对应时被称为存在于基元中,并且在其与基元的透明区域相对应时被称为不存在。穿通对象类型应当由HSR模块处理使得有可能在去除被确定为不存在的任何片段之后通过剩余的孔来看到。如果(基于将其深度值与深度缓冲器112中的对应深度值进行比较)穿通片段通过初始深度测试,则穿通片段被转发到片段处理模块106,但是在那时深度缓冲器112中的深度值不被更新,因为深度缓冲器112被布置为仅仅保持针对解析片段的深度值(即将不被来自片段处理模块106的反馈更改或无效的深度值)以确保深度测试的结果是准确的。片段处理模块106通过执行指示片段是否“存在”、即是否为基元的部分的测试(其可以被称为“阿尔法测试”)来处理穿通片段。以这种方式,片段处理模块106解析穿通片段的存在。针对片段的阿尔法测试使用可以源自于纹理的阿尔法值以便确定片段是否存在。该测试的结果被反馈回到深度测试逻辑110,如由图1中的“反馈”示出的。如果片段被确定为不存在(即,如果片段未通过阿尔法测试),则没有针对该片段的深度值被写入到深度缓冲器112中。然而,如果片段被确定为存在(S卩,如果片段通过阿尔法测试),则到深度测试逻辑110的反馈指示片段的存在已经被解析,使得片段现在可以被当作解析片段。深度测试逻辑110能够之后利用穿通片段的深度值来更新深度缓冲器112。图1示出了标签缓冲器114位于深度测试逻辑110与片段处理模块106之间的接口处。标签是基元标识符,其将片段与片段为其部分的基元相关联,并且其允许诸如针对基元的纹理化和着色化数据的属性在需要时被提取。标签缓冲器114被用于保持针对来自针对当前被处理的渲染空间的部分中(例如,当系统100为基于图块的系统时在图块中)的每个样本位置的最前面的基元的片段(例如,通过深度测试的那些片段)的标签。如以上所描述的,针对通过深度测试的不透明片段的标签通常被写入到标签缓冲器114中,即使它们重写如与正确操作相对应的现有标签以处理不透明片段。来自半透明和穿通基元的片段可能需要与它们透支的片段进行组合。这些片段的组合通常必须被执行以便它们由应用提交。因此,无论何时半透明或穿通片段被发现为位于当前存储在标签缓冲器114内的片段前面,HSR模块104就将当前可见的标签冲刷到片段处理模块106。如以上所描述的,在穿通片段的情况下,片段的存在以及因此其深度值是否应当在深度缓冲器112中被更新由片段处理模块106确定。因此,针对穿通基元的标签还必须在当前存储在标签缓冲器114内的任何标签已经被冲刷之后直接被冲刷。注意,标签缓冲器114中的标签和位置的组合定义片段,因此对来自标签缓冲器114的标签的冲刷能够被认为是冲刷来自标签缓冲器114的片段。在概念上,考虑片段被存储在标签缓冲器114中并且片段被冲刷出去到片段处理模块106是有意义的。在实际实施方式中,片段的该概念流程通过将标签存储在标签缓冲器114中并冲刷来自标签缓冲器114的标签来实现。能够认识到,在延迟渲染系统(诸如,系统100)中,具有未解析片段的对象(例如,穿通对象)能够影响系统的效率。例如,当遇到穿通对象的片段时,HSR模块104不能够利用片段的深度值来更新深度缓冲器112,直到其已经接收到来自片段处理模块106的反馈的时间,即直到片段的存在已经被解析。这可以具有许多不利后果,诸如:-后续由不透明片段透支的穿通片段可以不必由片段处理模块106着色化,本文档来自技高网...

【技术保护点】
一种图形处理系统,包括:第一深度缓冲器,被配置为将针对多个样本位置的解析片段的深度值存储在所述图形处理系统的渲染空间内;第二深度缓冲器,被配置为存储针对所述样本位置的未解析片段的深度值;以及深度测试逻辑,被配置为接收与基元相关的基元数据并且使用存储在所述深度缓冲器中的至少一个深度缓冲器中的深度值来对所述基元的片段执行深度测试;其中所述图形处理系统被配置为:(i)在通过深度测试的片段为解析片段时将所述片段的所述深度值存储在所述第一深度缓冲器中,以及(ii)在通过深度测试的片段为未解析片段时将所述片段的所述深度值存储在所述第二深度缓冲器中。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:J·豪森
申请(专利权)人:想象技术有限公司
类型:发明
国别省市:英国;GB

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

1