用于几何图形的抗混叠

申请号 CN201380076088.9 申请日 2013-09-20 公开(公告)号 CN105378798A 公开(公告)日 2016-03-02
申请人 微软技术许可有限责任公司; 发明人 C.M.L.安德鲁斯; B.D.佩尔顿; A.J.霍兹顿;
摘要 描述了用于几何图形的抗 混叠 技术。在至少一些 实施例 中,图形图像被缩减为多边形几何图元(“几何图形”)的集合。单个几何图形根据本文所讨论的技术进行处理,以便在将这些几何图形作为图形图像的一部分显示时将抗混叠应用于几何图形。例如,通用几何图形的抗混叠是经由四边形和斜 角 的相关联集合而被实现的,在对几何图形进行再现以用于显示时,所述四边形和斜角可以被动态变换。在至少一些实施例中,针对几何图形所生成的四边形和斜角使得该几何图形能够被动态变换和重新再现多次,以便实现多种不同的画面。
权利要求

1.一种设备,其包括:
至少一个处理器;以及
包括在其上存储的指令的一个或多个计算机可读存储媒体,响应于由至少一个处理器的执行,所述指令使得所述设备执行操作,所述操作包括:
对几何图形执行内部曲面细分来生成经过曲面细分的几何图形;
基于针对经过曲面细分的几何图形计算的位移向量,处理所述经过曲面细分的几何图形,以便生成具有位移的顶点的经过处理的几何图形;
针对所述几何图形的边缘生成四边形,所述四边形包括覆盖梯度并且所述四边形是基于用于所述边缘的边缘单位法向量;
针对所述几何图形的凸顶点生成斜,所述斜角包括覆盖梯度,并且所述斜角是基于所述凸顶点的边缘单位法向量;以及
对用于显示的所述经过处理的几何图形、所述四边形以及所述斜角进行处理,以便提供所述几何图形的抗混叠
2.根据权利要求1所述的设备,其中基于位移向量对所述经过曲面细分的几何图形的所述处理包括:依照与相应位移向量相对应的距离来插入经过曲面细分的几何图形的顶点。
3.根据权利要求1所述的设备,其中所述四边形是针对所述几何图形的每一个边缘而生成的并且因此所述四边形的第一个边缘是不透明或半透明的而与所述第一边缘相对的第二边缘是透明的。
4.根据权利要求1所述的设备,其中所述四边形的至少一些具有一个像素的宽度,并且被配置成如果所述几何图形被比例缩放到不同比例,则所述至少一些四边形保持所述相同的宽度。
5.根据权利要求1所述的设备,其中所述斜角包括被生成以便填充在相邻四边形之间的间隙的三角形。
6.根据权利要求1所述的设备,其中所述斜角被生成以使得所述斜角的顶点是不透明或半透明的,以及与所述顶点相对的所述斜角的边缘是透明的。
7.根据权利要求1所述的设备,其中对用于显示的所述经过处理的几何图形、所述四边形和所述斜角进行的所述处理包括:
对所述经过处理的几何图形、所述四边形以及所述斜角的顶点进行处理,以便生成用于所述顶点的位置和覆盖值;以及
基于针对所述顶点而指定的相应的覆盖值以及画笔来计算用于所述顶点的调制颜色
8.一种计算机实现的方法,其包括:
对已实感化的几何图形的顶点进行处理,以便针对所述顶点中的每一个来生成位置和覆盖,所述已实感化的几何图形包括基于用于所述顶点的位移向量而生成的经过处理的几何图形、针对所述几何图形的边缘而生成的并且包括相应的覆盖梯度的四边形、以及针对所述几何图形的凸顶点生成的并且包括相应的覆盖梯度的斜角;
至少部分地基于用于所述四边形和斜角的覆盖梯度,针对所述顶点计算调制颜色;以及
基于用于所述几何图形的顶点的位置和调制颜色来显示所述几何图形。
9.根据权利要求8所述的方法,其中所述四边形和斜角被生成以便提供用于所述几何图形的抗混叠。
10.根据权利要求8所述的设备,其中所述位移向量是基于初始的几何图形的边缘的边缘单位法向量而生成的。

说明书全文

用于几何图形的抗混叠

背景技术

[0001] 现今的计算设备可以访问多种不同的视觉内容。为了使得能够显示视觉内容,在显示视觉内容之前通常会用多种方式对其进行处理。例如,图形数据通常会从复杂的几何图形(geometry)转换成可作为更复杂的图像的一部分处理和显示的更简单的几何图元(geometric primitive)。
[0002] 一种这样的用于将几何图形转换成更简单的图元的方法被称为曲面细分(tessellation)。概括地说,曲面细分涉及将复杂的形状转换成一组能被处理和显示的简单多边形(例如,三形)。虽然曲面细分对于再现高质量的图形是有用的,但其亦与显著的计算资源成本相关联。
[0003] 一种用于减轻曲面细分资源成本的普通方法是将图形再现分成两个阶段(pass)。第一阶段被称为“实感化”(realization)阶段,该阶段会将几何图形转换成被缓存在例如中央处理单元(“CPU”)和/或图形处理单元(“GPU”)上的中间形式(其被称为“实感(realization)”)。第二阶段被称为“绘制”阶段,该阶段将被缓存的实感连同变换和“画笔”(例如,从像素位置颜色值的映射)一起获得(take),并且再现图元。因此,这会引起一次曲面细分昂贵的CPU成本,而图元本身可以用变化的变换和画笔再现多次,从而降低CPU开销。
[0004] 虽然当前技术可以利用这个两阶段方法来再现图元,但这样的技术受到多种缺陷困扰。例如,一些技术采用基于多采样的抗混叠,该抗混叠可以显著增加CPU成本,并且因此影响整体再现性能。此外,在当前的很多GPU上通常不支持这样的技术。其他技术可以通过将几何图形光栅化来生成覆盖位图,该覆盖位图被用作可以将画笔应用到其上的不透明掩模(mask),以便再现图形。当覆盖位图被缩放时,这些技术可以受到失真的困扰,并且对于更大的几何图形来说,这些技术也可以显著地增加GPU存储器成本。发明内容
[0005] 本发明内容被提供来以简化的形式介绍概念的选择,所述概念在下文具体实施方式中将被进一步描述。本发明内容不是旨在标识要求保护的主题的关键特征或必要特征,也不是旨在被用来帮助确定要求保护的主题的范围。
[0006] 描述了用于几何图形的抗混叠技术。在至少一些实施例中,图形图像被缩减至多边形几何图元(“几何图形”)的一个集合。单个几何图形是根据本文所讨论的技术而被处理的,以便在将几何图形作为图形图像的一部分进行显示的时候将抗混叠应用于该几何图形。一般地,混叠是指在图像中的线条的锯齿状外观,诸如位图图像边缘之类。抗混叠指的是可被应用于图像(例如几何图形)的部分,以便移除和/或减少混叠的处理和/或效果。本文所讨论的技术经由在再现几何图形以用于显示时可以动态变换的四边形和斜角的关联集合,来提供用于通用几何图形的抗混叠。在至少一些实施例中,为几何图形生成的四边形和斜角使得几何图形能够被动态变换和重新再现多次从而实现多种不同的画面。
附图说明
[0007] 具体实施方式参考附图而被描述。在附图中,附图标记最左侧的(多个)数字标识该附图标记在其中首次出现的附图。在说明书和附图的不同实例中使用的相同附图标记可以指示相似或相同的项目。
[0008] 图1是在可以操作来采用本文所讨论的技术的示例实现方式中的环境的图示。
[0009] 图2图示了根据一个或多个实施例的示例实现场景的部分。
[0010] 图3图示了根据一个或多个实施例的示例实现场景的部分。
[0011] 图4图示了根据一个或多个实施例的示例实现场景的部分。
[0012] 图5图示了根据一个或多个实施例的示例实现场景的部分。
[0013] 图6图示了根据一个或多个实施例的示例实现场景的部分。
[0014] 图7图示了根据一个或多个实施例的示例实现场景的部分。
[0015] 图8图示了根据一个或多个实施例的示例实现场景的部分。
[0016] 图9图示了根据一个或多个实施例的示例实现场景的部分。
[0017] 图10图示了根据一个或多个实施例的示例实现场景的部分。
[0018] 图11图示了根据一个或多个实施例的示例实现场景的部分。
[0019] 图12图示了根据一个或多个实施例的示例实现场景的部分。
[0020] 图13是描述根据一个或多个实施例的方法中的步骤的流程图
[0021] 图14是描述根据一个或多个实施例的方法中的步骤的流程图。
[0022] 图15图示了参考图1描述的、被配置成实现本文所描述的技术的实施例的示例系统和计算设备。

具体实施方式

[0023] 概览描述了用于几何图形的抗混叠技术。在至少一些实施例中,图形图像被缩减至多边形
几何图元(“几何图形”)的集合。单个几何图形会根据本文讨论的技术处理,以便在将这些几何图形作为图形图像的部分显示的时候对该几何图形应用抗混叠。一般地,混叠指的是在图像中的线条的锯齿状外观。例如,在这个上下文中,混叠指的是在1比特单色设备上再现的几何图元的边缘上看到的视觉假象(visual artifact)。抗混叠指的是可被应用于图像(例如,图元)的部分,以便移除和/或减少混叠的处理和/或效果。
[0024] 在至少一些实施例中,技术涉及实现几何图形的抗混叠的多个处理步骤。例如,针对几何图形边缘,计算边缘单位法向量。然后,该几何图形被曲面细分成一组内部三角形。通过按照根据边缘单位法向量所计算的位移量来插入该几何图形的顶点,来生成经过处理的几何图形。一般地,这个经过处理的几何图形是原始几何图形的插入版本(inset version)。
[0025] 对于各种不同的实施例进一步来说,针对几何图形的边缘生成alpha渐变四边形(“四边形”)。该四边形是基于几何图形相应边缘的边缘单位法向量以及基于使用该边缘单位法向量计算的位移向量而生成的。单个四边形包括一个在该四边形的边缘上应用的像素覆盖梯度,并且该像素覆盖梯度指定从四边形的一个边缘的不透明或半透明态到该四边形的另一个边缘的透明态的转换。在至少一些实施例中,像素覆盖梯度使得能够实现所显示的几何图形的抗混叠。
[0026] 对于各种不同的实施例进一步来说,针对几何图形的凸顶点生成alpha渐变斜角(“斜角”)。生成这些斜角,以便填充可以在四边形之间出现的间隙,并且以便确保抗混叠均匀地在相关联的几何图形上被应用。单个斜角包括应用在该斜角表面的像素覆盖梯度,并且该像素覆盖梯度指定从四边形的一个顶点处的不透明或半透明态到该四边形边缘处透明态的转换。
[0027] 在至少一些实施例中,经过处理的几何图形以及相关联的四边形和斜角将被进一步处理,以便应用覆盖(例如,不透明)值和颜色值。然后,经过处理的几何图形、四边形以及斜角可以作为视觉集成的几何图形(例如与图像中的其他几何图形集成在一起)并且利用由四边形和斜角提供的抗混叠而被显示。因此,本文所讨论的技术经由可以在将几何图像再现以用于显示时可以动态地变换的四边形和斜角的相关联的集合来提供用于通用几何图形的抗混叠。在至少一些实施例中,针对几何图形所生成的四边形和斜角使得该几何图形能够被动态变换和重新再现多次,以便实现多种不同的画面。
[0028] 在以下讨论中,首先描述可以操作来采用本文所描述的技术的示例环境。接下来,标题为“示例实现场景”的部分描述根据一个或多个实施例的示例实现场景。在这之后,标题为“示例过程”的部分描述根据一个或多个实施例的一些示例方法。接下来,标题为“附加实施例”的部分描述可以在其中采用本文所讨论技术的不同场景。最后,标题为“示例系统和设备”的部分描述根据一个或多个实施例的可操作来采用本文所讨论的技术的示例系统和设备。
[0029] 已经给出根据一个或多个实施例的示例实现方式的概览,现在考虑可以在其中采用示例实现方式的示例环境。
[0030] 示例环境图1是在可以操作来采用本文所描述的用于几何图形的抗混叠的技术的示例实现方
式中的环境100的图示。图示的环境100包括可以用多种不同方式配置的计算设备102。
例如,如联系图15所进一步描述的,该计算设备102可被配置为传统的计算机(例如,台式个人计算机、膝上型计算机等等),移动站,娱乐装置,可通信地耦合至电视的机顶盒,无线电话,上网本,游戏控制台,手持设备(例如,平板设备)等等。
[0031] 计算设备102包括处理器104,该处理器代表执行用于计算设备102的各种不同类型的数据处理的功能。例如,该处理器104可以代表计算设备102的中央处理单元(CPU)。在下文中将会参考图15来描述处理器104的更多实现方式的示例。
[0032] 进一步图示了图形处理器106,该图形处理器代表执行用于计算设备102的各种不同的图形相关任务的功能。例如,该图形处理器106可以代表计算设备102的图形处理单元(GPU)。
[0033] 计算设备102还包括应用108以及图形管理器模110。应用108代表经由计算设备102来执行不同任务的功能。应用108的示例包括字处理应用,电子邮件应用,内容编辑应用,web浏览应用等等。
[0034] 除了用于本文所讨论的几何图形的抗混叠的技术,图形管理器模块110还代表执行各种不同的任务的功能。例如,图形管理器模块110可以作为计算设备102的操作系统的组件来实现。然而,实施例可以采用图形管理器模块110的多种不同配置和实现方式。在下文中将会讨论涉及图形管理器模块110的实施方式的进一步的细节。
[0035] 计算设备102还包括一个或多个着色器(shader)模块112,该着色器模块代表将各种不同的视觉效果应用到图形的功能(诸如,着色处理(shading)、特殊效果、后期处理等等)。在至少一些实施例中,着色器模块112可以包括顶点着色器,其代表处理几何图形的顶点来产生可被进一步处理和/或显示的输出顶点的功能。该着色器模块112还可以包括像素着色器,其代表例如基于像素的不透明性和/或颜色值来对像素应用各种不同视觉效果的功能。在至少一些实施例中,通过顶点着色器处理的顶点可被传递至像素着色器,以便能在显示之前将颜色和覆盖值应用于顶点的像素。
[0036] 计算设备102还包括存储器114,其代表可被计算设备102的各种不同的功能写入和读取的数据存储介质。例如,存储器114可以代表计算设备102的主存储器。在下文中将会参考图15来讨论存储器114的进一步的细节和示例。
[0037] 显示设备116也被图示,并且该显示设备被配置成输出用于计算设备102的图形。例如,考虑示例实现方式,其中应用108中的一个当前正在运行,并且提交了将要经由显示设备116显示的应用108的图形元素。通过利用处理器104和/或图形处理器106,图形管理器模块110可以实现本文所讨论的技术来将抗混叠应用到各种几何图形。
[0038] 被显示在显示设备116上的是已经根据本文所讨论的技术处理的图形图像118。例如,该图形图像118包括可以如下文所讨论地生成和处理的多个几何图形。
[0039] 已经描述了本文所描述的技术可以在其中操作的示例环境,现在考虑根据一个或多个实施例的示例实现场景。
[0040] 示例实施场景以下讨论描述用于本文所描述的几何图形抗混叠的技术的示例实现场景的各部分。该
示例实现场景可以在图1的环境100、图15的系统1500和/或其他任何适当的环境中实
现。一般地,该实现场景被描述成是可以作为再现图元的部分而执行的一系列的操作,所述图元是所要显示的更大的图形图像的部分。
[0041] 图2图示了根据一个或多个实施例的几何图形200。在至少一些实施方式中,该几何图形200代表作为初始图形实感化操作的一部分而生成的多边形。例如,几何图形200可以是通过使用已知的用于几何图形展平(geometry flattening)以及从几何图形中移除自相交线的算法所生成的图形图元的数据表示。一般地,展平指的是利用适当的多边形近似来替换包含贝塞尔和/或其他曲线段的几何图形。该几何图形200可以作为诸如从应用108所提交以供显示的图形数据的部分而被包含。
[0042] 图3图示了针对几何图形200的边缘计算和注释(annotate)边缘法向量以便生成注释的几何图形300。例如,针对几何图形200的每一个边缘计算外向边缘单位法向量(例如,长度为1)。然后,利用进入和外出分段的法线,对几何图形200的每一个顶点进行注释,以便生成注释的几何图形300。在图3中,单位法向量图被图示为在注释的几何图形300的每个顶点处的虚线箭头。
[0043] 例如,考虑所注释的几何图形300的顶点302。该顶点302包括进入边缘304和外出边缘306。进入边缘304的边缘法向量被计算并被注释为法向量308。而外出边缘306的边缘法向量则被计算并注释为法向量310。
[0044] 如图所示,剩余顶点的边缘法向量被计算并被注释在所注释的几何图形300中它们相应的顶点上。
[0045] 图4图示了在注释的几何图形300上执行内部曲面细分,以便生成曲面细分的几何图形400。一般地,生成曲面细分的几何图形400涉及将几何图形分成一组“严密的”(watertight)三角形。在这个特定示例中,曲面细分的几何图形400包括三角形402、404、
406和408。然而,根据多种不同的实施例,内部三角形的多种不同的布置都是可以被采用的。
[0046] 任何适当的曲面细分算法都可以被用来生成曲面细分的几何图形400。然而,指定如何实现曲面细分的一些限制可以被应用。一些可以管理如何对几何图形进行曲面细分的限制的示例包括:(1)内部三角形应当只包含在原始的曲面细分处理之前的几何图形中存在的顶点。
(2)经过曲面细分的几何图形中的三角形不可以重叠。
(3)曲面细分应该是“严密的”。例如,共用边缘的任何两个三角形都应该共用整个边缘,并且不应该包含T型接头(junction)。一般地,T型接头会在两个三角形共用的边缘少于整个边缘的时候出现。
[0047] 应该注意的是,在经过曲面细分的几何图形400中,先前计算得到的边缘法向量的注释会继续存在。
[0048] 图5图示了根据一个或多个实施例的经过曲面细分的几何图形400的部分500。在各种不同的实施例中,在曲面细分的几何图形400中产生的三角形的顶点中的每一个都与至少三个数据片段相关联,该三个数据片段可被用于执行进一步的处理:
(1)顶点的位置(例如X和Y坐标)。
(2)顶点的进入边缘的边缘法线,例如如上文所图示。
(3)顶点的外出边缘的边缘法线,例如如上文所图示。
[0049] 例如,考虑部分500中的顶点502。该顶点502包括进入边缘法向量(“进入向量”)504和外出边缘法向量(“外出向量”)506。出于以下讨论的各种不同处理的目的,进入向量
504被注释为“inNormal”,并且外出向量506被注释为“outNormal”。
[0050] 对于以下所讨论的处理进一步来说,针对顶点502计算位移向量508。该位移向量508是作为进入向量504和外出向量506的平均函数而被计算的。用于计算该位移向量的一个示例等式是:
-norm(inNormal + outNormal),其中
因此,位移向量508是顶点502的负的角平分线。例如,对于每个顶点,位移向量可以
是通过对进入向量和外出向量取负平均来确定的。如下文中更详细描述的,可以执行这个计算,以便确定每一个顶点的位移向量。
[0051] 图6图示了进一步处理经过曲面细分的几何图形400来生成经过处理的几何图形600。为了生成经过处理的几何图形,针对曲面细分的几何图形400所计算的三角形被进一步处理成一组新的用于处理后的几何图形600的三角形,其中每一个三角形的每一个顶点都包括以下数据:
(1)顶点的“锚点”。一般地,顶点的锚点指的是顶点的两条线在其上相交的点。
(2)“位移”向量(例如,以如上述和下述方式所计算的)。
(3)被设置成0(零)或1(一)的“覆盖”值。一般地,覆盖值0意指该顶点是透明的,并且覆盖值1意指该顶点是不透明的。
[0052] 对于经过处理的几何图形600的三角形中的每一个的每个顶点,每一个顶点的“锚点”与“位移”的组合(连同稍后描述的再现变换一起)在被再现时指示该顶点的位置。
[0053] 然后,以如下方式来对三角形中的每一个进行处理:假设(v1, v2, v3)代表处理之前的三角形(例如,针对在图4中所图示的经过曲面细分的几何图形400中内部三角形的每一个)的顶点。三角形将被转换成具有以下顶点的经过处理的三角形:
如下定义的顶点1:
(1)锚点:v1pos
(2)位移:-norm(v1inNormal + v1outNormal)
(3)覆盖:1
如下定义的顶点2:
(1)锚点:v2pos
(2)位移:-norm(v2inNormal + v2outNormal)
(3)覆盖:1
如下定义的顶点3:
锚点:v3pos
位移:-norm(v3inNormal + v3outNormal)
覆盖:1
其中:“inNormal”指的是针对每一个顶点的进入边缘如上所计算的边缘法线;
“outNormal”指的是针对每一个顶点的外出边缘所计算的边缘法线;以及“锚点”指的是在处理前顶点的初始位置。
[0054] 如图6所图示,生成经过处理的几何图形600包括:通过使用根据上文的算法计算的位移向量来向内移位三角形的顶点,插入针对经过曲面细分的几何图形400所生成的内部三角形。
[0055] 例如,如上所讨论地处理三角形402,以便生成经过处理的三角形602;处理三角形404以便生成经过处理的三角形604;处理三角形406,以便生成经过处理的三角形606;以及处理三角形408,以便生成经过处理的三角形608。
[0056] 除了生成经过处理的几何图形600之外,还可以生成用于经过曲面细分的几何图形400的抗混叠信息。例如,考虑以下的讨论。
[0057] 图7图示了针对经过曲面细分的几何图形400中的每一个内部三角形生成“alpha渐变四边形”(四边形)。一般地,四边形是一组两个邻接三角形,该两个临接三角形形成在几何图形的再现期间可被用来应用抗混叠的四边形。在至少一些实施例中,四边形可以根据以下算法生成:对于对应于经过曲面细分的几何图形400的外边界边缘的三角形的每个边缘(va,
vb),发出(emit)包括具有以下顶点的两个三角形的四边形:
如下定义的顶点1:
锚点:vapos
位移:-norm(vainNormal + vaoutNormal)
覆盖:1
如下定义的顶点2:
锚点:vbpos
位移:-norm(vbinNormal + vboutNormal)
覆盖:1
如下定义的顶点3:
锚点:vbpos
位移:vbinNormal
覆盖:0
如下定义的顶点4:
锚点:vapos
位移:vaoutNormal
覆盖:0。
[0058] 例如,考虑在上文中引入的经过曲面细分的几何图形400的部分500的三角形402的外部边缘700。该外部边缘700包括与在上文和下文中讨论的算法中的“va”对应的顶点702。该外部边缘还包括与在上文和下文中讨论的算法中的“vb”相对应的顶点704。
[0059] 顶点702包括进入向量(“vainNormal”)706和外出向量(“vaoutNormal”)708。顶点704包括进入向量(“vbinNormal”)710和外出向量(“vboutNormal”)712。
[0060] 因此,根据如上所述的算法,用于外部边缘700的四边形的顶点将会如下:(1)顶点714,该顶点由顶点702的锚点和位移向量-norm(vainNormal + vaoutNormal)定义,并且覆盖值为1。
(2)顶点716,该顶点由顶点704的锚点和位移向量-norm(vbinNormal + vboutNormal)定义,并且覆盖值为1。
(3)顶点718,该顶点由依照进入向量710(例如vbinNormal)位移的顶点704的锚点
定义,并且覆盖值为0。
(4)顶点720,该顶点由依照外出向量708(例如vaoutNormal)位移的顶点702的锚点定义,并且覆盖值为0。
[0061] 因此,这些顶点被用来定义外部边缘700的四边形722。该四边形722包括共用一个共同边缘的三角形724和三角形726。
[0062] 针对经过曲面细分的几何图形400的每个外部边缘,这个生成四边形的过程可以继续进行,以便每一个外部边缘具有对应的四边形。如下所图示,在绘制几何图形以进行显示时,针对几何图形所生成的四边形将使得能够针对几何图形进行抗混叠。
[0063] 图8图示了用于上文所生成的四边形722的覆盖信息。如上文所提到的,顶点714、716具有覆盖值1,并且由此是不透明的。进一步,顶点718、720具有覆盖值0,并且由此是透明的。相应地,四边形722定义从在其内部边缘800处的不透明或半透明态到外部边缘
802处的透明态的转换的覆盖梯度。在至少一些实施例中,从不透明或半透明态到透明态的转换可以以恒定的速率发生。类似的覆盖梯度可以适用于针对经过曲面细分的几何图形
400的其他边缘所生成的剩余四边形。
[0064] 在至少一些实施例中,四边形是根据特定的宽度(例如,一个像素的宽度)而生成的。因此,在按比例放大和/或按比例缩小相关联的四边形时,用于该几何图形的四边形可以保持其指定宽度,以便使得能够由所述四边形所提供的抗混叠能够保持一致。
[0065] 图9图示了在至少一些实施例中,针对经过曲面细分的几何图形400中的每一个凸顶点生成一个“斜角alpha渐变”(“斜角”)。一般地,斜角是一个具有特定覆盖轮廓的三角形。如将在下文中会变得更显然的,斜角可用于填充在相邻四边形之间可能出现的间隙。
[0066] 对于经过曲面细分的几何图形400的每一个凸顶点来说,发出具有以下顶点的斜角:如下定义的顶点1:
锚点:vpos
位移:-norm(vinNormal + voutNormal)
覆盖:1
如下定义的顶点2:
锚点:vpos
位移:vinNormal
覆盖:0
如下定义的顶点3:
锚点:vpos
位移:vinNormal
覆盖:0。
[0067] 例如,考虑如上引入的经过曲面细分的几何图形400的部分500中三角形402的顶点900。该顶点900(“vpos”)包括进入向量902(“vinNormal”)和外出向量904(“voutNormal”)。用于顶点900的斜角是使用以下顶点生成的:
(1)顶点906,其由顶点900的锚点和位移向量-norm(vinNormal + voutNormal)定义,并且覆盖值为1。
(2)顶点908,其由顶点900的锚点和进入向量902(vinNormal)定义,并且覆盖值为0。
(3)顶点910,其由顶点900的锚点和外出向量904(vinNormal)定义,并且覆盖值为0。
[0068] 因此,这些顶点定义了用于顶点900的斜角912。
[0069] 图10图示了用于上文所生成的斜角912的覆盖信息。如上文所指示的,顶点906具有覆盖值为1,并且由此是不透明或半透明的。顶点908、810具有覆盖值0,并且由此是透明的。相应地,斜角912定义从顶点906处的不透明或半透明态转换到顶点908、910之间的边缘1000处的透明态的覆盖梯度。在至少一些实施例中,从不透明或半透明态到透明态的转换可以以恒定的速率进行。类似的覆盖梯度可以适用于针对经过曲面细分的几何图形400的其他凸顶点所生成的剩余斜角。
[0070] 在至少一些实施例中,斜角是根据特定的宽度(例如,一个像素的宽度)生成。因此,在按比例放大和/或按比例缩小相关联的几何图形时,该几何图形的斜角可以保持其指定宽度,以使得由斜角所提供的抗混叠能够保持一致。
[0071] 图11图示了可以将上文所生成的经过处理的几何图形、四边形以及斜角进行组合,以便生成可以如下文所讨论的方式而被绘制的实感。图11的上部图示了如上文讨论的那样生成的经过处理的几何图形600。
[0072] 图11的中心部分图示了针对经过曲面细分的几何图形400所生成的四边形集合1100,其包括上文所讨论的四边形722。例如,四边形集合1100中的单个四边形与针对经过曲面细分的几何图形400的每一个边缘生成的四边形相对应。
[0073] 图11的下部图示了针对经过曲面细分的几何图形400所生成的斜角集合1102,其包含了上文所讨论的斜角912。例如,该斜角集合1102中的单个斜角与针对经过曲面细分的几何图形400的凸顶点生成的斜角相对应。
[0074] 图12图示了将经过处理的几何图形600、四边形集合1100以及斜角集合1102组合在一起,以便形成可以被绘制和显示的集成的实感1200。考虑经过处理的几何图形600是不透明的。进一步,所述四边形和斜角定义了从与经过处理的几何图形600相邻近的不透明或半透明态到其外部边缘处的透明态的梯度。因此所述四边形和斜角会在再现几何图形200时,提供用于初始几何图形200的抗混叠。进一步,由于它们是基于基础的几何图形的属性(例如,顶点和/或法向量),因此所述四边形和斜角是与比例无关,并且因此针对可以被应用于基础几何图形的多种不同变换提供视觉上一致的抗混叠。
[0075] 已经描述了本文所描述的技术可以在其中进行操作的示例实现场景,现在考虑根据一个或多个实施例的示例过程。
[0076] 示例过程以下讨论描述根据一个或多个实施例的几何图形的抗混叠的一些示例过程。这些示例
过程可以在图1的环境100、图15的系统1500和/或其他任何适当的环境中采用。
[0077] 图13是描述根据一个或多个实施例的方法中的步骤的流程图。在至少一些实施例中,该方法描述用于再现几何图形的示例实感化过程。步骤1300接收要再现的几何图形。例如,该几何图形可以对应于从应用所接收的并作为用于显示的图形图像的部分的图元和/或图元集合。
[0078] 步骤1302展平该几何图形,并且从该几何图形中移除任何自相交线。例如,如果几何图形包含了任何更高级形状(例如,弧形,贝塞尔曲线等等),则这些形状将被“展平”成该形状的多边形近似。
[0079] 步骤1304计算针对几何图形的侧边的边缘单位法向量。上文讨论了用于计算单位法向量的示例实现方式。如上文所讨论的,几何图形的顶点都被利用用于进入和外出线段的单位法向量而进行注释。
[0080] 步骤1306对几何图形执行内部曲面细分,以便生成经过曲面细分的几何图形。如上文所讨论的,内部曲面细分包括将几何图形划分成内部三角形。上文讨论了用于内部曲面细分的示例准则。
[0081] 步骤1308对经过曲面细分的几何图形进行处理,以便生成具有经过位移的顶点的已处理的几何图形。如上文所指示的,处理经过曲面细分的几何图形包括根据各种不同的算法来调节经过曲面细分的几何图形的顶点的位置。例如,经过曲面细分的几何图形的三角形的顶点可以向内位移一个位移值,以便生成插入的几何图形。上文讨论了用于确定位移值的位移向量的示例算法。
[0082] 步骤1310生成用于几何图形的边缘的四边形。例如,用于几何图形的每一个边界边缘的四边形可以采用上文中讨论的方式生成。
[0083] 步骤1312针对多边形的凸顶点生成斜角。上文详细描述了用于生成这种斜角的示例方式。
[0084] 步骤1314对用于显示的经过处理的几何图形、四边形以及斜角进行处理,以便提供几何图形的抗混叠。在至少一些实施例中,该处理可以包括将经过处理的几何图形、四边形以及斜角转换成可再现的数据类型。例如,经过处理的几何图形、四边形以及斜角可被光栅化,以便进行显示。下文讨论对经过处理的几何图形、四边形以及斜角进行处理的示例方式。
[0085] 图14是描述根据一个或多个实施例的方法中的步骤的流程图。在至少一些实施例中,该方法描述了一种用于再现几何图形的示例光栅化过程,例如,该几何图形是已经经由参考图13所讨论的过程而被实感化的几何图形。
[0086] 步骤1400对已实感化的几何图形的顶点进行处理,以便生成用于每一个顶点的位置和覆盖。上文已经参考集成的实感1200讨论了已实感化的几何图形的示例。因此,经过处理的几何图形600、四边形集合1100以及斜角集合1102的顶点可以以如下所述的方式进行处理。在至少一些实施例中,这些顶点可以由适当的顶点着色器来处理,例如,该顶点着色器可以作为环境100的着色器模块112的部分而被包含。
[0087] 在至少一些实施例中,对特定的顶点的处理利用该顶点的初始位置,例如上文所讨论的锚点位置。所计算的位移向量和覆盖值(其示例在上文中被讨论)也被利用。然后,顶点的位置可以用以下公式来计算:其中M是一个3x2仿射矩阵,其示例被称为世界变换(world transformation);M’是平移分量被设置成0(零)的3x2仿射矩阵;vanchor是该顶点的锚点的初始位置;以及 vdisplacement是该顶点的所计算的位移向量。在至少一些实施例中,由于vdisplacement*M’被归一化成上述公式中的单位向量,因此,一些实现方式可以在实感化期间跳过在先前部分中所执行的vdisplacement自身的归一化。
[0088] 根据各种不同的实施例,如上所提到的计算可以采用多种不同的方式来执行。例如,实感的顶点可以在CPU上在绘制时间进行变换,并且位移向量可以在GPU上归一化。可替换地,所述变换和归一化都可以在CPU上执行。作为又另一个实施例,锚点和位移的锚点可被保存在实感中,并且可以经由例如着色器模块112的顶点着色器来计算该位移。
[0089] 步骤1402计算用于顶点的调制颜色。例如,针对每一个顶点,覆盖值可以用如上文所讨论的方式确定。针对每一个顶点,都会确定画笔,例如根据针对顶点定而义的图形数据来确定。一般地,画笔针对由几何图形所覆盖的特定像素来指定特定颜色值(例如,红绿蓝(RGB)值)。调制颜色可以通过将画笔值与针对与顶点相符合的像素而确定的覆盖值相乘来计算。例如,覆盖值为0的、与顶点相符合的像素是透明的,而覆盖值为1的、与顶点相符合的像素是不透明的并且经由相关联的画笔值来对其上色。介于0与1之间的多种不同的覆盖值都是可以采用的,例如部分不透明、部分透明等等。
[0090] 步骤1404基于几何图形的顶点的位置和调制颜色来显示该几何图形。例如,光栅化的几何图形可被提交给显示功能,以便在计算设备上进行显示。
[0091] 在至少一些实施例中,针对几何图形所生成的四边形和斜角使得几何图形能够被动态变换和重新再现多次,以便实现多种不同的画面。
[0092] 附加的实施例本文所讨论的几何图形的抗混叠技术可以在多种不同的场景中采用。例如,针对上文
所讨论的仿射变换,附加地或可替换地,可以采用这些技术以用于对经由透视变换所变换的几何图形进行抗混叠。这些技术还可以被用来对曲面几何图形应用抗混叠。例如,作为如上文所讨论的实感化过程的初始部分,曲面几何图形可以经由线段来近似。然后,这些线段可以以如上文所讨论的方式进行处理,以便提供抗混叠用于显示该曲面几何图形。
[0093] 已经讨论了示例的实现场景和附加的实施例,现在考虑讨论根据一个或多个实施例的示例系统和设备。
[0094] 示例系统和设备图15一般性地在1500处图示了包括示例计算设备1502的示例系统1500,该示例计算
设备代表可以实现本文所描述的各种不同技术的一个或多个计算系统和/或设备。例如,参考图1在上文中所讨论的计算设备102可以具体表现为计算设备1502。例如,该计算设备1502可以是服务供应商的服务器,与客户端相关联的设备(例如,客户端设备),片上系统,和/或其他任何适当的计算设备或计算系统。
[0095] 图示的示例计算设备1502包括彼此可通信地耦合的一个或多个输入/输出(I/O)接口1508、一个或多个计算机可读媒体1506以及处理系统1504。虽然未被示出,但是计算设备1502还可以包括将各种不同组件彼此进行耦合的系统总线或其他数据命令传输系统。系统总线可以包括不同总线结构中的任何一个或其组合,例如存储器总线或存储器控制器、外围总线、通用串行总线和/或利用多种不同总线架构中的任何一种的处理器或本地总线。诸如控制和数据线之类的其他多种不同的示例也可以被预期。
[0096] 处理系统1504代表使用硬件来执行一个或多个操作的功能。相应地,处理系统1504被图示成包括可被配置为处理器、功能块等等的硬件元件1510。这可以包括作为专用集成电路或者使用一个或多个半导体所形成的其他逻辑器件的硬件实现方式。该硬件元件
1510不受形成该元件的材料或是其内部所采用的处理机构的限制。例如,处理器可以包括(多个)半导体和/或晶体管(例如,电子集成电路(IC))。在这样的上下文中,处理器可执行指令可以是电子可执行的指令。
[0097] 计算机可读媒体1506被图示成包含存储器/存储装置1512。该存储器/存储装置1512代表与一个或多个计算机可读媒体相关联的存储器/存储装置的容量。所述存储器/存储装置1512可以包括易失性媒体(例如,随机存取存储器(RAM))和/或非易失性媒体(例如,只读存储器(ROM)、闪存、光盘,磁盘等等)。所述存储器/存储装置1512可以包括固定媒体(例如,RAM、ROM、固定硬盘驱动器等等)以及可移除媒体(例如,闪存、可移除硬盘驱动器、光盘等等)。如在下文中进一步描述的,计算机可读媒体1506可以以多种不同的其他方式进行配置。
[0098] (多个)输入/输出接口1508代表通过使用各种不同的输入/输出设备来允许用户将命令和信息输入到计算设备1502以及还允许将信息呈现给用户和/或其他组件或设备的功能。输入设备的示例包括键盘光标控制设备(例如,鼠标)、麦克(例如,用于话音识别和/或口头输入)、扫描仪、触摸功能(例如,被配置成检测物理触摸的电容或其他传感器)、摄像机(例如,可以采用可见波长或诸如红外频率之类的不可见波长来检测不涉及触摸的比如手势的移动的摄像机)等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡、触觉响应设备等等。因此,计算设备1502可以以下文中进一步描述的多种不同方式进行配置,以便支持用户交互。
[0099] 在本文中,各种不同的技术可以在软件、硬件元件或程序模块的一般上下文中被描述。一般地,这样的模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等等。本文所使用的术语“模块”、“功能”和“组件”一般地代表软件、固件、硬件或是其组合。本文所描述的技术特征与平台无关,这意指这些技术可以在具有多种不同的处理器的多种不同的商业计算平台上实现。
[0100] 所描述的模块和技术的实现方式可被保存在某种形式的计算机可读媒体上或者跨某种形式的计算机可读媒体而被传输。计算机可读媒体可以包括能被计算设备1502访问的多种不同的媒体。作为示例而非限制,计算机可读媒体可以包括“计算机可读存储媒体”以及“计算机可读信号媒体”。
[0101] 与仅仅信号传输、载波或信号本身相对比,“计算机可读存储媒体”可以指使得能够对信息进行持续存储的媒体和/或设备。因此,计算机可读存储媒体不包括信号本身。计算机可读存储媒体包括以适合存储诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据之类的信息的方法或技术而实现的例如易失性和非易失性、可移除和不可移除的媒体和/或存储设备之类的硬件。计算机可读存储媒体的示例可以包括但不局限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多用途盘(DVD)或其他光存储装置、硬盘、盒式磁带、磁带、磁盘存储装置或其他磁性存储设备、或是适合于存储所期望的信息并能被计算机访问的其他存储设备、有形媒体或制品。
[0102] “计算机可读信号媒体”可以指被配置成诸如经由网络来向计算设备1502的硬件传送指令的信号承载介质。信号媒体通常可以包括计算机可读指令、数据结构、程序模块或者在诸如载波、数据信号或其他传输机制之类的调制数据信号中的其他数据。信号媒体还包括任何信息递送媒体。术语“调制数据信号”意指这样的信号,其特征中的一个或多个以这样的方式被设置或改变以便在该信号中编码信息。作为示例而非限制,通信媒体包括有线媒体(例如,有线网络或直接连线连接),以及无线媒体(例如,声学、射频(RF)、红外及其他无线媒体)。
[0103] 如先前所描述的,硬件元件1510和计算机可读媒体1506代表以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其中所述硬件形式在一些实施例中可以被采用,以便实现本文所描述的技术的至少一些方面。硬件元件可以包括集成电路或片上系统的组件、专用集成电路(ASIC)、现场可编程阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及采用了或其他硬件设备的其他实现方式。在这个上下文中,硬件元件可以作为执行由硬件元件所包含的指令、模块和/或逻辑所定义的程序任务的处理设备,以及作为被利用来存储指令以供运行的硬件设备(例如,先前所描述的计算机可读存储媒体)来操作。
[0104] 前述内容的组合还可以被采用来实现本文所描述的各种不同的技术和模块。相应地,软件、硬件或程序模块和其他程序模块可以作为在某种形式的计算机可读存储媒体上和/或由一个或多个硬件元件1510包含的一个或多个指令和/或逻辑而被实现。计算设备1502可以被配置成实现与软件和/或硬件模块对应的特定指令和/或功能。相应地,可以由计算设备1502作为软件运行的模块的实现方式至少可以部分地以硬件实现,例如,通过使用处理系统的计算机可读存储媒体和/或硬件元件1510。这些指令和/或功能可以由一个或多个制品执行/操作(例如,一个或多个计算设备1502和/或处理系统1504),以便实现本文所描述的技术、模块和示例。
[0105] 如图15中所进一步图示的,当在个人计算机(PC)、电视设备和/或移动设备上运行应用时,示例系统1500使得能够实现用于无缝用户体验的普适性环境。在利用应用、玩视频游戏、观看视频等的同时从一个设备转到下一个设备时,服务和应用在所有三种环境中是以基本相似的方式运行以用于共同的用户体验。
[0106] 在示例系统1500中,多个设备通过中央计算设备相互连接。中央计算设备可以位于多个设备本地,或者可以位于远离多个设备。在一个实施例中,中央计算设备可以是通过网络、因特网或其他数据通信链路连接到多个设备的一个或多个服务器计算机的
[0107] 在一个实施例中,这种互连架构使得功能能够跨多个设备进行递送,以便向多个设备的用户提供共同和无缝的体验。多个设备中的每一个可以具有不同的物理需求和能,并且中央计算设备使用平台来使得能够向设备递送既针对该设备进行定制又对全部设备通用的体验。在一个实施例中,创建目标设备的类,并且针对设备的通用类来定制体验。设备的类可以由设备的物理特征、使用类型或其他共同特性来定义。
[0108] 在各种不同的实施方式中,计算设备1502可以采用诸如用于计算机1514、移动站1516以及电视1518使用之类的多种不同的配置。这些配置中每一个都包括可以具有一般地不同的构造和能力的设备,并且因此可以根据一个或多个不同的设备类来配置计算设备
1502。例如,计算设备1502可以作为设备的计算机1514类来实现,所述设备的计算机1514类包括个人计算机、台式计算机、多屏计算机、膝上型计算机、上网本等等。
[0109] 计算设备1502还可以作为设备的移动站1516类来实现,设备的移动站1516类包含移动设备(例如,移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏计算机等等)。计算设备1502也可以作为设备的电视1518类来实现,所述设备的电视1518类包括具有或者被连接到在休闲观看环境中的一般更大的屏幕的设备。这些设备包括电视机、机顶盒、游戏控制台等等。
[0110] 计算设备1502的这些各种不同配置可以支持本文所描述的技术,并且本文所描述的技术不限于本文所描述的技术的特定示例。例如参考图形管理器模块110所讨论的功能可以全部或者部分通过使用分布式系统而被实现(例如,如下文所描述的经由平台1522在“云”1520上实现)。
[0111] 云1520包括和/或代表用于资源1524的平台1522。平台1522对云1520的硬件(例如,服务器)和软件资源的底层功能进行抽象。资源1524可以包括可以在远离计算设备
1502的服务器上执行计算机处理的同时而被利用的应用和/或数据。资源1524还可以包括通过因特网和/或通过诸如蜂窝或Wi-Fi网络之类的订户网络所提供的服务。
[0112] 平台1522可以对资源和功能进行抽象以便将计算设备1502连接到其他计算设备。所述平台1522还可以用于对资源的伸缩进行抽象,以便提供对应的伸缩等级给所遇到的针对经由平台1522所实现的资源1524的请求。相应地,在互联设备的实施例中,本文所描述的功能的实现方式可以分布在整个系统1500中。例如,功能可以部分在计算设备1502上实现,可以经由对云1520的功能进行抽象的平台1522来实现。
[0113] 本文讨论了可被实现来执行本文所讨论的技术的多种方法。这些方法的方面可以以硬件、固件、软件或其组合的方式实现。这些方法作为指定由一个或多个设备执行的操作并且未必局限于被示出以用于由相应的块执行操作的顺序的一组步骤而被示出。进一步,相对于特定方法所示出的操作可以根据一个或多个实现方式与不同方法的操作进行组合和/或与不同方法的操作相互交换。方法的方面可以经由在参考环境100在上文中所讨论的各种不同的实体之间的交互而实现。
[0114] 结论描述了用于几何图形的抗混叠技术。尽管实施例是以特定于结构特征和/或方法动作
的语言进行描述,但是要理解的是,在所附权利要求中定义的实施例未必受限于所描述的特定特征或动作。相反,特定的特征和动作是作为实现要求保护的实施例的示例形式而被公开的。
QQ群二维码
意见反馈