专利名称:一种图形渲染流水线中光栅化阶段反走样的改进方法
技术领域:
本发明涉及电视节目制作领域中的字幕处理领域,尤其涉及一种图形渲染流水线中光栅化阶段反走样的改进方法。
背景技术:
字幕系统在视频制作领域有广泛的应用,也是应用视频技术的重要组成部分,而电视字幕作为一种必备的电视节目要素,是一种重要的电视图文的展现形式。从广义的角度来说,电视字幕所处理的字幕对象渲染的最终目的是根据图形化的矢量信息和图像纹理,采用数字图像处理的相关算法,得到由32位RGBA表示的像素组成的一帧图像。为了获得稳定清晰的图像,通常需要对字幕对象进行反走样处理。反走样技术、主要是用于消除点阵构成的显示设备整数坐标上的图像连续性被破坏,图形显示不圆滑出现锯齿状的情况。现有技术中图形渲染主要是基于图形处理软件GPU实现的,GPU的工作是以流水线形式进行的,一个流水线是一系列可以并行和按照固定顺序进行的阶段,每个阶段都从前一个阶段接收输入,然后把输出发送到后续阶段。一般三维应用程序传给GPU的是顶点、颜色、第二颜色(反射)、纹理、纹理坐标、法向量、灯光、图元装配信息等数据,均匀反走样处理方法可以直接应用在在图形渲染流水线的光栅化阶段,但通常是对需要处理的整个区域内所有采样点的颜色进行计算,然后对全部采样点颜色取平均得到像素反走样的颜色值,从而得到稳定清晰的图像。发明人在实施本发明的过程中,发现现有技术存在以下技术问题(I)渲染速度慢,特别是有多层纹理的时候;(2)渲染过程复杂,需要对所有采样点进行计算;
发明内容
为了解决上述现有技术的缺点,本发明的主要目的是提供一种图形渲染流水线中光栅化阶段反走样的改进方法,以提高在有纹理情况下的计算效率,并且对物体的边缘和相交边界有很好的处理效果。为了达到上述目的,本发明提供了一种图形渲染流水线中光栅化阶段反走样的改进方法,具体包括在光栅化阶段之前,根据反走样级别,准备放大的颜色缓冲区和深度缓冲区并初始化;对构成物体的三角片依次进行光栅化处理;对所有三角片都处理完之后,将颜色缓冲区缩小到原始大小,得到反走样的渲染结果。本发明的实施方式通过在反走样处理之前先准备反走样所需的颜色缓冲区然后对三角片进行光栅化处理并且在光栅化处理完成之后对颜色缓冲区缩小到原始大小的反走样改进方法可以提高在有纹理情况下的计算效率,更好的实现三维渲染引擎的反走样效果O
为了更清楚的说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见的,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本发明实施例的一种图形渲染流水线中光栅化阶段反走样的改进方法的流程图;图2为本发明实施例的一种图形渲染流水线中光栅化阶段8X反走样的改进方法的步骤图;、图3为本发明实施例8X反走样以2*4的小区域为单位的扫描线示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然所描述的实施例仅是本发明的一部分实施例,不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明的反走样的改进方法是应用在图形渲染流水线的光栅化阶段,是可以不依赖GPU,独立能实现的渲染引擎。另外,因为光栅化阶段采用扫描线算法,所以要实现光栅化阶段的反走样,X,Y方向采样点采用规则的m*n的方式。目前根据需要采样点方式包括2X(1*2),4X(2*2),8X(2*4),16X(4*4),32X(4*8)等采样方式。如以 8X 为例,即 X 方向采用两个采样点,Y方向采用4个采样点。本发明实施例一方面提供了一种图形渲染流水线中光栅化阶段反走样的改进方法,实施流程如图I所示,具体为步骤SI :准备反走样需要的颜色缓冲区和深度缓冲区并初始化。获取当前三角片三个顶点的数据,屏幕空间中的位置vPos,深度值fDepth,顶点光照颜色vColor,每层纹理的Uv坐标vUV[8](最多八层纹理)。要实现反走样,将顶点位置vPos的X、Y分量分别乘以X,Y方向的反走样倍数m, η或者叫做采样方式,记为m*n。步骤S2 :计算三角片的包围盒,并且此包围盒的X方向边界是m的整数倍,Y方向边界是η的整数倍。步骤S3 :计算包围盒区域内的扫描线的起点终点位置和起点终点的深度值,上述起点终点位置和起点终点的深度值是通过三角片三个顶点的位置和深度值插值得到的。步骤S4 :以m*n的小区域为单位,对在三角片内部且深度值大于深度缓冲区中的深度值的像素的X,I方向的权重值(区域内的相对位置)分别相加记为fSumX,fSumY,并将总的个数iCount加1,并标记这个像素为TRUE。其中fSumX,fSumY, iCount初始值都记为O。如果iCount为O则继续重复步骤S4,否则进行步骤S5。步骤S5 :根据步骤S4中得到的权重值将fSumX, fSumY除以总数iCount得到x, y方向的值,并计算相对于采样点小区域内的一个位置,此位置作为需要计算颜色的位置。步骤S6 :根据三角片顶点位置与上述计算的颜色的位置得到当前顶点的光照颜色和纹理坐标值后计算当前位置的颜 色。步骤S7 :将计算得到的当前位置的颜色赋给S4中位于三角片内且深度值大于深度缓冲区中的深度值的像素。步骤S8 :按照上述方法对所有三角片都处理完之后,将颜色缓冲区缩小到原始大小,得到反走样的渲染结果。本发明的实施方式通过在反走样处理之前先准备反走样所需的颜色缓冲区,计算采样点区域范围内的一个指定位置的颜色然后将此颜色值赋予区域范围内的子像素,然后对三角片进行光栅化处理并且在光栅化处理完成之后对颜色缓冲区缩小到原始大小的反走样改进方法可以提高在有纹理情况下的计算效率,更好的实现三维渲染引擎的反走样效果O以下以采样点为8X为例并结合图2对本发明实施例一的图形渲染流水线中光栅化阶段反走样的改进方法进行更加详细的阐述,具体为步骤SI JfvPos的X,Y方向分别乘以反走样倍数即X方向乘以2,Y方向乘以4使颜色缓冲区和深度缓冲区存储的信息量是不用反走样时候的8倍。在光栅化阶段之前,准备反走样需要的颜色缓冲区和深度缓冲区并初始化。步骤S2 :计算三角片的最小包围盒,X方向边界是2的倍数,Y方向是4的倍数。步骤S3 :根据8X采样点计算包围盒区域内的扫描线的起点终点位置和起点终点的深度值,并且是通过三个顶点的位置和深度值插值得到的。步骤S4 :记fSumX, fSumY为O, iCount = O ;本实施例的8X反走样以2*4的小区域为单位,通过3个扫描线的位置和深度值,具体可参见图3所示。判断这个区域内每个像素是否在三角片内,并且计算每个像素的深度值,进行深度检测(也就是与深度缓冲区中的深度值做比较,如大于这个值,表示离观察者近,未被遮挡)。如是,用将该像素的深度值替换深度缓冲区中的相应位置的深度值,并将此像素的X,Y方向的权重(相对于整个2*4区域的)加入fSumX, fSumY,并且iCount加I,并标记这个像素bFlag为TRUE。步骤S5 :如果iCount = O,继续计算下一个2*4小区域;否则进行步骤S6。步骤S6 :将fSumX,fSumY除以iCount,得到X,Y方向的值,并且是相对于小区域的位置值,根据小区域的位置,计算这个位置的绝对值,记为vTempPos。步骤S7 :计算当前位置的颜色。根据三角片三个顶点的位置及vTempPos的值,确定三角片三个顶点的权重,用三个顶点的颜色和纹理坐标值乘以相应顶点的权重并相加,得到当前位置vTempPos处的光照颜色和纹理坐标值(如有纹理)。光照颜色与纹理颜色进行混合,第一层纹理与光照颜色混合计算得到颜色值color,如果有第二层纹理,则与前面的颜色值color再做混合计算,依此类推,直到得到最终的颜色值。步骤S8 :将步骤7计算得到的颜色赋给2*4格内并且在三角片内部并且通过深度测试的子像素即步骤S4中标记为TRUE的像素进行颜色缓冲区的填充。步骤S9 :所有三角片都处理完之后,对颜色缓冲区缩小到原始大小即8个采样点颜色合成一个颜色,得到反走样的渲染效果。本发明的实施方式通过在反走样处理之前先准备反走样所需的颜色缓冲区,计算采样点区域范围内的一个指定位置的颜色然后将此颜色值赋予区域范围内的子像素,然后对三角片进行光栅化处理并且在光栅化处理完成之后对颜色缓冲区缩小到原始大小的反走样改进方法可以提高在有纹理情况下的计算效率,并且对物体的边缘和相交边界有很好的处理效果,更好的实现三维渲染引擎的反走样效果。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是⑶-R0M,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。以上所述,仅为本发明的一个最佳具体实施例,但本发明的特征并不局限于此,任何熟悉该项技术的人在本发明领域内,可轻易想到的变化或修饰,都应涵盖在以下本发明的申请专利范围中。权利要求
1.一种图形渲染流水线中光栅化阶段反走样的改进方法,其特征在于,包括 在光栅化阶段之前,根据反走样级别,准备放大的颜色缓冲区和深度缓冲区并初始化; 对构成物体的三角片依次进行光栅化处理; 对所有三角片都处理完之后,将颜色缓冲区缩小到原始大小,得到反走样的渲染结果。
2.如权利要求I所述的图形渲染流水线中光栅化阶段反走样的改进方法,其特征在于,所述准备放大的颜色缓冲区和深度缓冲区具体为 将平面空间中的位置的X,Y分量分别乘以X,Y方向的反走样倍数得到反走样需要的颜色缓冲区和深度缓冲区。
3.如权利要求I所述的图形渲染流水线中光栅化阶段反走样的改进方法,其特征在于,在准备反走样需要的颜色缓冲区和深度缓冲区并初始化之前还包括获取当前三角片三个顶点的数据、屏幕空间中的位置、深度值、顶点光照颜色及每层纹理的坐标。
4.如权利要求I所述的图形渲染流水线中光栅化阶段反走样的改进方法,其特征在于,所述对构成物体的三角片依次进行光栅化处理的具体方法包括 计算三角片的包围盒; 计算包围盒区域内的扫描线的起点终点位置和起点终点的深度值; 对在三角片内部且深度值大于深度缓冲区的深度值的像素进行X,y方向权重值计算并进行像素标记; 获取需要计算颜色的位置; 计算当前位置的颜色; 将所述计算得到当前位置的颜色赋给标记的像素。
5.如权利要求4所述的图形渲染流水线中光栅化阶段反走样的改进方法,其特征在于,所述计算物体的包围盒是三角片x,y方向的边界分别是x,y方向采样数m,n的整数倍。
6.如权利要求4所述的图形渲染流水线中光栅化阶段反走样的改进方法,其特征在于,所述计算包围盒区域内的扫描线的起点终点位置和起点终点的深度值是通过三角片三个顶点的位置和深度值插值得到的。
7.如权利要求4所述的图形渲染流水线中光栅化阶段反走样的改进方法,其特征在于,所述对在三角片内部且深度值大于深度缓冲区的深度值的像素进行X,y方向权重值计算之前还需要判断以采样方式m*n小区域单位内的每个像素是否在三角片内部。
8.如权利要求7所述的图形渲染流水线中光栅化阶段反走样的改进方法,其特征在于,所述判断m*n小区域单位内的每个像素是否在三角片内部是通过扫描线的位置和深度值进行判断的。
9.如权利要求8所述的图形渲染流水线中光栅化阶段反走样的改进方法,其特征在于,所述判断m*n小区域单位内的每个像素是否在三角片内部后还需要对深度值进行深度检测,所述对深度值进行深度检测具体为计算m*n小区域单位内且在三角片内部的每个像素的深度值,与深度缓冲区中的深度值做比较,如果大于这个值则将该像素的深度值替换深度缓冲区中的相应位置的深度值。
10.如权利要求4所述的图形渲染流水线中光栅化阶段反走样的改进方法,其特征在于,所述获取需要计算颜色的位置具体方法为在三角片内部且深度值大于深度缓冲区的深度值的像素的X,y方向权重值相加后的值除以总数,得到X,Y方向的值,并且是相对于m*n小区域的位置值,根据小区域的位置,计算这个位置的绝对值。
11.如权利要求4所述的图形渲染流水线中光栅化阶段反走样的改进方法,其特征在于,所述计算当前位置的颜色是根据三角片顶点位置与所述计算的颜色的位置得到当前位置的光照颜色和纹理坐标值后,并将光照颜色和纹理颜色混合得到的。
12.如权利要求11所述的图形渲染流水线中光栅化阶段反走样的改进方法,其特征在于,所述光照颜色和纹理颜色混合得到当前位置的颜色具体为第一层纹理与光照颜色混合计算得到颜色值,如果有第二层纹理,则与前面的颜色值再做混合计算,依此类推,直到得到最终的颜色值。
13.如权利要求I所述的图形渲染流水线中光栅化阶段反走样的改进方法,其特征在于,所述将颜色缓冲区缩小到原始大小具体为将m*n个采样点颜色混合成一个颜色。
全文摘要
本发明公开了一种图形渲染流水线中光栅化阶段反走样的改进方法,包括在光栅化阶段之前,根据反走样级别,准备放大的颜色缓冲区和深度缓冲区并初始化;对构成物体的三角片依次进行光栅化处理;对所有三角片都处理完之后,将颜色缓冲区缩小到原始大小,得到反走样的渲染结果。通过本发明的实施方式,能有效提高在有纹理情况下的计算效率。
文档编号H04N5/278GK102722902SQ201110116359
公开日2012年10月10日 申请日期2011年5月6日 优先权日2011年5月6日
发明者张君琦, 蔡欢, 郑培枫 申请人:新奥特(北京)视频技术有限公司