当前位置: 首页 > 专利查询>微软公司专利>正文

渲染多层图像制造技术

技术编号:7901845 阅读:183 留言:0更新日期:2012-10-23 14:03
本发明专利技术可以通过从前到后考虑多层图像中的每一层而把所述多层图像光栅化到背景上。清空背景缓冲区的α通道,从而使其充当所消耗的总不透明度的累加器。随后从前到后考虑每一个图像层。对于每一层,将该层的α数值乘以α通道的当前数值的补数,并且把乘积加到背景α通道上。随后将背景α乘以全局α数值。随后把背景颜色数值预先暗化所得到的背景α通道数值的补数。随后再次清空背景α通道,并且从前到后对各层进行光栅化并且加到预先暗化的背景上,此时已经将每层的颜色数值纳入考虑之中。

【技术实现步骤摘要】
【国外来华专利技术】渲染多层图像
技术介绍
图像常常被构造在各层中。在图像的各层当中,从前到后定义一定顺序,并且可以把每一层与特定不透明度数值相关联,该不透明度数值通常被表示在a通道中。因此,从各层建立的最终图像表示不同的各层到背景上的混合,其中给定层对其后方各层以及背景的遮挡数量由该层的不透明度决定。此外,可以定义全局a数值,该数值影响各层遮挡背景的累计数量。将各个图像层渲染到背景上的处理有时被称作光栅化。将各层光栅化到背景上的一种方式是将各层从后到前渲染到中间目标上。随后可以用所述全局a数值对所述中间目标的不透明度进行缩放,即把所述中间目标中的各个像素数值乘以所述全局a数值。随后可以把所述中间目标光栅化到背景图案或图像上。但是这种技术的效率可能较低
技术实现思路
在一个例子中,可以按照下面的方式将各个图像层光栅化到背景上。各层要被光栅化到其上的背景缓冲区具有a通道。该a通道虽然通常被用来表示背景缓冲区的不透明度,但是也可以被用于存储对于其他数值的计算。将a通道清空。随后按照从最前到最后的顺序考虑各个图像层的a数值。首先检查最前层的a数值。随后把剩余待分配给各层的不透明度的数量乘以最前层的a数值,并且把乘积加到背景缓冲区的a通道上。随后从前到后对于每一层重复该处理。也就是说,对于每一层把剩余待分配的不透明度的数量乘以该层的a数值,并且把乘积加到a通道上。这样,所述a通道就充当用于由到目前为止所考虑的所有各层所消耗的不透明度数量的累加器。等到考虑过所有各层时,所述a通道存储由各层消耗的不透明度的总数量(将通过全局a数值对其进行缩放)。随后将所消耗的不透明度的该总数量乘以所述全局a数值,并且乘积就是由各层消耗的不透明度的最终数量。随后把各层所消耗的不透明度的最终数量的补数分配给背景。因此,背景被预先暗化的数量等于各层所消耗的不透明度数量的补数。随后将各层本身光栅化到经过预先暗化的背景上。为了施行该光栅化,再一次清空背景缓冲区的a通道,从而其可以充当用于由各层所消耗的不透明度数量的累加器。随后按照从最前到最后的顺序考虑各层。对于每一层,把剩余待分配的不透明度数量(即a通道的当前数值的补数)乘以当前层的a数值。随后对于每一个像素将该乘积乘以所述像素的颜色,并且将结果加到背景中的相应像素上。随后把a通道的当前数值的补数与当前层的a数值的乘积加到a通道上。随后按照这种方式从前到后处理每一层,直到考虑过所有各层为止。在考虑过所有各层之后,就已经按照考虑到各层的单独a数值和全局不透明度的方式将各层光栅化到背景上了。随后可以显示所得到的图像。提供本概要是为了以简化形式介绍将在后面的详细描述部分中进一步描述的概念的选集。本概要不意图标识出所要求保护的主题内容的关键特征或本质特征,也不意图被用来限制所要求保护的主题内容的范围。附图说明图I是其中可以将多层图像光栅化到背景上的示例性情形的方框图。图2是其中可以将图像的一层或更多层光栅化到背景上的示例性处理的流程图。图3是用以计算由各个图像层使用的不透明度数量的示例性处理的流程图。图4是用以将各层光栅化到背景上的一种示例性方式的流程图。 的实现 的示例性组件的方框图。具体实施例方式将要渲染的图像常常被构造在各层中。定义一个背景,随后把各个图像层叠加在彼此之上,从而将最后层直接光栅化到背景上;将前面的下一层光栅化在最后层之上;依此类推,直到将最前层光栅化在所有先前各层之上为止。可以在任意层集合之间定义一定顺序,从而有可能知道哪一层是最后层,哪一层是下一层,依此类推直到最前层。在现今的渲染系统中,有可能对于每一层定义不透明度数值,其通常被表示在a通道中。所述a数值规定给定层的不透明程度。0.0的a数值表示0%不透明度(完全透明)。1.0的a数值表示100%不透明度。各层常常具有处于这两个极端数值之间的a数值。此外还可以定义全局a数值,其对所有各层的不透明度进行缩放。背景以及每一层对最终光栅化图像的贡献数量由单独各层的a数值和全局a数值决定。但是将各个a数值纳入考虑会产生一些复杂情况。举例来说,假设全局a数值为0.5,并且存在其范围从0.0到1.0的各个a数值的十层。将会出现的情况是可以把全局a数值应用于总体图像,这是通过把0.5的全局a数值乘以单独每一层的a数值而实现的。但是全局a数值不是分布在各个单独的a数值上。相反,在确定了单独各层的相对透明度之后应用全局a数值。在考虑到各个a数值的同时渲染各层的一种方式是从后到前将单独各层渲染到一个中间目标上,对所述中间目标应用全局透明度,并且随后将所述中间目标渲染到背景上。但是这种技术可能效率较低,这是因为其对于中间目标使用了额外的存储。这里所描述的主题内容提供了将各个图像层渲染到背景上的一种高效方式。在一个实例中存在背景缓冲区,其保存将各个图像层光栅化到其上的背景。所述背景缓冲区具有a通道,其可以按照下面的方式被用作各个a数值的累加器。从前到后对各层进行初始遍历,以便确定每一层对最终图像的贡献将有多少。在该初始遍历期间,背景的a通道代表由到目前为止所考虑的所有各层所消耗的不透明度数量。在其中不透明度从0.0到1.0取值的实例中,可用于分配给各层的不透明度的总数量是1.0。因此,在开始所述初始遍历时清空a通道(即设定到0.0);此时还没有考虑任何层,因此还没有可用透明度被分配给任一层。随后从前到后遍历各层。对于第一层,将可用不透明度的数量(即1.0减去a通道的数值)乘以该层的不透明度。该结果是将被该层消耗的不透明度的数量,因此结果被加到a通道上。随后从前到后对于后面的每一层重复所述处理。举例来说,假设前两层分别具有0. 3和0. 5的a数值。当考虑第一层时,a通道具有0. 0的数值,从而剩余待分配的不透明度数量是I. O。因此,将1.0的剩余不透明度乘以第一层的a数值0.3,从而等于0.3。因此,将0.3加到a通道上。当考虑第二层时,剩余待分配的a不透明度是0.7(即I.O减去0.3)。因此,将0. 7乘以第二层的a数值0. 5,从而等于0. 35。第二层将消耗0.5的剩余不透明度,从而是0. 35的不透明度总数量(这是因为第一层已经消耗了 0.3)。因此,在考虑了前两层之后,所消耗的不透明度的总数量是0.65,其在此时是a通道的数值。重复该处理,直到考虑了从前到后的所有各层为止。在考虑了所有各层之后,所消耗的不透明度的总数量可以是I. 0,或者可以小于I. O。在考虑了所有各层之后,应用全局a数值。假设在考虑了所有各层之后,背景缓冲区的a通道的数值为0.8,从而表明0.8的a通道已被单独各层消耗。进一步假设全局a数值为0. 7。在该例中,将0. 7的全局a数值乘以0. 8的a通道数值,从而得到0. 56。随后使用该数值的补数来预先暗化背景。补数的构成取决于被用来表示不透明度的计数系统。如果a数值的范围是从0. 0到I. 0,则某一数值X的补数则是从I. 0减去X。在另一个例子中,如果a数值的范围是从0%到100%,则某一数值Y的补数则是100减去Y。因此,如果在应用了全局a数值之后的a通道的数值为0. 56,则补数为0. 44,从而利用0. 44的不透明度水平预先暗化背景。为了施行该预先暗化,对于背景中的每一个像素,将该像素的颜色乘以0.44,并且把本文档来自技高网...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:SE邓
申请(专利权)人:微软公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1