图像渲染方法和系统的制作方法

文档序号:6517804阅读:143来源:国知局
图像渲染方法和系统的制作方法
【专利摘要】本发明公开了一种图像渲染方法,该方法包括将当前图像帧与先前图像帧进行比较,以检测图像帧中的对象的动态变化,每个图像帧由场景图限定,且每个对象具有相关联的几何边界体。该方法包括,如果检测到对象中的动态变化,那么针对每个动态变化了的对象,利用指配给当前图像帧的模板值将对象的几何边界体渲染至模板缓存。随后应用模板测试以确定帧中具有非零模板值的区域。该方法还包括将与已经重绘了的先前图像帧中的区域和需要覆盖绘制的当前图像帧中的区域相关的颜色缓存清空,利用模板测试来将图像帧渲染至颜色缓存,使得只重绘具有非零模板值的区域;以及从模板缓存中去除先前图像帧的模板值。
【专利说明】图像渲染方法和系统
【技术领域】
[0001]本发明涉及一种图像渲染方法和系统,具体地说,本发明涉及一种用于只处理与先前图像帧相比改变了的图像帧的那些片段的方法和系统。
【背景技术】
[0002]图形图像的处理和渲染是现代计算机系统的重要特征。在图像处理中,在显示器上执行数学过程以渲染或绘制例如三角形或矩形的图元从而产生所需的视觉图像。实时图形处理是基于图元的高速处理从而产生视觉上令人满意的移动图像。
[0003]为提高图像质量,引进例如模板阴影体(stenciled shadow volumes)的阴影生成技术以在渲染的图像上增加逼真的阴影。模板阴影体技术有赖于模板缓存(stencilbuffer)的使用,这将在下面更详细地描述。
[0004]通常,图形是由图形设计师采用作为标准化软件接口的应用程序接口(API)来渲染能够在多个平台、操作系统和硬件上运行的所需图像而设计的。API的例子包括开放图形库(Open GL(R))和D3D (TM)。这使得图形设计师能够设计图形而无需知道有关系统硬件的特征或他们的命令是如何执行的任何细节。应用程序接口(API)已得到广泛应用且比较强大,并且是用于实现例如本发明的那些技术特征的有利工具。
[0005]当渲染图形图像时,给该图像的每个像素赋予一组存储在缓存器中并用于“显示”该像素的值。例如,每个像素可具有存储在颜色缓存中的颜色值和存储在深度(Z)缓存中的深度值。
[0006]除颜色缓存和深度缓存外,每个像素在模板缓存中也具有条目(entry)。模板缓存是由可控制像素的更新的模板寄存器组成的存储器。在最简单的情况下,模板缓存用于限制渲染(印刻)的区域。具体而言,模板缓存允许或禁止基于逐个像素地绘制正渲染的目标表面。在其最基本级别上,它允许应用遮盖已渲染的图像的部分以使它们不被显示。
[0007]模板缓存的典型用途包括定义用于遮盖像素更新、构造实体几何图形以及添加阴影的区域。例如,如果“背景”部分要通过窗口显示,那么可以给要显示的背景的模板寄存器赋予值,同时其他区域的模板寄存器可清空。随后,模板寄存器的值可与阈值进行比较,并可用于遮盖不显示的区域(或者露出要显示的区域)。模板缓存的更多有利之处是充分利用了深度缓存和模板缓存在渲染管线中的强连接。例如,针对未通过或通过模板测试的每个像素,模板值可自动增大或自动减小。与模板缓存有关的是模板测试,其基于特定位置处的模板缓存中的值与参考值之间比较的结果来有条件地舍弃片段。
[0008]如前所述,模板缓存也可用于增加阴影。阴影可通过产生更自然的图像来增强图像。由于图像阴影对应于真实世界的阴影,因此图像阴影表示由遮光表面产生的阴影效果。由于给定的图像可能既具有多个光源也具有多个遮光表面,因此每个像素的阴影值取决于由所有光源和所有遮光表面产生的阴影。可利用一种或多种在模板缓存中存储有值的阴影算法来产生带有令人信服的阴影的图像。大多数阴影算法“关掉”光源、确定每个像素的基本阴影值、然后选择性地打开单个光源、确定由各光源产生的阴影值、然后混合结果以得到针对各像素的复合阴影值。例如,在OpenGL ES2.0标准下的嵌入式图形硬件上,阴影处理部分通常是最缓慢的元件,即便在简单的片段着色器情况下也是如此。
[0009]因此,为了渲染图像,需要处理图像的所有片段(或像素)。然而,到目前为止,在图像帧中只有一部分片段发生变化并需要即时可视反馈的连续图像帧(例如汽车组合仪表的数字速度计渲染)中,图像帧中的所有片段均需要处理。
[0010]为清楚起见,以上观点已用简化了的方式进行描述。通常利用图形设计软件包执行以上观点的实施。这种软件包使得平面设计师能够规定许多编辑属性和格式化属性,包括阴影算法和模板缓存的其他方面的使用。
[0011]当使用模板缓存时,比如当执行阴影算法时,通常需要先清空模板寄存器。例如,当要确定光源对每个像素的模板值的影响时,通常需要对模板缓存进行多次清空,例如针对每个光源实施一次清空。清空意味着将被清空的模板寄存器的值设置为一些预定值,通常但不总是为OOhex (十六进制)。虽然清空模板寄存器并不特别困难,只是通过将预定值写入每个模板寄存器即可,但是如果存在成千上万的模板寄存器,那么将该预定值写入每个模板寄存器是相当慢的过程。例如在阴影渲染的时候,多次这样做将极其耗费时间。另夕卜,随着三维应用目前采用渲染算法如针对单个帧中多个光源的模板阴影体渲染、最新的“软”模板阴影体技术以及基于模板的构造实体几何技术,仅模板的帧缓存清空也越来越常见。在这些算法中,针对每个深度缓存清空有多个模板缓存清空。
[0012]鉴于上述内容,有利的是提供一种闻速有效地清空|旲板寄存器的方法。同样有利的是,提供用于使平面设计师能够控制模板寄存器的清空的方法,从而使得模板寄存器的使用不会受到负面影响。同样有利的是,提供一种用于有效地清空模板寄存器的高速系统和方法,使得利用模板缓存的数字算法不会受到负面影响。
[0013]因此,本发明的目的是针对连续图像帧减少GPU片段处理,其中,每个图像帧由场景图限定,每个图像巾贞中的每个对象具有相关联的几何边界体(geometric boundingvolumes)ο具体而言,在与先前图像帧比较后,在图像帧中只有相对少数的部分或对象变化的实时应用中,如果只是那些少数部分被重新渲染,那么性能就会增强。
[0014]场景图是图形编辑应用和现代计算机游戏的常用的通用数据结构。场景图是排列图形图像的逻辑表示以及经常是(但不一定必须是)空间表示的结构。场景图是图形或树状结构中的节点的集合。一个节点可具有多个子节点但经常是只有一个母节点,其中,母节点对其所有子节点具有影响。在群组上执行的操作自动地将其影响传播至所有的成员上。在一些程序中,处理这种操作的有效且自然的方式是以每个群组级别来关联几何变换矩阵并将这些矩阵集中起来。共同的特征例如是能够将相关的形状/对象组合成复合对象,其中,该复合对象随后可像针对单个对象一样容易地被移动、转换、选择等。

【发明内容】

[0015]根据本发明的第一方面,提供了一种图像渲染方法,该方法包括:
[0016]将当前图像帧与先前图像帧进行比较,以检测图像帧中对象的动态变化,其中每个图像帧由场景图限定,且每个对象具有相关联的几何边界体;
[0017]如果检测到对象中的动态变化,那么针对每个动态变化了的对象,利用指配给当前图像帧的模板值来将对象的几何边界体渲染至模板缓存;[0018]应用模板测试以确定帧中具有非零模板值的区域;
[0019]将与已经重绘了的先前图像帧中的区域和需要覆盖绘制(overdraw)的当前图像帧中的区域相关的颜色缓存清空。
[0020]利用模板测试来将图像帧渲染至颜色缓存,使得只重绘帧中具有非零模板值的区域;以及
[0021]从模板缓存中去除先前图像帧的模板值。
[0022]在一个实施例中,场景图中的每个对象具有相关联的变换矩阵,检测对象中的动态变化的步骤包括检测对象的变换矩阵是否变化。
[0023]在一个实施例中,在单缓存渲染的情况下,从模板缓存中去除先前图像帧的模板值的步骤包括去除前一图像帧的模板值的步骤。
[0024]在该实施例中,将模板缓存中每个偶数图像帧的模板值指配为1,并将每个奇数图像帧的模板值指配为2。
[0025]具体说,从模板缓存中去除先前图像帧的模板值的步骤包括将模板缓存中偶数图像帧的值2替换为0,并将模板缓存中奇数图像帧的值I替换为O。
[0026]在备选实施例中,在双缓存渲染的情况下,从模板缓存中去除先前图像帧的模板值的步骤包括去除被之前的两个帧渲染了的帧的模板值的步骤。
[0027]在该实施例中,该方法包括将第一帧的模板值指配为1,将第二帧的模板值指配为2,将第三帧的模板值指配为3,然后对随后的帧重复以上操作。
[0028]具体说,该方法包括提供两个颜色缓存,即前颜色缓存和背颜色缓存,其中前颜色缓存朝向用户,而背颜色缓存用于渲染背景中的图像。
[0029]在一个实施例中,该方法包括一旦在背颜色缓存中完成渲染就交换颜色缓存,使得背颜色缓存变成前颜色缓存而前颜色缓存变成背颜色缓存,从而允许在背颜色缓存中进行下一个图像帧的渲染。
[0030]在实施例中,对象是不透明的或是透明的。
[0031]根据本发明的第二方面,提供了一种包括处理器的图像渲染系统,以进行以下操作:
[0032]将当前图像帧与先前图像帧进行比较,以检测图像帧中对象的动态变化,其中每个图像帧由场景图定义,且每个对象具有相关联的几何边界体;
[0033]如果检测到对象中的动态变化,那么针对每个动态变化了的对象,利用指配给当前图像帧的模板值来将对象的几何边界体渲染至模板缓存;
[0034]应用模板测试以确定帧中具有非零模板值的区域;
[0035]将与已经重绘了的先前图像帧中的区域和需要覆盖绘制(overdraw)的当前图像帧中的区域相关的颜色缓存清空。
[0036]利用模板测试来将图像帧渲染至颜色缓存,使得只重绘帧中具有非零模板值的区域;以及
[0037]从模板缓存中去除先前图像帧的模板值。
[0038]在一个实施例中,场景图中的每个对象具有相关联的变换矩阵,处理器通过检测对象的变换矩阵是否变化来检测对象中的动态变化。
[0039]在一个实施例中,在单缓存渲染的情况下,处理器通过去除前一图像帧的模板值来从模板缓存中去除先前图像帧的模板值。
[0040]在该实施例中,将模板缓存中每个偶数图像帧的模板值指配为1,并将每个奇数图像帧的模板值指配为2。
[0041]具体说,处理器通过将模板缓存中偶数图像帧的值2替换为O、并将模板缓存中奇数图像帧的值I替换为O而从模板缓存中去除先前图像帧的模板值。
[0042]在备选实施例中,在双缓存渲染的情况下,处理器通过去除被之前的两个帧渲染了的帧的模板值而从模板缓存中去除先前图像帧的模板值。
[0043]在该实施例中,处理器指配第一帧的模板值为1,指配第二帧的模板值为2,指配第三帧的模板值为3,然后对随后的帧重复以上操作。
[0044]具体说,提供两个颜色缓存,即前颜色缓存和背颜色缓存,其中前颜色缓存朝向用户,而背颜色缓存用于渲染背景中的图像。
[0045]在一个实施例中,一旦在背颜色缓存中完成渲染,处理器就交换颜色缓存,使得背颜色缓存变成前颜色缓存而前颜色缓存变成背颜色缓存,从而允许在背颜色缓存中进行下一个图像帧的渲染。
[0046]在一个实施例中,对象是不透明的或是透明的。
[0047]根据本发明的第三方面,提供了一种图像渲染系统,该系统包括:
[0048]中央处理单元,其运行存储在存储器中的应用程序;
[0049]图形处理单元,其具有主机接口以接收原始图形数据和中央处理单元的程序指令:
[0050]帧缓存器,其包括:深度缓存,其用于存储帧中每个像素的深度信息;颜色缓存,其用于存储每个像素的颜色信息;以及模板缓存,其具有针对每个像素的模板寄存器,帧缓存器通过帧缓存器接口与图形处理单元交换数据。
[0051]中央处理单元设置为用以:
[0052]将当前图像帧与先前图像帧进行比较,以检测图像帧中对象的动态变化,其中每个图像帧由场景图限定,且每个对象具有相关联的几何边界体;
[0053]如果检测到对象中的动态变化,那么针对每个动态变化了的对象,利用指配给当前图像帧的模板值来将对象的几何边界体渲染至模板缓存;
[0054]应用模板测试以确定帧中具有非零模板值的区域;
[0055]将与已经重绘了的先前图像帧中的区域和需要覆盖绘制的当前图像帧中的区域相关的颜色缓存清空。
[0056]利用模板测试来将图像帧渲染至颜色缓存,使得只重绘帧中具有非零模板值的区域;以及
[0057]从模板缓存中去除先前图像帧的模板值。
[0058]在一个实施例中,场景图中的每个对象具有相关联的变换矩阵,中央处理单元通过检测对象的变换矩阵是否变化来检测对象中的动态变化。
[0059]在一个实施例中,在单缓存渲染的情况下,中央处理单元通过去除前一图像帧的模板值来从模板缓存中去除先前图像帧的模板值。
[0060]在该实施例中,将模板缓存中每个偶数图像帧的模板值指配为1,并将每个奇数图像帧的模板值指配为2。[0061]具体说,中央处理单元通过将模板缓存中每个偶数图像帧的值2替换为O、将模板缓存中每个奇数图像帧的值I替换为O而从模板缓存中去除先前图像帧的模板值。
[0062]在备选实施例中,在双缓存渲染的情况下,中央处理单元通过去除被之前的两个帧渲染了的帧的模板值而从模板缓存中去除先前图像帧的模板值。
[0063]在该实施例中,中央处理单元指配第一帧的模板值为1,指配第二帧的模板值为2,指配第三帧的模板值为3,然后对随后的帧重复以上操作。
[0064]具体说,提供两个缓存,即前颜色缓存和背颜色缓存,其中前颜色缓存朝向用户,而背颜色缓存用于渲染背景中的图像。
[0065]在一个实施例中,一旦在背颜色缓存中完成渲染,处理器就交换颜色缓存,使得背颜色缓存变成前颜色缓存而前颜色缓存变成背颜色缓存,从而允许在背颜色缓存中进行下一图像帧的渲染。
[0066]在一个实施例中,对象是不透明的或是透明的。
[0067]根据本发明的第四方面,提供了一种其上存储了一系列使处理器渲染图像的计算机可读指令的非暂时性计算机可读介质,该指令包括以下计算机实现的步骤:
[0068]将当前图像帧与先前图像帧进行比较,以检测图像帧中对象的动态变化,其中每个图像帧由场景图限定,且每个对象具有相关联的几何边界体;
[0069]如果检测到对象中的动态变化,那么针对每个动态变化了的对象,利用指配给当前图像帧的模板值来将对象的几何边界体渲染至模板缓存;
[0070]应用模板测试以确定帧中具有非零模板值的区域;
[0071]将与已经重绘了的先前图像帧中的区域和需要覆盖绘制的当前图像帧中的区域相关的颜色缓存清空。
[0072]利用模板测试来将图像帧渲染至颜色缓存,使得只重绘帧中具有非零模板值的区域;以及
[0073]从模板缓存中去除先前图像帧的模板值。
[0074]在一个实施例中,场景图中的每个对象具有相关联的变换矩阵,计算机实现的用以检测对象的动态变化的步骤包括检测对象的变换矩阵是否变化的步骤。
[0075]在一个实施例中,在单缓存渲染的情况下,计算机实现的用于从模板缓存中去除先前图像帧的模板值的步骤包括去除前一图像帧的模板值。
[0076]在该实施例中,将模板缓存中每个偶数图像帧的模板值指配为1,并将每个奇数图像帧的模板值指配为2。
[0077]具体说,计算机实现的用以从模板缓存中去除先前图像帧的模板值的步骤包括将模板缓存中每个偶数图像帧的值2替换为0,并将模板缓存中奇数图像帧的值I替换为O。
[0078]在备选实施例中,在双缓存渲染的情况下,计算机实现的用于从模板缓存中去除先前图像帧的模板值的步骤包括去除被之前的两个帧渲染了的帧的模板值的计算机实现的步骤。
[0079]在该实施例中,计算机实现的步骤进一步包括将第一帧的模板值指配为1,将第二帧的模板值指配为2,将第三帧的模板值指定为3,然后对随后的帧重复以上操作。
[0080]具体说,计算机实现的步骤进一步包括提供两个颜色缓存,即前颜色缓存和背颜色缓存,其中前颜色缓存朝向用户,且背颜色缓存用于渲染背景中的图像。[0081]在一个实施例中,计算机实现的步骤进一步包括一旦在背颜色缓存中完成渲染就交换颜色缓存,使得背颜色缓存变成前颜色缓存而前颜色缓存变成背颜色缓存,从而允许在背颜色缓存中发生下一图像帧的渲染。
【专利附图】

【附图说明】
[0082]以下通过示例并参照附图的方式描述本发明,附图中:
[0083]图1示出了包含根据本发明各个方面的原理的计算机系统。
[0084]图2示出了表示根据本发明的一个实施例的图像渲染方法的高级示意图。
[0085]图3A至图3D示出了四个连续图像帧,其用以说明本发明在使用时的实施例的图像渲染方法的示例,但具体地示出了利用两个缓存的局部渲染。
【具体实施方式】
[0086]首先参照图1,其显示了实现本发明的原理的计算机系统10的简化框图。计算机系统10包括图形处理单元12,其集成了具有主机接口 /前端14的电路。主机接口 /前端14接收原始图形数据和来自中央处理单元16的程序指令,中央处理单元16运行存储在存储器18中的应用程序。可从计算机可读介质20输入的应用程序使得计算机系统10能够实现本发明的原理。
[0087]主机接口 /前端14缓存输入信息并向几何引擎22提供原始图形信息。几何引擎22可经由帧缓存接口 26访问帧缓存器24。几何引擎22产生、缩放、转动存储在帧缓存器24中的“模型”坐标下的图元的三维顶点,并将其投影到二维帧缓存坐标中。
[0088]帧缓存器24包括:用于存储各个像素的深度信息的深度缓存28 ;用于存储各个像素的颜色信息的颜色缓存30 ;和具有针对各个像素的模板寄存器的模板缓存32。之前已经描述了模板缓存32的用途。然而,为了说明目的,将会假设存储器18中的应用程序实施只渲染变化的图像或片段的局部渲染例程。
[0089]将来自几何引擎22的图元的顶点的二维帧缓存坐标通过光栅器34。光栅器34识别图元里的所有像素的位置。这通常是通过沿定义图元的线之间延伸的光栅线(水平)而进行的。光栅器34的输出称为光栅化的像素数据。光栅化的像素数据应用于利用着色程序(指令序列)来处理输入数据(代码、位置、纹理、条件、常量等)从而产生输出数据的着色器36上。
[0090]着色器36包括将光栅化的像素数据修改为具有所需纹理和视觉特征的纹理引擎38。能访问存储在帧缓存器24中的数据的纹理引擎38可采用高速处理大量数据的硬件管线来实现。然后,着色的像素数据发送到光栅操作处理器38,光栅操作处理器38可视情况针对着色的像素数据执行包括模板处理的其他处理。最终的结果是通过帧缓存接口 26存储在帧缓存器24中的像素数据。帧像素数据可用于各种处理,例如在显示器40上显示图像。
[0091]在使用中,当开始的时候,将颜色缓存和模板缓存清空。下面参照图2,所显示的图像渲染方法100包括将当前图像帧与先前图像帧进行比较以检测图像帧中对象的动态变化的步骤,如框102所示。
[0092]众所周知,各图像帧由场景图限定,并且各对象具有相关联的几何边界体。在一个实施例中,场景图中的各个对象具有相关联的变换矩阵,检测图像帧中图像的变化的步骤102包括检测对象的变换矩阵是否变化。作为备选或者作为此处理的一部分,在通常情况下,这可包括确定先前帧之后影响对象的视觉外观(或位置或空间的方向)的任何属性值是否改变。如果是的话,对象应视为已发生变化。
[0093]如果检测到对象中的动态变化,那么针对各个动态变化的对象将对象的几何边界体渲染至模板缓存,如框104所示。这通常通过利用指配给当前图像帧的模板值来完成。
[0094]之后,应用模板测试以确定帧中具有非零模板值的区域,如框106所示。
[0095]如框108所示,将与先前图像帧中被重绘的区域和当前帧中需要覆盖绘制的区域相关的颜色缓存清空。这通过应用模板测试来完成,使得只有模板值不同于零的区域被清空。
[0096]然后,如框110所示,方法100包括利用模板测试来将图像帧渲染至颜色缓存。结果是,只重绘具有非零模板值的区域。因此,GPU将丢弃未通过模板测试的片段或对象的进
一步处理。
[0097]方法100结束于从模板缓存中去除先前图像帧的模板值,如框112所示。如下更详细解释的,在单缓存渲染的情况下(其中只有单个颜色缓存),这意味着去除先前图像帧的模板值;在双缓存(或通常情况下的N个缓存)的情况下,去除第二个前一帧(或通常情况下第N个前一帧)的模板值。
[0098]如前一段落所述,在单缓存的情况下,从模板缓存中去除先前图像帧的模板值的步骤包括去除前一图像帧的模板值。在该实施例中,将模板缓存中每个偶数图像帧的模板值指配为1,并将每个奇数图像帧的模板值指配为2。具体而言,从模板缓存中去除先前图像帧的模板值的步骤包括将模板缓存中每个偶数图像帧的值2替换为0,并将模板缓存中每个奇数图像帧的值I替换为O。通过改变每个偶数帧和奇数帧的模板值,可以在只渲染动态变化了的区域的同时从旧帧中清空结果。
[0099]参考图3A至图3D,最佳地描述了双缓存的备选实施例。双缓存在这些附图中显示为包括两个颜色缓存。但是在此应用的方法可简单地延伸到N缓存(即N个颜色缓存)。
[0100]图3A至图3D示出了四个连续帧,即图3A中的帧01、图3B中的帧02、图3C中的帧03和图3D中的帧04。具体而言,提供两个颜色缓存200、202,即前颜色缓存和背颜色缓存。前颜色缓存朝向(exposed to)用户,背颜色缓存用于渲染背景中的图像。另外,本发明的方案包括一旦在背颜色缓存中完成渲染就交换颜色缓存200、202,使得背颜色缓存变成前颜色缓存而前颜色缓存变成背颜色缓存,从而允许在背颜色缓存中进行下一图像帧的渲染。因此,在帧01 (图3A)中,“颜色缓存01”200是激活的,在帧02 (图3B)中,“颜色缓存02”202是激活的,在帧03 (图3C)中,“颜色缓存01”200是激活的,在帧04 (图3D)中,“颜色缓存02” 202是激活的。
[0101]在该实施例中,方法包括将第一帧的模板值指定为1,将第二帧的模板值指定为2,将第三帧的模板值指定为3,然后重复以上操作。
[0102]因此,在“渲染通道01”204中,对象的几何边界体渲染至模板缓存206 (如参照图2中的方法步骤104时所述)。然后,在“渲染通道02” 208中,当前图像帧的几何图像渲染至(激活的)“颜色缓存01”200。
[0103]在帧02 (图3B)中,在“渲染通道01” 204中,对象的几何边界体渲染至模板缓存206。然后,在“渲染通道02”208中,当前图像帧的几何图形渲染至(激活的)“颜色缓存02”202。
[0104]在帧03 (图3C)中,在“渲染通道01” 204中,将对象的几何边界体渲染至模板缓存206。然后,在“渲染通道02”208中,将与两个先前帧的经过渲染的几何边界体有关的颜色缓存清空(即激活的颜色缓存01)。这可通过利用模板测试来渲染黑色全屏四方体(blackfull screen quad)而完成,其中在模板测试中,如果模板缓存中的值为非零的值,则渲染几何图形。然后,在“渲染通道03”210中,利用模板测试将当前帧的几何图形渲染至激活的“颜色缓存01”,即如果模板缓存中的值是3 (在本情况下),那么渲染几何图形。最后,在“渲染通道04”212中,将两个先前帧渲染后的帧的模板值清除,这可通过利用模板测试来渲染全屏空铅而完成。
[0105]最后,如之前所述,除了模板参考值恢复为1,帧04 (图3D)基本上与帧03 (图3C)类似,并且现在“颜色缓存2”是激活的颜色缓存。
[0106]为对双缓存进行总结,如下给出了双缓存局部渲染的算法:
[0107]一利用该图像帧的模板值将当前变化的对象的模板掩模(S卩如之前所述的几何边界体)渲染至模板缓存;
[0108]一将模板缓存中具有不同于零的模板值O的颜色缓存中的片段清空;
[0109]一清除在当前图像帧之前绘制了两个帧的模板掩模(通常情况下,如果是N个缓存渲染,清除在当前图像帧之前绘制了 N个帧的模板掩模)。
[0110]为进一步解释该算法,考虑以下情况:在当前帧处,图像帧被绘到N个颜色缓存(考虑N缓存渲染的情况)中的一个特定颜色缓存。然后,交换颜色缓存。在N个帧后将场景渲染至相同的特定缓存,针对该特定缓存应当保留模板掩模,并且因为对于此特定的缓存来说,之前使用了 I个模板值,对于其它N-1个缓存使用了 N-1个模板值,因此局部渲染应当针对当前帧使用第N+1个模板值来渲染模板掩膜。对于当前帧而言,这种局部渲染方式即具有N个先前帧的移动对象的模板掩模也具有当前帧的模板掩模,因此它能够有效地清除在该特定的缓存中移动对象的先前图像,并针对当前帧渲染新图像。
[0111]本发明所提供的方案整体上增加了结合图形硬件的填充率(fill -rate boundgraphics hardware)方面的性能,尤其是与图文大小相比动态区域相对较小时,更为如此。另外,所提出的方案通过对每个动态变化了的对象将场景图渲染至模板缓存,从而减少了用于完成场景图的GPU片段处理。
[0112]可结合以下示范性的方面来说明本发明的实施例:
[0113]方面1,一种图像渲染方法,该方法包括:将当前图像帧与先前图像帧进行比较,以检测图像帧中对象的动态变化,其中每个图像帧由场景图限定,且每个对象具有相关联的几何边界体;如果检测到对象中的动态变化,那么针对每个动态变化了的对象,利用指配给当前图像帧的模板值来将对象的几何边界体渲染至模板缓存;应用模板测试以确定帧中具有非零模板值的区域;将与已经重绘了的先前图像帧中的区域和需要覆盖绘制的当前图像帧中的区域有关的颜色缓存清空。利用模板测试来将图像帧渲染至颜色缓存,使得只有那些具有非零模板值的区域被重绘;以及从模板缓存中去除先前图像帧的模板值。
[0114]方面2,方面I的图像渲染方法,其中,场景图中的每个对象具有相关联的变换矩阵,检测对象中的动态变化的步骤包括检测对象的变换矩阵是否变化。[0115]方面3,如方面1、2的图像渲染方法,其中,在单缓存渲染的情况下,从模板缓存中去除先前图像帧的模板值的步骤包括去除前一图像帧的模板值的步骤。
[0116]方面4,如方面3的图像渲染方法,其中,将模板缓存中每个偶数图像帧的模板值指配为1,并将每个奇数图像帧的模板值指配为2。
[0117]方面5,如方面4的图像渲染方法,其中,从模板缓存中去除先前图像帧的模板值的步骤包括将模板缓存中偶数图像帧的值2替换为0,并将模板缓存中奇数图像帧的值I替换为O。
[0118]方面6,如之前任一方面所述的图像渲染方法,其中,在双缓存渲染的情况下,从模板缓存中去除先前图像帧的模板值的步骤包括去除之前的两个帧渲染的帧的模板值的步骤。
[0119]方面7,如方面6的图像渲染方法,其中,所述方法包括将第一帧的模板值指配为I,将第二帧的模板值指配为2,将第三帧的模板值指配为3,然后对随后的帧重复以上操作。
[0120]方面8,如方面7的图像渲染方法,其中,所述方法包括提供两个颜色缓存,即前颜色缓存和背颜色缓存,其中前颜色缓存朝向用户,且背颜色缓存用于渲染背景中的图像。
[0121]方面9,如方面8的图像渲染方法,其中,所述方法包括一旦在背颜色缓存中完成渲染就交换颜色缓存,使得背颜色缓存变成前颜色缓存而前颜色缓存变成背颜色缓存,从而允许在背颜色缓存中进行下一个图像帧的渲染。
[0122]方面10,如之前任一方面所述的图像渲染方法,其中,对象是不透明的或是透明的。
[0123]方面11,一种包括处理器的图像渲染系统:将当前图像帧与先前图像帧进行比较,以检测图像帧中对象的动态变化,其中每个图像帧由场景图定义,且每个对象具有相关联的几何边界体;如果检测到对象中的动态变化,那么针对每个动态变化了的对象,利用指配给当前图像帧的模板值来将对象的几何边界体渲染至模板缓存;应用模板测试以确定帧中具有非零模板值的区域;将与已经重绘了的先前图像帧中的区域和需要覆盖绘制的当前图像帧中的区域相关的颜色缓存清空。利用模板测试来将图像帧渲染至颜色缓存,使得只重绘具有非零模板值的区域;以及从模板缓存中去除先前图像帧的模板值。
[0124]方面12,如方面11的图像渲染系统,其中,场景图中的每个对象具有相关联的变换矩阵,处理器通过检测对象的变换矩阵是否变化来检测对象中的动态变化。
[0125]方面13,如方面11、12的图像渲染系统,其中,在单缓存渲染的情况下,处理器通过去除前一图像帧的模板值来从模板缓存中去除先前图像帧的模板值。
[0126]方面14,如方面13的图像渲染系统,其中,将模板缓存中的每个偶数图像帧的模板值指配为1,并将每个奇数图像帧的模板值指配为2。
[0127]方面15,如方面14的图像渲染系统,其中,处理器通过将模板缓存中偶数图像帧的值2替换为0,并将模板缓存中奇数图像帧的值I替换为O而从模板缓存中去除先前图像帧的模板值。
[0128]方面16,如方面11-15中任何一个的图像渲染系统,其中,在双缓存渲染的情况下,处理器通过去除被之前的两个帧渲染了的帧的模板值而从模板缓存中去除先前图像帧的模板值。[0129]方面17,如方面14的图像渲染系统,其中,处理器指配第一帧的模板值为1,指配第二帧的模板值为2,指配第三帧的模板值为3,然后对随后的帧重复以上操作。
[0130]方面18,如方面14的图像渲染系统,其中,提供两个颜色缓存,即前颜色缓存和背颜色缓存,其中前颜色缓存朝向用户,而背颜色缓存用于渲染背景中的图像。
[0131]方面19,如方面14的图像渲染系统,其中,一旦在背颜色缓存中完成渲染,处理器就交换颜色缓存,使得背颜色缓存变成前颜色缓存而前颜色缓存变成背颜色缓存,从而允许在背颜色缓存中进行下一图像帧的渲染。
[0132]方面20,一种图像渲染系统,其包括:运行存储在存储器中的应用程序的中央处理单元;图形处理单元,具有主机接口以接收原始图形数据和中央处理单元的程序指令;以及帧缓存器,其包括:深度缓存,其用于存储帧中每个像素的深度信息的;颜色缓存,其用于存储每个像素的颜色信息;以及模板缓存,其具有针对每个像素的模板寄存器,帧缓存器通过帧缓存接口与图形处理单元交换数据。中央处理单元设置为用以:将当前图像帧与先前图像帧进行比较,以检测图像帧中的对象的动态变化,其中每个图像帧由场景图定义,且每个对象具有相关联的几何边界体;如果检测到对象中的动态变化,那么针对每个动态变化了的对象,利用指配给当前图像帧的模板值来将对象的几何边界体渲染至模板缓存;应用模板测试以确定帧中具有非零模板值的区域;将与已经重绘了的先前图像帧中的区域和需要覆盖绘制的当前图像帧中的区域相关的颜色缓存清空。利用模板测试来将图像帧渲染至颜色缓存,使得只重绘非零模板值的区域;以及从模板缓存中去除先前图像帧的模板值。
[0133]方面21,如方面20的图像渲染系统,其中,场景图中的每个对象具有相关联的变换矩阵,中央处理单元通过检测对象的变换矩阵是否变化来检测对象中的动态变化。
[0134]方面22,如方面20、21的图像渲染系统,其中,在单缓存渲染的情况下,中央处理单元通过去除前一图像帧的模板值来从模板缓存中去除先前图像帧的模板值。
[0135]方面23,如方面22的图像渲染系统,其中,将模板缓存中每个偶数图像帧的模板值指配为1,并将每个奇数图像帧的模板值指配为2。
[0136]方面24,如方面23的图像渲染系统,其中,中央处理单元通过将模板缓存中每个偶数图像帧的值2替换为O、将模板缓存中每个奇数图像帧的值I替换为O而从模板缓存中去除先前图像帧的模板值。
[0137]方面25,如方面20-24中任何一个的图像渲染系统,其中,在双缓存渲染的情况下,中央处理单元通过去除之前的两个帧渲染的帧的模板值而从模板缓存中去除先前图像帧的模板值。
[0138]方面26,如方面25的图像渲染系统,其中,中央处理单元将第一帧的模板值指配为1,将第二帧的模板值指配为2,将第三帧的模板值指配为3,然后对随后的帧重复以上操作。
[0139]方面27,如方面26的图像渲染系统,其中,提供两个缓存,即前颜色缓存和背颜色缓存,其中前颜色缓存朝向用户,且背颜色缓存用于渲染背景中的图像。
[0140]方面28,如方面27的图像渲染系统,其中,一旦在背颜色缓存中完成渲染,中央处理单元就交换颜色缓存,使得背颜色缓存变成前颜色缓存而前颜色缓存变成背颜色缓存,从而允许在背颜色缓存中进行下一个图像帧的渲染。[0141]方面29,提供了一种其上存储了一系列用于使处理器渲染图像的计算机可读指令的非暂时性计算机可读介质,该指令包括以下计算机实现的步骤:将当前图像帧与先前图像帧进行比较,以检测图像帧中的对象的动态变化,其中每个图像帧由场景图定义,且每个对象具有相关联的几何边界体;如果检测到对象中的动态变化,那么针对每个动态变化了的对象,利用指配给当前图像帧的模板值来将对象的几何边界体渲染至模板缓存;应用模板测试以确定帧中具有非零模板值的区域;将与已经重绘了的先前图像帧中的区域和需要覆盖绘制的当前图像帧中的区域有关的颜色缓存清空;利用模板测试来将图像帧渲染至颜色缓存,使得只重绘非零模板值的区域;以及从模板缓存中去除先前图像帧的模板值。
[0142]方面30,如方面29的非暂时性计算机可读介质,其中,场景图中的每个对象具有相关联的变换矩阵,检测对象中的动态变化的计算机实现的步骤包括检测对象的变换矩阵是否变化。
[0143]方面31,如方面29、30的非暂时性计算机可读介质,其中,在单缓存渲染的情况下,从模板缓存中去除先前图像帧的模板值的计算机实现的步骤包括去除前一图像帧的模板值。
[0144]方面32,如方面31的非暂时性计算机可读介质,其中,将模板缓存中每个偶数图像帧的模板值指配为1,并将每个奇数图像帧的模板值指配为2。
[0145]方面33,如方面32的非暂时性计算机可读介质,其中,从模板缓存中去除先前图像帧的模板值的计算机实现的步骤包括将模板缓存中每个偶数图像帧的值2替换为0,并将模板缓存中每个奇数图像帧的值I替换为O。
[0146]方面34,如方面29-33中任何一个的非暂时性计算机可读介质,其中,在双缓存渲染的情况下,从模板缓存中去除先前图像帧的模板值的计算机实现的步骤包括去除被之前的两个帧渲染了的帧的模板值。
[0147]方面35,如方面34的非暂时性计算机可读介质,其包括将第一帧的模板值指定为1,将第二帧的模板值指定为2,将第三帧的模板值指定为3,然后对随后的帧重复以上操作。
[0148]方面36,如方面35所述的非暂时性计算机可读介质,包括提供两个颜色缓存,即前颜色缓存和背颜色缓存,其中前颜色缓存曝光用户,而背颜色缓存用于渲染背景中的图像。
[0149]方面37,如方面36的非暂时性计算机可读介质,其包括一旦在背颜色缓存中完成渲染就交换颜色缓存,使得背颜色缓存变成前颜色缓存而前颜色缓存变成背颜色缓存,从而允许在背颜色缓存中进行下一图像帧的渲染。
[0150]应该理解的是,本发明所公开的实施例不限于这里所公开的特定结构、处理步骤或材料,而应当延伸到相关领域的普通技术人员所理解的这些特征的等同替代。还应当理解的是,在此使用的术语仅用于描述特定实施例的目的,而并不意味着限制。
[0151 ] 说明书中提到的“ 一个实施例”或“实施例”意指结合实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,说明书通篇各个地方出现的短语“一个实施例”或“实施例”并不一定均指同一个实施例。
[0152]为了方便,在此使用的多个项目、结构单元、组成单元和/或材料可出现在共同列表中。然而,这些列表应解释为该列表中的每个元素分别识别为单独唯一的成员。因此,在没有相反说明的情况下,该列表中没有一个成员可仅基于它们出现在共同列表中而被解释为相同列表的任何其它成员的实际等同物。另外,在此还可以连同针对各元件的替代一起来参照本发明的各种实施例和示例。应当理解的是,这些实施例、示例和替代并不解释为彼此的等同物,而被认为是本发明的单独自主的代表。
[0153]此外,所描述的特征、结构或特性可以任何其他合适的方式结合到一个或多个实施例中。在下面的描述中,提供一些具体的细节,例如长度、宽度、形状等,以提供对本发明的实施例的全面理解。然而,相关领域的技术人员将明白,本发明无需上述一个或多个具体的细节便可实现,或者也可采用其它方法、组件、材料等实现。在其它示例中,周知的结构、材料或操作并未详细示出或描述以免模糊本发明的各个方面。
[0154]虽然上述示例用于说明本发明在一个或多个应用中的原理,但对于本领域的技术人员来说,在不背离本发明的原理和思想的情况下,明显可以在形式上、用法及实施的细节上作各种修改而不用付出创造性劳动。因此,本发明由所附的权利要求书来限定。
【权利要求】
1.一种图像渲染方法,该方法包括: 将当前图像帧与先前图像帧进行比较,以检测图像帧中的对象的动态变化,每个图像帧由场景图限定,且每个对象具有相关联的几何边界体; 如果检测到对象中的动态变化,那么针对每个动态变化了的对象,利用指配给当前图像帧的模板值将对象的几何边界体渲染至模板缓存; 应用模板测试以确定帧中具有非零模板值的区域; 将与已经重绘了的先前图像帧中的区域和需要重新绘制的当前图像帧中的区域相关的颜色缓存清空。 利用模板测试来将图像帧渲染至颜色缓存,使得只重绘帧中具有非零模板值的区域;以及 从模板缓存中去除先前图像帧的模板值。
2.如权利要求1所述的图像渲染方法,其中,场景图中的每个对象具有相关联的变换矩阵,检测对象中的动态变化的步骤包括检测对象的变换矩阵是否变化。
3.如权利要求1所述的图像渲染方法,其中,在单缓存渲染的情况下,从模板缓存中去除先前图像帧的模板值的步骤包括去除前一图像帧的模板值的步骤。
4.如权利要 求3所述的图像渲染方法,其中,将模板缓存中每个偶数图像帧的模板值指配为1,并将每个奇数图像帧的模板值指配为2。
5.如权利要求4所述的图像渲染方法,其中,从模板缓存中去除先前图像帧的模板值的步骤包括将模板缓存中每个偶数图像帧的值2替换为O,并将模板缓存中每个奇数图像帧的值I替换为O。
6.如权利要求1所述的图像渲染方法,其中,在双缓存渲染的情况下,从模板缓存中去除先前图像帧的模板值的步骤包括去除被之前的两个帧渲染了的帧的模板值的步骤。
7.如权利要求6所述的图像渲染方法,其中,所述方法包括将第一帧的模板值指配为1,将第二帧的模板值指配为2,将第三帧的模板值指配为3,然后对随后的帧重复以上操作。
8.如权利要求7所述的图像渲染方法,其中,所述方法包括提供两个颜色缓存,即前颜色缓存和背颜色缓存,其中前颜色缓存朝向用户,而背颜色缓存用于渲染背景中的图像。
9.如权利要求8所述的图像渲染方法,其中,所述方法包括一旦在背颜色缓存中完成渲染就交换颜色缓存,使得背颜色缓存变成前颜色缓存而前颜色缓存变成背颜色缓存,从而允许在背颜色缓存中进行下一个图像帧的渲染。
10.如权利要求1所述的图像渲染方法,其中,所述对象是不透明的或是透明的。
11.一种图像渲染系统,所述系统包括: 中央处理单元,其运行存储在存储器中的应用程序; 图形处理单元,其具有主机接口以接收原始图像数据和中央处理单元的程序指令;帧缓存器,其包括:深度缓存,其用于存储帧中每个像素的深度信息;颜色缓存,其用于存储每个像素的颜色信息;以及模板缓存,其具有针对每个像素的模板寄存器,帧缓存器通过帧缓存器接口与图形处理单元交换数据, 所述中央处理单元设置为用以: 将当前图像帧与先前图像帧进行比较,以检测图像帧中对象的动态变化,其中每个图像帧由场景图限定,且每个对象具有相关联的几何边界体; 如果检测到对象中的动态变化,那么针对每个动态变化了的对象,利用指配给当前图像帧的模板值将对象的几何边界体渲染至模板缓存; 应用模板测试以确定帧中具有非零模板值的区域; 将与已经重绘了的先前图像帧中的区域和需要覆盖绘制的当前图像帧中的区域相关的颜色缓存清空。 利用模板测试来将图像帧渲染至颜色缓存,使得只重绘帧中具有非零模板值的区域;以及 从模板缓存中去除先前图像帧的模板值。
12.如权利要求11所述的图像渲染系统,其中,场景图中的每个对象具有相关联的变换矩阵,所述中央处理单元通过检测对象的变换矩阵是否变化来检测对象中的动态变化。
13.如权利要求11所述的图像渲染系统,其中,在单缓存渲染的情况下,中央处理单元通过去除前一图像帧的模板值来从模板缓存中去除先前图像帧的模板值。
14.如权利要求13所述的图像渲染系统,其中,将模板缓存中每个偶数图像帧的模板值指配为1,并将每个奇数图像帧的模板值指配为2。
15.如权利要求14所述的图像渲染系统,其中,所述中央处理单元通过将模板缓存中每个偶数图像帧的值2替换为O、将模板缓存中每个奇数图像帧的值I替换为O而从模板缓存中去除先前图像帧的模板值。
16.如权利要求11所述的图像渲染系统,其中,在双缓存器渲染的情况下,所述中央处理单元通过去除被之前的两个帧渲染了的帧的模板值移除而从模板缓存中去除先前图像帧的模板值。
17.如权利要求16所述的图像渲染系统,其中,中央处理单元指配第一帧的模板值为1,指配第二帧的模板值为2,指配第三帧的模板值为3,然后对随后的帧重复以上操作。
18.如权利要求17所述的图像渲染系统,其中,提供两个缓存,即前颜色缓存和背颜色缓存,其中前颜色缓存朝向用户,而背颜色缓存用于渲染背景中的图像。
19.如权利要求18所述的图像渲染系统,其中,一旦在背颜色缓存中完成渲染,所述中央处理单元就交换颜色缓存,使得背颜色缓存变成前颜色缓存而前颜色缓存变成背颜色缓存,从而允许在背颜色缓存中进行下一图像帧的渲染。
20.一种其上存储了一系列计算机可读指令的非暂时性计算机可读介质,该指令用于使处理器渲染图像,其包括以下计算机实现的步骤: 将当前图像帧与先前图像帧进行比较,以检测图像帧中的对象的动态变化,其中,每个图像帧由场景图限定,且每个对象具有相关联的几何边界体; 如果检测到对象中的动态变化,那么针对每个动态变化了的对象,利用指配给当前图像帧的模板值来将对象的几何边界体渲染至模板缓存; 应用模板测试以确定帧中具有非零模板值的区域; 将与已经重绘了的 先前图像帧中的区域和需要覆盖绘制的当前图像帧中的区域相关的颜色缓存清空。 利用模板测试来将图像帧渲染至颜色缓存,使得只重绘帧中具有非零模板值的区域;以及从模板缓存中去除先前图像帧的模板值。
【文档编号】G06T15/00GK103810742SQ201310538613
【公开日】2014年5月21日 申请日期:2013年11月4日 优先权日:2012年11月5日
【发明者】托马斯·沃洛蒂宁, 丹尼斯·库金金 申请人:正谓有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1