用于改善msaa渲染效率的技术的制作方法

文档序号:8476754阅读:325来源:国知局
用于改善msaa渲染效率的技术的制作方法
【专利说明】用于改善MSAA渲染效率的技术
[0001] 背景
[0002] 为在渲染三维(3D)对象的二维(2D)图像时降低锯齿效应(aliasingeffect) (例如,沿着像素之间的边界的锯齿形线),发明了各种超采样抗锯齿(SSAA)技术,其中,首 先在采样数据内以比稍后从该采样数据创建的最终2D图像更细的分辨率创建2D图像。通 常,在SSAA中,对于最终2D图像的每个像素,选择所选数量的样本(常常是2,4,8或16), 从最终2D图像的图像平面内的那些像素中的每一个的角度,对于每一个像素取出3D对象 的该数量的样本。每一个样本都指定与该样本所属的像素相关联的颜色,使用每一个像素 的样本的各种颜色来导出被给予最终2D图像中的每一个像素的颜色。
[0003] 令人遗憾的是,SSAA要求存储器和处理器带宽,因为始终为每一个样本存储完全 分离的颜色数据值,不管是否存在其中所有样本都是相同颜色的一个或多个像素的区域。 事实上,至少就颜色数据值的存储而言,超采样中的样本基本上被视为好像每一个都是微 型像素。在必须以足以支持运动视频(例如,视频游戏中的风景和人物的图像)的高速率 实时执行2D图像的渲染的应用中,这样对待样本需要过于昂贵的处理器和存储器带宽量。
[0004] 为了获得以较细的分辨率采样的优点而没有这样的高带宽要求,构想了各种多采 样抗锯齿(MSAA)技术,其中,可以为一个像素内的每一个样本存储分离的颜色数据值,但 是,在多于一个样本具有相同颜色的情况下,也可以为多个样本只存储一种颜色数据值。事 实上,这是颜色数据的压缩的一种形式,它利用这样的情况:像素落在最终2D图像的区域 内,在该区域中,在该像素内没有颜色转变(例如,没有边缘)以致于所有其样本都是相同 颜色。在这样的情况下,为该像素的所有样本,只存储一次单一颜色值。只有在像素落在其 中在该像素内有一个或多个颜色的转变(例如,跨边缘)的区域内以致于在其样本之间至 少有两个不同的颜色的情况下,才存储该像素的样本所需的多于一个的颜色数据值。
[0005] 令人遗憾的是,不管在MSAA中这些存储的效率,但是,每当为像素的一个或多个 样本存储颜色值时都始终为透明颜色存储颜色数据值的常见的做法限制了带宽要求可以 被降低的程度。正是针对这些和其它考虑才需要此处所描述的实施例。
[0006] 附图简述
[0007] 图1示出了导出差异图的计算设备的实施例。
[0008] 图2示出了图1的实施例的部分,描绘了数据结构和图像之间的关系。
[0009] 图3示出了图1的实施例的部分。
[0010] 图4示出了处于未着色状态的图1的实施例的部分。
[0011] 图5a和5b示出了处于未着色状态以及处于完全着色状态的图1的实施例的部 分。
[0012] 图6a,6b和6c示出了处于未着色状态、处于部分着色状态、以及处于完全着色状 态的图1的实施例的部分。
[0013] 图7a,7b,7c以及7d示出了处于未着色状态、处于各种部分着色状态以及处于各 种完全着色状态的图1的实施例的部分。
[0014] 图8a以及8b示出了第一逻辑流程的实施例。
[0015] 图9示出了处理架构的实施例。
【具体实施方式】
[0016] 各实施例一般涉及用于当为样本存储基元(例如,线、多边形等等)的颜色数据值 时导致透明颜色(Clearcolor)的颜色数据值的存储被推迟或完全地避免的技术。更具体 而言,以附加地指出那些样本的颜色数据值的存储的当前状态的方式,标识其中存储了像 素样本的颜色数据值的颜色存储位置的索引值被编码并解释。可以被指出的状态包括初 始化的未着色状态,其中,还没有为特定像素的任何样本存储颜色数据值;部分着色状态, 其中,存储了少于像素的全部样本的颜色数据值,但是没有颜色数据值包括透明颜色的颜 色数据值;以及,其中存储了所有样本的颜色数据值的状态,可能包括透明颜色的颜色数据 值。
[0017] 这些索引值的这样的使用依赖于组织像素的样本的颜色数据值的存储的MSAA实 现的常见做法,以便被分配用于该像素的颜色存储位置始终按特定顺序用颜色数据值填 充。换句话说,存在其中始终存储特定像素的任何样本的第一颜色数据值的颜色存储位置, 存在其中存储下一颜色数据值的颜色存储位置,依次类推。这会导致特定的递增顺序以及 使用每一个索引值的方式,以便索引值的某些组合通常是未定义的。除标识颜色存储位置 之外,这些以别的方式未定义的索引值用于使这些索引值能指出上述状态中的一个。
[0018] 每当将为特定像素的样本中的一个或多个存储颜色数据值时,访问包括该像素的 全部样本的索引值的索引存储位置,以确定什么颜色存储位置已经用于存储颜色数据值, 以及该像素的样本的颜色数据值的存储的当前状态。此信息用于确定什么颜色存储位置是 其中要存储现在要被存储的颜色数据值的下一可用的颜色存储位置,以及现在是否应该存 储像素的透明颜色的颜色数据值。此信息还用于确定索引值的编码现在是否应该被更改为 指出其中存储了该像素的所有样本的颜色数据值(可能包括透明颜色的颜色数据值)的完 全着色状态的编码。
[0019] 在一个实施例中,例如,设备包括处理器电路和存储器、存储器可通信地耦合到处 理器电路以存储指令,在由处理器电路执行时,指令导致处理器电路:渲染来自从对象的三 维模型取出的多个样本的像素,像素对应于像素样本数据,像素样本数据包括多个颜色存 储位置,每一颜色存储位置都通过数字标识符来标识,像素样本数据还包括多个样本颜色 索引,每一样本颜色索引都对应于多个样本中的指向多个颜色存储位置中的至少一个颜色 存储位置的样本;以及,以被选择将全部样本颜色索引之中的二进制索引值的可能组合的 子集定义为无效组合的顺序,分配多个颜色存储位置中的颜色存储位置。描述并要求保护 其他实施例。
[0020] 一般参考此处所使用的符号和命名法,可以以按照在计算机或计算机网络上执行 的程序过程来呈现随后的详细描述的各部分。这些过程描述和表示法被所属领域的技术 人员用于最有效地将他们的工作实质传递给本领域技术人员。过程,这里一般是指导致所 希望的结果的自相一致的操作序列。这些操作是那些需要对物理量进行物理操纵的那些操 作。尽管不是必要的,但通常这些量采用能够被存储、传输、组合、比较以及以其它方式操纵 的电和/或磁或光信号的形式。已经证明有时,主要是由于通用的原因,将这些信号称为 位、值、元素、符号、字符、项、数字等等比较方便。然而,值得注意的是,所有那些和/或类似 的项将与适当的物理量关联,而且仅仅是应用于这些量的方便的标记。
[0021] 进一步地,这些操纵常常以诸如添加或比较(通常与由人类操作员执行的智力操 作相关联)之类的术语来引用。然而,在大多数情况下,在构成一个或多个实施例的一部分 的此处所描述的操作中的任何一种操作中,这样的人类操作员的能力不是必须的,或不是 需要的。相反,这些操作是机器操作。对于执行各实施例的操作的有用的机器包括通过根据 此处的原理编写的存储在存储器内的计算机程序有选择地激活或配置的通用数字计算机, 和/或包括专门地为所需的用途构建的设备。各实施例还涉及用于执行这些操作的设备或 系统。这些设备可以为所需的用途专门地构建或可以包括通用计算机。根据给定的描述, 会呈现这些机器中的各种机器的所需结构。
[0022] 现在将参考附图,全部附图中相似的参考编号用于表示类似的元件。在下面的描 述中,为了进行说明,阐述了很多具体细节以便提供对本公开的全面理解。然而,显而易见, 可以在没有这些具体细节的情况下实施各新颖实施方式。在其他情况下,以框图形式示出 了各个公知的结构和设备以便于描述本公开。本公开将涵盖落入权利要求的范围内的所有 修改、等效方案和替换方案。
[0023] 图1示出了计算设备1000的框图,计算设备1000可以耦合到另一计算设备300, 以给其他计算设备300提供由计算设备1000渲染的图像的图像数据。这些计算设备1000 和300中的每一个都可以是各种类型的计算设备中的任何一种,包括,但不仅限于,台式计 算机系统、数据输入终端、膝上型计算机、上网本计算机、超极本计算机、平板电脑、手持式 个人数据助理、智能电话、数码相机、安装在衣服中的穿戴计算设备、集成到交通工具(例 如,汽车、自行车、轮椅等等)中的计算设备、服务器、服务器集群、服务器场等等。
[0024] 如所描绘的,这些计算设备1000和300通过网络999交换用于传输所渲染图像的 信号。然而,这些计算设备中的一个或两个可以通过网络999彼此和/或与其他计算设备 (未示出)交换与渲染的图像完全不相关的其他数据。在各种实施例中,网络可以是可能局 限于在单一建筑物或其他相对有限区域内延伸的单一网络,可能延伸相当长的距离的经连 接网络的组合,和/或可以包括因特网。如此,网络999可以基于可以用来交换信号的各种 通信技术中的任何一种(或组合),包括,但不仅限于,使用电缆和/或光缆的有线技术,以 及使用红外线、射频或其他形式的无线传输的无线技术。
[0025] 在各实施例中,计算设备1000包括处理器电路150、存储器160、控件120、显示器 180、控制器200以及接口 190中的一个或多个。存储器160存储至少一个控制例程140以 及3D模型数据130和方向数据135中的一项或多项。控制器200包括处理器电路250、存 储器260和显示器接口 285中的一项或多项。存储器260存储至少一个控制例程240和3D 模型数据130的副本、方向数据135的副本、图像样本数据230和最终图像数据275中的一 项或多项。
[0026] 在执行控制例程140时,使处理器电路150维护和/或修改3D模型数据130。响 应于可能通过控件120 (如果存在的话),响应于它们的被操作,和/或可能通过网络999, 从另一计算设备,接收到传输修改3D模型数据130的命令的信号,处理器电路150可能被 导致修改3D模型数据130。在某些实施例中,计算设备1000可以是视频游戏系统,其中, 3D模型数据130是视频游戏中的风景和/或人物的3D表示。在某些实施例中,计算设备 1000可以是医学工作站,其中,3D模型数据130是人体的组织、结构和/或器官的3D表示。 在这样的实施例中,计算设备的操作员可以操作控件120以操纵由3D模型数据130所表示 的对象。
[0027] 不管用于维护和/或修改3D模型数据130的目的,处理器电路150进一步被控制 例程140导致将3D模型数据130的副本传输到控制器200,并用信号通知控制器200渲染 3D模型数据130表示为图像270的任何对象的2D图像。处理器电路140也可以被导致将 方向数据135传输到控制器200,方向数据135包括位置的指示,以及图像270的图像平面 相对于由3D模型数据130表示的任何对象的朝向,如此,指定将使那些对象在图像270中 可查看的视角。
[0028] 在执行控制例程240时,使处理器电路250从在方向数据135中指出的视角渲染 由3D模型数据130所表示的对象的图像270。这样做时,使处理器电路250将在3D模型 数据130中形成那些对象的基元(例如,线、三角形、多边形等等)栅格化为图像样本数据 230。图像样本数据230包括从在方向数据135中指出的图像平面视角可查看的那些对象的 基元的子集的2D图像,方向数据135由从该视角从那些基元取出的那些基元的样本构成。 图像样本数据230是随后可以作为图像270显示在显示器180上的最终图像数据275的前 身。然而,创建图像样本数据230执行的采样比由最终图像数据275所定义的图像270的 分辨率更高。
[0029] 对基元执行此采样以创建图像样本数据230,以减轻图像270中的锯齿的发生,并 使用由处理器电路250执行的多采样抗锯齿。如此,图像样本数据230包括样本数据,其中 样本按最终将在最终图像数据275中被渲染以定义图像270的像素分组,可能具有每像素 的所选的样本比率。为了将指出样本的颜色的颜色数据值存储在存储器260的存储器组件 中的效率起见,只要可能,就利用单个颜色数据值指定每一个像素中的多个样本的颜色。
[0030] 图2描绘了图像270的样本和像素之间的此关系的一个可能的示例。具体而言,描 绘了图像270的单个像素271 (不按比例),在像素271内描绘了四个样本272a-d的位置。 应该指出的是,每个像素使用较少的或较多数量的样本的其他实施例也是可以的。还应注 意,尽管是在基本上与像素271的区域的矩形形状对齐的矩形布局中描绘四个样本272a-d 的,但是,其他实施例也是可以的,其中,样本272a-d可以被随机定位在像素271的矩形区 域内,在相对于像素211的矩形形状旋转的矩形布局内,或在精通采样的技术人员所熟知 的各种其他布局中的任何一个布局内。
[0031] 也如图2中所描绘的,对应于图像270的一个所描绘的像素271是图像样本数据 230内的像素样本数据231和最终图像数据275内的像素颜色数据276。需要明确的是,图 像样本数据230内的像素样本数据231的实例,以及最终图像数据275内的像素颜色数据 276的实例,与图像270内的像素271的实例一样多。图2旨在描绘以下方式:单个像素271 与图像样本数据230以及最终图像数据275内的对应于它的数据相关联。
[0032] 如在图2中进一步描绘的,像素样本数据231包括四个样本颜色索引232a-d。样 本颜色索引232a-d分别对应于样本272a-d。像素样本数据231还包括四个颜色存储位置 236w-z。虽然四个颜色存储位置(例如,颜色存储位置236w,236x,236y和236z)的量对 应于像素271的样本272a-d的量,如将更详细地说明的,在颜色存储位置236w-z和样本 272a-d的个体之间不一定有对应关系。
[0033] 在某些实施例中,以定义存储器260内的存储位置的不同区域或"块"的方式,可 以在存储器260包括的存储器设备之中组织图像样本数据230,其中在只由样本颜色索引 构成的可以称为存储器"平面"的位置中,对应于全部像素的全部样本颜色索引与对应于 全部那些像素的全部颜色存储位置分开地存储。进一步,也可以在存储器260内为所有像 素的颜色存储位置236w、为所有像素的颜色存储位置236x、为所有像素的颜色存储位置 236y、以及为所有像素的颜色存储位置236z定义单独的存储器板。然而,应该指出的是,其 他实施例也是可以的,其中,定义存储器260内的存储位置的较小块的量,每一块都对应于 图像270的一个像素,其中,每一个像素的全部样本颜色索引以及颜色存储位置分开地放 置。
[0034] 由于样本272a_d是从由3D模型数据130所表示的从图像270的像素271的视角 可查看的对象的基元取出的,因此,它们的颜色(在不久将更详细地说明的过程中)存储在 颜色存储位置236W-Z中的一个或多个中。在图像270的所有像素的采样完成之后,对存储 在颜色存储位置236w-z内的颜色执行各种数学或其他函数中的任何一种(例如,平均、加 权平均、随机选择,等等),以导出被给予像素271的最终颜色,指定该最终颜色的单个颜色 数据值存储在最终图像数据275中的像素颜色数据276中。
[0035] 返回到图1,在如此导出图像270的所有像素的颜色的情况下,图像270的渲染完 成。在某些实施例中,处理器电路250可以操作显示接口 285,以导致图像270在视觉上显 示在显示器180上。在其他实施例中,处理器电路250可以用信号通知处理器150,说明图 像270的渲染完成,并可以向处理器电路150提供定义图像270的最终图像数据275,以允 许处理器电路本身在显示器180上在视觉上呈现图像270,和/或通过网络999,将最终图 像数据275传输到其他计算设备300,可能供显示在其显示器380上。
[0036] 应该指出的是,虽然图1描绘了包括分开地执行它们的相应的任务的两个处理器 电路(例如,处理器电路150和250)的计算设备1000的实现,但是,其中单一处理器电路 执行所有这些上述的任务的计算设备1000的其他实施例也是可以的。然而,可以预想,控 制器200包括图形系统,其中,处理器电路250可以在某种程度上被专门化和/或优化以执 行与渲染、视频解压缩、图像重新缩放等等相关的任务,而处理器电路150充当执行由操作 系统、一个或多个设备驱动程序和/或一个或多个应用程序的指令指示的预期的更广泛各 种指令和任务的比较通用的处理电路。
[0037] 在各实施例中,处理器电路150和250中的每一个都可以包括各种市场 上可买到的处理器中的任一种,包括但不仅限于,AMD? Athlon?、Duron? 或Opteron?处理器;ARM?应用程序、嵌入式和安全处理器;IBM?和/或 Motorola? DragonBall?或powerpc.?处理器;IBM和 / 或Sony?Cell处理器;或 Intel? Celeron?、C'〇re(2)Duo?、C'()re⑵QuEid?、Corei3?、C'(>r。i5?、Corei7?、 Atom?、Itanium
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1