基元的使用误差项的保守光栅化的制作方法

文档序号:6527111阅读:298来源:国知局
基元的使用误差项的保守光栅化的制作方法
【专利摘要】提供基元的使用误差项的保守光栅化的系统、方法和计算机程序产品。在使用中,针对基元的每个边确定边公式,边公式具有限定基元的边的系数。通过将限定边的边公式的系数修改预定量的误差项来将基元的每个边移位以扩大基元。随后使用扩大的基元确定与基元相交的像素。
【专利说明】基元的使用误差项的保守光栅化

【技术领域】
[0001]本发明涉及图形处理,并且,更具体地,涉及基元的光栅化。

【背景技术】
[0002]图形处理管线将(例如可能与三维对象相关联的)输入图形数据转换成与二维表面相关联的像素数据。在常规实现方案中,图形处理管线的世界空间部分负责在当数据转换成像素数据之前处理输入图形数据,其通常包括三角形和相关顶点的合集。图形处理管线的屏幕空间部分负责处理被转换的像素数据并生成用于显示的最终像素值。
[0003]图形处理管线中的级(stage)中的一个是光栅化级,其典型地涉及将由管线的世界空间部分所处理的图形数据转换成像素数据。光栅化可涉及生成描述在管线的世界空间部分中处理的三角形边的边公式、确定那些三角形的覆盖信息、以及计算由三角形所覆盖的像素和片段(fragment)的属性值。光栅化中所涉及的计算有时是采用固定分数像素(fract1nal-pixel)精度所正常地实施的定点(fixed point)计算。因此,可认为定点光栅化计算的结果被“捕捉”到网格,其中网格框与分数像素大小的框相对应。
[0004]在许多实现方案中,图形处理管线可以以不同分辨率将相同三维对象光栅化。例如,可首先以低分辨率将三角形光栅化以做出关于三角形的某些确定,诸如表面的什么通用部分被三角形所覆盖。随后可以以较高分辨率将三角形光栅化以生成用于显示的图像数据。然而,与以较高分辨率所进行的光栅化相比较,以较低分辨率所进行的光栅化一般提供“捕捉”到较粗略网格的结果。因此,较低分辨率的光栅化可产生未正确地与较高分辨率的光栅化的覆盖结果对齐的覆盖结果。例如,如果基于低分辨率光栅化的结果将帧缓冲区存储器分配用于稀疏渲染,那么由于较低分辨率光栅化的结果被捕捉到较粗略网格的事实,存储器可能是过度分配或分配不足的。更具体地,可能针对分配对其是不必要的块分配存储器,或可能没有针对分配对其是必要的块分配存储器。
[0005]因此,存在对于解决当将图形数据光栅化时的准度问题和/或解决与现有技术相关联的其他问题的需求。


【发明内容】

[0006]提供基元的使用误差项(error term)的保守光栅化的系统、方法和计算机程序产品。在使用中,针对基元的每个边确定边公式,边公式具有限定基元的边的系数。通过将限定边的边公式的系数修改预定量的误差项来将基元的每个边移位(shift)以扩大基元。随后使用扩大的基元确定与基元相交的像素。

【专利附图】

【附图说明】
[0007]图1示出根据一个实施例的、用于基元的使用误差项的保守光栅化的方法的流程图;
[0008]图2示出根据另一实施例的、用于粗略光栅和精细光栅二者中的基元的保守光栅化的方法的流程图;
[0009]图3A示出根据又一实施例的、用于精细光栅中的基元的使用误差项的保守光栅化的方法的流程图;
[0010]图3B示出根据另一实施例的、与基元相交的像素;
[0011]图4A示出根据又一实施例的图形处理管线;
[0012]图4B示出根据一个实施例的、用于基于捕捉(snap)间距调整顶点位置的方法的另一流程图;
[0013]图5示出根据一个实施例的并行处理单元(PI3U);
[0014]图6示出根据一个实施例的、图5的流多处理器;以及
[0015]图7示出在其中可实现各先前实施例的各架构和/或功能性的示例性系统。

【具体实施方式】
[0016]保守光栅化是这样一种光栅化技术,如果像素的任何区域与基元相交,那么该像素视为用于基元的光栅化。这与传统光栅化技术不同,传统光栅化技术将像素视为采样点或多个采样点,并且如果采样点在基元之内,那么采样点视为用于基元的光栅化。采用保守光栅化,实际与基元相交的所有像素将总是被标识。然而,保守光栅化过程可能将像素标识为与基元相交,而采用完美精度,像素将不标识为与基元相交。在本描述中应注意的是,像素视为占用显示的矩形区域,并且每个基元可以是三角形、线或点。
[0017]对于允许图形处理单元(GPU)迅速对与基元相交的像素进行标识、使得其可由其他资源用来进行关于像素的进一步的复杂计算来说,保守光栅化是有帮助的。例如,具有保守光栅化能力的GPU可迅速找到可能与基元相交的像素,将那些像素发送到另一计算资源,并实施GPU中的固定功能管线可能没有能力实施的计算。其示例是用于反走样的(antialiasing)超精细多重采样。如果GPU配置为实施每像素多达4x4样本的多重采样,那么另一计算资源可配置为当使用超过每像素4x4样本时实施多重采样,例如16x16的多重采样。16x16的多重采样可由GPU其自身内的可编程着色器资源来实施,或可在另一芯片或计算资源、诸如中央处理单元(CPU)中实施。可从低分辨率的保守光栅化以对处理工作量进行分区中获益的其他示例包括光线跟踪、或全局照明,其中标识与基元相交的像素,随后实施复杂或定制的照明计算以确定像素的实际颜色。
[0018]当使用保守光栅化时,基元位置被捕捉到网格。当像素分辨率改变、成为更精细或更粗略时,捕捉可影响基元的形状。换句话说,基元的形状对于不同的像素分辨率是不一致的,因此针对不同的像素分辨率,视为由基元所覆盖的像素可能变化。
[0019]图1示出根据一个实施例的、用于基元的使用误差项的保守光栅化的方法100的流程图。这类误差项可用来对前述的保守光栅化不一致性进行补偿。在步骤102,针对基元的每个边确定边公式,边公式具有限定基元的边的系数。
[0020]例如,可由边的集合限定三角形基元。进一步地,基元的每个边可由用于描述基元在显示器上的布局的公式的三个系数所限定。公式可定义为:
[0021]Eo+Ex (x) +Ey (y)
[0022]可依据基元的已变换到屏幕空间中的顶点来计算系数。在一个实施例中,顶点可被捕捉到固定数目的分数位(例如8位)以使能光栅计算中的精确精度以及因此的跨显示器的统一精度。因此,系数可限定被捕捉的边的布局。
[0023]进一步地,可计算系数和结果的边公式,使得如果任何点U,y)在线(即边)上,那么边公式的结果将是零。如果(x,y)在基元位于的线的一侧,那么结果将是正的,如果在边的另一侧,那么是负的。所以,如果点(X,y)针对所有3个边计算的结果均是正,那么点在基元之内。
[0024]在步骤104,通过将限定基元的每个边的边公式的系数修改预定量的误差项来将边移位以扩大基元。如上文所释,误差项可用于对由在保守光栅化过程期间将基元捕捉到网格所引起的不一致性进行补偿的目的。误差项还可用来对应用到基元的算术操作的精度差异进行补偿。作为选项,误差项可以是可编程的,使得例如误差项的值是由保守光栅化过程所引入的精度的量的函数。仅作为示例,在不一致性至少部分地由于上述基元的捕捉所引起之处,误差项可以是基元的每个边已被捕捉的距离的函数,其中凭借由被捕捉的顶点所限定的边来捕捉边。在一个可选实施例中,误差项可以是基元的每个边已被捕捉的距离的一半。进一步地,相同误差项可用来修改系数。
[0025]应注意的是,可以以任何预配置的、致使基元扩大的方式来将系数修改预定量。例如,当指示误差项的预定量是2的幂时,那么可基于预定量通过将边公式的系数移位来修改边公式的系数。作为另一示例,可根据下面的公式来将系数修改预定量:
[0026]Eo+Ex(x+/-ErrorX)+Ey(y+/_ErrorY)
[0027]在上文所示的公式中,可选择性地在系数中加上或减去误差项。具体来讲,可选择误差项以将基元扩大误差项。表1示出用于选择每个所应用的误差项的符号(+或_)的示例性配置,即符号是基于边的方向和定向的。
[0028]表1
[0029]

【权利要求】
1.一种用于将基兀光栅化的方法,包括: 针对基元的每个边确定边公式,所述边公式具有限定所述基元的所述边的系数;通过将限定所述边的所述边公式的系数修改预定量的误差项来将所述基元的每个边移位以扩大所述基元;以及 使用扩大的基元,确定与所述基元相交的像素。
2.根据权利要求1所述的方法,其中所述每个边公式的系数根据已被捕捉到固定数目的分数位的所述基元的顶点来计算。
3.根据权利要求1所述的方法,进一步包括: 通过将限定所述边的所述边公式的系数修改第二预定量来附加地将所述基元的每个边移位以进一步扩大所述基元。
4.根据权利要求3所述的方法,其中与所述基元相交的所述像素通过使用所述扩大的基兀来确定。
5.根据权利要求3所述的方法,其中将限定所述边的所述边公式的系数修改所述第二预定量包括将每个系数修改相同的第二预定量。
6.根据权利要求3所述的方法,其中所述系数被修改的所述第二预定量是像素的大小的预定分数部分。
7.根据权利要求6所述的方法,其中所述系数被修改的所述第二预定量是所述像素的所述大小的一半。
8.根据权利要求3所述的方法,其中所述预定量小于所述第二预定量。
9.根据权利要求1所述的方法,其中将限定所述边的所述边公式的系数修改所述预定量的所述误差项包括将每个修改相同的误差项。
10.根据权利要求2所述的方法,其中所述预定量是所述基元的所述边已被捕捉的距离的函数,其中所述边凭借由被捕捉的顶点所限定的所述边来捕捉。
11.根据权利要求10所述的方法,其中所述预定量是所述基元的每个边已被捕捉的所述距离的一半。
12.根据权利要求1所述的方法,其中当所述预定量是2的幂时,随后将所述边公式的系数修改所述误差项包括基于所述预定量将所述边公式的系数移位。
13.根据权利要求1所述的方法,进一步包括: 确定用于所述基元的所述边的包围框。
14.根据权利要求13所述的方法,进一步包括: 将所述包围框的每个边移位以扩大所述包围框。
15.根据权利要求14所述的方法,其中所述包围框的每个边通过进行以下内容来移位: 将所述包围框的每个边修改所述预定量的所述误差项。
16.根据权利要求14所述的方法,其中与所述基元相交的所述像素通过使用扩大的包围框来进一步确定。
17.一种非暂时性计算机可读存储介质,其存储指令,当所述指令由处理器所执行时,实施光栅化基元的方法,所述方法包括: 针对基元的每个边确定边公式,所述边公式具有限定所述基元的所述边的系数;通过将限定所述边的所述边公式的系数修改预定量的误差项来将所述基元的每个边移位以扩大所述基元;以及 使用所述扩大的基元,确定与所述基元相交的像素。
18.—种系统,包括: 处理器,其配置为: 针对基元的每个边确定边公式,所述边公式具有限定所述基元的 所述边的系数; 通过将限定所述边的所述边公式的系数修改预定量的误差项来将 所述基元的每个边移位以扩大所述基元;以及 使用扩大的基元,确定与所述基元相交的像素
19.一种方法,包括: 标识产生自共线顶点的具有零面积的基元; 确定所述基兀的最小顶点和最 大顶点;以及 使用所述最小顶点和所述最大顶点将所述基元限定为线。
20.—种方法,包括: 标识用于三角形或像素的像素块的Z锚点; 将所述Z锚点偏移所述像素的预定分数部分以将所述Z锚点置于所述像素的角;以及对被置于所述像素的所述角的所述Z锚点求值以提供用于所述像素的最大Z值和最小Z值中的一个。
【文档编号】G06T1/60GK104050626SQ201310753294
【公开日】2014年9月17日 申请日期:2013年12月31日 优先权日:2013年3月15日
【发明者】埃里克·布雷恩·卢姆, 沃尔特·罗伯特·斯坦纳, 亨利·帕尔德·莫尔顿, 贾斯廷·L·科布, 巴里·诺兰·罗杰斯, 尤里·乌拉尔斯基, 蒂莫·奥斯卡伊·艾拉, 泰罗·塔帕尼·卡拉斯 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1