首页> 中国专利> 用于去耦合采样的基于分类的块延迟着色体系结构

用于去耦合采样的基于分类的块延迟着色体系结构

摘要

图形流水线将去耦合采样的益处与经延迟的着色相结合。在光栅化阶段,为每个样本计算着色点。在光栅化结束之后,着色点被分类以提取一致性和经着色的着色点组。除了其它独特的益处,这允许使用着色的高效重新使用的高采样率。

著录项

  • 公开/公告号CN104025181A

    专利类型发明专利

  • 公开/公告日2014-09-03

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN201180076182.5

  • 申请日2011-12-30

  • 分类号G09G5/00;

  • 代理机构上海专利商标事务所有限公司;

  • 代理人毛力

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 02:14:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-12-09

    未缴年费专利权终止 IPC(主分类):G09G 5/00 专利号:ZL2011800761825 申请日:20111230 授权公告日:20160323

    专利权的终止

  • 2016-03-23

    授权

    授权

  • 2014-10-08

    实质审查的生效 IPC(主分类):G09G5/00 申请日:20111230

    实质审查的生效

  • 2014-09-03

    公开

    公开

说明书

背景技术

本申请一般地涉及图形处理。

期望运动模糊和场景深度的随机呈现以增加真实性并改善图像质量。然 而,需要高可见度采样率来将随机采样所导致的噪声减少到可接受的程度。对 于高质量的空间图形保真而言也需要高采样率,这在提高实时图形的可视保真 度中是重要因素。

随着高可见度采样率,像素着色可能成为主要瓶颈。为保持着色成本低, 将着色从可见度去耦合并在多个可见度样本上重新使用着色是重要的,这可空 间地延伸在图像上。将着色的完成延迟到流水线中尽可能的迟以便避免对将最 终被遮挡的样本进行着色也是重要的。通常在游戏中使用的经延迟的着色,在 这种意义上讲是优选的,因为仅仅最终可见的样本被着色。然而,已知的去耦 合机制中没有特别设计来与已延迟着色一起操作,这使得着色器重新使用困 难。此外,在传统已延迟着色中,去往G缓冲器的带宽可能是高的。

附图简述

参照以下附图描述一些实施例。

图1是一个实施例的体系结构概览;

图2是示出一个块中的原语的呈现的一个实施例的流程图;以及

图3是一个实施例的示意性描绘。

详细描述

我们解决在实时图形流水线中高效去耦合和重新使用着色的问题。我们的 目的是支持高可见度采样率和随机效果,而仅仅对最小的一组可见样本进行着 色。为此目的,我们将着色延迟直到光栅化之后,并将所生成的可见样本分类 来提取一致性。为使之高效,我们的体系结构在块上操作以将所有数据保持在 碎片上,并且每个可见度样本仅持有对一个着色点的紧致参考。

在一些实施例中,样本后可见度的显式分类具有一些独特益处。首先,不 需要着色器缓冲机制,减少了硬件复杂性。其次,已延迟的着色仍将以三角形 次序进行,它允许随后的三角形属性的着色,并使得传统的逐三角形内插设置 成为可能。它也允许呈现期间的状态改变,使得应用对于已延迟的着色的使用 不可知,从而避免对单个大型着色器的需要。缺点在于分类所需的片上存储器 和带宽,但这些成本是恒定的且独立于场景复杂性,因此很适合硬件实现。

我们提出了新颖的块的(中间分类)硬件体系结构,它将去耦合采样与延 迟着色的益处进行组合。我们的体系结构是针对具有高可见度速率以及跨图 像、镜头和时间随机分布的样本的高效经延迟着色,同时最小化片外的带宽使 用来设计的。对于每个块,向前的传递随每个可见度样本存储一个着色点,而 不是完全的G-缓冲器条目。该着色点包括原语标识符和着色坐标。在一些实 现中,着色坐标以莫顿(Morton)序来编码。在解析传递中,块中的各着色点 的片上基数分类产生要被着色的各组着色点的一致性列表。在一些实施例中, 这些组是四边形的使得导数可通过有限差异来逼近。在一些其它实施例中,组 是各单个着色点,使得各着色点单独被着色。四边形将被用作非限制性示例。 使用现有机制将这些分派到着色器核心,例如,在一些图形处理器中使用的重 新排序缓冲器。仅有的改变是在四边形退役之前,结果可被散出到样本阵列, 而不是仅仅一个像素。

在向前传递中,着色坐标可使用同一个映射策略来计算,如现有着色器基 于高速缓存的方案,例如〔Ragan-Kelley等,图形流水线的去耦合采样,图形 上的ACM事务处理,2011,30(3)册〕。对我们的算法的输入是密集的可见度 样本集,从中我们找到着色点的代表集。这允许跨多个样本重新使用着色,即 使这些样本是空间扩展出去的。输入样本的生成与我们的工作不相关,但是我 们从包括高效随机光栅化器的未来图形硬件流水线的视角来看它。

时空封闭挑选对于降低光栅化成本和相关联的深度缓冲器带宽而言是重 要的。然而,它不降低着色器执行的数量。我们的体系结构与封闭挑选的使用 无关,因为挑选在光栅化之前发生,且真实的系统将可能整合流水线中的时空 封闭的变体。

在解析传递中,所有的着色点被分类,例如使用基数分类。基数分类是用 于快速分类密钥值对的直接方法,很适合硬件实现。该算法查看固定尺寸的数 字,并执行通过数据的预定数量的传递。也可使用其它分类算法。

因为没有使用着色器缓冲机制,所有的数据可被轻易地流化而无延迟和复 杂的同步。分类步骤确保四边形以与普通静态呈现相同的顺序被着色,它确保 了好的纹理缓冲位置。此外,因为三角形按次序着色,顶点属性着色和标准逐 三角形内插设置可以按经延迟传递来完成,为此重新使用现有硬件。这是与基 于着色器缓冲的经延迟着色方案的关键不同。这也意味着状态改变是可能的, 例如,切换像素着色器中间流、避免对单个大型着色器的需要,并使得经延迟 着色对于用户非常透明。所呈现的体系结构对于非随机呈现而言也是有用的, 因为它本质上提供具有经延迟着色的益处的硬件支持的多样本防混淆(MSAA)。

在图1中,我们正随机呈现从左到右移动的三角形。方块“S”代表一个 块,我们已经向其装箱了两个三角形(框10)。这些三角形被光栅化(框12) 以产生在块内部的可见度样本。每个可见度样本被映射到它命中的原语上的着 色点。着色点包括着色位置的三角形标识符和坐标,该坐标可以是莫顿序坐标 (标注了着色点的盒内的数字)。莫顿序坐标使用交叉的x和y位。一个三角 形标识符由从左上到右下的着色线来指示,另一个由从左下到右上的着色线来 指示。

通过深度测试(框14)的样本的着色点被写到输出缓冲器。在经延迟的着 色传递中,所有的着色点被分类(框16),如右边所示。每个着色点存储要向 其写入其结果的块中的子像素位置(x,y)。该列表继续被浏览,且将分配用 于像素着色(框18)的四边形着色成它们被发现的那样。着色四边形将以与普 通向前的呈现相同次序显示。因此,每次遇到新的三角形时,可使用现有硬件 执行顶点属性着色和三角形设置。当四边形完成时,它的经着色的结果被分散 到与它的着色点相关联的子像素位置的列表。

图2示出了描绘在处理块时执行的操作的流程图。每个块代表屏幕空间区 域并持有要被呈现到该区域的原语的列表。这些块通过将全部的原语装箱到它 们覆盖的块来生成。一般而言,如果没有使用装箱,块可指整个屏幕空间区域。

算法的第一部分(框20、14、24和26)在块中执行全部原语的光栅化, 将着色点写出到本地存储器。在第二阶段,全部的着色点被分类并随后被着色。

相比于传统的向前的光栅化流水线,操作的次序被改变使得全部光栅化12 在着色18之前执行。在光栅化器12中,执行内部测试(框20)以计算每个原 语的可见度样本。使用任意映射函数来为每个可见度样本计算着色点(框24)。 着色点最终被写到缓冲器(框26)。当在菱形28处找不到更多样本且在菱形 30处找不到原语时,光栅化结束。

在光栅化完成后,这些着色点被分类(框16)。通过浏览列表找到的四边 形(框34)随后被着色(框36)。像素着色的结果被分散到与每个四边形相 关联的子像素位置的列表(框38),而不是写到传统流水线中的单个像素(或 具有MSAA的多样本的一致性阵列)中。深度测试14可在计算着色点之前(未 示出)或之后执行,但它总是在像素着色之前执行。这总是期望的,以避免不 必要的工作,它防止着色器计算定制深度。通过在光栅化循环中调用深度计算 着色器,非常像向前呈现流水线上经延迟的呈现实现中的着色器计算G缓冲器 条目,该限制可被克服。当在菱形40处确定没有更多的着色点遗留时,流程 结束。

为了将带下带宽保持在最小,在一些实施例中,我们的算法跨屏幕上的多 个块本地地操作。否则,可见度样本的分类可能需要到全局存储器的几个往返 行程。

所使用的特定的装箱策略对于我们其余算法而言是互不相关的。我们建议 首先仅仅将绘制调用的划界框装箱。对于每个块,我们随后有全部潜在的重叠 几何形状的列表,且我们可以计算存储装箱后的三角形所需的存储器占用的上 界。具有高的深度复杂性的块也可被推测地细分。各三角形接着被装箱到屏幕 空间块。这需要顶点着色器的定位部分被执行,以便计算移动/失去聚焦的三 角形的划界框。我们不需要计算或存储其余的顶点属性。这些以后如果需要可 以计算。

块的大小被适当地选择;较大块需要更多存储器和带宽,而较小块增加箱 的伸展,即,每个三角形覆盖的块数量。在64×32像素块,失去聚焦且运动模 糊的箱伸展常常在逼真场景上被限制到2-3。由于顶点着色和相关联的带宽被 假定为在5D随机光栅化器中总成本的相对小的部分,这不应是限制因素。在 64×32像素,每个块持有32k可见度样本,每个像素16个样本。该数字将用作 非限制性示例。

对于每个块,我们随机地光栅化全部被装箱的三角形。可使用任何随机光 栅化算法,诸如高效分层遍历。该光栅化器对块的小的本地片上深度和输出缓 冲器不利。这些被假设为4字节/每个样本,对于具有64×32像素块的总的32k· 8B=256kB,。

对于通过深度测试的每个所生成的可见度样本,评估映射函数来计算对应 的着色点。通常的映射可被表达为3×3矩阵变换,紧接着归一化。映射函数可 以,例如,将样本的(x,y,u,v,t)参数映射到u=v=t=0处的静态三角形(着色应当 在此计算)上的屏幕空间像素坐标(x,y)。许多可见度样本通常映射到同一着色 坐标。

我们紧致地编码着色点并将其存储到输出缓冲器。编码的简单示例可以是 三角形标识符(例如,21位)和相对于块的着色位置的屏幕空间像素坐标(例 如,x和y的6+5位)的组合。着色位置按莫顿序(x和y位交叉)存储以最 大化着色一致性。实践中,我们可能想要增加着色点精度以例如,允许被着色 值之间的受限双线性内插。在不合理状态中,当块持有比ID范围可编码的更 多三角形时,光栅化和着色阶段可重复。这导致可被应用避免的性能影响。

在光栅化块中的全部三角形之后,我们有块输出缓冲器,其中每个样本持 有着色位置的一个三角形标识符和坐标(我们统称着色点)。这个缓冲器被传 递到着色阶段。深度缓冲器没有被保留,除非需要用于其它目的。

着色阶段由随后对块中的所有着色点进行分类而开始。可通过使用片上基 数分类或其它分类算法来完成。分类密钥是着色点(例如32位)且值为块(例 如,64×32块15位,16样本/像素)内的样本的子像素位置。尽管分类样本 听起来昂贵,以下的估计示出了片上带宽应当是可管理的。基数分类可被构建 为小的固定函数,直到针对指定的片上缓冲器操作。

在分类之后,我们具有着色点列表,希望地具有许多副本。该列表随后被 浏览,并且无论何时没有包括在当前的四边形中的着色点被找到,新的四边形 开始且前面的准备分派给像素着色。这非常类似于当前的光栅化器的操作,除 了浏览变换被后续浏览代替以寻找着色四边形。不需要复杂的缓冲或参考计 数。我们有希望重新使用持有运行的四边形的现有硬件缓冲器。

注意到,使用所提议的三角形标识符和莫顿序着色坐标的编码,着色四边 形将以与传统向前光栅化器相同的次序生成。因此,来自一个三角形的所有的 四边形将在来自下一个的四边形之前被生成。我们可以至少以两种方式使用这 个。首先,顶点属性着色可被延迟。无论何时遇到新三角形,我们向现有硬件 顶点缓冲器请求其顶点。缓冲器未命中导致顶点着色被执行,就像在普通流水 线中一样。因此,我们不需要在最初的装箱过程中计算顶点属性或将其存储, 仅仅定位。因此,顶点属性着色仅仅针对在最后的图像中可见的三角形完成, 这相比于现有方式增加了益处。第二,传统三角形内插设置可当在着色点列表 中遇到新的三角形时执行。因此,像素着色器就像在常规向前的流水线中一样 操作,使用在三角形设置中预先计算了的梯度来内插属性。

当四边形完成着色时,结果被写到分配给相同四边形的所有的子像素位 置。取决于分类,这些位置被当做子像素坐标的线性阵列而发现,即,每个着 色点像持有作为其独特的子像素位置的值。子像素位置可属于不同像素。这不 同与常规流水线,其中每个结果仅写到一个像素(或单个相似内的多个样本的 组)。由于每个子像素坐标恰好发生一次,硬件不需要担心冲突的写。这意味 着不需要记分或其它同步机制来命令写,这可以简化硬件设计。然而,由于写 可能是在块内被空间地分散的,包括写聚合单元可能是有用的,写聚合单元在 块解决之前针对本地缓冲器操作,并在全部着色完成之后写出到主存储器。

基数分类执行固定数量的传递通过数据,例如对11位数字和32位密钥我 们将进行三次传递。每个传递将读取元素两次并写一次(即,首先构建直方图, 然后将元素重新排序)。以此设置,用于分类块的片上带宽是960kB读和576kB 写,在两个本地192kB缓冲器之间来回。对于具有更少三角形的块,我们可以 将传递的数量减少到一或二,分别节约2/3或1/3的带宽。总之,为了60Hz 的1920x1080像素呈现,我们将需要高达每秒56千兆字节(GB/s)的读+34GB/s 的写速度。给定小尺寸的缓冲器和流读/写是可行的。作为比较,L1/L2/L3缓 冲器通常已经具有数百或数千GB/s带宽,且它们允许更多的不连贯存取。

我们已经设计了我们的体系结构来确定如何可将去耦合的采样与经延迟 的着色的益处进行组合,以及是否可能避免潜在的复杂着色缓冲机制。一些实 施例的动机来自最小化片下存储器带宽,其在功耗方面非常昂贵。其次,我们 想要尽可能地重新使用现存的固定功能单元。通过在较小的块上工作,一些实 施例实现了这些目的,并延迟(顶点和像素两者)着色直到流水线中最后。三 角形遍历被顺序浏览着色点的经分类列表代替。

在一些方面,我们的体系结构简化了流水线。例如,在光栅化期间,我们 不需要担心像素着色执行,使得流水线化的实现更容易。此外,我们不必同步 到子像素位置的写。当然,所增加的硬件成本是,首先是随机光栅化器的增加, 以及固定功能的分类单元和相关联的缓冲器的引入。我们的体系结构的限制与 现有基于块的延迟着色方案(例如,PowerVR和一些游戏引擎)所面临的问题 较大地相同。即,输出混合和透明更难支持,且当太多几何形状覆盖单个块时 有性能悬崖。

如图3所示的计算机系统130可包括通过总线104耦合至芯片组核逻辑110 的硬驱动器134和可移除介质136。键盘和鼠标120或其它常规部件可经由总 线108耦合至芯片组核逻辑。在一个实施例中,核心逻辑可以通过总线105耦 合到图形处理器112,以及耦合到主处理器或主机处理器100。图形处理器112 还可通过总线106耦合到帧缓冲器114。帧缓冲器114可通过总线107耦合至 显示屏118。在一个实施例中,图形处理器112可以是利用单指令多数据(SIMD) 体系结构的多线程、多核并行处理器。

在软件实现的情况下,相关的代码可以存储在任何合适的半导体、磁性或 光存储器中,包括主存储器132或图形处理器内的任何可用存储器。因此,在 一个实施例中,用于执行图1和2的序列的代码可被存储在诸如存储器132或 图形处理器112之类的非瞬态机器或计算机可读介质中,且在一个实施例中, 代码可由处理器100或图形处理器112执行。

图2是一流程图。在一些实施例中,该流程图中描述的序列可以硬件、软 件和/或固件来实现。在软件实施例中,诸如半导体存储器、磁存储器或光存 储器之类的非瞬态计算机可读介质可用于存储指令,且可由处理器执行以实现 图2中所示的序列。

本文中所描述的图形处理技术可在各种硬件架构中实现。例如,图形功能 可被集成在芯片集中。替代地,可使用分立的图形处理器。作为又一实施例, 图形功能可由包括多核处理器的通用处理器实现。在本说明书通篇中对“一个实 施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包 括在本发明包含的至少一个实现中。因此,短语“一个实施例”或在“一实施 例中”的出现不一定指代同一实施例。此外,特定特征、结构或特性可按照与 所说明的特定实施例不同的其他适当形式来创立,而且所有此类形式可涵盖在 本申请的权利要求中。

虽然已经针对有限个实施例描述了本发明,但本领域技术人员将会理解从 中得出的多种修改和变化。所附权利要求旨在覆盖落入本发明的真实精神和范 围中的所有这些修改和变化。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号