用于执行路径描边的方法和设备本申请要求于2015年9月11日提交到韩国知识产权局的第10-2015-0129090号韩
国专利申请的权益,所述申请的全部公开通过出于所有目的的引用被包含于此。
技术领域
本公开涉及一种用于执行路径描边的方法和设备。
背景技术
对关于用于在向量图形或路径渲染正在进行时提高图形处理单元(GPU)的加速性
能的方法的研究正在进行。在路径渲染的情况下,输入数据不是由三角形组成,而是由命令
和顶点的组合组成。因此,很难在路径渲染的期间提高GPU的加速性能。
发明内容
提供本发明内容来以简化的形式介绍在以下的具体实施方式中被进一步描述的
构思的选择。本发明内容不意图识别要求的主题的关键特征或本质特征,也不意图用于帮
助确定要求的主题的范围。
在一个总的方面,一种执行路径描边的方法包括:使用关于路径的数据确定是否
将出现基于包括在路径中的图元的走样;基于确定的结果产生将用于执行路径描边的纹
理;沿图元的边缘对纹理进行映射。
确定的步骤可包括:基于使用路径数据计算的图元的斜率确定是否将发生走样。
确定的步骤可包括:响应于图元的斜率具有值0或无限值,确定将不发生走样;响
应于图元的斜率既不具有值0也不具有无限值,确定将发生走样。
产生的步骤可包括:响应于确定的结果为将不发生走样,使用描边颜色产生第一
纹理;响应于确定的结果为将发生走样,使用描边颜色和通过向描边颜色施加渐变效果而
得到的颜色产生第二纹理。
产生的步骤可包括:响应于确定的结果为将不发生走样,产生与描边宽度对应的
第一纹理;响应于确定的结果为将发生走样,产生比描边宽度长的第二纹理。
产生第二纹理的步骤可包括:基于与图元的斜率对应的角度和描边宽度产生第二
纹理。
产生第二纹理的步骤可包括:通过向第二纹理的与描边宽度对应的部分施加描边
颜色产生第二纹理,并向第二纹理的超出描边宽度的部分施加通过向描边颜色施加渐变效
果而得到的颜色。
映射的步骤可包括:将纹理顺序地映射到基于包括在图元中的每个像素而设置的
特定区域。
特定区域包括基于包括在图元中的像素的具有与纹理的宽度对应的宽度的区域。
映射的步骤可包括:在基于图元的斜率而确定的方向上对纹理进行映射。
在基于图元的斜率而确定的方向上对纹理进行映射的步骤可包括:响应于图元的
斜率具有值0或无穷值,在垂直于图元的方向上对纹理进行映射;响应于图元的斜率具有大
于0且小于1的绝对值,在水平方向上对纹理进行映射;响应于图元的斜率既不具有值0也不
具有无穷值并且具有等于或大于1的绝对值,在垂直方向上对纹理进行映射。
要求保护的方法还可包括:响应于路径为曲线,将路径划分成多个图元;确定的步
骤可包括:确定是否将发生基于所述多个图元中的每个图元的走样。
划分的步骤可包括:基于德卡斯特里奥算法(De Casteljau's algorithm)将作为
曲线的路径划分成所述多个图元。
在另一总的方面,一种存储指令的非暂时性计算机可读存储介质,当由处理器运
行所述指令时,使得处理器执行以上描述的方法。
在另一总的方面,一种用于执行路径描边的设备包括:产生器,被配置为使用关于
路径的数据确定是否将发生基于包括在路径中的图元的走样,并基于确定的结果产生将用
于执行路径描边的纹理;映射器,被配置为沿图元的边缘对纹理进行映射。
产生器还可被配置为基于使用路径数据计算的图元的斜率确定是否将发生走样。
产生器还可被配置为:响应于图元的斜率具有值0或无穷值,确定将不发生走样,
并响应于图元的斜率既不具有值0也不具有无穷值,确定将发生走样。
产生器还可被配置为:响应于确定的结果为将不发生走样,使用描边颜色产生第
一纹理,并响应于确定的结果为将发生走样,使用描边颜色和通过向描边颜色施加渐变效
果而得到的颜色产生第二纹理。
产生器还可被配置为:响应于确定的结果为将不发生走样,产生与描边宽度对应
的第一纹理,并响应于确定的结果为将发生走样,产生比描边宽度长的第二纹理。
产生器还可被配置为:基于与图元的斜率对应的角度和描边宽度产生第二纹理。
产生器还可被配置为:通过向第二纹理的与描边宽度对应的部分施加描边颜色产
生第二纹理,并向第二纹理的超出描边宽度的部分施加通过向描边颜色施加渐变效果而得
到的颜色。
映射器还可被配置为:将纹理顺序地映射到基于包括在图元中的每个像素而设置
的特定区域。
特定区域包括基于包括在图元中的像素的具有与纹理的宽度对应的宽度的区域。
映射器还可被配置为:在基于图元的斜率而确定的方向上对纹理进行映射。
映射器还可被配置为:响应于图元的斜率具有值0或无穷值,在垂直于图元的方向
上对纹理进行映射;响应于图元的斜率具有大于0且小于1的绝对值,在水平方向上对纹理
进行映射;响应于图元的斜率既不具有值0也不具有无穷值并且具有等于或大于1的绝对
值,在垂直方向上对纹理进行映射。
所述设备还可包括:划分器,被配置为响应于路径为曲线将路径划分成多个图元;
产生器还可被配置为确定是否将发生基于所述多个图元中的每个图元的走样。
划分器还可被配置为基于德卡斯特里奥算法将作为曲线的路径划分成所述多个
图元。
在另一总的方面,一种连接到图形处理单元(GPU)的中央处理单元(CPU),所述CPU
被配置为:使用关于路径的数据确定是否将发生基于包括在路径中的图元的走样;基于确
定的结果请求所述GPU产生纹理;从所述GPU接收纹理;沿图元的边缘对纹理进行映射;所述
GPU被配置为从所述CPU接收产生纹理的请求,并响应于所述请求产生纹理。
所述CPU还可被配置为将纹理存储在所述CPU中。
所述GPU还可被配置为将纹理存储在所述GPU中。
在另一总的方面,图形处理单元(GPU)连接到中央处理单元(CPU),所述GPU还被配
置为:使用关于路径的数据确定是否将发生基于包括在路径中的图元的走样;基于确定的
结果产生纹理;沿图元的边缘对纹理进行映射。
所述CPU还可被配置为将关于路径的数据存储在所述CPU中;所述GPU还可被配置
为从所述CPU接收关于路径的数据。
在另一总的方面,一种用于执行路径描边的设备包括:产生器,被配置为使用关于
包括图元的路径的数据产生能有效抵消在沿图元进行描边期间发生的任何走样的纹理;映
射器,被配置为通过沿图元对纹理进行映射来执行描边。
产生器还可被配置为:使用关于路径的数据确定在描边期间是否将发生走样;响
应于确定的结果为在描边期间将不发生走样,产生不包括反走样部分的第一纹理;响应于
确定的结果为在描边期间将发生走样,产生包括反走样部分的第二纹理;映射器还可被配
置为通过对已沿图元产生的第一纹理和第二纹理之一进行映射来执行描边。
产生器还可被配置为:通过向第一纹理的具有等于描边宽度的长度的部分施加描
边颜色来产生第一纹理,第一纹理不包括任何其他部分;通过向第二纹理的具有等于描边
宽度的长度的第一部分施加描边颜色来产生第二纹理,并向第二纹理的第二部分施加通过
向描边颜色施加渐变效果而得到的颜色。
映射器还可被配置为:通过沿图元对纹理进行映射来执行描边,以使得纹理的一
端在图元上并且纹理远离图元而延伸。
映射器还可被配置为:通过沿图元对纹理进行映射来执行描边,以使得纹理的一
端在图元上并且纹理在相反方向上远离图元的延伸以获取等于纹理的宽度的二倍的最终
描边宽度。
其他特征和方面将从以下详细描述、附图和权利要求而清楚。
附图说明
图1是示出描边设备的示例的配置的示图。
图2A和图2B是示出描边和填充的示例的示图。
图3是示出由描边设备执行的路径渲染的方法的示例的流程图。
图4是示出产生器确定是否将发生走样并产生纹理的示例的流程图。
图5是示出图元的斜率和走样的发生之间的相关性的示例的示图。
图6是示出第一纹理的示例的示图。
图7是示出第二纹理的示例的示图。
图8是示出产生器确定是否将发生走样并产生纹理的另一示例的流程图。
图9是示出产生器产生第二纹理的示例的示图。
图10是示出产生器产生第三纹理的示例的示图。
图11是示出产生器产生第四纹理的示例的示图。
图12是示出映射器的操作的示例的示图。
图13A和图13B是示出映射器的操作的其他示例的示图。
图14是示出描边设备的另一示例的配置的示图。
图15A至图15D是示出划分器的操作的示例的示图。
图16和图17是示出执行路径描边的方法的示例的流程图。
图18至图21是示出在中央处理单元(CPU)或图形处理单元(GPU)中实现执行路径
描边的方法的示例的示图。
贯穿附图和详细描述,相同的参考标号表示相同的元件。附图可不按照比例,并且
为了清楚、说明和方便,附图中的元件的相对大小、比例和描绘可被夸大。
具体实施方式
提供下面的详细描述以帮助读者获得对这里描述的方法、设备和/或系统的全面
理解。然而,这里描述的系统、设备和/或方法的各种改变、修改和等同物对于本领域的普通
技术人员将是明显的。这里描述的操作的顺序仅为示例,不限于这里阐述的顺序,除了有必
要按照特定次序发生的操作以外,可如对于本领域的普通技术人员将是明显的那样被改
变。另外,为了更清楚和简洁,可省略本领域的普通技术人员公知的功能和构造的描述。
这里描述的特征可被以不同的形式实现,并将不被解释为限于这里描述的示例。
相反,已提供这里描述的示例,使得本公开将是全面且完整的,并且将向本领域的普通技术
人员传达本公开的全部范围。
在本说明书中使用的术语中,考虑到本说明书中描述的功能而尽可能选择当前广
泛使用的一般术语,但是可根据本领域普通技术人员的意图、法律先例、新技术的出现以及
其他因素而改变。一些术语可被任意选择,在这种情况下,这些术语的具体含义已在相应描
述中陈述。因此,在本说明书中使用的术语将基于术语的含义与贯穿本说明书的描述一起
被限定,而不是被术语的简单的名称被限定。
贯穿本说明书,当部分“包括”元件时,除非另外描述,否则还可包括另一元件,而
不是排除其他元件的存在。
图1是示出描边设备的示例的配置的示图。
参照图1,描边设备100包括产生器110和映射器120。在图1中示出的描边设备100
中,仅示出与本示例有关的组件。因此,除了图1中示出的组件之外,还可包括执行渲染所涉
及的其他通用组件。此外,描边设备100可被实现为中央处理器(CPU)、图形处理单元(GPU)
或硬件加速器(HWA)。
路径是构成作为渲染的目标的对象的元素。换言之,对象可包括闭合多边形或通
过连接至少一条路径而形成的闭合路径。例如,路径可对应于线或曲线。图元是用于渲染的
元素,表示对象或路径的具体单元。在一些情况下,路径和图元可表示相同的事物。
输入到描边设备100的路径数据包括与包括在路径中的多个顶点中的每个的坐标
和用于通过组合顶点来配置路径的命令有关的信息。顶点可包括与路径的起始位置对应的
顶点和与路径的结束位置对应的顶点,并且还可包括在曲线情况下用于控制中间位置的控
制点。
例如,当从包括在帧中的像素之中的第一像素至第二像素的线被假设为路径时,
顶点表示与第一像素和第二像素中的每个对应的点。因此,路径数据可包括与第一像素对
应的第一顶点的坐标、与第二像素对应的第二顶点的坐标和从第一顶点至第二顶点绘制线
的命令。
为此,参照路径数据,能够获取关于路径的位置和前进方向的信息以及关于组成
该路径的每个顶点的坐标的信息。当假定路径为线时,还能够基于路径数据获取关于线的
斜率的信息。此外,路径数据还可包括关于将针对每个像素被设置的颜色值的信息。
输入到描边设备100的描边数据包括描边宽度、描边颜色和背景颜色之中的至少
一条信息。描边表示对与对象的轮廓对应的像素进行上色的处理。
由于对象由至少一条路径或至少一个图元组成,所以描边表示对与路径或图元对
应的像素进行上色的处理。因此,当描边设备100接收描边数据时,在与描边宽度对应的像
素中显示描边颜色。以下参照图2A至图2B描述描边。
图2A和图2B是示出描边和填充的示例的示图。
图2A示出由描边设备100对对象210执行的描边的示例,图2B示出由描边设备100
对对象220执行的填充的示例。
参照图2A,对象210的轮廓被显示为一种颜色。换言之,在对象210的轮廓中示出特
定颜色,使得对象210与背景区分。描边设备100以描边颜色显示与轮廓对应的图元。描边设
备100通过将描边颜色输入到与图元对应的像素来执行描边。
同时,参照图2B,对象220的内部区域被显示为单一颜色。对象220的轮廓与背景是
相同颜色。换言之,描边设备100通过将特定颜色输入到与对象220的内部区域对应的像素
来执行填充。
返回参照图1,产生器110基于确定结果产生纹理。纹理是描边设备100用来执行描
边的图像。当产生器110产生纹理时,映射器120将纹理映射到包括在特定区域中的像素。
产生器110使用路径数据确定是否将发生基于包括在路径中的图元的走样
(aliasing)。例如,产生器110使用路径数据计算图元的斜率,并基于计算的斜率确定是否
将发生走样。
例如,当确定将不发生走样时,产生器110使用描边颜色产生纹理。另一方面,当确
定将发生走样时,产生器110使用描边颜色和通过向描边颜色施加渐变效果而得到的颜色
(以下被称为“渐变颜色”)产生纹理。
换言之,产生器110针对将不发生走样的图元产生不具有颜色改变的纹理,并且针
对将发生走样的图元产生具有颜色改变的纹理。
映射器120沿图元的边缘对纹理进行映射。例如,映射器120顺序地将产生的纹理
映射到基于包括在图元中的每个像素而设置的特定区域。特定区域是基于包括在图元中的
像素的具有与纹理的区域对应的区域的区域。
如上所述,针对将发生走样的图元产生具有颜色改变的纹理。具有颜色改变的纹
理的部分是用于提供反走样效果的部分。因此,映射器120对具有颜色改变的纹理进行映
射,使得已执行反走样和描边的结果被输出。换言之,由于描边设备100同时执行描边操作
和反走样操作,因此描边设备100的操作所必需的计算量减少,使得能够以高速执行渲染。
以下参照图3详细描述描边设备100的操作的示例。
图3是示出由描边设备执行的执行路径渲染的方法的示例的流程图。
参照图3,执行路径渲染的方法包括在图1所示的描边设备100中顺序执行的操作。
因此,以上提供的图1所示的描边设备100的描述即使在以下被省略,也可应用于图3中示出
的执行路径渲染的方法。
在操作310,产生器110使用路径数据确定是否将发生基于包括在路径中的图元的
走样。例如,产生器110基于图元的斜率确定是否将发生走样。
在操作320,产生器110基于确定的结果产生将被用于执行路径描边的纹理。产生
器110根据是否将发生走样使用包括在描边数据中的信息产生纹理。可将产生的纹理存储
在描边设备100的存储器(未示出)中。
在一个示例中,当确定将不发生走样时,产生器110使用描边颜色产生纹理。另一
方面,当确定将发生走样时,产生器110使用描边颜色和渐变颜色产生纹理。
在另一示例中,当确定将不发生走样时,产生器110产生与描边宽度对应的纹理。
另一方面,当确定将发生走样时,产生器110产生比描边宽度长的纹理。
以下参照图4至图6描述产生器110确定是否将发生走样并产生纹理的示例。
图4是示出产生器确定是否将发生走样并产生纹理的示例的流程图。
在操作410,产生器110确定图元的斜率是否具有值0或无穷大值。具有值0或无穷
大值的图元的斜率指示不发生基于图元的走样。例如,假设图元为线,具有值0的线的斜率
指示已经以水平方向绘制该线。此外,具有无穷大值的线的斜率指示已经以垂直方向绘制
该线。水平方向和垂直方向表示在帧中绘制线的方向。
另一方面,既不具有值0也不具有无穷大值的图元的斜率指示将发生基于图元的
走样。例如,假设图元为线,当在帧中已经以对角线方向绘制该线时,线的斜率既不具有值0
也不具有无穷大值。
例如,产生器110参照路径数据计算图元的斜率。路径数据包括关于包括在路径中
的多个顶点中的每个的坐标以及用于通过组合顶点来构造路径的命令的信息。因此,产生
器110参照路径数据确定图元的起始顶点和结束顶点,并确定图元是线还是曲线。当图元是
线时,产生器110计算线的斜率。简言之,参照路径数据,产生器110确定图元的斜率是具有
值0还是无穷大值。当图元的斜率具有值0或无穷大值时,处理前往操作420。否则,处理前往
操作430。以下描述操作420和430。
以下参照图5描述图元的斜率和走样的发生之间的相关性的示例。
图5是示出图元的斜率和走样的发生之间的相关性的示例的示图。
图5示出在帧510中绘制的对象520的示例。帧510由多个像素511组成。例如,可将
1024×768个像素布置成矩阵形式来构成帧510。然而,包括在帧510中的像素的数量不限于
1024×768个。
当描边设备100执行对象520的渲染时,针对与图元对应的像素设置颜色。因此,在
帧510中输出已经过渲染的对象520的形状。
以下描述假设帧510的横向方向为水平方向并且帧510的纵向方向为垂直方向。然
而,可根据观看帧510的方向而互换水平方向和垂直方向。
可以以水平方向或垂直方向绘制构成对象520的一些图元(诸如,图5的图元521)。
因此,当针对包括在帧510中的多个像素511之中的对应于图元521的像素设置颜色时,在帧
510中不失真地输出图元521的形状。
当帧510的水平方向被指定为x轴方向并且垂直方向被指定为y轴方向以设置坐标
时,图元521的斜率为0。另一方面,当帧510的垂直方向被指定为x轴方向并且水平方向被指
定为y轴方向以设置坐标时,图元521的斜率为无穷。换言之,图元521被形成为布置像素511
的方向。因此,当针对与图元521对应的像素设置颜色时,图元521的形状被不失真地表示。
简言之,当图元521的斜率为0或无穷大时,在帧510中不失真地输出图元521。因
此,不发生基于图元521的走样。
同时,构成对象520的其他图元(诸如,图5的图元522)可被绘制为对角线。如上所
述,帧510中的像素511被布置成矩阵形式。因此,当针对与图元522对应的像素设置颜色时,
在帧510中以变形的状态输出图元522的形状(图元522的轮廓)。
当使用帧510的水平方向和垂直方向作为轴来设置坐标时,图元522的斜率既不为
0也不为无穷值。简言之,当图元522的斜率既不为0也不为无穷值时,图元522变形并且在帧
510中被输出。因此,发生基于图元522的走样。
产生器110根据是否将发生走样产生不同的纹理。具体地,当确定在图元522中将
发生走样时,产生器110使用描边颜色和渐变颜色产生纹理。因此,当映射器120将纹理映射
到包括图元522的区域时,描边操作和反走样操作被同时执行。
由产生器110针对图元522产生的纹理可被映射到具有图元522中的所有像素作为
起始点并且在垂直于图元522的方向上的存在于1/2的描边宽度处的点作为结束点的直线。
这是因为由用户定义的描边宽度和路径描边颜色在同一图元中是不变的。例如,当由用户
定义的描边宽度为10时,具有描边宽度5的纹理被产生并被映射到下述直线上:具有图元上
的任意点作为起始点,在垂直于图元的两个方向上按照宽度5远离图元的点作为结束点。
当由用户定义的描边宽度为2W时,在一个方向上距垂直于图元的图元的宽度(即,
“描边宽度”)为W。以下参照的描边宽度W表示在垂直于图元的一个方向上的宽度。
返回参照图4,在操作420,产生器110使用描边颜色产生第一纹理。例如,产生器
110产生整个区域被设置为描边颜色的第一纹理。
产生器110参照描边数据检查描边宽度。然后,产生器110产生第一纹理,使得针对
与描边宽度对应的像素设置描边颜色。换言之,产生第一纹理以使得针对包括在第一纹理
中的所有像素设置相同颜色。以下参照图6描述第一纹理的示例。
图6是示出第一纹理的示例的示图。
在图6中,示出第一纹理610的示例。产生器110从描边数据获取关于描边颜色和描
边宽度W的信息并针对与描边宽度W对应的像素设置描边颜色,从而产生第一纹理610。
第一纹理610的高度对应于单个像素的高度。换言之,第一纹理610具有按一条具
有与描边宽度W对应的长度的线布置的像素的形式。例如,假设描边宽度为10并且描边颜色
为黑色,产生器110将第一纹理610产生为从像素P至像素P1的10个像素被设置为黑色并被
布置为一条线的形式。像素P是包括在图元中的像素,并且像素P1右边的区域对应于背景
BG。
返回参照图4,在操作430,产生器使用描边颜色和渐变颜色产生第二纹理。例如,
产生器110产生局部区域被设置为描边颜色并且剩余区域被设置为渐变颜色的第二纹理。
产生器110参照描边数据检查描边宽度。然后,产生器110产生第二纹理的局部区
域以使得与描边宽度对应的像素被设置为描边颜色。此外,产生器110产生第二纹理的剩余
区域以使得与特定宽度对应的像素被设置为渐变颜色。换言之,产生第二纹理以使得针对
包括在第二纹理中的像素设置两个或更多个颜色。以下参照图7描述第二纹理的示例。
图7是示出第二纹理的示例的示图。
在图7中,示出第二纹理710的示例。产生器110从描边数据获取关于描边颜色和描
边宽度W的信息。然后,产生器110针对与描边宽度W对应的像素设置描边颜色,并针对与反
走样宽度W_AA对应的像素设置渐变颜色,从而产生第二纹理710。
第二纹理710的高度对应于单个像素的高度。换言之,第二纹理710具有按一条具
有与描边宽度W和反走样宽度W_AA对应的长度的线来布置的像素的形式。例如,假设描边宽
度为10,反走样宽度W_AA为1,描边颜色为黑色,背景颜色为白色,产生器110将从像素P至像
素P1的10个分别的像素设置为黑色并将像素P1’设置为从黑色到白色逐渐改变的渐变颜
色。然后,产生器110以被布置为一条线的11个像素的形式来产生第二纹理710。像素P是包
括在图元中的像素,并且像素P1’右边的区域对应于背景BG。
由产生器110如以下参照图8和图9所描述的来计算反走样宽度W_AA。
图8是示出产生器确定是否将出现走样并产生纹理的另一示例的流程图。
图8的操作810对应于图4的操作410。因此,以下省略操作810的详细描述。
在操作820,产生器110产生与描边宽度对应的第一纹理。
在操作830,产生器110产生比描边宽度长的第二纹理。在一个示例中,产生器110
基于与图元的斜率对应的角度和描边宽度来产生第二纹理。换言之,产生器110根据与图元
的斜率对应的角度和描边宽度分别计算将设置描边颜色的区域(与图7的W对应的区域)的
宽度和将设置渐变颜色的区域(与图7的W_AA对应的区域)的宽度。以下参照图9描述产生器
110基于与图元的斜率对应的角度和描边宽度产生第二纹理的示例。
图9是示出产生器产生第二纹理的示例的示图。
在图9中,示出图元910的示例和第二纹理920的示例。产生器110基于与图元910的
斜率对应的角度θ和描边宽度W计算第一宽度L和第二宽度L_AA。第一宽度L表示将设置描边
颜色的区域的宽度,第二宽度L_AA表示将设置渐变颜色的区域的宽度。
在一个示例中,产生器110根据以下等式1计算第一宽度L。
在等式1中,L表示第一宽度,W表示描边宽度,θ表示与图元910的斜率对应的角度,
90-θ是以度数表示的角度θ的余角。
此外,产生器110根据以下等式2计算第二宽度L_AA。
在等式2中,L_AA表示第二宽度,W_AA表示反走样宽度,L表示第一宽度,W表示描边
宽度。
一般地,反走样宽度W_AA可被设置为1。假设反走样宽度W_AA为1,将等式1代入等
式2得到以下等式3。
参照上述等式1至等式3,随着图元910的斜率变小(随着θ变小),第一宽度L变大,
并且第二宽度L_AA也与第一宽度L成比例变大。在等式3中,90-θ是以度数表示的角度θ的余
角。
产生器110根据等式1和等式3计算第一宽度L和第二宽度L_AA,从描边数据获取关
于描边颜色的信息,并基于第一宽度L、第二宽度L_AA和关于描边颜色的信息产生第二纹理
920。
对象可由不同路径或不同图元的组合构成。因此,可产生不同图元重叠的区域(以
下被称为“重叠区域”)。在一个示例中,除了上述第一纹理和第二纹理之外,产生器110还产
生将被映射到重叠区域的第三纹理,并产生将被映射到图元端部的第四纹理。以下参照图
10和图11描述产生器110分别产生第三纹理和第四纹理的示例。
图10是示出产生器产生第三纹理的示例的示图。
在图10中,示出由四个不同图元1011、1012、1013和1014形成的对象1020的示例。
图10的对象1020被示出为通过组合四个不同图元1011、1012、1013和1014并对图元1011、
1012、1013和1014执行描边操作而产生的矩形。然而,对象的形状不限于矩形,可根据多个
图元的组合产生具有不同形状的对象。
当对图元1011、1012、1013和1014执行描边操作时,产生四个不同的重叠区域
1021、1022、1023和1024。除了上述第一纹理或第二纹理之外,产生器110还产生将被映射到
重叠区域1021、1022、1023和1024中的每个的第三纹理1030。
例如,产生器110将第三纹理1030产生为圆形。如同第二纹理一样,第三纹理1030
被产生为描边颜色和渐变颜色的组合。当第三纹理1030为圆形时,第三纹理1030的轮廓不
是被仅被布置为帧的水平或垂直方向的像素所实现。换言之,当第三纹理1030为圆形时,将
发生基于具有与第三纹理1030对应的形状的图元的走样。
因此,产生器110基于描边颜色和渐变颜色产生第三纹理1030。产生器110将描边
颜色施加到包括在距中心点1031的半径r的区域。半径r等于以上结合图5参照的由用户定
义的描边宽度2W。此外,产生器110将渐变颜色施加到与施加描边颜色的区域相邻的特定区
域。基于反走样宽度W_AA确定特定区域。产生的第三纹理1030可被存储在描边设备100的存
储器(未示出)中。
以下描述的映射器120将第三纹理1030映射到重叠区域1021、1022、1023和1024中
的每个。例如,映射器120通过将第三纹理1030的中心点1031的坐标(x,y)设置为通过对图
元1011和1014执行描边操作而形成的重叠区域1021的内角处的点1051来将第三纹理1030
的一部分(例如,第三纹理1030的四分之一部分)映射到重叠区域1021。用于产生将被映射
到通过对两个图元执行的描边操作而形成的重叠区域的第三纹理1030的一部分(例如,
1041)的角度等于由这两个图元形成的外角(180度-内角)。例如,两个图元1011和1014的外
角为90度,因此第三纹理1030的一部分(90度,即,四分之一部分)被映射到重叠区域1021。
因此,输出第三纹理1030的一部分被映射到重叠区域1021的结果1041。
图11是示出产生器产生第四纹理的示例的示图。
在图11中,示出由图元1110形成的对象1120的示例。图11的对象1120被示出为通
过对图元1110执行描边操作而产生的线。
当对图元1110执行描边操作时,产生两个端部区域1121和1122。除了上述第一纹
理和第二纹理之外,产生器110还产生将被映射到端部区域1121和1122中的每个的第四纹
理1130。
例如,产生器110将第四纹理1130产生为圆形。在这个示例中,第四纹理1130与图
10的第三纹理1030相同,除了在第四纹理1130中距施加描边颜色的区域的中心点1131的半
径r等于图11所示的描边宽度W而不是图10所示的由用户定义的描边宽度2W以外。因此,将
不描述产生器110产生第四纹理1130的详细过程。产生的第四纹理1130可被存储在描边设
备100的存储器(未示出)中。
以下描述的映射器120将第四纹理1130映射到端部区域1121和1122中的每个。例
如,映射器120通过将第四纹理1130的中心点1131的坐标(x,y)设置为图元1110的端点来将
第四纹理1130的一部分(例如,第四纹理1130的一半部分)映射到端部区域1121。因此,输出
第四纹理1130的一部分被映射到端部区域1121的结果1141。
返回参照图3,在操作330,映射器120沿图元的边缘对纹理进行映射。映射器120将
纹理顺序地映射到基于包括在图元中的每个像素而设置的特定区域。
具体地,映射器120基于图元的斜率确定方向,并且在确定的方向上沿图元的边缘
对纹理进行映射。在一个示例中,当图元的斜率具有值0或无穷大值时,映射器120在垂直于
图元的方向上对纹理进行映射。在另一示例中,当图元的斜率的绝对值大于0并小于1时,映
射器120在帧的水平方向上对纹理进行映射。在另一示例中,当图元的斜率的绝对值等于或
大于1且不为无穷大时,映射器120在帧的垂直方向上对纹理进行映射。
以下参照图12至图13B描述映射器120沿图元的边缘对纹理进行映射的示例。
图12是示出映射器的操作的示例的示图。
在图12中,示出图元1210的示例。在图12中,假设图元1210是线,并且图元1210的
斜率具有无穷大值(即,以帧的垂直方向绘制图元1210)。
当图元1210的斜率具有值0或无穷大值时,映射器120在垂直于图元1210的方向上
对纹理1220和1230进行映射。在图12中,图元1210的斜率具有无穷大值,因此映射器120在
帧的水平方向上对纹理1220和1230进行映射。
映射器120将纹理1220和1230顺序地映射到基于包括在图元1210中的像素1211、
1212、1213、1214和1215而设置的特定区域。可选地,映射器120针对图元1210中的各个像素
1211、1212、1213、1214和1215的位置将相同的纹理映射到彼此对称的特定区域。特定区域
表示与纹理1220和1230的完整宽度对应的区域。在第一纹理的情况下,特定区域表示与描
边宽度W对应的区域,在第二纹理的情况下,特定区域表示与第一宽度L和第二宽度L_AA的
总和对应的区域。由于描边宽度在一个图元的特定区域中是不变的,所以可将相同的纹理
重复地映射到特定区域。
参照图12,映射器120针对像素1212在垂直于图元1210的方向(即,帧的水平方向)
上对纹理1220进行映射。之后,映射器120针对像素1213在垂直于图元1210的方向上对纹理
1230进行映射。以这种方式,映射器120将纹理顺序地映射到直至像素1214的像素。此外,映
射器120根据参照图11描述的方法将纹理映射到图元1210的端部像素1211和1215二者。
图13A和图13B是示出映射器的操作的其他示例的示图。
在图13A和图13B中,示出图元1310和1330的示例。图13A中示出的图元1310的斜率
具有大于0且小于1的绝对值,图13B中示出的图元1330的斜率具有大于1的绝对值。
参照图13A,当图元1310的斜率的绝对值大于0且小于1时,映射器120在帧的垂直
方向上对纹理进行映射。映射器120在帧的垂直方向上将纹理1322映射到包括在图元1310
中的除了图元1310的两个端部像素之外的像素。此外,映射器120根据参照图11描述的方法
将纹理1321映射到图元1310的两个端部像素。
参照图13B,当图元1330的斜率的绝对值大于1时,映射器120在帧的水平方向上对
纹理进行映射。映射器120在帧的水平方向上将纹理1342映射到包括在图元1330中的除了
图元1330的两个端部像素之外的像素。此外,映射器120根据参照图11描述的方法将纹理
1341映射到图元1330的两个端部像素。
根据以上描述,描边设备100根据图元的特性(例如,图元的斜率)适应性地产生纹
理并存储纹理。此外,通过将存储在具有高处理速度的本地存储器中的纹理映射到图元,描
边设备100在短时间内执行描边操作。此外,通过将产生的纹理映射到图元上,描边设备100
同时执行反走样操作和描边操作。
图14是示出描边设备的另一示例的配置的示图。
参照图14,描边设备101不仅包括产生器110和映射器120,还包括划分器130。在图
14的描边设备101中,仅示出与本示例有关的组件。因此,除了图14中示出的组件之外,执行
渲染所涉及的其他通用组件也可包括在内。
图14所示的描边设备101的产生器110和映射器120的操作与以上参照图1至图13B
描述的描边设备100的产生器110和映射器120的操作相同。因此,以下省略产生器110和映
射器120的具体描述。
划分器130将对应于曲线的路径划分为多个图元。例如,划分器130使用德卡斯特
里奥算法(De Casteljau's algorithm)将曲线划分为多个图元。每个划分的图元表示线。
如以上参照图1所述,曲线可被包括在路径中。当路径为曲线时,划分器130将曲线
划分为多个图元,并且产生器110针对每个图元产生纹理。划分器130可产生线图元以接近
曲线。换言之,由划分器130产生的线图元的集可具有与曲线类似的形状。以下参照图15A至
图15D描述划分器130的操作的示例。
图15A至图15D是示出划分器的操作的示例的示图。
在图15A中,示出作为曲线的路径1510的示例。当路径1510为曲线时,路径数据包
括关于用于表示路径1510的三个控制点V1、V2和V3的信息。换言之,描边设备100可基于控制
点V1、V2和V3来配置路径1510。
同时,通过组合控制点V1、V2和V3,可产生两条线。换言之,可产生连接控制点V1和
控制点V2的第一线以及连接控制点V2和控制点V3的第二线。如图15A所示,彼此连接的第一
线和第二线的形状与路径1510的形状明显不同。
在图15B中,示出路径1510被划分为两条子路径1511和1512的示例。换言之,图15B
示出一条曲线被划分为两条曲线的示例。例如,可基于德卡斯特里奥算法来划分路径1510。
如以上参照图15A所述,第一子路径1511可由三个控制点V1、V4和V5组成,第二子路
径1512可由三个控制点V5、V6和V3组成。因此,通过组合子路径1511和1512的控制点V1、V4、
V5、V6和V3,可产生四条线。
当将图15A和图15B相互比较时,图15B中所示的彼此连接的四条线的形状比图15A
中彼此连接的两条线的形状更类似于路径1510的形状。图15C示出路径1510被划分为四条
子路径的示例,图15D示出路径1510被划分为八条子路径的示例。简言之,随着路径1510的
划分数量增加,已使用控制点产生的连接线的形状逐渐变得更类似于路径1510的形状。
划分器130将路径1510划分为多条子路径。然后,划分器130通过组合与每条子路
径对应的控制点来构造多个图元(即,线)。因此,划分器130可将路径1510划分为多个图元。
可通过描边设备101的计算来确定划分器130划分路径1510的次数,并且可通过用户的输入
来改变之前确定的次数。
图16和图17是示出执行路径描边的方法的示例的流程图。
参照图16和图17,执行路径描边的方法的示例包括在图1和图14中示出的描边设
备100和101中执行的操作。因此,以上提供的图1和图14所示的描边设备100和101的描述即
使在以下被省略,也可应用于图16和图17中示出的执行路径描边的方法。
参照图16,在操作1810,产生器110从外部设备接收路径数据。路径数据包括关于
包括在路径中的多个顶点中的每个的坐标和用于通过组合顶点来构造路径的命令的信息。
此外,产生器110从外部设备接收描边数据。描边数据可包括描边宽度、描边颜色和背景颜
色之中的至少一条信息。
在操作1820,产生器110确定是否存在预产生的纹理。例如,产生器110可通过检查
在纹理单元中是否存储纹理来确定是否存在预产生的纹理。当存在预产生的纹理时,处理
前往操作1830。否则,处理前往操作1840。
在操作1830,产生器110从纹理单元读出纹理。然后,产生器110将读出的纹理发送
到映射器120。可选地,产生器110可请求映射器120读出纹理,并且映射器120可根据请求读
出来自纹理单元的纹理。
在操作1840,产生器110产生纹理。例如,产生器110可确定是否将发生基于图元的
走样,并基于确定的结果产生将用于执行路径描边的纹理。产生器110可使用路径数据计算
图元的斜率,并基于计算的斜率确定是否将发生走样。然后,产生器可根据是否将发生走样
适应性地产生纹理。以上参照图6至图11描述了产生器110产生纹理的示例。
在操作1850,产生器110将产生的纹理存储在纹理单元中。
针对包括在图元中的每个像素执行操作1860至操作1885。换言之,映射器120对包
括在图元中的每个像素执行操作1860至操作1885。
在操作1860,映射器120确定图元的斜率是否具有值0或无穷大值。例如,映射器
120可使用由产生器110计算的图元的斜率来执行操作1860。当图元的斜率具有值0或无穷
大值时,处理前往操作1881。否则,处理前往操作1870。
在操作1870,映射器120确定图元的斜率的绝对值是否大于0且小于1。当图元的斜
率的绝对值大于0且小于1时,处理前往操作1883。否则,处理前往操作1885。
在操作1881,映射器120在垂直于图元的方向上对纹理进行映射。以上参照图12描
述了映射器120在垂直于图元的方向上对纹理进行映射的示例。
在操作1883,映射器120在水平方向上对纹理进行映射。水平方向是帧的水平方
向。以上参照图13B描述了映射器120在水平方向上对纹理进行映射的示例。
在操作1885,映射器120在垂直方向上对纹理进行映射。垂直方向是帧的垂直方
向。以上参照图13A描述了映射器120在垂直方向上对纹理进行映射的示例。
当图16中示出的流程图和图17中示出的流程图相互比较时,图16示出在操作1850
将产生的纹理存储在纹理单元中,而图17示出在操作1950将产生的纹理存储在CPU的高速
缓存中。在图17中示出的操作1910至操作1985之中,除了操作1950之外的操作与图16中示
出的除了操作1850之外的操作1810至操作1885相同。
图18至图21是示出在CPU或GPU中实现执行路径描边的方法的示例的示图。
在图18至图21中,示出CPU 2000以及GPU 2100和2300。例如,CPU2000和GPU 2100
或2300可通过图形语言(GL)应用编程接口(API)彼此通信。具体地,图21所示的GPU 2300与
图18至图20所示的GPU 2100区别在于,GPU 2300还包括描边单元2310。图18至图21所示的
CPU 2000可被实现为HWA。
包括在GPU 2100中的组件通常操作的示例如下。
输入装配器2110从存储器(内存)读出关于构成路径的至少一个顶点的数据,并将
读出的数据发送到顶点着色器2120。顶点着色器2120针对该顶点执行由用户写入的顶点着
色器程序。顶点着色器程序表示产生一维(1D)纹理中的所有像素的坐标的程序。已经产生
坐标的像素被传送到片元着色器2160并被用作由用户定义的片元着色器程序的输入。
片元着色器2160产生纹理并将产生的纹理存储在纹理单元2170中。此外,片元着
色器2160针对包括在帧中的每个像素设置颜色值。片元着色器2160可使用存储在纹理单元
2170中的纹理针对每个像素设置颜色值。
渲染输出单元2180记录当片元着色器2160在缓冲器(未示出)中操作时产生的数
据(例如,关于像素的颜色的信息)。换言之,片元着色器2160确定包括在帧中的每个像素的
颜色,渲染输出单元2180合并关于像素的颜色的信息并在缓冲器(未示出)中记录合并的信
息。
由于图元装配器2130、镶嵌器(tessellator)2140和光栅化器2150执行如传统GPU
中的相同组件的相同功能,因此它们的详细描述已被省略。
参照图18,CPU或HWA 2000请求GPU 2100使用着色器程序产生纹理,并且GPU 2100
产生纹理。换言之,在由描边设备100或101执行的操作之中,可由GPU 2100执行纹理产生操
作,并且可由CPU或HWA 2000执行其他操作。
CPU或HWA 2000使用存储在本地存储器2010中的路径数据确定是否将出现基于图
元的走样。当路径为曲线时,CPU或HWA 2000通过对曲线进行划分(3010)产生图元,并确定
是否将出现走样。此外,CPU或HWA2000请求GPU 2100产生纹理,从GPU 2100接收纹理,并将
纹理存储在本地存储器2010中(3020)。GPU 2100的片元着色器2160产生纹理。
此外,CPU或HWA2000产生图元的起始顶点和结束顶点,并将关于起始顶点和结束
顶点的信息存储在本地存储器2010中(3030)。然后,CPU或HWA2000使用纹理和关于存储在
本地存储器中的起始顶点和结束顶点的信息对纹理进行映射,从而执行描边操作(3040)。
当图18和图19相互比较时,图19所示的CPU或HWA2000与图18所示的CPU或HWA2000
的区别在于它自己产生纹理并将产生的纹理发送到GPU 2100(3050)。GPU 2100将接收的纹
理存储在纹理单元2170中。
一般地,纹理单元2170包括高速缓冲存储器。因此,当在描边操作期间重复使用纹
理时,可高速读出该纹理。
当图18和图20相互比较时,图20所示的CPU或HWA 2000与图18所示的CPU或HWA
2000的区别在于,它请求GPU 2100产生纹理并且不接收产生的纹理(3060)。GPU 2100的片
元着色器2160产生纹理并将产生的纹理存储在纹理单元2170中。
当当图18和图21相互比较时,图21所示的CPU或HWA 2000与图18所示的CPU或HWA
2000的区别在于,它请求GPU 2300执行由描边设备100和101执行的所有操作。
GPU 2300使用路径数据确定是否将出现基于图元的走样。当路径为曲线时,GPU
2300通过对曲线进行划分产生图元,并确定是否将出现走样。此外,GPU 2300产生将用于执
行路径描边的纹理,并沿图元的边缘对纹理进行映射。包括在GPU 2300中的描边单元2310
沿图元的边缘对纹理进行映射。
根据上述示例,描边设备100和101使用预产生的纹理执行描边操作。因此,描边操
作所需的计算量减小,并且可在短时间内执行描边操作。
此外,描边设备100和101基于是否将发生走样适应性地产生纹理,以使得描边操
作和反走样操作可被同时执行。
由硬件组件实现执行这里描述的操作的以下组件:图1中的描边设备100、产生器
110、映射器120;图14中的描边设备101、产生器110、映射器120和划分器130;图18至图21中
的CPU或HWA 2000和本地存储器2010;图18至图20中的GPU 2100;图21中的GPU 2300;图18
至图21中的输入装配器、顶点着色器、图元装配器、镶嵌器、光栅化器、片元着色器、纹理单
元和渲染输出单元;图21中的描边单元2310。硬件组件的示例包括控制器、传感器、产生器、
驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器和本领域
普通技术人员公知的任何其他电子组件。在一个示例中,硬件组件由计算硬件(例如,由一
个或更多个处理器或计算机)实现。处理器或计算机由一个或更多个处理元件(诸如逻辑门
阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编
程门阵列、可编程逻辑阵列、微处理器)或本领域普通技术人员公知的任何其他装置或装置
的组合实现,这些装置或装置的组合能够以限定的方式响应并执行指令以得到期望的结
果。在一个示例中,处理器或计算机包括或连接到存储被处理器或计算机执行的指令或软
件的一个或更多个存储器。由处理器或计算机实现的硬件组件执行指令或软件(诸如操作
系统(OS)和在OS上运行以执行这里描述的操作的一个或更多个软件应用)。硬件组件还响
应于指令或软件的执行来访问、操控、处理、创建和存储数据。为简单起见,在这里描述的示
例的描述中使用单数术语“处理器”或“计算机”,但是在其他示例中,使用多个处理器或计
算机,或者一个处理器或计算机包括多个处理元件或多种类型的处理元件,或者应用以上
两种形式。在一个示例中,硬件组件包括多个处理器,而在另一示例中,硬件组件包括一个
处理器和一个控制器。硬件组件具有不同的处理配置中的任意一个或多个,所述不同处理
配置的示例包括单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指
令多数据(SIMD)多处理、多指令单数据(MISD)多处理、以及多指令多数据(MIMD)多处理。
图3、图4、图8、图16和图17中示出的执行这里描述的操作的方法由以上描述的执
行指令或软件的计算硬件(例如,由一个或更多个处理器或计算机)来执行,以执行这里描
述的操作。
控制处理器或计算机以实现硬件组件并执行如上所述的方法的指令或软件被写
为计算机程序、代码段、指令或它们的任意组合,用于单独或共同指示或配置处理器或者计
算机作为机器或专用计算机操作,以执行由硬件组件执行的操作和如上所述的方法。在一
个示例中,指令或软件包括被处理器或计算机直接执行的机器代码(诸如由编译器产生的
机器代码)。在另一示例中,指令或软件包括被处理器或计算机使用解释器执行的高级代
码。本领域普通技术程序员能够容易地基于附图中示出的框图和流程图以及说明书中的对
应描述来编写指令或软件,这些框图和流程图以及说明书中的对应描述公开了用于执行由
硬件组件执行的操作和如上所述的方法的算法。
控制处理器或计算机以实现硬件组件并执行如上所述的方法的指令或软件、以及
任何关联数据、数据文件和数据结构被记录、存储或固定在一个或更多个非暂时性计算机
可读存储介质中或介质上。非暂时性计算机可读存储介质的示例包括只读存储器(ROM)、随
机存取存储器(RAM)、闪存、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-
RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、磁带、软盘、磁光数据存储装置、光学
数据存储装置、硬盘、固态盘以及本领域普通技术人员公知的任何装置,所述本领域普通技
术人员公知的任何装置能够以非暂时性方式存储指令或软件以及任何关联数据、数据文件
和数据结构,并能向处理器或计算机提供指令或软件以及任何关联数据、数据文件和数据
结构,以使处理器或计算机能执行指令。在一个示例中,指令或软件以及任何关联数据、数
据文件和数据结构被分布于联网的计算机系统上,以使指令和软件以及任何关联数据、数
据文件和数据结构被处理器或计算机以分布方式存储、访问和执行。
虽然本公开包括具体示例,但是本领域普通技术人员将清楚,在不脱离权利要求
及其等同物的精神和范围的情况下,可以对这些示例进行形式和细节上的各种改变。这里
描述的示例被认为仅具有描述性意义,而不用于限制的目的。每个示例中的特征或方面的
描述将被认为可适用于其他示例中的类似特征或方面。如果以不同的次序执行描述的技术
和/或如果描述的系统、架构、装置或电路中的组件以不同的方式组合和/或被其他组件及
其等同物替换或补充,则可得到合适的结果。因此,本公开的范围不是由具体实施方式限
定,而是由权利要求及其等同物限定,并且权利要求及其等同物的范围内的所有变化将被
解释为包括在本公开中。