用于图形渲染的反走样方法和系统的制作方法

文档序号:6636340阅读:316来源:国知局
用于图形渲染的反走样方法和系统的制作方法
【专利摘要】本发明公开了一种用于图形渲染的反走样方法和系统,包括确定屏幕内组成图形的像素的采样点,所述采样点包括像素内部采样点和外部采样点,所述内部采样点有两个;读取采样点的数据信息,所述数据信息包括颜色值、深度值和背景色信息;根据所述数据信息计算采样点的颜色值和深度值,并根据深度值将采样点的颜色值与背景进行混合,将混合后的颜色值存入缓冲器;根据深度值将存入缓冲器的像素内部采样点混合后的颜色值与外部采样点的颜色值进行混合;输出像素的最终颜色值。在本发明中,每个像素需要2个采样点,由于将两个采样点的颜色先进行一次混合,混合之后的颜色存入颜色缓冲,颜色缓冲中的颜色再与右侧和上侧的颜色混合,可以节约一半的存储空间,更适合在移动设备中使用。
【专利说明】用于图形渲染的反走样方法和系统

【技术领域】
[0001]本申请涉及图像处理,尤其涉及一种用于图形渲染的反走样方法和系统。

【背景技术】
[0002]GPU (Graphic Processing Unit),图像处理单元,是相对于CPU的一个概念,由于在现代的计算机中图形的处理变得越来越重要,需要一个专门的图形的核心处理器。GPU是显卡的“心脏”,也就相当于CPU在电脑中的作用,它决定了该显卡的档次和大部分性能。GPU使显卡减少了对CPU的依赖,并进行部分原本CPU的工作,尤其是在3D图形处理时。
[0003]GPU输出图像的基本构成单位是像素,当两个相邻像素存在巨大的颜色反差时,这两个像素中间就会出现一条非常显眼的颜色分界线。对于垂直和水平出现的像素分界来说,由于其本身的范围非常均一,因此并不会造成界面效果之外的效应,但当像素分界以斜线的形式出现时,效果就完全不一样了。斜向像素分界线,正是困扰3D图形界多年的问题——走样。锯齿状的走样极大的影响了图形效果的表达,平滑的几何模型表面在光栅化并变成像素图元之后变得不再平滑,这极大地影响了人们观赏图形时的感受。为了消除走样感给图形造成的影响,我们有了反走样以及反走样单元。
[0004]美国专利US 7495672 B2,提出一种叫做FLIP QUAD的方法,通过在一个像素取四个采样点得到反走样的效果,提供高质量的反走样方法。但是此方案中平均每个像素有2个采样点,并且每个采样点都需要存储额外的颜色信息,增加了算法的开销。


【发明内容】

[0005]本申请提供一种用于图形渲染的反走样方法和系统。
[0006]根据本申请的第一方面,本申请提供一种用于图形渲染的反走样方法,包括:
确定屏幕内组成图形的像素的采样点,所述采样点包括像素内部采样点和外部采样点,所述内部采样点有两个;
读取采样点的数据信息,所述数据信息包括颜色值、深度值和背景色信息;
根据所述数据信息计算采样点的颜色值和深度值,并根据深度值将采样点的颜色值与背景进行混合,将混合后的颜色值存入缓冲器;
根据深度值将存入缓冲器的像素内部采样点混合后的颜色值与外部采样点的颜色值进行混合;
输出像素的最终颜色值。
[0007]上述方法中,所述采样点还包括四个外部采样点,所述外部采样点包括上侧相邻像素的两个采样点和右侧相邻像素的两个采样点。
[0008]上述方法中,所述计算采样点的颜色值和深度值,具体包括:
判断内部采样点是否在三角面内部;
对三角面内部的采样点进行颜色插值,计算出颜色值,每个像素的两个采样点颜色值相同; 对三角面内部的采样点进行深度插值,分别计算出两个采样点的深度值。
[0009]上述方法中,所述根据深度值将存入缓冲器的像素内部采样点混合后的颜色值与外部采样点的颜色值进行混合,具体包括:
将存入缓冲器的混合后的该像素颜色值乘以1/2加上右侧相邻像素颜色值乘以1/4再加上上侧相邻像素颜色值乘以1/4。
[0010]上述方法中,所述采样点分别设置在像素的下边界的三等分点和左边界的三等分点上且相邻像素采用不同的采样点。
[0011]根据本申请的第二方面,本申请提供一种用于图形渲染的反走样系统,包括:采样模块、光栅化模块、颜色混合模块、输出混合模块和帧缓冲模块;
所述采样模块,用于确定屏幕内组成图形的像素的采样点,所述采样点包括像素内部采样点和外部采样点,所述内部采样点有两个;读取采样点的数据信息,所述数据信息包括颜色值、深度值和背景色信息;
所述光栅化模块,用于根据所述数据信息计算采样点的颜色值和深度值;
所述颜色混合模块,用于根据深度值将采样点的颜色值与背景进行混合,将混合后的颜色值存入缓冲器;
所述输出混合模块,用于根据深度值将存入缓冲器的像素内部采样点混合后的颜色值与外部采样点的颜色值进行混合;
所述帧缓冲模块,用于输出像素的最终颜色值。
[0012]上述系统中,所述采样点还包括四个外部采样点,所述外部采样点包括上侧相邻像素的两个采样点和右侧相邻像素的两个采样点。
[0013]上述系统中,所述颜色混合模块还用于判断内部采样点是否在三角面内部;对三角面内部的采样点进行颜色插值,计算出颜色值,每个像素的两个采样点颜色值相同;对三角面内部的采样点进行深度插值,分别计算出两个采样点的深度值。
[0014]上述系统中,所述输出混合模块还用于将存入缓冲器的混合后的该像素颜色值乘以1/2加上右侧相邻像素颜色值乘以1/4再加上上侧相邻像素颜色值乘以1/4。
[0015]上述系统中,所述采样模块还用于将样点分别设置在像素的下边界的三等分点和左边界的三等分点上且相邻像素采用不同的采样点。
[0016]由于采用了以上技术方案,使本申请具备的有益效果在于:
在本申请的【具体实施方式】中,每个像素需要2个采样点,由于将两个采样点的颜色先进行一次混合,混合之后的颜色存入颜色缓冲,颜色缓冲中的颜色再与右侧和上侧的颜色混合,可以节约一半的存储空间,更适合在移动设备中使用。

【专利附图】

【附图说明】
[0017]图1为本申请的方法在一种实施方式中的流程图;
图2为本申请的方法在一种实施方式中的像素采样点示意图;
图3为本申请的方法在一种实施方式中的输出像素混合示意图;
图4为本申请的方法在另一种实施方式中的流程图;
图5为本申请的系统在一种实施方式中的结构示意。

【具体实施方式】
[0018]下面通过【具体实施方式】结合附图对本发明作进一步详细说明。
[0019]本申请中,屏幕内部组成图形的像素包括除了屏幕最顶端的一行像素和屏幕最右端的一列像素以外的所有像素。
[0020]实施例一:
如图1所示,本申请的用于图形渲染的反走样方法,其一种实施方式,包括以下步骤:步骤102:确定屏幕内部组成图形的像素的采样点,采样点包括像素内部采样点和外部采样点,每个像素有两个内部采样点。
[0021]采样点还包括四个外部采样点,外部采样点包括本像素上侧相邻像素的两个采样点和右侧相邻像素的两个采样点。每个像素的采样点分别设置在像素的下边界的三等分点和左边界的三等分点上,且相邻像素采用不同的采样点。图2示出了六个像素210、220、230、240、250和260,相邻的像素采用不同的采样点,像素210采样点为211和212,像素220的采样点为221和222,像素230的采样点为231和232,像素240的采样点为241和242,像素250的采样点为251和252,像素260的采样点为261和262。相邻像素采用不同的采样点可以有效地避免锯齿的出现。
[0022]步骤104:读取采样点的数据信息,数据信息包括颜色值、深度值和背景色信息。
[0023]步骤106:根据数据信息计算采样点的颜色值和深度值,并根据深度值将采样点的颜色值与背景进行混合,将混合后的颜色值存入缓冲器。
[0024]其中,计算采样点的颜色值和深度值,具体包括:
步骤1062:判断内部采样点是否在三角面内部;
步骤1064:对三角面内部的采样点进行颜色插值,计算出颜色值,每个像素的两个采样点颜色值相同;
步骤1066:对三角面内部的采样点进行深度插值,分别计算出两个采样点的深度值。
[0025]判断每个像素的两个采样点是否在三角面的内部,在三角面内部的采样点深度值是根据插值得到的,而在三角面外部的采样点的深度值是最大值。根据2个采样点的深度值,每个像素的有效颜色为:
当2个采样点深度值都为最大值时,像素无效;
当I个采样点深度值为最大值,I个采样点深度值为插值出的深度值时,像素中一个采样点有效;
当2个采样点深度值均为插值出的深度值时,像素有效,颜色为像素颜色。
[0026]步骤108:根据深度值将存入缓冲器的像素内部采样点混合后的颜色值与外部采样点的颜色值进行混合。将像素中有效采样点的颜色与颜色缓冲器中的背景色进行Alpha混合,并将结果存入背景颜色缓冲区。
[0027]本申请可用于基于Tile的渲染模式(Tile Based Rendering, TBR)。也可以用于立即值染模式(I_ediate Mode Rendering, IMR)的值染。
[0028]图3示出了输出像素混合示意图,图3中包括四种类型的像素。(括号内为MR模式)
像素303:位于Tile (屏幕)右上角,输出像素颜色为颜色缓冲中的该像素颜色。该像素由自身2个采样点混合得到,2个采样点各占1/2。
[0029]像素301、302:位于Tile (屏幕)的顶侧,输出像素颜色为颜色缓冲中的该像素颜色乘以3/4加上颜色缓冲中的右侧像素颜色乘以1/4。该像素由自身2个采样点和右侧相邻像素的2个采样点混合得到,该像素2个采样点各占3/8,右侧像素2个采样点各占1/8。
[0030]像素306、309:位于Tile (屏幕)右侧,输出像素颜色为颜色缓冲中的该像素颜色乘以3/4加上颜色缓冲中的上侧相邻像素颜色乘以1/4。该像素由自身2个采样点和上侧相邻像素的2个采样点混合得到,该像素2个采样点各占3/8,上侧相邻像素2个采样点各占 1/8。
[0031]像素304、305、307和308:将存入缓冲器的混合后的该像素颜色值乘以1/2加上右侧相邻像素颜色值乘以1/4再加上上侧相邻像素颜色值乘以1/4。
[0032]Tile (屏幕)内部像素,输出像素颜色为颜色缓冲中的该像素颜色乘以1/2加颜色缓冲中的右侧相邻像素颜色乘以1/4再加上颜色缓冲中的上侧相邻像素颜色乘以1/4。这样Tile内部的像素实际是该像素的2个采样点和上侧、右侧两个像素4个采样点共计6个采样点的混合,其中该像素的2个采样点各占1/4,上侧和右侧像素的4个采样点各占1/8。
[0033]步骤110:输出像素的最终颜色值。
[0034]如图2所示的采样点,例如像素210的两个采样点211和212分别位于左侧边界和下侧边界的1/3分割点上。对于硬件,1/3作为除法实现代价太大。对于这2个采样点可采取近似地取3/8和5/8来实现,1/8可以通过移位实现,这样避免了高开销的除法。
[0035]图4示出了本申请方法的一个具体实例,整个过程包括:
步骤402:光栅化模块完成对Tile (屏幕)内像素的扫描转换。主要完成的功能是判断每个像素是否在三角面内部,并对内部的像素点进行颜色插值。对于在三角面内部的采样点,深度值为插值结果,对于在三角面外部的采样点,深度值为最大值。光栅化模块输出的是每个像素的I个颜色值和2个采样点的深度值。
[0036]步骤404:颜色混合模块将光栅化输出的像素的有效颜色与对应的颜色缓冲中的背景色进行透明度混合,并更新颜色缓冲对应像素中2个采样点的深度值。每个像素有3种可能。
[0037]步骤406:颜色缓冲模块存储颜色混合模块输出的每个像素的I个颜色值和2个采样点的深度值,并作为下一次颜色混合的背景色与光栅化模块的输出混合。
[0038]步骤408:输出混合模块用于在光栅化结束后对颜色缓冲模块中的颜色进行多像素混合,输出为每个像素的最终颜色值。
[0039]步骤410:帧缓冲模块储存输出混合模块输出的每个像素的最终颜色值。
[0040]本申请可以的方法有明显的反走样效果,FLIPQUAD有更好的反走样效果。
[0041]实施例二:
如图5所示,本申请的用于图形渲染的反走样系统,其一种实施方式,包括采样模块、光栅化模块、颜色混合模块、输出混合模块和帧缓冲模块。采样模块,用于确定屏幕内组成图形的像素的采样点,采样点包括像素内部采样点和外部采样点,内部采样点有两个,夕卜部采样点有四个,外部采样点包括上侧相邻像素的两个采样点和右侧相邻像素的两个采样点。读取采样点的数据信息,数据信息包括颜色值、深度值和背景色信息。光栅化模块,用于根据数据信息计算采样点的颜色值和深度值。颜色混合模块,用于根据深度值将采样点的颜色值与背景进行混合,将混合后的颜色值存入缓冲器。输出混合模块,用于根据深度值将存入缓冲器的像素内部采样点混合后的颜色值与外部采样点的颜色值进行混合。帧缓冲模块,用于输出像素的最终颜色值。
[0042]在一种实施方式中,颜色混合模块还用于判断内部采样点是否在三角面内部;对三角面内部的采样点进行颜色插值,计算出颜色值,每个像素的两个采样点颜色值相同;对三角面内部的采样点进行深度插值,分别计算出两个采样点的深度值。
[0043]本申请的用于图形渲染的反走样系统,输出混合模块还用于将存入缓冲器的混合后的该像素颜色值乘以1/2加上右侧相邻像素颜色值乘以1/4再加上上侧相邻像素颜色值乘以1/4。
[0044]在一种实施方式中,采样模块还用于将采样点分别设置在像素的下边界的三等分点和左边界的三等分点上且相邻像素采用不同的采样点。
[0045]以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属【技术领域】的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换。
【权利要求】
1.一种用于图形渲染的反走样方法,其特征在于,包括: 确定屏幕内组成图形的像素的采样点,所述采样点包括像素内部采样点和外部采样点,所述内部采样点有两个; 读取采样点的数据信息,所述数据信息包括颜色值、深度值和背景色信息; 根据所述数据信息计算采样点的颜色值和深度值,并根据深度值将采样点的颜色值与背景进行混合,将混合后的颜色值存入缓冲器; 根据深度值将存入缓冲器的像素内部采样点混合后的颜色值与外部采样点的颜色值进行混合; 输出像素的最终颜色值。
2.如权利要求1所述的用于图形渲染的反走样方法,其特征在于,所述采样点还包括四个外部采样点,所述外部采样点包括上侧相邻像素的两个采样点和右侧相邻像素的两个采样点。
3.如权利要求2所述的用于图形渲染的反走样方法,其特征在于,所述计算采样点的颜色值和深度值,具体包括: 判断内部采样点是否在三角面内部; 对三角面内部的采样点进行颜色插值,计算出颜色值,每个像素的两个采样点颜色值相同; 对三角面内部的采样点进行深度插值,分别计算出两个采样点的深度值。
4.如权利要求3所述的用于图形渲染的反走样方法,其特征在于,所述根据深度值将存入缓冲器的像素内部采样点混合后的颜色值与外部采样点的颜色值进行混合,具体包括: 将存入缓冲器的混合后的该像素颜色值乘以1/2加上右侧相邻像素颜色值乘以1/4再加上上侧相邻像素颜色值乘以1/4。
5.如权利要求1至4中任一项所述的用于图形渲染的反走样方法,其特征在于,所述采样点分别设置在像素的下边界的三等分点和左边界的三等分点上且相邻像素采用不同的采样点。
6.一种用于图形渲染的反走样系统,其特征在于,包括:采样模块、光栅化模块、颜色混合模块、输出混合模块和巾贞缓冲模块; 所述采样模块,用于确定屏幕内组成图形的像素的采样点,所述采样点包括像素内部采样点和外部采样点,所述内部采样点有两个;读取采样点的数据信息,所述数据信息包括颜色值、深度值和背景色信息; 所述光栅化模块,用于根据所述数据信息计算采样点的颜色值和深度值; 所述颜色混合模块,用于根据深度值将采样点的颜色值与背景进行混合,将混合后的颜色值存入缓冲器; 所述输出混合模块,用于根据深度值将存入缓冲器的像素内部采样点混合后的颜色值与外部采样点的颜色值进行混合; 所述帧缓冲模块,用于输出像素的最终颜色值。
7.如权利要求6所述的用于图形渲染的反走样系统,其特征在于,所述采样点还包括四个外部采样点,所述外部采样点包括上侧相邻像素的两个采样点和右侧相邻像素的两个采样点。
8.如权利要求7所述的用于图形渲染的反走样系统,其特征在于,所述颜色混合模块还用于判断内部采样点是否在三角面内部;对三角面内部的采样点进行颜色插值,计算出颜色值,每个像素的两个采样点颜色值相同;对三角面内部的采样点进行深度插值,分别计算出两个采样点的深度值。
9.如权利要求8所述的用于图形渲染的反走样系统,其特征在于,所述输出混合模块还用于将存入缓冲器的混合后的该像素颜色值乘以1/2加上右侧相邻像素颜色值乘以1/4再加上上侧相邻像素颜色值乘以1/4。
10.如权利要求6至9中任一项所述的用于图形渲染的反走样系统,其特征在于,所述采样模块还用于将样点分别设置在像素的下边界的三等分点和左边界的三等分点上且相邻像素采用不同的采样点。
【文档编号】G06T15/00GK104463939SQ201410706209
【公开日】2015年3月25日 申请日期:2014年11月28日 优先权日:2014年11月28日
【发明者】项天, 金西, 杜学亮, 林啸 申请人:项天, 金西, 杜学亮, 林啸
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1