倍增遮蔽透明度图形处理的制作方法

文档序号:6462846阅读:167来源:国知局
专利名称:倍增遮蔽透明度图形处理的制作方法
技术领域
本发明涉及计算机系统;更特别地,本发明涉及使用计算机系统 来绘制包括半透明面的原图(artwork)。
背景技术
随着个人计算机系统的能力和复杂性的提高,图形操作和图形数 据的复杂性同样增加。例如,三维(3-D)原图的实例可以包括多层 图形数据。这些层可以根据它们的相对深度及其透明度属性以多种复 杂方式相关联。层也可以称为面。期望的是,既正确又高效地绘制包 含这种层的原图(例如,用于在显示设备上显示)。
在绘制3-D原图时遇到的典型问题是"隐藏面"消除,这涉及找 到每个像素处的最近的面。由于在每个像素处仅使用最近着色面的颜 色来创建图像,因此隐藏面消除产生了对不透明对象的写实。
一种用于绘制隐藏面的技术涉及对构成面的三角形进行排序,使 得在对三角形进行光栅化时最后绘制最近的三角形。该几何排序技术 可以称为"对象空间排序"。不幸的是,对于包含相交面的复杂模型 来说,例如在构成面的三角形被分解为较小的片处,该技术可能是低 效的。
另 一种用于隐藏面消除的技术存储每个像素采样处的深度值(Z 值)。该技术也可以称为"基于图像的排序"。将Z值初始化为适当 远的值,继而对面进行光栅化,以便计算每个^f象素处的面Z值。如果 面Z值小于像素采样的Z值,则利用面颜色和面Z值来替换像素颜 色和像素Z值。
"Z緩冲区(Z-buffer)"技术是一种用于在现代图形硬件中绘制 不透明面的方法。Z緩冲区是屏外(off-screen)存储器的一部分,其存储每个像素的深度或从视点到每个像素的距离(也即,z值)。然 而,当使用z緩冲区技术绘制图像时,在几何体边界上可能产生走样
(aliasing)失真。现代图形硬件可以通过若干方法来解决走样问题。 一种技术涉及将图像绘制到大于最终显示图像的屏外緩冲区中,并继 而对结果进行向下过滤。另一种技术涉及当每次轻微地"抖动"相机 时,对图像进行若干次绘制并对结果图像进行平均,以减轻走样失真。 一种称为"全屏反走样,,的解决方案可以针对每个像素使用多个颜色 和Z采样(也即,亚像素)。
现代图形处理单元(GPU)典型地运行称为"像素着色器"的小 程序,以便根据紋理值来计算每个像素的面颜色和阿尔法值。执行像 素着色器的代价相对较高。在全屏反走样中使用的一种优化方案是对 于每个像素计算一次像素着色器,继而在执行Z緩冲时使用针对每个 亚像素产生的颜色和阿尔法值。继而可以根据几何学针对每个亚像素 来正确地插值出Z值,以便允许正确地绘制经过反走样的相交部分。
可以使用称为"over"的混合函数来表示3-D场景中的面。可以 通过不透明色以及至少一个透明度值来描述面中的顶点或像素。面透 明度值可以直接调节到达该面的光量,并且1减去透明度值可以在将 结果添加到像素之前调节不透明色。为了简化后续计算,可以将面颜 色定义为预乘面颜色(也即,面不透明色值)乘以1减去面透明度值。 可以通过下面的等式(1)来表示用于over算子的公式,其中颜色用 于第N个面合成之前和之后的每个像素
<formula>formula see original document page 7</formula>
一种计算从透明面的堆栈得到的最终颜色的技术是按照深度值 (z值)顺序对其进行排序,并继而从后向前的应用等式(i)。当 场景还包括不透明面时,首先使用最近的不透明面来设置像素的颜 色。丟弃最近不透明面之后的任何透明面,因为他们被不透明面所遮 挡。该技术称为"从后向前合成"。
另 一种技术是按照从前到后的顺序对面进行操作。除了像素颜色 之外,在每个像素采样处保留透明度值。该像素透明度值初始设为i。对于后续的面,使用等式(2)和(3)来修改像素采样透明度和像素 采样颜色的值
<formula>formula see original document page 8</formula>
为了避免在绘制之前对面进行排序,可以在光栅化过程中使用称
为"层剥离(layer peeling)"的技术。层剥离可以使用两个Z緩冲 区来多次绘制几何体,以计算最近面、下一个最近面,依此类推。层 剥离技术的缺点是需要第二Z緩沖区。在现代图形硬件上,可以使用 深度紋理来存储Z緩冲区的深度值(Z值)。深度紋理测试最初针对 经过Z緩冲的阴影而设计,其允许每个像素一个采样,并返回相对紋 理内容而对深度值进行测试的结果。然而,给定对深度紋理的采样约 束,层剥离目前与全屏反走样不兼容。

发明内容
公开了 一种用于绘制包括半透明面的原图的系统、方法和计算机 可读存储介质的各种实施方式。三维计算机图形原图可以包括多个 面,该面包括多个半透明面和可选的一个或多个不透明面。在绘制之 前,半透明面相对于其深度顺序而言可以是未排序的。根据一个实施 方式,可以将每个半透明面以多釆样分辨率绘制到第 一 图像緩冲区。 可以将以多采样分辨率绘制的每个半透明面乘以(例如,衰减)比绘 制的半透明面更近的一个或多个面的一个或多个透明度值。可以将每 个所绘制的且经过衰减的半透明面从多采样分辨率降低到显示分辨 率,并将其以显示分辨率添加到第二图像緩冲区。以这种方式,可以 迭代地处理原图中的半透明面,对于每个半透明面而言两次通过原图 几何体,直到第二图像緩冲区包含用于显示的最终图像数据。
根据一个实施方式,任意半透明面中的每个颜色通道(例如,像 素的红、蓝和绿值的每一个)可以具有不同的透明度值。根据一个实 施方式,将所绘制的半透明面从多采样分辨率降低到显示分辨率,这 可以包括通过对处于多采样分辨率的对应像素集合的颜色值进行平均,来生成处于显示分辨率的每个像素。可以在绘制半透明面之前来 绘制原图中的任何不透明面。


图1是示出了被配置为使用图像緩冲区以显示分辨率来绘制包括
半透明面的原图的图形处理单元(GPU)的一个实施方式的框图。
图2A是示出了被配置为使用在此描述的系统和方法的实施方式 进行绘制的原图中的半透明面的深度顺序的框图。
图2B是示出了被配置为使用在此描述的系统和方法的实施方式 进行绘制的原图中半透明面的绘画顺序的框图。
图3是示出了根据本发明的 一个实施方式的使用图像緩冲区以显 示分辨率来绘制包括半透明面的原图的方法的流程图。
图4是示出了根据本发明的 一个实施方式的使用图像緩沖区以显 示分辨率来绘制包括半透明面的原图的方法的流程图。
图5是示出了被配置为针对多个面同时使用多采样硬件来绘制包 括半透明面的原图的GPU的一个实施方式的框图。
图6是示出了根据一个实施方式的通过针对多个面同时使用多采 样硬件来绘制包括半透明面的原图的方法的流程图。
图7是示出了根据一个实施方式的通过针对多个面同时使用多采 样硬件来绘制包括半透明面的原图的方法的流程图。
图8A、图8B和图8C示出了根据一个实施方式的可用于绘制包 括半透明面的原图的多采样配置。
图9是示出了被配置为实现用于绘制包括半透明面的原图的系统 和方法的实施方式的计算机系统的构成元件的框图。
尽管本发明易受各种修改和可选形式的影响,但是在附图中以示
当理解,该附图以及对其的详细描述并非旨在将本发明限制为所公开 的特定形式,相反,本发明旨在涵盖所附权利要求书所限定的本发明 的精神和范围之内的所有修改、等同体和可替换方案。使用在此描述的系统和方法的实施方式,可以以高效且与深度顺 序无关的方式来绘制包括多个半透明面的计算机图形原图(在此称为 "原图,,)的实例。可以执行半透明面的正确绘制,而无需第二Z緩
冲区以及在两个z緩沖区之间复制值的关联开销。在一些实施方式
中,可以使用现代图形硬件的全屏反走样机制。在一些实施方式中, 在一次通过原图几何体的过程中,可以使用多采样硬件来表示相同图 像缓冲区中的多个面。
在一个实施方式中,可以使用图形处理单元(GPU)来执行原图 绘制操作的方面。图1是示出了被配置为使用图像緩冲区以显示分辨 率来绘制包括半透明面的原图的GPU 100A的一个实施方式的框图。 GPU,这里也称为图形处理器,可以包括与计算机系统相关联的专用 图形绘制设备。图9示出了与GPU结合使用的适当计算机系统1000 的示例。返回图1, GPU 100A可以包括多个专用组件,其被配置为 对绘制图形数据以产生图形输出的速度进行优化。例如,GPU 100A 可以包括用于绘制三维结构、用于将紋理应用于面等的专用组件。然 而,为了说明目的,图1的示例GPU 100A中仅示出了有限的组件选 择。期望不同于图1的示例架构的GPU架构可以适于实现在此描述 的技术。从例如NVIDIA Corporation ATI Technologies以及其他的 供应商处,可以在商业上获得适当的GPU。
GPU可以在通过标准化总线(例如,AGP或者PCI Express)与 主板相耦合的可移动图形卡中使用。GPU可以在集成图形解决方案中 使用(例如,在一些便携式计算机和低成本桌面计算机中使用)。GPU 可以包括主冲几接口,其纟皮配置为与主才几计算才几系统1000的元件(例 如,主机计算机系统1000的通信总线和/或处理器1010)进行通信。 例如,主机计算机系统1000可以将输入数据(例如,原图输入110) 和/或可执行程序代码(例如,原图绘制指令120A )提供给GPU 100。 在一些实施方式中,主枳d妄口可以允许GPU 100和主才几计算才几系统1000之间的双向数据移动。在一个实施方式中,可以将GPU 100配 置为经由主机接口来访问主机计算机系统1000的存储器1020。 GPU 100可以包括显示接口 ,其被配置为将输出数据提供给一个或多个显 示设备1052。 GPU 100可以通过从帧缓冲区中以特定速率提供图形输 出来"驱动"显示器1052。 GPU 100可以实现一个或多个应用程序员 接口 (API),其允许程序员调用GPU的功能。
在一个实施方式中,GPU 100可以包括内部存储器。GPU存储器, 在此也称为"视频存储器"或"VRAM",可以包括其他GPU组件 可访问的随机访问存储器(RAM)。如下文更详细描述的,GPU存 储器可以在各种实施方式中使用,以存储各种类型的数据和指令,例 如输入数据、输出数据、中间数据、用于执行各种任务的程序指令等。 如图1所示,GPU存储器可以包括一个或多个緩沖区,例如Z緩冲 区(也即,深度緩沖区)150、模板緩冲区160、以及诸如多采样图像 緩沖区180和总颜色緩沖区170的各种图像缓沖区。每个緩沖区可以 包括像素数据(例如,颜色值)或者像素元数据(例如,深度值)的 二维阵列。下文将对各个緩沖区在包括多个半透明面的原图的绘制中 的使用进行更为详细的描述。
GPU IOOA还可以包括各种内置功能,以辅助原图的绘制。在一 个实施方式中,GPU 100A可以包括Z-测试(也即,深度测试)功能 130,其可操作以执行Z值(也即,Z緩冲区150中的深度值)的比 较并相应地进行动作(例如,保留或丟弃像素)。在一个实施方式中, GPU 100A可以包括模板测试功能140,其可操作以执行模板值(例 如,模板緩沖区160中的模板值)比较并相应地进行动作(例如,保 留或丟弃像素)。可以通过调用GPU API中的适当功能和/或通过原 图绘制指令120A的操作来启用、禁用和/或配置Z测试130和模板测 试140。如下文更详细描述的,Z测试130和冲莫寿反测试140可以在包 括多个半透明面的原图的绘制中使用。
图2A是示出了被配置为使用在此描述的系统和方法的实施方式 进行绘制的原图中半透明面的深度顺序的框图。与完全遮挡其后面的不透明面相反,半透明面202、 204、 206、 208和210的每一个可以 部分地阻挡距离视点212更远的各个像素的颜色。这里使用的"半透 明"和"透明"是同义的。半透明面202、 204、 206、 208和210的 形状和位置可以不同于图2A中所示的例子。示例半透明面202、 204、 206 、 208和210是按照反映其与视点212的相对距离的深度顺序示出。 在图2A所示的例子中,面202是最远的面,并且面210是最近的面。 在确定帧中的给定像素的颜色时,给定的半透明面对最终颜色值的贡 献是根据给定面之前的每个面的透明度而衰减的给定面的颜色值的 函数。
在 一 个实施方式中,可以使用3 -D图形模型将面存储为几何对象, 并且可以在绘制过程中将该几何对象光栅化为像素。在一个实施方式 中,可以通过面中的像素或顶点 一 个或多个阿尔法值来指示该面的透 明度属性。可以将每个顶点或像素的阿尔法值连同 一个或多个颜色通 道(例如,代表红、绿和蓝值)存储在一个或多个阿尔法通道中。在 一个实施方式中,可以使用通用透明度模型来实现半透明面,其中, 使用混合函数(也称为合成算子)来合成前景和背景的阿尔法以及颜 色值。这里使用的术语"面"和"层"是同义的。
图2B是示出了被配置为使用在此描述的系统和方法的实施方式 进行绘制的原图中半透明面的绘画顺序的框图。在 一 个实施方式中, 可以将GPU 100A配置为按照绘画顺序(即,在GPU100A处接收的 面的顺序)对面进行绘制。在将半透明面202、 204、 206、 208和210 作为原图输入IIO提供给GPU时,可以按照与图2A中所示的深度顺 序不同的顺序来提供半透明面202、 204、 206、 208和210。图2B中 示出了示例绘画顺序。通过按照基本任意的绘画顺序来绘制包括多个 半透明面的原图,这里所描述的系统和方法可以是与顺序无关的。
半透明面202、 204、 206、 208和210中的顶点或^f象素可以具有 相关联的Z值(也即,深度值),其指示到视点212的相对深度或距 离。在一个实施方式中,称为"Z-far"和"Z-near,,的Z值可以用来 确保存储在Z緩冲区150中的深度值属于已知的有限范围。在一个实施方式中,在Z-far和Z-near牢固地限定了实际几何体时,对于Z緩 冲区值的给定精度,可以执行更准确的Z测试130。
图3和图4中所示的绘制技术可以称为倍增(multiplied)遮蔽透 明度(MOT)技术。图3和图4中所示的技术可以使用对原图中半透 明几何体的两次通过。图3是示出了根据一个实施方式使用图形緩冲 区以显示分辨率来绘制包括半透明面的原图的方法的流程图。对于原 图中多个半透明面的每一个,可以执行方框310到方框340。半透明 面可以是未排序的,并且可以按照绘画顺序进行处理。如果原图中存 在任何不透明面,则可以如参考图4所描述的对其预先处理。
如方框310中所示,可以将半透明面以多采样分辨率绘制到第一 图形緩沖区180中。可以使用GPU 100A的全屏反走样机制以高于最 终显示分辨率的分辨率来实现多采样图像緩冲区180。多采样图像緩 冲区180可以被分配为具有高于显示分辨率的分辨率(例如,两倍的 水平分辨率和两倍的垂直分辨率)。多采样图像緩冲区180可以包括 原图中每个目的地像素的固定倍数(例如,4、 8、 16等)的像素值(例 如,颜色值和阿尔法值)。该倍数可以称为多采样或亚像素。对面进 行绘制可以包括光栅化一个或多个对象和/或执行像素着色器和/或顶 点着色器以生成多采样。如方框320中所示,以多采样分辨率绘制的 半透明面可以乘以多个面中(如果存在的话)比所绘制的半透明面更 近的一个或多个面的一个或多个透明度值。换言之,通过遮蔽面(如 果存在的话)的透明度值的乘积对所绘制的半透明面中的每个像素的 面颜色进行衰减。在一个实施方式中,方框310和320中执行的操作
可以由等式(4)表示,其中,透明度值1^^用于面i之前的N个

<formula>formula see original document page 17</formula>
如方框330中所示,可以将绘制的半透明面在尺寸方面(例如, 分辨率)从多采样分辨率降低到显示分辨率。在一个实施方式中,将 所绘制的半透明面从多采样分辨率降低到显示分辨率可以包括通过 对处于多采样分辨率的对应像素(例如,多采样或亚像素)集合的颜色值进行平均来生成处于显示分辨率的每个像素。如方框340所示, 可以将绘制的半透明面以显示分辨率添加到(也即,存储到)第二图 像緩冲区170。第二图像緩冲区可以指总颜色緩冲区170。在一个实 施方式中,方框330和340中所示的操作可以基本同时地执行。如方 框350所示,该方法可以在方框310处针对按照绘画顺序的下一个半 透明面继续,直到所有半透明面都已得到处理。在处理了原图中的所 有面之后,可以使用总颜色緩冲区170来生成用于显示的最终输出。 每个最终像素值可以通过等式(5)表示
C,/ - (5)
由于乘法的交换率和加法的交换率,因此(4)中的乘法和(5) 中的加法可以按照任意顺序完成。因此,假设使用(4)来调节每个 面颜色并继而使用(5)将其合成到总颜色緩沖区中,则可以按照任 意顺序(例如,不是深度顺序)对面进行绘制。
图4是示出了根据一个实施方式的用于使用图像緩冲区以显示分 辨率来绘制包括半透明面的原图的方法的其他方面的流程图。如方框 410所示,可以清空图像緩冲区180,并且可以初始化Z緩冲区,使 所有值是Z-far。如方框415所示,可以将原图中的任何不透明面绘 制到图像緩沖区180 (例如,通过将颜色值添加到图像緩冲区180中 的适当多采样)和Z緩冲区150 (例如,针对存储在图像緩冲区180 中的对应像素而将深度值写入Z緩冲区150)。如方框420所示,图 像緩沖区180中的每个像素可以通过比该像素更近的每个透明面(如 果存在的话)的透明度进行调节。如方框425所示,可以通过对对应 的多采样进行平均来将图像緩冲区180中的每个像素添加到总颜色緩 冲区170。
在如方框415、方框420和方框425中所示,对不透明面进行处 理之后,则可以按照绘画顺序来处理半透明面。如方框430所示,可 以将循环变量N设为1。继而可以针对每个半透明面执行方框435、 方框440、方框445和方框450中所示的操作。如方框435中所示, 可以清空模板緩冲区160(例如,通过将所有值设置为0),可以将Z緩沖区150中的Z值设置为Z-near,并且可以禁用Z测试130。如方 框440中所示,可以将当前(第7V个)半透明面绘制到多采样图像緩 冲区180和Z緩冲区150。对面进行绘制可以包括光栅化一个或多 个对象和/或执行像素着色器和/或顶点着色器,以生成图像緩冲区180 中的多采样。
在一个实施方式中,可以在方框440中使用才莫板测试140来获得 给定的面。可以针对模板緩冲区160中的每个对应像素设置,l的模 板参考值。在一次通过几何体的过程中,对于所遇到的每个面,可以 增大模板緩沖区160中的适当模板值,使模板緩冲区160指示在任意 给定的像素处所描绘的面的数目。如果模板测试确定每个像素的当前 模板值等于模板参考值,则可以将Z值写入Z缓冲区。因此,在第7V 次迭代期间,仅可以将按照绘画顺序的第7V个面写入Z緩沖区。
如方框445中所示,对于比Z緩冲区150中的Z值更近的每个面, 可以将多采样颜色值乘以遮蔽面的透明度值。可以启用Z测试130, 以在方框445中所示的操作中标识更近的面。在一个实施方式中,认 为不透明对象具有的透明度为0。在一个实施方式中,每个颜色通道 (例如,像素的红、蓝和绿值中的每一个)可以具有不同的透明度值。 如方框450中所示,可以对每个像素的多采样进行平均,并将其以显 示分辨率添加到总颜色緩沖区170。
如方框455中所示,可以增大循环变量iV。如方框460所示,可 以确定在方框440中是否向图像緩沖区180中写入了零个像素。可以 寸吏用遮蔽测试来评估方框440中所示的才乘作,遮蔽测试返回在该迭代 期间所描绘像素的整数计数。如果写入了零个像素,则绘制结束,并 且使用总颜色緩冲区170来生成用于显示的最终输出。然而,如果在 方框440中写入了任何像素,则控制返回方框435,以处理按照绘画 顺序的下一个半透明面。在一个实施方式中,方框435到方框455中 所示的操作可以重复多次,重复次数可多达覆盖帧中任意给定像素的 面的最大数目。
图5是示出了被配置为针对多个面同时使用多采样硬件来绘制包括半透明面的原图的GPU 100B的一个实施方式的框图。图5中所示 的GPU100B可以与图1中所示的GPU 100A共享元件和功能。如下 面将要描述的,GPU 100B可以存储原图绘制指令120B,以用于通过 使用多采样硬件在同一多采样图像緩冲区180中表示多个面,来绘制 包括半透明面的原图。在一个实施方式中,多采样图像缓冲区180可 以在任意给定的时刻存储S个半透明面(例如,按照绘画顺序的S个 连续半透明面),其中S是每个像素的可用多采样数目(例如,在一 些现代GPU中可以达到16)。可以增加多采样图像緩冲区180的尺 寸,以便每次通过原图几何体时处理更多的面。可以使用面编号对图 像緩冲区180中的多采样进行索引。以这种方式,可以通过弃用反走 样或者减少对反走样投入的资源(例如,多釆样)来提高绘制原图的 速度。在一个实施方式中,通过使用下文图6和图7所示的技术,绘 制过程的阴影和几何开销与层剥离相比较可以削减大约572。
图6和图7中所示的绘制技术可以称为同时遮蔽透明度(SOT) 技术。图6是示出了根据一个实施方式的通过使用多采样硬件在同一 图像緩冲区中表示多个面来绘制包括半透明面的原图的方法的流程 图。可以针对原图中的半透明面的每个集合来执行方框610到方框 630。半透明面可以是未排序的,并且可以按照绘画顺序进行处理。 如果原图中存在任何不透明面,则可以如参考图7描述的方法对其预 先处理。
如方框610所示,可以将半透明面集合中的每个半透明面绘制到 包括亚像素阵列的多采样图像緩冲区180。多采样图像緩沖区180可 以包括原图中每个目的地像素的固定倍数(例如,4、 8、 16等)的亚 像素。可以将阵列中的每个亚像素索引至当前集合中半透明面中的一 个对应的半透明面。在一个实施方式中,可以为模板緩冲区160中的 对应亚像素指派与集合中不同面对应的不同模板值。因此,可以通过 模板緩冲区中对应亚像素的模板值来将亚像素阵列中的每个亚像素 索引至半透明面中的一个对应的半透明面。
在一个实施方式中,可以将像素内的亚像素位置设置在像素的中央或其他固定的相对位置。对于所有亚像素,该位置可以是相同的。
在一个实施方式中,可以^使用由GPU100B实现的图形API来指定亚 像素的位置。图像緩沖区180中的每个亚像素可以具有其自己的颜色 和阿尔法值以及Z緩冲区150中对应的Z值和模板緩冲区160中对应 的模板值。
在一个实施方式中,可将多个GPU中的每一个配置为将半透明 面的每个集合中的至少 一 个半透明面绘制到多采样图像緩冲区。在一 个实施方式中,在方框610中所示的操作之前,可以禁用GPU的反 走样特性。相反,在一个实施方式中,方框610中所示的操作和可以 与反走样特性相结合,将关于图8A、图8B和图8C对此进行更为详 细的描述。
如方框620所示,多采样图像緩沖区中的每个亚像素可以乘以遮 蔽对应半透明面中的相应亚像素的一个或多个面(如果存在的话)的 一个或多个透明度值。遮蔽面可以包括位于其他面和^L点212之间的 面。换言之,可以通过到视点更近的任何面的透明度值的乘积来衰减 所绘制的半透明面中每个像素的面颜色。在一个实施方式中,方框610 和方框620中执行的操作可以通过上面示出的等式(4)表示。
如方框630中所示,可以将多采样图像緩冲区中的每个亚像素添 加到第二图像缓沖区。第二图像緩冲区(例如,总颜色緩冲区170) 可以包括处于显示分辨率的像素阵列。在一个实施方式中,可以通过 对对应亚像素集合的颜色和透明度值进行平均,来将亚像素添加到第 二图像緩冲区,以生成第二图像緩冲区中每个像素的颜色和透明度 值。
如方框640中所示,该方法可以在方冲医610处^l十对」換照纟会画顺序 的下一个半透明面集合继续,直到所有半透明面都已处理。在处理了 原图中的所有面之后,可以使用总颜色緩冲区170来生成用于显示的 最终输出。最终像素值可以由上面示出的等式(5)表示。
图7是示出了根据一个实施方式的通过使用多采样硬件在同一图 像緩沖区中表示多个面来绘制包括半透明面的原图的方法的其他方面的流程图。如方框710所示,可以清空图像緩冲区180,并且可以 初始化Z缓冲区,使得所有值是Z-far。
在一个实施方式中,可以使用多采样通过同一空间位置处像素的 采样(也即,对齐采样)来表示多个层。在此实施方式中,可以在处 理半透明面之前,如方框715、方框718、方框720和方框725所示 方法的处理不透明几何体。在其他实施方式中,亚像素位于多个位置, 并且在每个位置处可以表示多个层值(也即,非对齐采样)。在非对 齐情况下,不透明面可以与半透明面同时处理(例如,通过将不透明 面的透明度指定为O)。因此,方框715、方框718、方框720和方框 725可以是可选的。
如方框715中所示,可以将原图中的任何不透明面绘制到单采样 图像緩冲区和Z緩沖区150。在绘制不透明几何体之后,可以将Z緩 沖区150复制到深度紋理590或与深度紋理590交#:。深度紋理590 可以匹配显示分辨率,并且可以用来在将不透明面提交给图像緩沖区 用于绘制之前剔除(cull)在该不透明面之后的半透明片段。在一个 实施方式中,可以更新GPU上的指针,乂人而写入深度紋理590而不 是Z緩冲区150。如方框720中所示,图像緩沖区180中的每个像素 可以通过比该像素更近的每个透明面(如果存在的话)的透明度进行 调节。如方框725中所示,可以将图像緩冲区180中的每个像素添加 到总颜色緩冲170。
在一个实施方式中,继而可以按照绘画顺序来处理半透明面(以 及不透明面,如果先前没有绘制的话)。如方框730所示,可以将循 环变量iV设为1 。继而可以针对每个半透明面执行方框735、方框740、 方框745和方框750中所示的操作。如方框735中所示,可以将Z緩 冲区150中的Z值i殳置为Z-near,并且可以禁用Z测试130。可以将 与多采样中每一个对应的模板緩冲区160中的模板值设置为ID+N, 其中ID是范围从1到S的多采样的索引。因此,目的地像素内的每 个多采样可以具有与按照绘画顺序的不同面对应的不同模板值。在一 个实施方式中,可以使用由GPU 100B实现的图形API来设置才莫板值。
18如方框740所示,可以将当前的S个半透明面(例如,第7V个面 到第[iV+S-l]个面)绘制到多采样图像緩冲区180和Z緩冲区150。绘 制还可以包括测试多采样模板值是否等于1(使用如上所述的模板测 试140)并继而减小模板。可以进行减小,该减小包括将结果限制到 零值,以防止值回巻至最大值(例如,255 )。绘制面可以包4舌光4册 化一个或多个对象和/或执行像素着色器和/或顶点着色器,以生成图 像緩冲区180中的多采样。
如方框745所示,对于比Z緩冲区150中的Z值更近的每个半透 明面,可以将多采样颜色值乘以遮蔽面的透明度值。可以启用Z测试 130,以在方框745中所示的才喿作中标识更近的面。在一个实施方式 中,每个颜色通道(例如,像素的红、蓝和绿值的每一个)可以具有 不同的透明度值。
如方框750所示,可以将每个像素处的多采样以显示分辨率添加 到总颜色緩冲区170。对于对齐采样的情况,可以将通过半透明几何 体的采样加到一起,并添加到总颜色緩冲区中。对于非对齐情况,可 以将采样加到一起,并继而除以每个像素的空间位置数目。
如方框755中所示,循环变量iV可以增加值S。作为备选,如果 在方框735中替换地将模板值设置为ID+iV",其中5"是每个像素的 多采样数目,则循环变量7V可以增加1。如方框760中所示,可以确 定在方框740中是否向图像緩冲区180中写入了零个像素。可以使用 遮蔽测试来评估方框740中所示的操作,该遮蔽测试返回在该迭代中 所描绘像素的整数计数。如果写入了零个像素,则绘制结束,并且使 用总颜色緩冲区170来生成用于显示的最终输出。然而,如果在方框 740中写入了任何像素,则控制返回方框735,以处理按照绘画顺序
的下一个半透明面。
在一个实施方式中,可以结合图3、图4、图6和图7所示的方 法的方面,使得将多采样用于反走样和半透明面较快处理两者。为了 实现该混合技术,可以利用专用于反走样的采样部分(如图3和图4 所示)和专用于存储来自不同面的像素的其他部分(如图6和图7所示)来配置多采样。例如,如果为多采样图像緩冲区180分配了最终 显示的16倍的分辨率,则可以通过各种方式来划分16x值,例如, 每个目的地像素2个空间采样(并且每次通过处理8个面),每个目 的地像素4个空间采样(并且每次通过处理4个面),或者每个目的 地像素8个空间采样(并且每次通过处理2个面)。
给定群集(cluster)中的多采样可以具有相同的空间位置,但是 可以利用不同的模板值进行初始化。给定每个像素的有限数目的多采 样,可以以多种方式对群集在空间上进行配置。图8A示出了根据一 个实施方式的多采样配置810的示例。多采样配置810可以在单个群 集中包括C个采样。图8B示出了根据一个实施方式的多采样配置820 的示例。多采样配置820可以在4个群集中包括C74个采样。图8C 示出了根据一个实施方式的多采样配置830的示例。多采样配置830 可以在16个群集中包括C/16个采样。
在一个实施方式中,可以针对所有像素全局地设置群集配置(例 如,每个像素的群集数目)。在一个实施方式中,可以针对每个像素 独立地设置群集配置。群集配置可以基于在降低高复杂性面集合的通 过数目与更好的空间反走样之间的期望的权衡。
在一个实施方式中,可以如下确定半透明面的最坏情况的深度复 杂性。首先,将Z緩沖区初始化为Z-far。第二,将不透明几何体绘 制到Z緩冲区。第三,可以按照对每个亚像素Z值之前的面的数目进 行计数的方式,(例如,在单次通过几何体中)将半透明几何体绘制 到模板或颜色緩冲区中。第四,可以在给定像素的多采样中找到较近 的面的数目的最大值。最后,可以使用最大深度复杂性来设置像素的 群集选择。可以选择能够在几何体的单次通过中处理所有较近的面的 群集模式,但是其对于每个像素具有最大的群集数目(例如,以最大 化反走样质量)。在一个实施方式中,具有较少群集的像素的群集空 间位置可以使用每个多采样 一 个群集的像素方案中给出的空间位置 的子集。
当与具有多个GPU (例如,G个GPU)的计算机系统结合使用时,层剥离技术仍然通常需要通过几何体的相同的通过数目(例如, M次通过),因为该技术不是顺序无关的。为了层剥离中的光栅化, 可以平铺图像以利用多个GPU。
使用图6和图7所示的SOT技术,通过将图像平铺到G个部分
中,可以在不同的GPU之间划分工作,这导致(M/s+iy2次几^r体通
过和G倍的更高效的光栅化。在一个实施方式中,随着将整个图像分 给每个GPU, SOT技术可以进行划分,但是代替方框730的是,为W 指派不同的开始值(例如,使用S*IG,其中IG是从零开始的GPU 索引),并且代替方框755的是,将iV增加5^G。该多GPUSOT技 术可以使用((M/(5^G")+i;^2)次通过几何体。例如,具有4个GPU、每 个像素16个采样的计算机系统在每个GPU上仅使用两次几何体通 过,可以绘制达到64个层。
在各种实施方式中,图3、图4、图6和图7中所示的元素可以 按照与所示顺序不同的顺序执行。在图3、图4、图6和图7中,在 元素中描述的任何操作都可以可编程地执行(也即,由计算机根据计 算机程序实现)。在图3、图4、图6和图7中,在元素中描述的任 何操作都可以自动执行(也即,无需用户干涉)。
图9是示出了被配置为实现用于绘制包括半透明面的原图的系统 和方法的实施方式的计算机系统1000的组成元件的框图。计算机系 统1000可以包括一个或多个处理器1010,其使用任何期望的架构或 芯片集实现,例如使用SPARC 架构、来自Intel Corporation或 Advanced Micro Device的x86兼容架构、或能够处理数据的其他架构 或芯片集实现。计算机系统1000上可以运行任何期望的操作系统, 例3口各种片反本的 Unix 、 Linux 、 来自 Microsoft Corporation 的 WindowsTM、来自Apple Corporation的MacOSTM或者支持硬件平台上 的软件操作的任何其他操作系统。处理器1010可以通过至少一个通 信总线耦合至其他所示组件中的一个或多个,例如存储器1020。
在一个实施方式中,GPU 100可以包括在耦合至处理器1010的 专用图形卡或其他图形组件中。此外,计算机系统iooo可以包括一个或多个显示器1052。在一个实施方式中,显示器1052可以耦合至 GPUIOO,以显示GPU 100所纟是供的数据。
可由处理器IOIO执行的用以实现在此描述的技术的方面(例如, 用于绘制包括半透明面的原图)的程序指令120可以在任意时刻部分 或完全驻留在计算机系统1000的存储器1020中。程序指令120可以 包括例如原图绘制指令120A和/或120B。如上所述,还可以将指令 120^是供给GPU 100以用于由GPU 100执行。可以使用任何适当的介 质来实现存储器1020,例如各种类型的ROM或RAM(例如,DRAM、 SDRAM、 RDRAM、 SRAM等)的任意类型或其组合。程序指令120 还可以存储在处理器1010可访问的存储设备1060上。在不同的实施 方式中,各种存储设备1060中的任意设备可以用来存储程序指令 1040,该设备包括任意期望类型的永久和/或易失性存储设备,例如单 个磁盘、磁盘阵列、光设备(例如,CD-ROM、 CD-RW驱动器、 DVD-ROM、 DVD-RW驱动器)、闪存设备、各种类型的RAM、全 息存储等。存储设备1060可以通过一个或多个存储或I/O接口耦合 至处理器1010。在一些实施方式中,可以经由包括上面描述的存储器 1020和存储设备1060的任何适当计算机可读存储介质,将程序指令 1040提供给计算机系统1000。
计算机系统1000还可以包括一个或多个附加1/0接口 ,例如用于 一个或多个用户输入设备1050的接口。此外,计算机系统1000可以 包括提供对网络的访问的一个或多个网络接口 1054。应当指出,计算 机系统1000的 一个或多个组件可以位于远程并且可以通过网络访问。 在各种实施方式中,可以使用任何期望的编程语言、脚本语言或编程 语言和/或脚本语言的结合(例如C、 C++、 C#、 Java 、 Perl等)来 实现程序指令120。对于本领域的普通技术人员来说显然的是,如显 示的省略号所示,计算^L系统1000还可以包括图9中未示出的多个 元件。
尽管上文已经相当详细地对实施方式进行了描述,但是只要完全 理解了上文的公开,则多种变形和修改对于本领域的普通技术人员而言将变得显而易见。意在将所附权利要求解释为涵盖所有这样的变形 和修改。
权利要求
1.一种用于绘制包括多个面的原图的计算机实现方法,其中,所述多个面包括多个半透明面,所述方法包括对于所述半透明面的每一个将所述半透明面以多采样分辨率绘制到第一图像缓冲区;将以所述多采样分辨率绘制的半透明面乘以比所述绘制的半透明面更近的一个或多个面的一个或多个透明度值;将所述绘制的半透明面从所述多采样分辨率降低到显示分辨率;以及将所述绘制的半透明面以所述显示分辨率添加到第二图像缓冲区。
2. 根据权利要求1所述的方法,其中,所述多个面中的至少一个 包括多个透明度值。
3. 根据权利要求2中所述的方法,其中,所述多个透明度值的第 一透明度值指示第一颜色通道的透明度值,并且其中,所述多个透明 度值的第二透明度值指示第二颜色通道的透明度值。
4. 根据权利要求1所述的方法,其中,将所述绘制的半透明面从 所述多采样分辨率降低到所述显示分辨率包括通过对处于所述多采 样分辨率的对应像素的集合的颜色值进行平均,来生成处于所述显示分辨率的每个像素。
5. 根据权利要求1所述的方法,其中,所述多个面包括一个或多 个不透明面,所述方法还包括在将所述半透明面中的第 一个半透明面绘制到所述第 一 图像緩 沖区之前,绘制所述一个或多个不透明面。
6. 根据权利要求1所述的方法,其中,在将所述半透明面中的第 一个半透明面绘制到所述第一图像緩冲区之前,所述多个半透明面相 对于深度顺序而言是未排序的。
7. 根据权利要求1所述的方法,还包括使用所述第二图像緩冲区在显示设备上生成显示。
8. —种计算机可读存储介质,包括用于绘制包含多个面的原图的 程序指令,其中,所述多个面包括多个半透明面,其中,所述程序指 令是计算机可执行的,以便针对所述半透明面的每一个实现将所述半透明面以多采样分辨率绘制到第 一 图像緩冲区; 将以所述多采样分辨率绘制的半透明面乘以比所述绘制的半透 明面更近的一个或多个面的一个或多个透明度值;将所述绘制的半透明面从所述多采样分辨率降低到显示分辨率;以及将所述绘制的半透明面以所述显示分辨率添加到第二图像緩冲区。
9. 根据权利要求8所述的计算机可读存储介质,其中,所述多个 面中的至少 一个包括多个透明度值。
10. 根据权利要求9所述的计算机可读存储介质,其中,所述多 个透明度值的第一透明度值指示第一颜色通道的透明度值,并且其 中,所述多个透明度值的第二透明度值指示第二颜色通道的透明度 值。
11. 根据权利要求8所述的计算机可读存储介质,其中,将所述 绘制的半透明面从所述多采样分辨率降低到所述显示分辨率包括通 过对处于所述多采样分辨率的对应像素的集合的颜色值进行平均,来 生成处于所述显示分辨率的每个像素。
12. 根据权利要求8所述的计算机可读存储介质,其中,所述多 个面包括一个或多个不透明面,并且其中,所述程序指令还是计算机 可执行的,以实现在将所述半透明面中的第 一 个半透明面绘制到所述第 一 图像緩 冲区之前,绘制所述一个或多个不透明面。
13. 根据权利要求8所述的计算机可读存储介质,其中,在将所 述半透明面中的第一个半透明面绘制到所述第 一 图像緩冲区之前,所 述多个半透明面相对于深度顺序而言是未排序的。
14. 根据权利要求8所述的计算机可读存储介质,其中,所述程 序指令还是计算机可执行的,以实现使用所述第二图像緩冲区在显示设备上生成显示。
15. —种系统,包括 至少一个处理器;以及与所述至少一个处理器耦合的存储器,其中,所述存储器包括第 一图像緩冲区和第二图像緩冲区,其中,所述存储器配置为存储包括 多个面的原图,其中,所述多个面包括多个半透明面,并且其中,所 述存储器配置为存储所述至少一个处理器针对所述半透明面的每一 个可执行的程序指令,用于将所述半透明面以多采样分辨率绘制到所述第 一图像緩冲区;将以所述多采样分辨率绘制的半透明面乘以比所述绘制的半透 明面更近的一个或多个面的一个或多个透明度值;将所述绘制的半透明面从所述多采样分辨率降低到显示分辨率;以及将所述绘制的半透明面以所述显示分辨率添加到第二图像緩冲区。
16. 根据权利要求15所述的系统,其中,所述多个面中的至少一 个包括多个透明度值。
17. 根据权利要求16所述的系统,其中,所述多个透明度值的第 一透明度值指示第一颜色通道的透明度值,并且其中,所述多个透明 度值的第二透明度值指示第二颜色通道的透明度值。
18. 根据权利要求15所述的系统,其中,将所述绘制的半透明面 从所述多采样分辨率降低到所述显示分辨率包括通过对处于所述多 采样分辨率的对应像素的集合的颜色值进行平均,来生成处于所述显示分辨率的每个像素。
19. 根据权利要求15所述的系统,其中,所述多个面包括一个或 多个不透明面,并且其中,所述程序指令还可由所述至少一个处理器 执行,用于在将所述半透明面中的第一个半透明面绘制到所述第 一 图像緩 冲区之前,绘制所述一个或多个不透明面。
20. 根据权利要求15所述的系统,其中,在将所述半透明面中的 第一个半透明面绘制到所述第一图像緩冲区之前,所述多个半透明面 相对于深度顺序而言是未排序的。
21. 根据权利要求15所述的系统,还包括显示设备,其中,所述显示设备配置为使用所述第二图像緩冲区 的内容来显示图像。
全文摘要
本发明涉及倍增遮蔽透明度图形处理,公开了一种用于绘制包括多个面的原图的方法、系统和计算机可读存储介质,其中,所述多个面包括多个半透明面。可以将每个半透明面以多采样分辨率绘制到第一图像缓冲区。可以将以多采样分辨率绘制的每个半透明面乘以比绘制的半透明面更近的一个或多个面的一个或多个透明度值。可以将每个所绘制的且经过衰减的半透明面从多采样分辨率降低到显示分辨率,并将其以显示分辨率添加到第二图像缓冲区。
文档编号G06T15/40GK101308581SQ20081009884
公开日2008年11月19日 申请日期2008年5月19日 优先权日2007年5月17日
发明者G·S·P·米勒, N·A·卡尔 申请人:奥多比公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1