法律状态公告日
法律状态信息
法律状态
2016-10-05
授权
授权
2013-04-17
实质审查的生效 IPC(主分类):G06T15/00 申请日:20110318
实质审查的生效
2012-12-12
公开
公开
技术领域
本发明涉及多个阴影化引擎上3D图形数据的处理。
背景技术
在3D图形系统中,像素通常被细分成多个矩形区域或图块(tile),在 这些像素上3D图像即将被渲染。例如,在申请人的英国专利No.2298111中, 图像被分成多个图块且图块被轮流被处理。为了简便起见,这些图块常常被 分组为众所周知的宏图块(macro tiles)。通常,几何结构处理单元使用已知 的方法从应用中接收图像数据并将其传送至屏幕空间中。然后数据被供应给 图块化单元(tiling unit),该图块化单元将屏幕空间几何结构插入到对象列 表中以用于每个定义的矩形区域或图块的集合。这些列表中的每个列表将包 含整体地或部分地存在于屏幕的子区域中的图元(通常定义为三角形的表 面),即图块。因此,将存在用于屏幕上每个图块的对象列表。然后使用任 何已知的方法图块可以轮流被渲染直到每个图块中的所有对象都被处理。
用于确定图块中的特定像素的图元深度的各种方法是已知的。这些使隐 藏面能够被移除(remove)并在随后不被用于像素处理,除非距观察点最近 的表面是半透明的。通常,图元将具有与其相关联的标签,指示其是半透明 的还是不透明的。
图1显示了这类已知的渲染系统的示例,图1是已知的渲染系统的原理 方框图。渲染系统包括几何结构处理单元2,该几何结构处理单元2接收定 义对象的图元数据。其处理对象以导出诸如三角形的图元,该图元被传递至 图块化单元4,该图块化单元4把将被纹理化并阴影化的图像细分成多个矩 形区域。然后在图块化的屏幕空间几何结构列表单元6中产生图块几何结构 列表。这些列表包括图元的列表,这些图元可能在每个图块中是可见的。然 后在将数据传递至纹理化和阴影化单元10之前,隐藏面消除单元8确定由 图元定义的哪个表面或哪些表面在图块中的各像素处图块是可见的,纹理化 和阴影化单元10根据与确定在各像素处为可见的对象相关联的图像属性可 以将纹理化和阴影化应用于像素。
用于确定相对深度并还用于确定是否适合于渲染用于特定像素或图块 的数据的各种方法是已知的。一个这类系统在申请人的国际专利申请号 PCT/GB2004/002717(公开号WO2005/015503)的专利申请中示出。其中, 对于图块中的每个像素,使用与半透明有关的数据,对象在深度分类单元中 被轮流考虑到。当在某个像素处半透明的对象覆盖了不透明的对象时,用于 整个图块的数据被输入到阴影化和纹理化单元。
在以前的实施方式中,每个三角形在查找表(LUT)中被分配了唯一的 条目(entry),而不是共享LUT条目以用于具有类似状态的三角形。区间 (span)的处理顺序也是基于线性,而不是确定方向的微图块(micro tile)。 这意味着将三角形与左边区域和右边区域相关联是不可能的,因为图块的整 个宽度被看做是单循环的。因为每个三角形具有单个LUT条目,这意味着 LUT必须是大型而昂贵的。当更多的三角形需要被存储在LUT中时,随着 图块变得更大,成本也变得更高。然而,这使用于每个三角形的边界框(在 这种情况中由于图块的整个宽度立即考虑到了Y的最小值和最大值)能够存 储在LUT中。这意味着输出处理变得很简单。在传递过程之后,最初TAG ID 缓冲器被扫描以确定哪个LUT ID仍然是可见的(之前显示的对象可能被其 它对象遮盖)。然后,用于可见的三角形(1三角形=1LUT ID)的可见区间 被输出,以最小的LUT ID开始。每个LUT条目包含用于三角形的原始范围 (Y最小值至Y最大值),并且针对该范围TAG ID缓冲器被扫描以用于输 出三角形。
在延迟Z缓冲器系统中栅格化(rasterisation)管线接收一串图元,该图 元与当前正在被处理的图块贯穿(intersect)。通过深度分类器(depth sorter) 接收信息,该深度分类器计算深度并栅格化接收到的三角形,以确定样本是 否是可见的。也就是说,其确定了图元是否在之前用于Z缓冲器中的该像素 位置的对象的前面,以及是否是半透明的。
如果适当的话,存储用于特定像素的深度可以被更新并且指示哪些样本 应该被纹理化和阴影化以用于每个像素的掩码(mask)被传递至标签分类器 (tag sorter),其在纹理化和阴影化中使用每个像素的对象数据和关联的标 签。
发明内容
本发明的优选实施方式提供了改进的方法和系统以用于标签分类器,该 标签分类器提高了处理的效率,诸如在基于图块的图形系统中用于像素的纹 理化和阴影化的效率。
具体来说,本发明的实施方式力求改进多个通用阴影化引擎(USSE) 或其他类的阴影化单元可以操作的效率,以阴影化被分别分配给它们作为图 元从栅格化和深度分类单元传递的图块或部分图块中的像素。
更具体地,根据本发明,提供了一种用于在多个阴影化引擎上纹理化和 阴影化3D计算机图形图像的方法,该方法包括以下步骤:将所述图像细分 成多个矩形区域;将每个矩形区域细分成多个更小的矩形区域;将对象列表 分配给每个矩形区域,所述对象列表包含定义在所述矩形区域中对象为可见 的数据;针对每个更小的矩形区域轮流执行以下操作:确定在所述更小的矩 形区域中哪些像素被来自所述对象列表的下一个对象贯穿,以及确定在所述 更小的矩形区域中哪些像素被来自所述对象列表的各自的下一个对象贯穿, 该各自的下一个对象在之前的每个各自的其他的更小矩形区域的像素贯穿 确定上被使用;输出用于对象的像素贯穿数据到分配给每个各自的更小的矩 形区域的阴影化引擎,对于该对象的用于每个更小的矩形区域的所有的贯穿 确定已经被执行;用所述阴影化引擎纹理化和阴影化与用于所述对象的像素 贯穿数据相对应的像素;以及存储通过针对与所述像素贯穿数据对应的像素 的纹理化和阴影化步骤得到的数据。
根据本发明,还提供了一种用于在多个阴影化引擎上纹理化和阴影化 3D计算机图形图像的方法,该方法包括以下步骤:a)将所述图像细分成多 个矩形区域;b)将每个矩形区域细分成多个更小的矩形区域;c)将对象列 表分配给每个矩形区域,所述对象列表包含定义在所述矩形区域中对象为可 见的数据;d)针对一个更小的矩形区域,通确定在所述更小的矩形区域中 哪些像素被所述对象列表中的对象A贯穿,以及确定在所述更小的矩形区域 中哪些像素被所述对象列表中的至少一个其他对象贯穿;e)与步骤d)并行, 输出用于对象B的像素贯穿数据到多个阴影化引擎中的至少一个阴影化引 擎,对于该对象B用于所选择的矩形区域中的每个更小的矩形区域的所有贯 穿的确定已经被执行;f)针对其中具有可见的对象的所选择的矩形区域中 的每个更小的矩形区域,重复进行步骤d)和e);g)利用多个阴影化引擎 中的至少一个阴影化引擎纹理化和阴影化与用于对象B的像素贯穿数据对 应的所述像素;以及h)存储从纹理化和阴影化步骤g)得到的数据。
本发明的方法允许最大化多个即将实现的阴影化引擎之间的负载平衡。 这在系统中是可能的,其中每个LUT条目具有多于一个的三角形,所以在 图像中的三角形的范围不能根据LUT确定,而必须以像素乘像素为基础来 确定。
在图像的每个矩形区域中,可能具有任意合适数量的更小的矩形区域。 在一个实施方式中,每个矩形区域具有四个更小的矩形区域。在另一实施方 式中,每个矩形区域具有八个更小的矩形区域。优选地,每个矩形区域中所 述更小的矩形区域通过在x和y方向上划分所述矩形区域而建立。
优选地,阴影化引擎的数量等于每个矩形区域中更小的矩形区域的数 量。在这个方案中,针对图像的纹理化和阴影化,每个阴影化引擎可以被分 配至每个矩形区域的特定的更小的矩形区域。可替换地,对于特定的更小的 矩形区域的每个阴影化引擎的分配可以以每个矩形区域为基础。
优选地,在每个选择的矩形区域中,多个阴影化引擎中的每一个阴影化 引擎被分配给更小的矩形区域,并且在步骤e)中输出的所述像素贯穿数据 被输出至分配给在其中对象B是可见的一个或多个更小的矩形区域的一个 或多个阴影化引擎。
在优选的实施方式中,步骤d)的对象A是用于所述矩形区域的所述对 象列表中的下一个对象,该矩形区域包括所述更小的矩形区域,该对象A在 所述更小的矩形区域中是可见的并且还不具有针对该更小的矩形区域已经 确定的像素贯穿数据。
步骤d)中的所述至少一个其他对象可以包括多个对象,对象的数量等 于每个矩形区域中更小矩形区域的数量减1。
优选地,步骤d)中所述至少一个其他对象包括所述对象列表中已经具 有确定的针对所述矩形区域中所有其他更小矩形区域的像素贯穿数据的对 象。
更优选地,步骤d)中的所述至少一个其他对象可以进一步包括:所述 对象列表中已经具有针对所述矩形区域中除一之外(except one)的所有其 他更小的矩形区域确定的像素贯穿数据的对象,所述对象列表中具有针对所 述矩形区域中一个其他更小的矩形区域确定的像素贯穿数据的对象,以及所 述对象列表中已经具有针对在一(one)与所述矩形区域中除一之外(except one)的所有更小的矩形区域之间的各自数量的更小的矩形区域确定的每个 像素贯穿数据的对象。也就是说,优选地,步骤d)中的所述至少一个其他 对象包括:已经具有针对一个其他更小的矩形区域确定的像素贯穿数据的对 象,已经具有针对两个其他更小的矩形区域确定的像素贯穿数据的对象,已 经具有针对三个其他更小的矩形区域确定的像素贯穿数据的对象,等等,直 到已经具有针对在所述矩形区域中所有其他更小的矩形区域确定的像素贯 穿数据的对象。
步骤d)中的确定在所述更小的矩形区域中哪些像素被所述对象列表中 的对象A贯穿,以及对象确定在所述更小的矩形区域中哪些像素被所述对象 列表中的至少一个其他贯穿,可以包括使用一个或多个掩码,该掩码指示哪 些对象应该在各像素被阴影化和纹理化。
步骤f)的重复进行可以包括通过轮换(rotate around)所述矩形区域轮 流选择更小的矩形区域并且针对每个轮流选择的更小的矩形区域重复步骤 d)和e)。可替换地,步骤f)的重复进行包括使用莫顿顺序(Morton-order) 模式轮流选择更小的矩形区域并且针对每个轮流选择的更小的矩形区域重 复进行步骤d)和e)。在一些情形中,对于多个阴影化引擎之间负载平衡, 发现选择的顺序是重要的。莫顿顺序也被称为Z顺序。
优选地,并行(parallel)于针对第一对象B的步骤e),步骤g)的纹理 化和阴影化针对第二对象B被执行。也就是说,当步骤d)和步骤e)相应 于步骤f)正被重复时,步骤g)的纹理化和阴影化可以针对对象执行,用 于该对象的像素贯穿数据在以前执行的步骤e)中被输出。
附图说明
参照图1已经描述了已知的渲染系统,其显示了3D渲染系统的原理方 框图。
现在本发明的优选实施方式将参照附图的图2和图3通过示例的方式具 体进行描述,其中:
图2显示了图1的修改部分的体现本发明的原理方框图;以及
图3显示了本发明实施方式中的图块的细分区域。
如已经讨论的,本发明提供了用于使用多个阴影化引擎纹理化和阴影化 3D图像的方法。本发明通过阴影化引擎之间的负载平衡提高了阴影化引擎 的效率。本发明提供了用于与另一三角形的像素贯穿确定结果并行输出的特 定的小矩形区域中一个或多个三角形的像素贯穿确定的操作。
图2显示了在图1的隐藏面消除单元8和纹理化和阴影化单元10之间 实施的本发明的实施方式。在图2所示的示例性实施方式中,在四个平行的 阴影化引擎上以四个USSE18的形式执行了纹理化和阴影化。
如图2所示的本发明的优选实施方式,提供了改进的标签分类方法和设 备,其在掩码上进行操作,该掩码指示在每个像素处哪些样本应该被阴影化 和纹理化。该掩码由栅格化和深度分类单元产生,并且在适当的时间数据从 栅格化单元输入至标签分类单元,然后标签分类单元控制多个通用阴影化引 擎(USSE)以确定使用经由栅格化单元输入到它的图元数据将阴影应用至 每个像素。
在以前的技术系统中,标签分类单元在扫描的基础步骤上在每个时钟循 环进行操作,该步骤着眼于图块中的一串16个像素。本发明的实施方式已 经修改了该方法以使用微图块(如4×4像素)方法,例如,用于单个图块 的四个USSE,每个USSE分配至图块的不同区域(每个区域被称作微图块)。 这些区域通常为左上角(TL)、右上角(TR)、左下角(BL)和右下角(BR)。 每个微图块可以例如时四个像素乘四个像素,但其他尺寸和微图块的数量也 是可能的。
USSE的使用效率通过使所有USSE在图元上操作为目标来实现,其中 该图元具有类似的状态(如颜色、结构)。因此,从栅格化顺序中的简单的 渲染像素移除是存在的。这限制了USSE需要被重新配置以处理不同的图元 数据的次数。对于这方面,现在将进一步具体地进行讨论。
图2显示了在图1的隐藏面移除单元8和纹理化和阴影化单元10之间 实施的本发明的实施方式。在图2所示的示例性实施方式中,传递产生控制 单元12确定什么时候将用于图块的对象数据发送至纹理化和阴影化单元。 其通过使用与图块中的每个像素相关联的标签和应用于这些标签的一组规 则进行。各种不同的方案是可用的。用于每个像素的标签被存储在标签缓冲 器14中并将指示最接近的对象在特定像素处是否是可见的,至今对于所处 理的几何结构来说,是半透明的或不透明的。当半透明的对象在某像素偶遇 时然后将对象数据输入到纹理化和阴影化单元10通常则是必要的,其中, 对象数据到目前为止已经通过隐藏面移除单元8进行处理以用于图块。
在图2的布局中,提供了标签分类器16以控制对象数据分配至多个(这 里为4个)通用阴影化引擎(USSE)18。标签分类器16细分图块或矩形区 域,该图块或矩形区域被处理成多个子区域(微图块),一个被分配至每个 各自的USSE。划分成多个微图块的图块的划分可以如图3所示,其中图块 被划分成四个微图块,即左上微图块(TL)、右上微图块(TR)、左下微图 块(BL)和右下微图块(BR)。所以,在该示例中,图块的左上四分之一(TL) 被分配给USSE 1,右上四分之一(TR)被分配给USSE 2,及左下四分之一 (BL)被分配给USSE 3且右下四分之一(BR)被分配给USSE 4。
标签分类器16执行针对三角形扫描图块区域并输出三角形数据至四个 USSE18的功能。在某种程度上进行这个过程以确保USSE 18的有效利用。
当标签分类器16最初从传递产生控制单元12接收到数据的输入时,其 不知道哪些三角形在图块的每个区域中是可见的并因而哪些三角形需要被 输出至USSE。
在该实施方式中,标签分类器16通过针对对象列表中的第一个三角形 A扫描左上区域(TL)启动。一旦这个过程完成了,则根据对齐(flush to) 标签分类器16的对象针对下一个三角形B扫描下一个区域,即右上区域 (TR),以及针对三角形A扫描该区域。针对三角形A和B并且针对下一 个三角形C然后左下(BL)区域被扫描。最后针对三角形A、B和C并且 针对下一个三角形D右下区域(BR)被扫描。
一旦这个过程完成了,应当理解的是针对三角形A所有四个区域就已经 都被扫描了,并已经确定了对于该像素三角形是可见。然后三角形可以被输 出至USSE 18的所有四个USSE 18,其可以处理与A相关联的像素贯穿以 对它们进行纹理化和阴影化,然后传递纹理化和阴影化的数据至帧存储器 20。
然后过程继续。在下一个过程循环时,三角形B、C和D开始被分配至 TL区域并且针对这些三角形和下一个三角形E执行了完整扫描的四分之一。 在此之后针对三角形B所有区域将被扫描并且标签分类器16可以将三角形 B输出至所有USSE 18以用于纹理化和阴影化并随后存储在帧存储器20中。
在下一个循环,TR区域再次被考虑,并且在其上针对被三角形C、D 和E以及下一个三角性F贯穿的所有像素执行的完整扫描。三角形C现在 已经被扫描用于所有区域及被输出至USSE 18以纹理化和阴影化并随后存 储在帧存储器20中。
在本实施方式中,这个过程以象限顺序继续进行直到通过传递产生控制 单元12输入的所有三角形均已经针对图块被纹理化和阴影化。如果存在要 被处理的进一步的数据以用于图块,则相同的过程将在来自传递产生控制单 元12的下一个数据输入时继续。
因此,应当理解的是,因为具有有效地处理管线的四像素并且掩码被建 立,该掩码指示在每个四分之一块中当前是哪些三角形,所以负载通过轮换 搜索四分之一块来保持平衡。这意味着新的三角形被轮流输出至每个四分之 一块。可以通过考虑用于跨越整个图块的四分之一的每个三角形输出以及输 出用于跨越整个图块的三角形的区间来维持效率,因此用于任何给定三角形 的建立、状态和纹理读取仅必须在图块中执行一次。在搜索过程期间每个四 分之一块中即将输出的每个三角形的选择也是重要的,因为应用将试图把在 状态和纹理中的过度降低到最低程度。同时USSE之间的负载平衡是重要的, 试图输出那些三角形也是重要的,这些三角形影响了同时提交它们时相同状 态排序的场景。具有相同状态的三角形还应该优选地保持在一起。这通过选 择具有最小LUT条目的三角形实现,因为LUT条目根据提交的三角形(如 果它们是可见的)以递增顺序被分配,即相似的状态在LUT中被放置在一 起。具有相同状态的三角形将参考相同的LUT条目,所以在移动到下一个 LUT条目之前,用于LUT的所有具有相同最小条目的三角形被输出。
本发明的实施方式可以在专用的硬件或软件或二者的组合中实施。在该 示例中,图块已经被显示细分成四个微图块。然而,本发明可以用更多或更 少的细分及USSE的相应数量实施以执行本发明的纹理化和阴影化。此外, 图块中的微图块不需要基于轮换顺序轮流被选择,但可以按任何需要的顺序 轮流被选择。
优选地,具有类似状态的三角形可以有序地通过标签分类单元提供以用 于扫描图块的每个区域,以使USSE可以考虑具有相同状态的第一个三角形。 例如,可能具有组成单个对象的多个三角形,所有这些三角形都需要相同的 阴影化和纹理化。轮流扫描用于所有这些三角形的区域将提高系统的效率, 因为用不同的纹理化和阴影化数据重新程序化USSE不是必要的直到那些具 有相同状态的三角形都已经被纹理化和阴影化。这将改进渲染的速度,因为 用不同的纹理化和阴影化数据重新程序化USSE进行了额外的处理循环。
本发明实施方式的方案的多个优点如下。根据单一LUT ID分组具有类 似状态的三角形减少了LUT存储的需求。处理微图块考虑到基于象限的三 角形的输出。在轮换的象限顺序中输出三角形在USSE上保持了平衡的负载。 也已经找到了有效用于负载平衡的诸如Z-顺序或莫顿(Morton)顺序的其他 顺序。(参照图3,Z顺序可以为TL、TR、BL,最后是BR,及莫顿顺序可 以为TL、BL、TR,最后是BR。)产生边界框作为输出处理的部分意味着边 界框是最优的,而不是基于原始输入边界框,即基于最后可见像素,而不是 当三角形被处理时的可见像素。
机译: 多种阴影引擎上的3D计算机图形数据处理
机译: 多种阴影引擎上的3D计算机图形数据处理
机译: 多阴影引擎上的3D计算机图形数据处理