选择性合并部分覆盖图块以执行分层z剔除的制作方法_3

文档序号:9893645阅读:来源:国知局
态寄存器,例如指示程序存储器中正执行的当前指令或待提取的下一指令的程序 计数器寄存器。处理单元34中的可编程着色器单元可包含例如顶点着色器单元、像素着色 器单元、几何形状着色器单元、壳着色器单元、域着色器单元、计算着色器单元和/或统一着 色器单元。
[0075] 固定功能处理单元可包含经硬连线W执行某些功能的硬件。虽然固定功能硬件可 经由一或多个控制信号而配置例如W执行不同功能,但所述固定功能硬件通常并不包含能 够接收用户编译程序的程序存储器。在一些示例中,处理单元34中的固定功能处理单元可 包含例如执行光栅操作,诸如例如深度测试、剪刀测试、α渗合等的处理单元。
[0076] 存储器36可经配置W存储在执行分层Ζ剔除时所使用的合并源图块数据。所述合 并源图块数据可包含用于擅染目标中的不同图块位置的所累积的保守最远Ζ值和/或所累 积的覆盖掩模。用于特定图块位置的所累积覆盖掩模可对应于已被合并用于该特定图块位 置的用于所述部分覆盖输入图块中的每个的所述覆盖掩模的合并版本。用于输入图块的覆 盖掩模可包含用于所述输入图块中的每个样本的位,其中,所述位中的每个表示对应于所 述输入图块的基元是否覆盖对应于相应位的样本。如果样本的输入图块响应于光栅化基元 而生成,则所述基元可对应于所述样本的输入图块。多个覆盖掩模的合并版本可对应于相 对于所有多个覆盖掩模执行的逐位"或"运算的结果。用于特定图块位置的所累积保守最远 Ζ值可对应于已被合并用于该特定图块位置的用于所述部分覆盖输入图块中的每个的所述 最远Ζ值的最大者。
[0077] 用于特定图块位置的所累积保守最远z值可替代地被称为用于所述特定图块位置 的保守最远Z值,或被称为用于对应于所述图块位置的合并源图块的保守最远Z值。类似地, 用于特定图块位置的所累积覆盖掩模可替代地被称为用于所述特定图块位置的覆盖掩模, 或被称为用于对应于所述图块位置的合并源图块的覆盖掩模。
[0078] 在一些示例中,存储器36可经配置W存储多个合并源图块数据记录。所述合并源 图块数据记录中的每个可包含与用于擅染目标的多个图块位置中的相应一个的合并源图 块相关联的数据。换句话说,与特定图块位置相关联的(即,与特定合并源图块相关联的)所 述合并源图块数据可被称为用于所述图块位置的合并源图块数据记录。在此些示例中,存 储器可在一些示例中具有比存储N个合并源图块数据记录必需的数据量更小的数据容量, 其中,N是在所述擅染目标中的所述图块位置的总数。
[0079] 在一些示例中,与包含于用于图块位置的数据记录中的所述合并源图块相关联的 所述数据可包含用于与所述图块位置相关联的所述合并源图块的保守最远Z值。在其它示 例中,与包含于用于图块位置的数据记录中的所述合并源图块相关联的所述数据可包含用 于与所述图块位置相关联的所述合并源图块的覆盖掩模。在其它示例中,与包含于用于图 块位置的数据记录中的所述合并源图块相关联的所述数据可包含用于与所述图块位置相 关联的所述合并源图块的保守最远Z值和用于与所述图块位置相关联的所述合并源图块的 覆盖掩模两者。
[0080] 存储器36可包含一或多个易失性或非易失性存储器或存储装置,诸如例如,随机 存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、高速缓存单元等。在一些示例中,存储 器36可为忍片上存储器。忍片上缓冲存储器是指与GPU 12在其上形成、位于和/或设置的微 忍片、集成电路和/或晶粒相同的微忍片、集成电路和/或晶粒上形成、位于和/或设置的存 储器。
[0081] 在其它示例中,存储器36可为高速缓存单元(例如,忍片上高速缓存单元)。在此些 示例中,所述高速缓存单元可不与底层存储器相关联。所述高速缓存单元可不与底层存储 器相关联,在运个意义上说,所述高速缓存单元可服务所有读取和写入请求而无需存取底 层存储器。此外,如果所述高速缓存单元中没有可供用于存储与合并源图块相关联的输入 数据的足够映射存储器空间,则所述高速缓存单元可利用所述输入数据覆写与另一个合并 源图块相关联的数据。例如,存储器36可经配置W向所述高速缓存单元中的高速缓存行写 入与第一图块位置相关联的第一合并源图块数据记录而无需向底层存储器写入所述第一 合并源图块数据记录,并利用与第二图块位置相关联的第二合并源图块数据记录覆写所述 第一合并源图块数据记录而无需向所述底层存储器写入所述第一合并源图块数据记录。
[0082] 存储器36可充当用于合并源图块数据的主数据存储,而非仅充当用于存储初次存 储在另一个底层存储器中的数据的复本的高速缓存的数据存储。然而,所述主数据存储并 不保证在所述数据存储中保留所述数据,因为所述高速缓存单元可覆写数据而无需向正存 取所述高速缓存的所述分层Z剔除算法通告。
[0083] 基元数据40可包含指示待擅染的一或多个基元的数据。在一些情况下,基元数据 40可几何学上定义待擅染的基元。几何学上定义基元可指代由一组顶点(或控制点)和对应 顶点属性定义基元。在一些示例中,基元数据40可采取多个顶点、顶点列表和/或顶点缓冲 器的形式。在其它示例中,基元数据40可采取顶点缓冲器与索引缓冲器组合的形式。在此些 示例中,顶点缓冲器可定义顶点,且索引缓冲器可指定哪些顶点用于定义所述基元中的每 个。
[0084] 包含于基元数据40中的顶点中的每个可包含一或多个属性,诸如例如,位置座标、 简正座标、纹理座标等。所述顶点可在概念上对应于几何基元(例如,点、线、Ξ角形等)的顶 点和/或对应于高阶基元(例如,高阶表面,诸如贝塞尔表面)的控制点。在一些情况下,所述 顶点中的每个可分组到一或多个顶点的群组中,并且运些顶点群组中的每个可对应于单一 基元。
[0085] 在一些示例中,几何学上所定义基元的形状可由不一定包含于基元数据40中的另 外数据定义。所述另外数据可包含来自一组一或多个预定基元类型、一或多个数学函数和/ 或一或多个曲面细分技术的指定基元类型中的一或多个。
[0086] 在一些示例中,所述指定基元类型可作为擅染状态变量存储在GPU 12中并可由软 件应用程序24配置。在一些情况下,所述指定基元类型可定义所得擅染基元(例如,点、线、 Ξ角形等)的形状和/或包含于基元数据40中的所述顶点的连通性(例如,Ξ角形条带、Ξ角 形扇形物等)。在一些示例中,不同基元类型可对应于由处理单元34实施的图形管线能够处 理的一组基元拓扑。在其它示例中,不同基元类型可对应于由图形API 26定义且可供软件 应用程序24使用的所述组基元拓扑。
[0087] 所述一或多个数学函数和/或所述一或多个曲面细分技术可在经配置W在GPU 12 的一或多个着色器单元(例如,壳着色器单元和/或域着色器单元)上执行的一或多个着色 器程序中指定。数学函数可用于定义具有曲线和/或曲面表面的基元。所述一或多个曲面细 分技术可用于通过接近于输入基元的形状和/或曲率的多个曲面细分的基元来定义基元。
[0088] 在运行期间,在CPU 6上执行的软件应用程序24(例如,图形应用程序)可将基元数 据40放置在存储器10中,并向GPU 12发出一或多个绘制调用。基元数据40可几何学上定义 待擅染的一或多个图形基元。响应于收到所述一或多个绘制调用,命令引擎32致使由处理 单元34实施的3D图形管线来擅染所述基元。所述3D图形管线可包含处理由基元数据40定义 的所述基元的所述顶点的几何形状处理级,生成对应于所述基元的光栅化版本的一或多个 样本(例如,像素)的光栅化器级,W及处理所述样本W生成用于由基元数据40定义的所述 基元的所得擅染图像的一或多个像素处理级。
[0089] 根据本发明,由处理单元34实施的所述3D图形管线可包含执行本发明中描述的所 述分层Z剔除技术中的任一个的分层Z剔除级。在一些示例中,所述分层Z剔除级可安置于在 所述光栅化器之后W及在所述像素处理级中的一或多个之前的所述3D图形管线中。在一些 示例中,本发明中描述的所述分层Z剔除技术可提高用于执行分层Z剔除的Z剔除值的质量, 借此提高分层Z剔除级的丢弃率。此外,在一些示例中,与其它系统相比,本发明中描述的所 述分层Z剔除技术可能能够使用相对较小的存储器单元或高速缓存单元来存储所合并的源 图块数据,借此减少实现相对高分层Z剔除丢弃比率所需的存储器占用面积和/或存储器带 宽。W此方式,本发明的技术可用于提高由GPU 12使用的存储器带宽使用率和/或存储器占 用面积的性能。
[0090] 图3为说明可用于实施本发明的分层Z剔除技术的示例图形管线50的框图。图形管 线50包含一或多个几何形状处理级52、光栅化器级54、z剔除级56、一或多个像素处理级58、 低分辨率Z缓冲器化RZ缓冲器)6〇W及合并高速缓存62。在一些示例中,图形管线50可在图2 所示的GPU 12中实施。在此些示例中,几何形状处理级52、光栅化器级54、z剔除级56W及像 素处理级58可在一些示例中由GPU 12的处理单元34中的一或多个实施。而且,在此些示例 中,LRZ缓冲器60可在一些示例中在计算装置2的存储器10中实施。而且,在此些示例中,合 并高速缓存62可在一些示例中在GPU 12的存储器36中实施。
[0091] 几何形状处理级52经配置W接收输入基元,并基于所述输入基元生成光栅化基 元。为生成所述光栅化基元,几何形状处理级52可基于所述输入基元执行几何形状处理操 作。几何形状处理操作可包含例如,顶点着色、顶点变换,光照、硬件曲面细分、壳着色、域着 色、几何形状着色等。
[0092] 输入基元可指能够由图形擅染管线的所述几何形状处理级处理的基元。在一些示 例中,输入基元可由通过图形管线50实施的图形API定义。例如,输入基元可对应于在 Microsoft DirectX 11API中的输入基元拓扑。输入基元可包含点、线、线列表、Ξ角形、Ξ 角带、斑点等。在一些示例中,所述输入基元可对应于几何学上定义待擅染的输入基元的多 个顶点。在其它示例中,所述输入基元可对应于存储在图2的存储器10中的基元数据40。
[0093] 光栅化基元可对应于能够由光栅化器级54处理的基元。在一些示例中,所述光栅 化基元可包含点、线、Ξ角形、线流、Ξ角形流等。在其它示例中,每个输入基元可对应于多 个光栅化基元。例如,斑点可曲面细分为多个光栅化基元。在一些示例中,所述光栅化基元 可对应于几何学上定义待擅染的光栅化基元的多个顶点。
[0094] 光栅化器级54经配置W接收光栅化基元,并基于所述光栅化基元生成一或多个源 图块。所述源图块中的每个可表示在多个图块位置中的相应一个处的所述基元的光栅化版 本。对于收到的所述光栅化基元中的每个而言,光栅化器级54可光栅化所述基元W生成用 于所述相应基元的一或多个源图块。
[00%]擅染目标可细分为多个图块(例如区域),其中,所述图块中的每个包含多个样本。 样本可指像素或另选地指像素的子样本。像素可指与用于光栅化图像的一组采样点中的特 定采样点相关联的数据,其中,所述组采样点具有与显示相同的分辨率。像素的子样本可指 与用于光栅化图像的一组采样点中的特定采样点相关联的数据,其中,所述组采样点具有 比所述显示的分辨率更大的分辨率。与所述样本中的每个相关联的数据可包含例如,色彩 数据(例如,红色、绿色、蓝色(RGB))、透明度数据(例如,α值)和深度数据(例如,Z值)。
[0096] 目标样本可指已被处理用于特定样本位置的一或多个源样本的复合版本。目标样 本可对应于存储在用于特定样本位置的擅染目标(例如,帖缓冲器或分格缓冲器)中的样本 数据,并且可被更新为被处理场景中的所述基元中的每个。目标样本可包含来自与不同基 元相关联的多个源样本的复合样本数据。相比而言,源样本可指与单一几何基元相关联并 且尚未与用于相同样本位置的其它源样本合成的样本数据。在一些示例中,源样本可由光 栅化器生成并在与对应目标样本合并和/或合成之前由一或多个像素处理级处理。
[0097] 类似地,目的地图块可指与擅染目标的特定区域相关联的多个目标样本。目的地 图块可为多个源图块的复合版本,所述源图块中的每个可对应于不同基元。目的地图块可 更新为被处理场景中的所述基元中的每个。源图块可指与擅染目标的特定区域相关联的多 个源样本。源图块可与单一几何基元相关联并且尚未与用于相同样本位置的其它源图块合 成。在一些示例中,源图块可由光栅化器生成并在与对应目的地图块合并和/或合成之前由 一或多个像素处理级处理。
[0098] 在所述源和目的地图块中的每个中的样本可对应于擅染目标的区域的样本。所述 擅染目标的区域的位置可被称为图块位置。与相同图块区域相关联的两个图块可被称为处 于相同位置的图块。一般而言,未被剔除的源图块可合成和/或合并为处于相同位置的目的 地图块。
[0099] 为了光栅化基元,光栅化器级54可确定擅染目标的哪些图块位置被所述基元覆 盖,并生成用于被所述基元覆盖的所述图块位置中的每个的源图块。如果基元的边缘或内 部覆盖与图块位置相关联的所述样本中的至少一个,则所述图块位置可被所述基元覆盖。 如果基元的区域包含所述样本位置,则样本可被所述基元覆盖。
[0100] 所述源图块中的每个可包含指示在多个采样点采样的基元的数据。由包含于源图 块中的所述数据指示的所述基元可为光栅化器级54光栅化W便生成所述源图块的所述基 元,并且可称为对应于所述源图块。所述基元在其被采样的采样点可对应于所述源图块的 图块位置。
[0101] 在一些示例中,对于由光栅化器级54生成的所述源图块中的每个而言,光栅化器 级54也可生成W下中的一或多个:用于所述源图块的覆盖掩模、指示所述源图块是否被完 全覆盖(即,彻底地覆盖)的信息、用于所述源图块的保守最接近Z值W及用于所述源图块的 保守最远Z值。
[0102] 用于所述源图块的所述覆盖掩模可指示所述源图块中的哪些样本被对应于所述 源图块的所述基元覆盖。例如,所述覆盖掩模可包含多个位,其中,所述位中的每个对应于 与所述覆盖掩模对应的源图块中的多个样本中的相应一个。所述位中的每个的所述值可表 示所述源图块中所述样本中的相应一个是否被对应于所述源图块的所述基元覆盖。例如, 用于所述覆盖掩模中特定位的值"Γ可表示对应于该位的所述样本被覆盖,而用于所述覆 盖掩模中所述特定位的值"0"可表示对应于该位的所述样本未被覆盖。
[0103] 指示所述源图块是否被完全覆盖的所述信息可表示在源图块中的所有样本是否 被对应于所述源图块的基元覆盖。在一些示例中,根据所有样本是否被覆盖,指示所述源图 块是否被完全覆盖的所述信息可为等于两个不同值中的一个的一或多个位。如果包含于源 图块中的所有样本被对应于所述源图块的所述基元覆盖,则所述源图块可称为被完全覆 盖。另外,如果包含于源图块中的不到全部的所述样本被对应于所述源图块的所述基元覆 盖,则所述源图块可称为不被完全覆盖。如果所述源图块中的所述样本中的至少一个被对 应于所述源图块的所述基元覆盖,但并不是所有的样本被覆盖,则所述图块可称为部分覆 盖的图块。换句话说,部分覆盖的图块可指不是被完全覆盖,但具有被对应于所述源图块的 所述基元覆盖的至少一个样本的图块。
[0104] 用于源图块的保守最接近Z值可指与用于所述源图块中的所有覆盖样本的最接近 Z值同样接近或比所述最接近Z值更接近的值。一般而言,所述源图块中所述样本中的每个 可具有相关联的Z值。用于图块中的个别样本的所述Z值可指指示在所述样本和垂直于相机 (例如检视区)的方向的平面之间的距离的值,其中,所述相机与包含所述样本的擅染图形 帖相关联。用于所述源图块的所述保守最接近Z值可为与最接近与所述擅染图形帖相关联 的相机的用于所述样本的所述Z值同样接近或比所述Z值更接近的值。在一些示例中,用于 所述源图块的所述保守最接近Z值可等于用于所述源图块的所述最接近Z值。在此情况下, 用于所述源图块的所述保守最接近Z值可被称为用于所述源图块的所述最接近Z值。
[0105] 用于源图块的保守最远z值可指与用于所述源图块中的所有覆盖样本的所述最远 Z值同样远或比所述最远Z值更远的值。在一些示例中,用于所述源图块的所述保守最远Z值 可等于用于所述源图块的所述最远Z值。在此情况下,用于所述源图块的所述保守最远Z值 可被称为用于所述源图块的所述最远Z值。
[0106] 不同图形系统可使用用于生成Z值的不同类型的坐标系。一些图形系统可生成随 着所述样本离开所述相机的距离而增大的Z值。对于此些系统而言,不论何时本发明提及最 接近Z值或保守最接近Z值,此些参考也可被分别称为最小Z值和保守最小Z值。类似地,对于 此些系统而言,不论何时本发明提及最远Z值或保守最远Z值,此些参考也可被分别称为最 大Z值和保守最大Z值。
[0107] 其它图形系统可生成随着所述样本离开所述相机的距离而减小的Z值。对于此些 系统而言,不论何时本发明提及最接近Z值或保守最接近Z值,此些参考也可被分别称为最 大Z值和保守最大Z值。类似地,对于此些系统而言,不论何时本发明提及最远Z值或保守最 远Z值,此些参考也可被分别称为最小Z值和保守最小Z值。
[010引如果本发明提及最小或最大Z值或保守最小或最大Z值,则此些Z值应理解为是指 在特定Z坐标系内的最小和最大Z值,其中,Z值随着离开所述相机的距离或增大或减小。还 应当理解,为了利用另一种Z坐标系实施本发明的技术,则提及最小和最大Z值的角色可能 需要互换。一般而言,如果最小或最大Z值在本发明中被提及但不指定所述Z坐标系是增大 还是减小的坐标系,则应理解运些Z值是指在增大的Z坐标系内的最小或最大Z值,其中,所 述Z值随着离开所述相机的距离增大而增大。
[0109] Z剔除级56从光栅化器级54接收一或多个源图块、用于所述源图块中的每个的覆 盖掩模、指示所述源图块中的每个是否被完全覆盖的信息、用于所述源图块中的每个的保 守最接近Z值和用于所述源图块中的每个的保守最远Z值,并基于所收到的信息剔除所述源 图块W生成剔除源图块。所述剔除源图块被提供给像素处理级58。
[0110] 为了生成所述剔除源图块,Z剔除级56可基于所述源图块的保守最接近Z值是否比 与所述图块位置相关联的剔除Z更远,从图形管线50选择性丢弃与图块位置相关联的样本 的源图块。所述剔除Z值可指示用于与所述图块位置对应的目的地图块的所有样本的保守 最远Z值。例如,响应于确定所述源图块的所述保守最接近Z值比与所述图块位置相关联的 所述剔除Z值更远,Z剔除级56可丢弃源图块,W及响应于确定所述源图块的所述保守最接 近Z值并不比与所述图块位置相关联的所述剔除Z值更远,不丢弃所述源图块。
[0111] 丢弃源图块可包括不将所述源图块传送到一或多个后续像素处理级58上。换句话 说,如果源图块被丢弃,则剔除级56可在所述组剔除源图块中不包含所述源图块。不丢弃所 述源图块可包括将所述源图块传送到一或多个后续像素处理级58上。换句话说,如果源图 块未被丢弃,则Z剔除级56可在所述组剔除源图块中包含所述源图块。
[0112] LRZ缓冲器60可存储一组剔除Z值。所述组剔除Z值可包含用于擅染目标中所述图 块位置中的每个的剔除Z值。所述剔除Z值中的每个可指示用于在多个目的地图块中的对应 一个中的所有样本的保守最远Z值。如果与剔除Z值相关联的所述图块位置与用于目的地图 块的所述图块位置相同,则所述目的地图块可对应于所述剔除Z值。
[0113] 在一些示例中,LRZ缓冲器60可为忍片外存储器,也就是说,位于与图形管线50在 其上形成的微忍片不同的微忍片上。例如,在图1和2所示的计算装置2中,LRZ缓冲器60可位 于存储器10中。在其它示例中,LRZ缓冲器60可为忍片上存储器,其位于和/或形成于与图形 管线50在其上形成的微忍片(例如,GPU 12在其上形成的微忍片)相同的微忍片上。LRZ缓冲 器60可包含一或多个易失性存储器或存储装置,诸如例如,随机存取存储器(RAM)、静态RAM (SRAM)、动态RAM(DRAM)等。
[0114] 应注意,虽然所述剔除Z值可指示对应目的地图块的保守最远Z值,但目的地图块 可不实际上由Z剔除级56生成。而是目的地图块改为可由图形管线50中的像素处理级58生 成,并且Z剔除级56可不必存取所述实际目的地图块。然而,Z剔除级56可保证所述剔除 Z值将至少与目的地图块中随后由像素处理级58生成的所述最远Z值一样远的方式来更新 所述剔除Z值。
[0115] Z剔除级56可基于与对应于图块位置的源图块相关联的覆盖掩模、指示所述源图 块是否被完全覆盖的信息、用于所述源图块的保守最远Z值、用于所述源图块的保守最接近 Z值W及用于所述图块位置的剔除Z值中的一或多个来
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1