CN101714261B - 图形处理系统 - Google Patents
图形处理系统 Download PDFInfo
- Publication number
- CN101714261B CN101714261B CN200910179578.7A CN200910179578A CN101714261B CN 101714261 B CN101714261 B CN 101714261B CN 200910179578 A CN200910179578 A CN 200910179578A CN 101714261 B CN101714261 B CN 101714261B
- Authority
- CN
- China
- Prior art keywords
- curve
- space
- standard
- stroke
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
Abstract
当在图形处理系统中渲染用于显示的笔画曲线时,在用户空间2定义的笔画曲线1被该系统接收。对应于所接收的笔画曲线1的规范空间5的部分被通过确定对应于所接收的笔画曲线1的在规范空间5中定义规范曲线12的部分来确定。然后,对在一个或多个基元4内的多个采样点中的每一个,确定在规范空间5内的对应(于在表面空间3中的采样点)地址是否在对应于所接收的笔画曲线的该规范空间的该部分内,例如通过查找已经被(提前)存储在一个或多个图形纹理中的合适的信息;其中,产生该一个或多个基元4以在它投射进表面空间3中后覆盖所接收的笔画曲线1′。然后基于该确定,把用于渲染所接收的笔画曲线1的数据(例如RGB值)分配到多个采样点中的每一个。
Description
本发明涉及在计算机图形系统中的渲染图像的过程,尤其涉及在这种系统中的笔画曲线(stroked curve)的渲染。
背景技术
近年来,在计算机图形中使用矢量图形已经变的日益常见。正如所知道的,在该领域中,矢量图形优于光栅图形的一个关键优点是提供分辨率独立的图像,即:可以被基本上无限缩放(sacle)而不降级的图像。例如,计算机字体中的独特的字符,比如TrueTypeTM,典型地以矢量图像存储。
矢量图形基于单个定义的几何对象的使用,并典型地由一个或多个线段描述,例如:在锚点被连接在一起以形成路径的直线或曲线(比如二次(贝塞尔曲线)曲线,椭圆形的弧,三次(贝塞尔曲线)曲线)。
在空间中定义并操作矢量图形对象/路径,通常被认为是“用户空间(use space)”。然而,为了向视频显示器或打印机输出该矢量图形对象/路径,在用户空间定义的对象/路径需要被转换为合适的形式以便在屏幕上显示或在打印机上输出。典型地,这个转换包括把在用户空间所定义的对象/路径投射到通常被称为“表面空间(surface space)”的另一个空间,其对应于输出显示器的全景(几何),其中,对象/路径在该显示器上将被看到。典型地,用户空间和表面空间之间的转换被称为“用户到表面的转换”。
一旦矢量图形对象/路径被转换到表面空间的表示内,他们就被渲染(rendered)。
正如在该领域中所知道的,典型地,这个过程包括产生一个或多个覆盖对象/路径的表面空间的表示的图形基元(primitive),比如三角形,以及在该基元内把该基元光栅化为多个采样点,其中,该基元随后被采样以确定每一个采样点是否落在投射的对象/路径内。基于这个确定,向该多个采样点分配数据以适当允许该对象/路径被正确地显示,其中,该数据例如是红、绿和蓝(RGB)颜色值以及“alpha”透明度值。这些过程通常被分别称为光栅化和明暗处理(shading)。
(在3D图形文献中,词“光栅化”有时被用来指代对象到采样位置的转换和明暗处理。然而,在这里,光栅化将仅仅被用来指代被对象数据转换到采样点地址。)
正如在该领域中所知道的,典型地,通过表现使用通常称为“片元(fragment)”的离散图形实体的采样点来执行这些过程,其中,在片元上执行图形处理操作(比如明暗处理)。因此,实际上,该片元是由图形处理系统(其经过图形管线)处理的图形实体。
每个片元可以被合理的认为是有效等同于被处理的场景的“像素(pixel)”。每个片元可以对应于单个或多个采样点。在最终的显示中,每个片元可以对应于单一的像素(图像要素)(既然因为像素在显示中是单个,在由图形处理器操作的片元和显示的像素之间存在有一到一的映射)。然而,更典型地情况将是片元和显示像素之间没有一到一的对应,例如,在显示最终图像之前在渲染图像上执行后处理(post-processing)的特定方式地方,比如下缩放(down-scaling)。
在矢量图形中通常可见的两类对象是“填充”对象和笔画对象(stroked objects)。填充的过程包括把单个色彩、梯度(gradient)、图案或者图像块应用到在一个对象或封闭路径内的区域。与此同时,笔画的过程可以被看作通过沿着路径拖动特定宽度的线形(line-shaped)笔尖来向路径有效地添加宽度。更明确地,笔尖的中心点跟着路径,而且笔尖是定向的以便总是与路径垂直。因此,相同地,笔画路径的边界也可以由一组点来定义,其中,自该点向在路径上的点可以画长度(至多)为w/2(对于宽度w的笔画的路径)且垂直于路径的线。
特别地,就在CPU上的负载而言,传统的笔画路径和笔画曲线的渲染是昂贵的操作。例如,一种常见的渲染笔画路径的方法是在CPU上把路径再分成到多个单独的线或填充路径内,之后,其每一个都可以被分别渲染。然而,这是处理集约型(processing-intensive)的操作。用于渲染笔画曲线经常使的另外一种方法是使用专用曲线渲染硬件。然而,尽管这个方法确实提供了解决方案以缩减与上面描述的再分技术有关的执行,它需要专用的硬件,其,例如,在图形处理系统中不总是可用或者令人满意的。
因此,申请人相信有发挥渲染笔画路径(且尤其笔画曲线)的另外的技术的余地,例如,其可以不需要使用另外的、专用的硬件,但和已知的再分技术相比较,其可能依然达到改进的执行级别。
发明内容
根据本发明的第一方面,提供在图形处理系统中渲染用于显示的笔画曲线的方法,该方法包括:
接收在用户空间定义的输入笔画曲线;
通过确定对应于所接收的笔画曲线的在规范空间(canonicalspace)定义的规范曲线的部分来确定对应于所接收的笔画曲线的规范空间的部分;
使用接收的转换把所接收的笔画曲线投射进表面空间内;
在表面空间定义一个或多个基元(primitives),其覆盖所投射的笔画曲线;
对于在该一个或多个基元内的多个采样点中的每一个,确定在规范空间内的对应地址是否在对应于所接收的笔画曲线的该规范空间的部分内;以及
依照确定在规范空间内的对应地址是否是在对应于所接收的笔画曲线的规范空间的该部分内的所述步骤,把用于渲染所接收的笔画曲线的数据分配到表面空间内的多个采样点中的一个或多个。
根据本发明的第二方面,提供在图形处理系统中用于渲染用于显示的笔画曲线的渲染设备,该设备包括:
用于接收在用户空间内定义的笔画曲线的装置;
用于通过确定对应于所接收的笔画曲线的在规范空间内定义的规范曲线的部分来确定对应于所接收的笔画曲线的规范空间的部分的装置;
用于使用接收的转换把所接收的笔画曲线投射进表面空间内的装置;
用于定义一个或多个在表面空间内覆盖所投射的笔画曲线基元的装置;
对在该一个或多个基元内的多个采样点中的每一个,来确定在规范空间内的对应地址是否是在对应于所接收的笔画曲线的规范空间的该部分内的装置;以及
用于依照在规范空间内的对应地址是否是在对应于所接收的笔画曲线的规范空间的该部分内的所述确定,来把用于渲染所接收的笔画曲线的数据分配到表面空间内的多个采样点中的一个或多个的装置。
在本发明中,通过首先把该输入笔画曲线映射到已被在“规范空间”内定义的预先定义的曲线的对应部分,来渲染输入笔画曲线。然后,在规范空间中的位置被采样(测试),以确定在表面空间的对应位置是否落在该输入笔画曲线内部。
这是和直接确定在表面空间内的采样点是否在所投射的笔画曲线内(及因此直接确定关于由用于渲染的图形处理系统接收的每个笔画曲线的信息)形成对比,其经常不可行或不便捷,由此导致了以上讨论的先前技术的使用。
然而,申请人已经认识到,可以仅仅使用平移,旋转和等比缩放(uniform scaling)把某些曲线家族内的所有曲线转换成预先定义的,单个或基本的曲线(这里称为“规范曲线(canonicalcurve)”)中的至少一部分。
因此,这允许关于单个曲线(即规范曲线)的信息,被用来确定关于由用于渲染的图形处理系统接收的多个笔画曲线的信息。换句话说,例如,代替必需得到或存储与将被渲染的、通过图形处理系统接收的每一个单独的笔画曲线有关的数据,它仅仅需要得到或存储关于该规范曲线的数据。此数据随后可以被用来渲染属于“规范曲线”所表示的笔画曲线的家族(组)的单独的笔画曲线中的每一个。
此外,因为仅使用平移、旋转和等比缩放可以把适当给出的输入笔画曲线转换到这样的对应的规范曲线,随后,如下面将进一步讨论的,其允许对应于所接收的笔画曲线的规范曲线的部分,“笔画规范曲线段(segment)”,例如它的起始和终止点在使用中被快捷地确定。同样地,允许在规范空间中,当笔画曲线将出现时,它的宽度在使用中被快捷地确定。
例如,因为可以使用等比缩放和其它事项把输入笔画曲线映射到它的对应规范曲线,在用户空间内是单一值的笔画宽度在规范空间内将依旧是单一值,尽管典型地是不同的值(即在用户空间内的笔画宽度乘以与用户空间和规范空间之间的转换相关的任意缩放因子)。(这是与,例如,用户空间和表面空间之间的转换相比,其典型地包括非-等比缩放,所以在用户空间内笔画曲线的单一宽度值随着投射进表面空间内,典型地,它的值将变成多值(即,宽度将沿着笔画曲线的长度变化))。
因此,本发明不仅能提供更为有效的用于渲染笔画曲线的机制,它还提供用于这样做的尤其方便的机制。
对任何形式的笔画曲线而言,可以使用本发明为其衍生出具有如上所描述的性质的“规范曲线”。因此,由图形处理系统接收的输入笔画曲线可以是来自曲线家族的任何曲线,其可以有适当相关的规范曲线。
可以有这个形式的相关的规范曲线的一个曲线家族是二次曲线。在这种情况中,规范曲线将是基本二次曲线,即,y=x2式的二次曲线。
据此,在一个优选的实施例中,由图形处理系统接收的在用户空间内的笔画曲线是二次曲线。
在用户空间定义的笔画曲线可以以任何期望和合适的方式定义,其中,该笔画曲线被接收作为到本发明的过程的输入。
例如,且优选地,图形处理系统可以接收定义笔画曲线的信息,该信息例如是曲线位置和任何涉及曲线的参数。
如上所描述的,优选地,通过中心曲线和相关的笔画宽度在用户空间定义所接收的(或输入的)笔画曲线。优选地,该笔画曲线的中心曲线通过在用户空间内的多个控制点(典型地,包括起始点,终止点及一个或多个中间点)的位置,与起始和终止控制点之间要画的曲线的类型指示一起来确定。例如,并优选地,笔画的中心曲线包括以下所列中的一个:二次贝赛尔曲线(需要单个中间控制点);三次贝赛尔曲线(需要两个中间控制点);以及椭圆性弧线。
因此,在一个优选的实施例中,用以接收在用户空间中定义的笔画曲线的步骤或装置,包括接收在用户空间中的多个控制点的位置、指示曲线类型的信息、以及在用户空间的笔画宽度。
在用户空间中定义的输入到本发明的过程中的笔画曲线可以是通过,例如,要求画出曲线的应用,所初始定义的笔画曲线。
然而,对于要成为可从另外的在用户空间内定义的曲线得到的曲线的笔画曲线,也是有可能的。例如,值得思考的是,输入笔画曲线可能已经通过把其它的或者初始曲线转换到用户空间形式内而得到,其中,由本发明在该用户空间形式内接收它。
同样值得思考的是通过再分在用户空间内定义的初始曲线可以得到输入笔画曲线。
例如,正如下面将要更进一步讨论的,申请人已经认识到,如果在规范空间中不具有对应曲线的曲线要被渲染可能要把那个初始曲线再分成多个曲线部分或段,其每一个都具有对应的规范曲线(其是具有相关规范曲线的曲线家族的成员)。例如,三次或椭圆形曲线被再分成多个二次曲线。因此,这总允许本发明被用来渲染曲线,其中,该曲线可以没有为其直接定义的(和/或存储的)或可用的直接对应的规范曲线。
申请人进一步认识到将给定的要渲染的笔画曲线分成用于渲染的不同部分可能也是所期望的,因为这可以(正如下面将要进一步讨论的)允许渲染过程更加快捷。
因此,在尤其优选的实施例中,本发明进一步包括用于把在用户空间内定义的笔画曲线再分成多个笔画曲线部分,然后,用一个或多个笔画曲线部分建立在用户空间内定义的以本发明的方式处理和渲染的输入笔画曲线的步骤或装置。
例如,优选地,如果在用户空间定义的笔画曲线不是具有相关规范曲线的曲线,它可以被(就被)再分成多个曲线部分,该些曲线部分是具有相关规范曲线的曲线家族成员。在这样的优选实施例中,在用户空间内定义的笔画曲线是三次曲线或椭圆形曲线的地方,这样的曲线被再分成多个二次曲线,然后使用本发明将其渲染。
因此,应该注意在这里计划把涉及输入笔画曲线,除非上下文需要另有要求,称为“输入”到本发明渲染过程的曲线,以及那个输入曲线可以,举例来说,是正如初始所定义的,例如,通过正被讨论的应用,或者从初始“用户定义的”曲线得到的曲线,比如那个曲线的再分部分。
一旦通过图形处理系统接收输入笔画曲线,那么确定表示接收的笔画曲线的规范空间的对应部分是必需的。这个确定可以以任何合适的和所期望的方式来执行。
尤其,在优选实施例中,这是通过确定转换来完成的,其中,需要该转换获得在用户空间定义的笔画的中心曲线并把它放在规范空间的对应部分上。如以上所讨论的,这个转换(用户到规范的转换)应仅需要平移,旋转和/或等比缩放。
因此,确定把在用户空间内定义的笔画曲线转换到规范曲线的适当部分的转换的步骤或装置,优选地,包括确定转换的平移部分(分量),即时有也很少。
转换的平移部分(分量)可以以任何合适的和所期望的方式确定。然而,在尤其优选的实施例中,以及其中所接收的笔画曲线(以及因此该规范曲线)是二次曲线,转换的平移部分(分量)通过确定需要去把在用户空间内的输入笔画曲线的最底点(即与二次曲线相关的曲率最大的点)移动到规范曲线的最底点上的平移来确定。
因此,在优选实施例中,确定转换的平移部分(分量)的步骤或装置,包括,确定所接收的笔画曲线的最底点(的地址)以及需要去把那个最底点映射到规范曲线的最底点(的地址)的平移。
(正如将要理解到的,在用户空间内所定义的笔画曲线的最底点可以在定义的笔画的中心曲线上(即,在输入笔画曲线的起始和终止控制点之间的地址),或者它可以在输入笔画曲线的中心曲线的外推部分上(即,在输入笔画曲线的起始和终止控制点以外的地址)。相同地,对应于接收的笔画曲线的规范曲线的部分可以包含规范曲线的最底点(在前面的事例中),或者对应于接收的笔画曲线的规范曲线的部分可以不包含规范曲线的最底点(在后面的事例中))。
同样优选地,确定把在用户空间内的笔画曲线转换到在规范曲线的适当部分上的转换的步骤或装置,包括,确定转换的旋转部分(分量),即使有也很少。
转换的旋转部分(分量)也可以以任何合适的和所期望的方式确定。然而,在尤其优选的实施例中,以及再一次其中所接收的笔画曲线(以及因此该规范曲线)是二次曲线,转换的旋转部分(分量)通过确定需要的旋转来确定,该旋转让在最底点的两侧的两个点之间画出的线平行于用于规范曲线的画出的对应的线,其中,该两个点在接收的笔画曲线的中心曲线上且与最底点等距。
同样优选地,确定把在用户空间内的笔画曲线转换到规范曲线的适当部分上的步骤或装置包括确定转换的等比缩放部分(分量),即使有也很少。
转换的等比缩放部分(分量)也可以以任何合适的和所期望的方式确定。然而,在尤其优选的实施例中,以及再一次其中所接收的笔画曲线(以及因此该规范曲线)是二次曲线,转换的等比缩放部分(分量)通过确定第一条线和第二条线的长度比例,然后确定必需的缩放因子来确定,以便这个比例与根据规范曲线获得的对应的比例相等,其中,该第一条线是在接收的笔画曲线的中心曲线上与最底点等距且在最底点的两侧的两个点之间画出的,该第二条线是从第一条线的中点向最底点画出的。
确定转换的平移,旋转和等比缩放分量的步骤可以以任何期望的次序执行。然而,在本发明的优选实施例中,首先确定平移分量,接着旋转分量,以及最后等比分量。
一旦所需要的把输入笔画曲线的中心曲线映射到规范曲线的转换已经被确定,对应于输入笔画曲线(即,输入笔画曲线所覆盖的)的规范空间的部分,优选地,通过使用已确定的转换来确定以确定:对应于输入笔画曲线的中心曲线的起始和终止点的在规范曲线上的两个位置;在规范空间中输入笔画曲线将具有的宽度(其将是由已确定的用户到规范的转换的缩放因子乘以在用户空间内的曲线的宽度)。然后,这给出了在规范空间中的输入笔画曲线的地址。
一旦对应于输入笔画曲线的的规范空间的部分(地址)已被确定,那么曲线可以被渲染。
这是通过首先利用(执行)由(被输入到)图形处理系统接收的转换(用户到空间的转换)把输入笔画曲线投射到表面空间里做成的。因此,将理解到用户到空间的转换不同于用户到规范的转换,因为它不是由图形处理系统确定的,而是相反地被作为预先定义的转换输入到系统,其中,该转换指示所需要的把在用户空间内的地址投射到在表面空间的对应地址的映射。
然后一个或多个图形基元被产生,其在笔画曲线在表面空间内出现时覆盖它(投射的笔画曲线)。这些一个或多个图形基元可以使用任何合适的和期望的被看作适当的技术,比如通过定义覆盖投射笔画曲线的一个包围盒(bounding box)或者多个包围盒和/或通过定义紧紧地适于投射曲线的端部(即,在起始和终止(控制)点)的包围多边形(bounding polygon)。
接着,确定在规范空间内的采样位置(以便可以确定对应于在表面空间内的采样点的在规范空间中的地址,是否落在规范空间内的笔画曲线的地址内),其中,该采样地址与用于在表面空间内产生的基元的采样点对应。
可以以任何合适的或期望的方式来确定在规范空间内的用于采样点的对应地址。然而,优选地,首先通过利用把所接收的笔画曲线投射到表面空间(用户到表面的转换)的反,将在表面空间内的采样点映射到在用户空间内的对应地址来确定。然后,优选地,利用已确定的转换把在用户空间内的对应的地址映射到在规范空间内的对应的地址,其中,该确定的转换把在用户空间内所定义的笔画曲线转换到规范曲线的对应部分上(用户到规范的转换)。
因此,在优选实施例中,确定在规范空间内与对应于在表面空间内的采样点的地址的方法或装置,包括,把在表面空间内的采样点映射到在用户空间内的对应地址,以及然后把在用户空间内的对应的地址映射到在规范空间内的对应地址。
在这个步骤之后,正如将理解到的,对应于在表面空间的采样点的在规范空间内的地址是已知的。
一旦在规范空间内的对应的采样地址已被确定,就确定当这个地址在规范空间内出现时,它是否在笔画曲线内。然后,这可以被用于确定在表面空间内的采样点是否在笔画曲线内部,以及因此在表面空间内据此对采样点进行明暗处理。
可以如所期望地来执行在规范空间内的采样地址,当它在规范空间内出现时,是否是在笔画曲线内的确定。
然而,申请人已经认识到对一些规范曲线的形式至少,对在规范空间内的每一个离散地址(采样点),将存在在规范空间上的整数个点(解),其中,自该点向该离散地址(采样点)可能画(直)线,该线垂直于规范曲线。此外,在规范曲线上的这些一个或多个点(解),如下面将要详细讨论的,可以用来确定在规范空间内的采样地址,当它在规范空间内出现时,是否在给定的笔画曲线内。
首先,如将理解到的,在规范空间内的笔画曲线,及更特别地规范曲线它本身的对应部分,将遍布至少一个在规范空间内的特定参数范围。(不同参数范围的数目取决于规范空间的维数。)例如,对形式为y=x2的规范曲线,该曲线将遍布“x”值的范围和“y”(=x2)值的范围,因此两个“x”和“y”可以用作曲线的“参数”。
(这里应注意特定规范曲线遍布的参数范围可以通过曲线的任何合适的参数化来表示。所以,有时对于形式为y=x2的规范曲线轴可以是,以及优选的是,作为参数使用,并不是对所有的规范曲线都这样。)
因此,任何人可以按照规范空间内的笔画曲线所覆盖的特定参数范围,来测试在规范空间内与给定地址相关的在规范曲线上的解的参数值,以看看是否该地址具有落在这个特定参数范围内的解。
如将要被本领域技术人员所理解的,尽管笔画曲线将典型地由多个参数范围(例如,当规范曲线是基本二次曲线时,由“x”值和“y”值)来表示,仅仅按照一个参数范围测试就足够了,因为如果一个点在被笔画曲线覆盖的规范曲线的部分内,那它将在曲线的每一个参数的范围内而不管这个范围怎样定义。因此,例如,对形式为y=x2的规范曲线,优选地,仅按照在规范空间内与接收的笔画曲线的部分相关的“x”值的范围来测试解的“x”值。在这个实施例中,“x”被优选地用作将测试的“参数”,因为与在原点周围的规范空间的区域使用“y”相比,它更精确。
在其它实施例中,任何人可以测试解和在规范曲线上预先确定的点之间沿着曲线的距离。例如,在规范曲线是基本二次曲线的实施例中,可以确定从最底点到在规范曲线上的解的沿着曲线的距离,其中,该解与在规范空间内的给定地址相关,并且随后当这个距离在规范空间内出现时,它可以与由笔画曲线覆盖的特定距离范围相比。
当要渲染的笔画曲线将用给定的点绘图案来点绘(例如,显示为一系列点和/或虚线)时,这个稍后的实施例具有特别的好处。例如,在优选实施例中,可以以任何合适并期望的方式,例如作为ID纹理,和(使用适当的转换)应用到关于在曲线上预先确定的点(例如最底点)的规范曲线的已选择的点绘图案来存储一个或多个点绘图案。根据这个预先确定的的点,沿着曲线的距离可以与已选择的点绘图案,以及据此渲染的在表面空间内的对应地址相比(即,基于当它出现在规范空间内时该地址是否在笔画曲线内以及与该地址相关的解落在已选点绘图案的地方),其中,该点为在规范空间内的与给定地址相关的解中的每一个所确定。
其次,然后如以上所描述的,通过一组点(the set of points)定义笔画曲线的边界,其中,自该点向在路径上的点可以画预先确定了宽度,并且垂直于该路径的线。
因此,任何人可以对照在规范空间内的笔画曲线的笔画宽度的一半,来测试在规范空间内与给定的地址相关的规范曲线上的解的垂直距离,即,自在规范曲线上的点(解)到离散地址(采样点)画的(直)线的长度,以看看当该地址出现在规范空间内时,它是否具有落在笔画曲线内的解。(如以上所讨论的,在规范空间内的笔画曲线的笔画宽度将等于用户空间与规范空间之间的转换的缩放因子部分(分量)乘以在用户空间内的笔画宽度。)
因此,申请人已经认识到确定在规范空间内给定的离散地址(采样点位置),当该地址出现在规范空间时,是否在笔画曲线内的特别有效的方法是去识别那些在规范曲线上的点,其中,自该点向采样点地址可以画垂直于规范曲线的(直)线,以及随后确定在规范曲线上的这些点中的任何一个是否在对应于笔画曲线的规范曲线之部分的参数范围内,以及,在规范曲线上的这些点中的任何一个到采样点地址之间的距离,当该地址在规范空间内出现时,它是否小于或等于笔画曲线的笔画宽度的一半。如果在规范曲线上的任何已识别的点中的一个通过了这两个测试,那么当该采样点位置出现在规范空间内时,它是在笔画曲线内。
因此,在优选实施例中,确定在规范空间内的采样地址是否在对应于接收的笔画曲线的规范空间的部分内的步骤包括以下的其中之一,以及优选两个都包括,确定地址在规范曲线上的任意点是否位于由在规范空间内的笔画曲线所覆盖的参数范围内,其中,自该点向在规范空间内的采样地址可以画垂直于规范曲线的(直)线;以及在规范空间内的采样地址和在规范曲线上的一个或多个点之间所画的(直)线的长度,是否小于或等于当它在规范空间内出现时的笔画曲线的笔画宽度的一半,其中,可以向该一个或多个点画垂直于规范曲线的(直)线。如果规范曲线上存在点满足这两项用于测试在规范空间内的采样位置的需求,那当该采样位置出现在规范空间时,它在笔画曲线内,以及据此在表面空间对应的采样位置也在笔画曲线内(所以允许在表面空间内的采样位置据此被明暗处理)。
(申请人已进一步认识到当用以渲染特定笔画曲线的基元被定义为紧密适合于被渲染的曲线端部的包围多边形,即,以便在基元内可以采样的所有点将在被渲染的曲线的参数范围内,那么关于在规范空间内的采样地址,是否在对应于接收的笔画曲线的规范空间的部分内的确定可以,且优选地是,只是通过确定在规范空间内的采样地址与规范曲线上的解之间的距离是否小于或等于,当该采样地址出现于规范空间内时,被渲染曲线的笔画宽度的一半来做出。)
如将要被理解到的,以上所讨论的优选地被用于确定在规范空间内的采样地址是否在规范空间内的笔画曲线内的两个步骤可以以任何期望的次序被执行。在一个优选实施例中,对那些在规范曲线上通过了第一测试(即,基于第一测试其被确定潜在地是在笔画曲线内部)的点(解)仅执行第二测试,该两个测试步骤从而被执行。如那些熟练于本领域技术的人所认识到的,这将允许减少必需执行的测试的数目,该测试用于确定给定的地址是否在规范空间中的笔画曲线内。然而,在可选择的实施方式中,该两个测试因第一测试与第二测试同时出现被并行执行。当使用图形处理硬件时这个后面的实施例可能更方便。
在优选实施例中,可以以如上描述的所需要的确定当该地址出现在规范空间内时,它是否在笔画曲线内的方式,来测试在规范空间内的与给定的离散地址(采样点位置)相关的在规范曲线上的一个或多个所有这样的点(解)。
例如,申请人已经认识到对输入笔画曲线的一些部分,例如,那些与具有特定特性的笔画曲线的区域不相关的部分,仅仅通过测试多个这样的与地址相关的可能的点(解)中的一些,而非全部,且优选仅仅一个来正确确定在规范空间内的特定地址是否在笔画曲线的部分内是可能的。优选地,当使用这样的“测试”时,该测试点是规范空间内到各个地址最近的点(解),即,具有最小的到各个地址的垂直距离的点(方案)。
申请人已进一步认识到对输入曲线的其它部分,例如,那些与具有特定特性的笔画曲线的区域相关的部分,在规范空间内与给定的地址(其是在区域中的一个内)相关的一个这样的点(解)可能指出该地址在笔画曲线的部分内,同时与地址相关的另外的这样的点(方案)可能指出,当该地址在规范空间内时,它在笔画曲线的外部。因此,为了精确地渲染笔画曲线的这种区域,测试与地址相关的点(解)中的至少两个,并优选地测试全部是必要的。
因此,在优选地实施例中,用以渲染接收的曲线,或者,如以下描述的,用以渲染接收的曲线的部分的渲染过程可能包括测试仅仅一个,并优选地测试最近的,这样的与在规范空间内的地址相关的解,或者它可能包括测试与在规范空间内的地址相关的点(解)中的两个或更多,并优选地测试全部,以确定在规范空间内的该地址是否在笔画曲线或其中的部分之内,如适当的,当它在规范空间内出现时。
相似地,取决于怎样产生用以渲染曲线的基元,如上所讨论的,测试与在规范空间内地址的(每一个)解相关的数据中的仅仅一些,而非全部,可能是必需的(或者必需测试与(每一个)解相关的数据中的全部)。
同样的渲染过程可以被用来渲染整个笔画曲线。可选地,两个或多个渲染过程可以被用来渲染笔画曲线。例如,第一渲染过程(如,其中较少的,例如只一个,解被测试,)被用来渲染笔画曲线的第一部分或部分,而不同地,第二渲染过程(如,其中两个或多个,且优选全部,解被测试)被用来渲染笔画曲线的第二部分或部分。
确定在规范空间的采样地址是否在规范空间内对应于接收的笔画曲线的部分内的步骤,其优选地包括以上描述的步骤(测试),可以以任何合适和期望的方式被执行。然而,在优选地实施例中,通过查找预先确定的允许该过程被执行的信息(即提前被存储的数据)来做成。
尤其,申请人已经认识到在规范空间内的用于给定(采样)地址的在规范曲线上的每一个“解”的参数的地址,以及用于在规范空间内的用于给定(采样)地址的在规范曲线上的每一个“解”的在规范空间内的到(采样)地址的垂直距离可以提前被得到并存储,于是,例如,当那个地址在规范空间内将被测试时被查出。这个与在规范空间内的(采样)地址有关的存储的信息然后可以与参数的范围和被考虑用于给定的笔画曲线在规范空间内的(一半的)笔画宽度比较,以看看在规范空间的该地址是否具任何指示它落在被考虑的笔画曲线内的在规范曲线上的解。因此,如果这样的数据被存储用于覆盖规范空间的多个地址(一组采样位置),那么存储的地址可以被查找用于需要被测试的在规范空间内的给定的位置。
提前确定并存储这样的解提供了执行这些测试的特别方便和有效地机制。进一步,如上所描述的,因为对在规范空间内的每个地址存在有限数目个这样的“解”,存储这些关于在规范空间内的地址的信息将是一个相对可管理的任务。
因此,在尤其优选的实施例中,上面所提到的该预先设置的信息被存储用于在规范空间内的多个离散的地址。最优地,这样的信息被存储用于采样点的对称阵列其(大体上)覆盖期望要考虑的/需要的规范空间。
因此,在尤其优选的实施例中,为在规范空间内的多个地址中的至少一个,存储了自在规范空间内的地址向其可以画垂直于曲线的线的在规范曲线上的一个或多个点中的至少一个参数的值,以及在规范曲线上的一个或多个点中的至少一个与在规范空间内各个地址之间的垂直距离。
应当注意对在规范空间内为其存储了“解数据”的多个离散地址中的一个或多个,尽管非全部,在规范曲线上可能不存在自各个地址可以向其画出垂直于曲线的(直)线的任何点(即,对那个点可能在曲线上没有任何解)。相同地,在规范空间内一些地址具有比其它地址更多的解。优选地,没有,或较少,为其将要存储数据的给定地址的解的地方,或者没有信息被存储或者,在尤其优选的实施例中,被预先确定或预先定义(默认)信息被存储,例如,更多信息如下所描述,用于“缺失”解。
相似地,在尤其优选的实施例中,确定在规范空间内(对应于在表面空间内的采样位置)的地址,当它在规范空间出现时,是否落在笔画曲线内的步骤或装置包括,查找存储的用于在规范空间内的多个地址的数据,用于地址在规范曲线上的一个或多个点中的至少一个的参数的值,其中,自在规范空间内的地址能够向该一个或多个点画垂直于曲线的线;以及在规范曲线上的一个或多个点中的至少一个与在规范空间内的各个地址之间的垂直距离。
与在规范空间内的采样点的阵列有关的信息组(the set ofinformation),例如数据存储,可以以任何合适和期望的方式被存储。然而,在本发明的尤其优选的实施例中,与在规范空间内的多个离散的地址有关的信息被以一个或多个图形纹理的形式存储。这特别有利和有益因为不仅计划让图形纹理存储与特定的地理地址阵列有关的数据,而且,如下面将要讨论的,以纹理的形式存储数据允许现有的一般的纹理映射过程并入图形处理系统以用于以本发明所述的方式渲染笔画曲线。
因此,根据本发明的第三方面,提供在图形处理系统中渲染用于显示的笔画曲线的方法,该方法包括:
接收在用户空间定义的输入笔画曲线;
通过确定在规范空间定义的对应于所接收的笔画曲线的规范曲线的部分确定对应于所接收的笔画曲线的规范空间的部分;
使用接收的转换把所接收的笔画曲线投射进表面空间内;
定义一个或多个基元,其在表面空间内覆盖该投射的笔画曲线的;以及
然后,对在该一个或多个基元内的多个采样点中的每一个:
确定在规范空间内的对应地址;以及
采样一个或多个图形纹理的至少一个纹素(texel),该一个或多个图形纹理具有每一个与涉及在规范空间内的至少一个离散地址的信息相关的多个纹素,以确定在规范空间对应的地址是否在对应于所接收的笔画曲线的规范空间的该对应部分内。
根据本发明的第四个方面,提供一种在图形处理系统中渲染用于显示的笔画曲线的设备,该设备包括:
用于接收在用户空间定义的输入笔画曲线的装置;
用于通过确定对应于所接收的笔画曲线的在规范空间定义的规范曲线的部分确定对应于所接收的笔画曲线的规范空间的部分的装置;
用于使用接收的转换把所接收的笔画曲线投射进表面空间内的装置;
用于定义一个或多个在表面空间内覆盖该投射的笔画曲线的基元的装置;以及
用于对在该一个或多个基元内的多个采样点中的每一个来确定在规范空间对应的地址的装置;以及
用于采样一个或多个图形纹理的至少一个纹素的装置,该一个或多个图形纹理具有每一个与涉及在规范空间内的至少一个离散地址的信息相关的多个纹素,以确定在规范空间对应的地址是否在对应于所接收的笔画曲线的规范空间的部分内。
也相信这种形式的图形纹理的使用可能是新的并具有它自己恰当的优势。因此本发明也延伸至这种的纹理的结构以及延伸至这种纹理本身。
因此根据本发明的第五个方面,提供在渲染用于显示的笔画曲线时在图形处理系统中使用的图形纹理,其中所述纹理的每一个纹素表示在定义的空间中的至少一个地址,以及具有与它相关的,用于所述至少一个地址,涉及在所述空间中定义的曲线的信息。
因此根据本发明的第六个方面,提供构造在渲染用于显示的笔画曲线时用于与图形处理系统一起使用的图形纹理的方法,该方法包括:
在定义的空间定义曲线;
为在所述定义的空间中的多个地址中的每一个,确定涉及在所述空间定义的曲线的信息;以及
产生并存储包括纹素阵列的图形纹理,其中每一个纹素对应于在所述定义的空间的多个地址中的至少一个,并与涉及在所述空间内定义的所述曲线的所确定的信息相关。
因此根据本发明的第七个方面,提供用于构造当渲染用于显示的笔画曲线时与图形处理系统一起使用的图形纹理的设备,该设备包括:
用于在定义的空间定义曲线的装置;
用于为在所述定义的空间中的多个地址中的每一个来确定涉及在所述空间定义的曲线的信息的装置;以及
用于产生并存储包括纹素阵列的图形纹理的装置,其中每一个纹素对应于在所述定义的空间的多个地址中的至少一个以及具有与它相关的涉及在所述空间内定义的所述曲线的所确定的信息。
如熟悉本领域技术的那些人将理解到的,本发明的这些方面和实施例可以最好适当地包括本发明在这里描述的优选和可选的特征中的任何一个。
例如,涉及在所述空间定义的曲线的信息最好包括涉及涉及在所定义的空间内的至少一个地址相对于所述曲线上的一个或多个点的位置的信息。
进一步,曲线最好包括如上所描述的规范曲线,以及在曲线上的一个或多个点优选地包括一个或多个在曲线上的点,其中,自该点可以向在讨论的所述空间内的地址画一条垂直于该曲线的(直)线。
相似地,优选地在一个或多个纹理中的每一个纹素具有与它相关的上面所讨论的用于那个纹素位置在规范曲线上的解的信息。换句话说,每个纹素将表示在规范空间内的至少一个位置以及存储涉及用于在规范空间内的那个位置的在规范曲线上的解的点的信息。例如,并优选地,信息是解的点的参数值,或从在规范曲线上预先确定的点到解的点的距离,以及从解的点到曲线的垂直距离。
例如,对四通道纹理(存储RGBA),纹理的红和绿通道可以存储参数的地址和到曲线的垂直距离(或者,反之亦然)用于讨论中的在规范空间内的位置的一个解点,以及蓝和阿尔法通道可以存储用于曲线上的其它解点的对应数据(等等如果纹理支持进一步的数据通道)。可选地,另外的纹理,或者同一个纹理的其它部分,可以被用来存储用于讨论中的地址的进一步的解,如果需要的话。
在信息以纹理的形式被存储的地方,纹理可以具有个任何合适和期望的大小(即,包括所期望的任何数目的纹素),且每一纹素可以具有与它相关的任意期望数目的数据。然而,优选地,每个纹素具有与它相关仅涉及在定义的(规范)空间的单个离散地址的信息。
申请人进一步认识到对在规范空间的任何离散地址,以及其中规范曲线是基本二次曲线,将仅有0,1或2个自其可以向在规范曲线的一半(即,如果把规范曲线关于它的对称反射轴分裂(分开))上的各个离散的地址画出垂直于该规范曲线的(直)线的相关点(解)。
因此,在尤其优选的实施例中,其中规范曲线具有(例如,通过二次规范曲线的最底点的)对称反射轴,以便它可以被分裂(分开)成彼此是镜像图像的两个一半,该信息,比如上面讨论的,仅仅被存储用于在规范空间定义的每个离散地址(采样位置),仅仅用于在半个规范曲线上的那个地址的“解”点。
因此,在本发明尤其优选的实施例中其中对在规范空间内的每一个离散地址存储了在规范曲线上的相关的识别点(解)的参数值和在规范曲线上的该相关的识别点(解)与各个离散地址之间的距离,然后在这种情况中,对于在规范空间的每一个离散地址(采样位置)仅仅需要存储,最多,四(4)个分量(离散条信息),即(i)在规范曲线上的第一(比如最近的)识别点(解)的参数值;(ii)在规范曲线上的第一(比如最近的)识别点(解)与离散地址的距离;(iii)在规范曲线上的第二(比如最远的)识别点(解)的参数值;(IV)在规范曲线上的第二(比如最远的)识别点(解)与离散地址的距离。如将要理解到的,这四个分量可以方便地被存储在单个“四通道”图形纹理的单个纹素中,因为这样的单个纹素将如上面所提到的具有四个数据通道-红色通道,绿色通道,蓝色通道和阿尔法通道。
优选地,涉及到用于每个离散地址(或涉及“缺失的解”的适当的数据,如果没有最近的解的话)的最近的解的信息总是被存储在用于给定的纹理的每个纹素的相同部分(通道)中(及优选地在被使用的所有纹理中),例如总是在每一个纹素的红色和绿色通道中。这可以确保每一个纹素(和纹理)具有相同的共同的基本配置,以及允许,尤其涉及到那些其中只有用于特定采样位置的最近的解被测试(如上面所讨论的)的实施例,系统快捷地测试存储了涉及最近的解之信息的纹素数据通道。
如上面作描述的,对与一个或多个纹理相关的在规范空间中的离散地址中的一个或多个,在规范曲线上可能没有可以自其向各个离散地址画出垂直于该规范曲线的(直)线的点(解),或者可能有比解的数目更少的在规范曲线上的点(解),解的数目通过构造了一个或多个纹理而被保持。例如,在上面的实施例中,一个或多个纹理被构造使得每一个纹素优选地能够存储关于在规范曲线上的两个点(解)的信息的同时,即与单个离散地址相关的点(解)的最大数目,可能需要纹素中的一个或多个来仅仅存储关于一个点(解)的信息,或者根本不需要存储关于任何点(解)的信息,即那些在规范空间内与地址相关的纹素仅仅具有一个或没有在规范曲线上相关的点(解)。
优选地,对那些具有比相关的点(解)的最大数目少的离散地址(纹素),预先确定的或预先定义的值被存在有关的纹理的“参数的”和/或的“距离”的分量中其将导致“缺失”的解无法测试以确定当它出现在规范空间内时它是否落在笔画曲线内。
例如,在优选的实施例中,把当它出现在规范空间内时将总是大于任意输入接收的笔画曲线的笔画宽度一半的值存储在这种“缺失”的解的“距离”分量中。在这样的实施例中纹素的相关的“参数”分量或者可能被留成空的(未定义)或者可能包含任何合适和期望的适当的值,因为解仅需要放弃两个用于被确定的“缺失”的解的测试中的一个,当它出现在规范空间内时其落在笔画曲线的外部。
当按照本发明使用纹理时这有助于避免任何导致伪渲染效果的“缺失的”解。
在以上面描述的方式使用图形纹理的地方,纹理随后可以如所期望地被采样以获得用于在规范空间内的给定地址的解数据。
例如,在一个实施例中,当纹理被采样时获得的信息可以是存储的涉及到要被采样的规范空间内的位置最近的纹素的信息。
然而,在尤其优选的实施例中,使用合适的纹理过滤或插值过程,比如,且优选地,双线性过滤,如本领域内知道的。这将有效的增加纹理的分辨率并因此同样地增加渲染的精确度。因此,在尤其优选的实施例中,使用双线性过滤采样纹理。
(通过增加为其存储信息的在规范空间内的离散地址的数目增加纹素的绝对分辨率也将是可能的。然而,这可能不总是期望的。因此在采样纹理时,过滤或插值过程的使用提供了备选的无需增加纹理绝对精确度就可增加渲染精确度的途径。)
在尤其优选的实施例中,存储的用于在规范空间中定义的每一个离散地址的信息(如每一个纹素),包括在规范曲线上的一个或多个识别点中的每一个与各个离散地址之间的符号距离,而非绝对距离。如将被理解到的,该符号距离不仅仅指出两点之间的距离(绝对距离),而且指出离散地址落在规范曲线的哪一边。例如,如果离散地址在规范曲线的上方,那么该距离被赋予正值,而如果该离散地址在规范曲线的下方,那么该距离被赋予负值(或者,当然,反之亦然)。
在使用过滤或插值时,使用符号距离将有助于实现纹理的精确采样。
申请人已经认识到,当纹理被采样时自纹理返回的值取决于被使用的纹理查找(采样)过程,例如,取决于当纹理被采样时过滤或插值的任何形式是否被应用以及,如果是,过滤或插值采取了哪种形式。例如,对纹素的单位阵列(identical array),与简单获取到采样位置的最近的纹素的值的纹理查找比较,对于给定的采样位置,使用双线性过滤的纹理采样过程可能返回不同的的纹素值。
当构造一个或多个本发明供的纹理时,这可以被探索以提供更好的渲染结果。尤其,申请人已认识到,在使用纹理时,如果在一个或多个纹理中的纹素值被裁减或优化至被使用的纹理采样过程(过滤),对于给定的纹理分辨率,可以实现笔画曲线的更精确地渲染。
因此,在优选实施例中,一个或多个纹理被优选地裁减至将使用的纹理采样过程。换言之,一个或多个纹理被优选地构造以便考虑到要对纹理使用的特定纹理采样技术。
例如,一个或多个纹理的纹素值优选地被设置(计算)以便最小化(minimising)最大的误差和/或本地误差的和,在用选择的纹理采样过程(例如双线性过滤)采样之后,而非,例如必需想要具有在纹素中心的正确的值。在尤其优选实施例中,通过得到可以被用来表示采样过程的成本函数(cost function)以及随后使用一个或多个优化算法比如模拟退火算法(simulated annealing)最小化那个成本函数,来确定并选择(设置)纹素值。
在尤其优选的实施例中,产生并存储多个不同的纹理,每一个表示不同的规范曲线和/或给定规范曲线的不同部分。那么对要画的任意给定的曲线,对那个曲线最适当的纹理可以被识别和选择,并被使用以渲染曲线。因此,通过在纹理中表示曲线的合适范围,之后渲染笔画曲线的范围应该是可能的。
在优选实施例中,在同一个纹理映射中表示和存储多个不同的规范曲线。这可以通过在纹理中空间地分开曲线,以及之后如本领域技术所知道的那样采样讨论中的曲线在纹理中适当的区域来做成。
在尤其优选的实施例中,多个纹理相对于给定的规范空间被使用和存储,其中每个纹理存储涉及在规范空间不同区域内的多个离散地址的信息。例如,优选地,相对于给定的规范空间,第一纹理被构造(使用)以存储涉及在规范空间第一区域内的多个离散地址的信息,且至少一个第二纹理被构造(使用)以存储涉及在规范空间第二区域内的多个离散地址的信息。
规范空间的第一和第二区域可以是明确并分开的区域,或者可选地,它们可以或者部分或者全部重叠。的确,在优选的实施例中,第一区域被第二区域全部包围。例如,在规范曲线是基本二次曲线的实施例中,第一区域可以覆盖自最底点向第一参数的地址延伸的规范空间的区域以及第二区域可以覆盖自最底点向第二即更大参数的地址延伸的规范空间的区域。
在使用本发明的地方,然后优选地表示规范曲线的纹理提前被产生,以及之后被合适地存储以便由图形处理系统使用,例如,并优选地,连同图形处理系统可以使用的其它(静态的)纹理映射(maps)一起。然后,给定的纹理被合适地选择和使用,当讨论中的笔画曲线要被渲染时。
一旦已确定在表面空间中一个或多个基元内的采样点,当它在规范空间出现时,是否落在笔画曲线内,例如使用如上所讨论的本发明的优选步骤,然后数据,例如红,绿和蓝(RGB)色彩值以及“阿尔法”(透明度)值,可以基于该确定被分配(根据在用户空间所定义的接收笔画曲线所需的)到采样点。然后优选地,为在表面空间内定义的多个采样点中的每一个以及因此而渲染的笔画曲线来重复这个过程。
自上可见,所以在本发明的优选实施例中,一个或多个基元被光栅化至采样点和产生的片元,和表示适当的规范曲线的纹理,和规范空间的部分,通过采样对应于基元采样点位置的纹理中的位置(以本领域所知道的方式)来采样用于一个或多个基元中的每一个采样点。(如以上所讨论的,应使用适当的纹理过滤过程,例如,并优选地,双线性过滤,来采样纹理。)
然后,把采样的纹理值比较于讨论中的笔画曲线的对应的值(例如,并优选地,在规范空间的参数范围及笔画宽度(的一半))以及保留或据此丢弃的在表面空间内的对应的采样点。
这个“比较和丢弃”的过程可以以任何期望和合适的方式被执行用于讨论中的图形处理系统。例如,使用具有可编程的片元阴影器(shader)硬件的图形处理系统,可以并优选地使用比较和有条件的丢弃路径。
用具有固定功能硬件的图形处理系统,本发明的这个操作可以通过,例如,多次让采样点(片元)穿过图形渲染管线(pipeline),来执行。
例如,第一个经由图形渲染管线的通路可以被用来核查用于采样点的一个或多个解中的一个的参数值是否当它出现在规范空间时是在笔画曲线的参数范围内,然后第二个经由图形管线的通路可以被用来,这应该是必需的,核查解和采样地址之间的距离是否小于或等于笔画曲线的笔画宽度的一半(或反过来当然也一样)。如果需要,那么做出一对同样的通路来核查与采样地址相关的规范曲线上的一个或多个点(解)中其它的。
在需要的地方,可以使用点积以产生在如上所描述的测试中使用的任何信息的绝对值。例如,优选地,点积被用来把符号距离转换成绝对距离。此外,优选地,阿尔法测试被使用以执行如上所描述的测试中所必需的比较。
如上所描述的,在尤其优选的实施例中,如果在它的第一个经由渲染管线的通路中解测试失败,那么它将不再进一步测试(通过第二次穿过管线)。优选地,这可以使用模板缓存(stencil buffer)来执行。
在尤其优选的实施例中,本发明不同的功能在单个图形处理平台上执行,其中,该平台产生并输出要写到用于显示设备的帧缓冲器的数据。
本发明可应用于渲染器的任何形式或配置,比如,具有“管线”安排的渲染器(这种情况下渲染器将是以渲染管线的形式)。在优选实施例中,它应用到硬件图形渲染管线。本发明不同的功能和元件等可以如所期望的,例如,并优选地,通过适当的功能单元、处理逻辑、处理器、微处理器安排等来执行。
本发明可以应用到渲染的所有形式,比如立即模式渲染(immediate mode rendering),延迟模式渲染(deferred moderendering),瓦片纹理渲染(tile-based rendering),等等。
如根据以上将要理解到的,尽管并不排他地,本发明尤其适用于3D图形处理器和处理设备,并因此延伸至一个3D图形处理器和包括根据这里描述的本发明的若干方面中的任何一个或多个的设备或根据这里描述的本发明的若干方面中的任何一个或多个运行的3D图形处理平台。如果任何硬件必需去执行上面讨论的特定功能,这样的一个3D图形处理器可以另外包括多个3D处理器包括的通常功能单元中的任何一个或多个或全部,等等。
本发明同样延伸至2D图形处理器和2D图形处理。
熟悉本领域技艺者还将理解到所有描述的本发明的方面和实施例可以,并优选地,包括,同样适当的,这里描述的优选和任选的特征中的任意一个或多个或全部。
根据本发明的方法可以至少部分使用软件,例如计算机程序,来执行。因此将看到当从更进一步的方面看时本发明提供当被安装在数据处理装置上时尤其适于执行这里讨论的方法的计算机软件,包括当程序元件在数据处理装置上运行时用以执行这里描述的方法的计算机软件代码部分的计算机程序元件,以及包括当程序运行在数据处理系统上时适于执行这里描述的方法或者多个方法的所有步骤的代码装置的计算机程序。数据处理器可以是微处理系统,可编程FPGA(现场可编程门阵列),等。
该发明还可以延伸至计算机软件载体,其包括当被使用以运转图形处理器,渲染器或包括数据处理装置的微处理系统时,与所述数据处理装置、所述处理器、所述渲染器或系统协力去执行本发明之方法的步骤的这样的软件。这样的计算机软件载体可以是物理存储介质比如ROM芯片,CD ROM或磁盘,或也可以是信号比如通过线的电信号,光信号或无线电信号比如到卫星或类似物。
将进一步理解到并非本发明之方法的所有步骤需要通过计算机软件执行以及因此根据更进一步广义的方面本发明提供计算机软件,和安装在计算机软件载体上的这样的软件,用以执行这里提出的方法之步骤中的至少一个。
因此本发明可能作为与计算机系统一起使用的计算机程序产品被合适地实施。这样的执行可以包括一系列计算机可读指令,该可读指令或者固定于有形介质,比如计算机可读介质,例如,磁盘,CD-ROM,ROM,或硬盘,或者可传输到计算机系统,经由调制解调器或者其它界面设备,通过或有形介质,包括但不限于光学或模拟通信线,或使用无线技术的无形介质,包括但不限于微波,红外线或其他传输技术。这一系列计算机可读指令包括这里前面描述的功能性的全部或部分。
熟悉本领域技艺者将认识到为与许多计算机架构或操作系统一起使用这样的计算机可读指令可以用多种程序语言来写。进一步,这样的指令可以使用任何存储技术,现在或将来,包括但不限于,半导体、磁性的或光学的来存储,或使用任何通信技术,现在或将来,包括但不限于,光学的、红外线的或者微波来传输。考虑到这样的计算机程序产品可以与附随的打印或电子文件一起作为可移动介质例如用收缩性薄膜包装的(shrink-wrapped)软件,用计算机系统预先装载的(pre-loaded)例如在计算机ROM或固定磁盘上,来分发,或者从服务器或电子公告板通过网络来分发,例如,因特网或万维网(World Wide Web),来分发。
附图说明
本发明的多个优选的实施例将通过只举例的方式并参考附图一起在下面描述,其中:
图1示意性地示出本发明的实施例的原理过程;
图2说明了所必需的把输入笔画曲线映射到规范曲线的对应部分的转换的确定;
图3示意性地示出在用户空间内的笔画曲线在规范空间内的规范曲线的对应部分内的转换;
图4示出了在规范空间内的二次规范曲线,以及在规范空间内与特定地址相关的在规范曲线上的解;
图5示出了覆盖在图4中的二次规范曲线上的对应于输入笔画曲线的规范曲线的部分;
图6说明了规范曲线被再分到分开的部分内,每一个分开的部分与特定的纹理相关;
图7示出了与优选实施例相关的渲染管线。
具体实施方式
除非另外指出,否则同样的参考数字用于同样的分量。
图1示意性地示出本发明的实施例原理过程。
如图1所示,在2D用户空间2中,由:曲线1的起始点c0和终止点c2的位置,中间的控制点c1的位置,和笔画宽度w来最初定义笔画二次贝塞尔曲线1形式的矢量图形对象。
为了渲染用于显示的笔画曲线1,笔画曲线1,或者典型地定义该笔画曲线的信息,最初被输入到图形处理系统。
在渲染过程中,如在领域中所知道的,在用户空间2所定义的笔画曲线1被投射进2D表面空间3内,其具有相同的显示透视图(几何图形),其中,在该显示上将看到笔画曲线。把笔画曲线1从用户空间2投射到表面空间3的转换被普遍地称为用户到表面的转换(Tus),以及典型地将包括非等比缩放。因此,在表面空间3内的所投射的笔画曲线1’的笔画宽度将普遍地随着曲线的长度变化,而非与笔画曲线1一样具有单一的、固定的值。
一旦笔画曲线1已被投射进表面空间3内,从而定义所投射的笔画曲线1′,基元4,比如图1所示的多边体,被产生以覆盖在表面空间3内的所投射的笔画曲线1’。如在本领域内所知道的,然后基元4被光栅化,以及在光栅化过程中定义的多个采样点被适当地明暗处理(基于他们是否落在由投射的笔画曲线1′限定的区域内),以便显示所投射的笔画曲线1’。
在本实施例中,这个确定(表面空间3内的采样点是否落在所投射的曲线1’内的)通过把在用户空间2中所定义的笔画曲线1映射到规范空间5的对应部分1”(这里称为笔画规范曲线段(segment)),然后确定在规范空间5中对应于在表面空间3内的采样点的地址是否落在笔画规范曲线段1”内来做出。
在规范空间5内定义规范曲线12,如上所讨论的,规范曲线12是预先定义的、单一或基本曲线,其中,仅使用平移(translation)、旋转和/或等比缩放就可以把在曲线家族内的所有曲线转换到该曲线(或至少到一部分)上。例如,在本实施例中,其中在用户空间2所定义的笔画曲线1是二次曲线,规范曲线12是曲线y=x2。
如将被理解到的,为了实施本实施例,有必要确定用户到规范的转换(Tuc),即把在用户空间2内所定义的笔画曲线1映射到规范曲线12的对应部分1”的转换。
图2示出了在本实施例中得到用于任意给定的输入二次贝塞尔曲线的用户到规范的转换的方式。
如在本领域内所知道的,普通的二次贝塞尔曲线由下式定义:
<x(t),y(t)>=P(t)=P0(1-t)2+2P1t(1-t)+P2t2,其中t∈[o,1]
其中规范二次曲线由下式定义:
<x(t′),y(t′)>=<t′,t′2>
如上所提到的用户到规范的转换仅包括平移(由矩阵Mt所定义),旋转(由矩阵Mr所定义)和/或等比缩放(由矩阵Ms=kI所定义,其中k是常数而I是单位矩阵)。
在本实施例中,用以确定用户到规范的转换的过程的第一阶段是确定转换的平移分量(平移矩阵Mt)。以所必需的把在用户空间2中的输入二次贝塞尔曲线10的最底点(底部的点)20平移到在规范空间5中的规范曲线12的最底点22(在原点(0,0)处)的形式确定所需要的平移-见图2(i)。正如将被理解到的,输入曲线10的最底点20是曲线上曲率最大的点,以及,由于该曲线是二次曲线,所以该最底点20也是在曲线上的位置内关于参数t的变化在其处产生最小变化的点。
在输入曲线10上的两点(x,y)和(x+Δx,y+Δy)之间的距离由给出,在Δx和Δy的极限趋于零时,其导致在曲线上由 给出的地址中的无穷小变化,其中’表示对t求导。因此,通过计算t在D′(t)=0中的值来确定输入曲线10的最底点20的地址,其等于求解(D(t)2)′=0,并具有以下解答:
ax=x0-2x1+x2
ay=y0-2y1+y2
bx=2x1-2x0
by=2y1-2y0
其中:(x0,y0)是在用户空间2(其中心曲线是输入二次贝塞尔曲线10)中的笔画曲线1的起始控制点c0的位置;(x1,y1)是笔画曲线1的中间控制点c1的位置;以及(x2,y2)是笔画曲线1的终止控制点c2的位置。
通过把上面的t值插入到关于x(t)和y(t)的方程里,可以确定在用户空间2中的最底点20的坐标(x,y),并由此可以确定把输入曲线10的最底点20移动到规范曲线12的最底点22(即到在规范空间5内的原点(0,0))所必需的平移。
一旦已确定用户到规范的转换的平移分量,接着确定旋转分量(即:旋转矩阵Mr)。图2(ii)示出了这个过程。
通过定位在规范空间5内的所平移的输入曲线14上的两个普通的点30、32来确定所需要的旋转,其中,从最底点22到该普通点的点30,32等距。之后,在这两点之间能够画一条线34,而所需要的旋转是必需让这条线水平(即:使得所有在该线上的点具有相同的y值)。
因此,把在所平移的输入曲线14上的坐标(作为列向量提供)将要带到规范曲线12的旋转矩阵Mr可以这样计算:
px=2axt+bx
py=2ayt+by
最后,确定用户到规范的转换的等比缩放分量(即:缩放矩阵Ms)。这个在图2(iii)示出。
如将要理解到的,一旦被合适地平移和旋转到规范空间5内,在用户空间2中的输入曲线10,即:图2(iii)的曲线16,现在具有y=kx2的形式,其中k是将要确定的缩放因子。所以,如果为了计算旋转矩阵所定义的在点30和32之间的线34的长度是2l1,且自这条线的中点延伸到在原点的曲线16的最底点的线的长度被定义为l2,那所需要的缩放度是:
一旦已计算了用户到规范的转换,即:TUC=MsMrMt=kMrMt,可以通过把所确定的转换应用到输入笔画曲线1的参数来确定由笔画规范曲线段1″覆盖的规范空间5的实际部分,其中,该转换必需把在用户空间2内定义的输入笔画的输入曲线1的中心曲线映射到规范曲线12的对应部分上。这个过程在图3示意。
如图3所示,使用用户到规范的转换把在用户空间2内所定义,并具有控制点c0、c1和c2及笔画宽度w的输入笔画曲线1映射到规范曲线的对应部分1″。由于用户到规范的转换的性质,笔画规范曲线段1″自身是一个具有单一笔画宽度w″的笔画曲线,且其在规范曲线12上的起始点c0″和终止点c2″之间延伸。
笔画规范曲线段1″的起始和终止点c0″,c2″定义在规范空间5内的输入笔画曲线1的参数(x)的范围。因此,如图3所示,笔画规范曲线段1″具有在参数地址XA和XB之间延伸的参数范围。
此外,因为在等比缩放应用下的欧几里德距离的线性缩放,笔画规范曲线段1″的宽笔画度w″将等于kw,即:在用户空间所定义的输入笔画曲线1的笔画宽度w乘以用户到规范的转换的缩放因子k。
在本实施例中,如上面所提到的,为确定在表面空间3中的基元4内的采样点是否在所投射的笔画曲线1′之内,使用用户到表面转换的反(inverse),把采样点映射到在用户空间2中的对应地址,然后使用用户到规范的转换把在用户空间2的这个地址映射到在规范空间5内的对应地址。最后,作出关于在规范空间5内的对应地址是否在笔画规范曲线段1″内的决定。
如果有可能自在规范空间5内的地址画一条直线到规范曲线12(其形成了笔画规范曲线段1″的中心曲线)上的点,使得该线垂直于曲线且具有小于或等于(笔画规范曲线段1″的)笔画宽度一半的长度,则在规范空间5内的该地址被定义为在笔画规范曲线段1″内部。在规范空间5内没有达到这个条件的任何地址(点)都将在笔画规范曲线段1″的外部。
在本实施例中使用规范二次曲线的第二性质作出这个确定,也就是对于在该规范曲线的平面里的任意点,可以自在平面上的点向其画线,且那个线垂直于该曲线的在曲线上的点的数目由常数K限定。因此,换句话说,对于在规范空间5内的任意点((x,y)地址),有可能从那个点向在规范曲线12上的整数个点画垂直于规范曲线12的线。因此,对在规范空间的每一个(x,y)地址,将有整数n个解(solutions)(在曲线上的这样的点),其中n=0,1,2,3。
例如,如图4所示,在规范空间5内的点40有3个这样的解。第一解,即,垂直线“击中”曲线10的地方,是在x=x1处,以及从点11到曲线10x=x1处产生的(resultant)直线具有长度d1。第二和第三解分别是在x=-x2和x=-x3处,伴随具有长度分别为d2和d3的相关的直线。
据此,注意到在规范曲线12上的每一个解由两条信息定义,该解与规范空间5内的点(地址)相关,其中,该信息:首先为它的参数(x)的值;其次为从在规范空间5内的点(地址)到它的垂直距离。
在本实施例中,这两条信息被用来确定该特定地址是否在笔画规范曲线段1″内部,其中,该信息是关于在规范空间5内的特定地址的规范曲线上的每个解,,其更详细的内容以下参考图5讨论。
图5示出了覆盖到先前图4所示的二次规范曲线上的笔画规范曲线段1″,笔画规范曲线段1″遍布x值xA≤x≤xB的范围,并具有相关的笔画宽度w″。
为了确定在规范空间的点40是否在笔画规范曲线段1″中,首先确定与点40相关的解中的至少一个是否落在范围xA≤x≤xB内。如图5所示,可以看到点40的第一解具有参数(x)的x1值,其位于期望的范围内。接下来确定这个第一解是否具有小于或等于笔画宽度w″一半的垂直距离。正如再次可从图5看到的,点40的垂直距离d1小于w″/2。因此,点40位于笔画规范曲线段1″内。
在本实施例中,这样的测试被通过存储以上两条信息来执行,其中,该信息与在规范空间5中定义的多个离散地址的解相关。在本实施例中,这是为在规范空间5内地址的对称阵列而做的,尽管这不是必需的并且地址可以被定义在规范区间5内任何期望的点。
在本实施例中,以一个或多个特别构造的图形纹理的方式存储上面的信息。如以上所描述的,因为以这个方式存储数据,这特别有利于现存的可以被用来渲染笔画曲线的图形处理系统的纹理映射处理。
如在该领域所知道的,典型地,图形纹理的每一个纹素(纹理要素)有四个通道:红色通道;绿色通道;蓝色通道;和阿尔法通道,以及其普遍地存储四条分开的数据。所以,在本实施例中,用于第一解的该组值存储在纹素的红色和绿色通道,而用于第二解的该组值存储在纹素的蓝色和阿尔法通道。
所以,对在规范空间中具有多于两个解的任意地址而言,同时在图形纹理的二个或多个纹素内存储所需的信息是可能的,在本实施例中,沿着最底点分裂所有通过图形处理系统接收的输入笔画曲线,其意味着只需要存储那些具有非负参数值的解,对在规范空间5内的任意地址,仅有用于其的两个中的最大值。据此,在本实施例中,在图形纹理的纹素和规范空间5的地址之间存在一到一的对应。
例如,在本实施例中使用的包括在与图4所示的点40相关的信息的图形纹理,将仅存储用于第一解的该组值,即,(x1,d1),而不存储用于第二和第三解的值,即(-x2,d2)和(-x3,d3)。对于在规范空间中的点40的镜像图像的点(即,其已被关于y轴反射),以及其因此具有解(-x1,d1)、(x2,d2)和(x3,d2),图形纹理将存储用于第二和第三解的该组值,而非第一解。
在本实施例中,实际上构造了多个图形纹理,每一个与规范曲线的特定部分(参数的范围)相关。例如,参考图6,为规范曲线12在0≤x<xA之间的部分构造第一纹理(即,存储用于在阴影区50所定义的多个离散地址的解),为规范曲线12在0≤x<xB之间的部分构造第二纹理,以及为规范曲线12在0≤x<xC之间的部分构造第三纹理。以这样的方式创建多个纹理意味着,在大多数情况下,由图形处理系统接收的任意输入笔画曲线1可以在最底点被分裂,以及输入笔画曲线1的每个部分可以仅仅使用单个的纹理渲染。
同时,如上所述,在规范空间5中的一些点将具有不止一个在规范曲线12上的相关解,已经发现并不总是需要测试所有这些解来确定点是否在笔画规范曲线段1″的内部。
例如,当确定出笔画曲线不包括任何自重叠(self-overlapping)区域(其出现在当中心曲线的曲率半径小于笔画宽度的一半时)时,那么仅需要测试用于特定采样位置的最近的解,是否在笔画规范曲线段1″的内部,即,仅采样纹素的第一个的两个分量。
然而,如果确定出笔画曲线包括一个或多个自重叠区域,则存在以下可能性:与在规范空间5内的点相关的多个解中的一个,在测试时,被发现在笔画规范曲线段1″的内部,而与该点相关的另外的解被发现在笔画规范曲线段1″的外部。对这样的点,典型地必需(尽管不总是)测试与在规范空间5中的特定采样位置相关的两个解,以确定它是否在笔画规范曲线段1″的内部,即,采样纹素的所有四个分量。
相似地,如果覆盖笔画曲线的基元紧密粘合在曲线的端部,可能仅需要测试每一个被测试解的距离的值,而非参数的值。
在本实施例中,如上所描述的,为确定在表面空间3内的采样点是否在所投射的笔画曲线1′内,该采样点被映射到在规范空间5中的对应地址。在规范空间5中的这个地址可以正确对应于在纹理内存储了其的相关解的地址。然而,情况将常常是,的在规范空间5内的地址,其对应于表面空间3内的采样点,将不正确地对应于在纹理内为其存储了相关解的地址。因此,使用合适的过滤或差值过程采样该纹理。例如,在本实施例中,使用双线性插值(bilinear interpolation)过程采样纹理,在其中获取被存储的涉及到所期望的地址的四个最近的地址的数据,以及采用加权平均以确定所期望地址的数据。然后,以上面描述的方式使用插入的数据,以确定用于那个地址的解中的至少一个是否通过了用于确定该地址是否在笔画规范曲线段1″内部的两个测试。如果解中的一个通过了两个测试,该地址在笔画规范曲线段1″内,且因此在表面空间3内的采样点被明暗处理。
在将要适当执行的双线性插值过程的顺序内,在本实施例中,在特别构造的纹理内存储符号距离(signed distance)而非绝对距离。换句话说,每个存储的值被给予或者正的或者负的符号,取决于在规范空间5内的相关地址是在规范曲线12的上方还是下方。
正如将被认识到的,在纹理内的一些纹素,将不具有定义的用于所有四个分量的值。例如,那些与在规范空间左下象限的采样位置有关的纹素,即,x<0且y<0,没有具有非-负参数的值的解,以及如所指的(assuch)没有为纹理的四个分量中的任意一个所定义的值。此外,那些对应于仅具有一个解(而非最大的两个解)的采样位置的纹素,例如,图4和图5中的点40,将仅具有用于纹素的第一个两个分量所定义的值。考虑到这些“缺失”的解,以及为避免在测试过程中的任何潜在的误-正(false-positive)结果,在相关纹素中的“缺失”解的距离分量被给予值,该值大于任意(一半)笔画宽度,将按照其来比较该解的距离分量。
也将被认识到,仅对应于规范空间内左上象限的采样位置的纹素,即,x<0且y>0,其具有两个相异的解,且因此具有定义的用于纹理的所有四个分量的值。据此,在现有实施例中通过创建两个分开的纹理来优化纹理存储是可能的,第一纹理存储在规范空间5的所有四个象限内的用于离散地址的第一解的该组值,第二纹理仅存储在规范空间左上象限内的离散地址的第二解的该组值。(第二纹理因此仅仅是第一纹理大小的四分之一。)
图7解释了使用本实施例渲染笔画曲线的渲染管线。
首先,在步骤60在用户空间定义笔画曲线。在步骤62,笔画曲线被归类,因此例如被定义为二次曲线,椭圆弧线或三次曲线。如果笔画曲线被确定为椭圆弧线或三次曲线,该曲线因此被再分成多个二次曲线段,见步骤64。
接下来,将被渲染的二次曲线,或者每一个二次曲线段,被输入到系统的图形处理单元(GPU)内,以及在GPU内产生的相关笔画曲线(见步骤66)。然后,以以上描述的方式,使用用户到表面的转换把输入的笔画曲线转换到表面空间内(步骤68)以及产生并光栅化覆盖所转换的笔画曲线的基元(步骤70)。
使用以上描述的过程,然后确定在光栅化过程中确定的采样点中的每一个是否在所转换的笔画曲线内,并因此基于这个确定明暗处理该采样点。正如本技术领域内所知道的,这后面的步骤典型地被分成剪裁(clipping)和遮罩(masking)(步骤72),画图(paint)生成(步骤74),图像插值(步骤76),及混和(blending)与抗锯齿(antialiasing)(步骤78)步骤。
可以使用任何合适的传统的,现存的图形处理系统来执行本发明的过程。
例如,在可编程的图形硬件上,这些过程可以在像素着色器(fragment shader)内快捷地执行。
在固定功能的硬件上,可以使用一些贯穿渲染管线的通路来执行本发明。例如,对在规范空间5内的所期望的采样地址的每一个解,可以使用第一通路去核查参数的范围,以及可以使用第二通路去核查到曲线的距离(或反之亦然)。使用点积将符号距离转换成在测试中使用的绝对距离,以及使用阿尔发测试来执行不同的比较。也使用模板缓存(stencilbuffer)以允许两个通路彼此交流信息使得那些通过第一测试的解再一次通过用以第二次测试的管线。
综上可见,至少在它优选的实施例中,本发明提供了以实质上比可能具有传统技术的方式更为有效的方式(就CPU上的负载而言),在传统的固定功能3D图形硬件和在未修改的,现存的硬件图形加速器上,用以渲染笔画路径,以及尤其笔画曲线,和其它的事务的方法和设备。
Claims (20)
1.在图形处理系统中渲染用于显示的笔画曲线的方法,所述方法包括:
接收在用户空间内定义的输入笔画曲线;
通过确定在规范空间(canonical space)内定义的对应于所接收的笔画曲线的规范曲线的部分来确定对应于所接收的笔画曲线的规范空间的部分;
使用接收的转换函数将所接收的笔画曲线投射进表面空间内;
定义一个或多个基元,其在表面空间内覆盖所投射的笔画曲线;
对在所述一个或多个基元内的多个采样点中的每一个,确定在规范空间内的对应地址是否在对应于所接收的笔画曲线的所述规范空间的所述部分内;以及
根据确定在规范空间内的对应地址是否在对应于所接收的笔画曲线的规范空间的所述部分内的所述步骤,把用于渲染所接收的笔画曲线的数据分配到在表面空间内的所述多个采样点中的一个或多个。
2.根据权利要求1所述的方法,其中确定在规范空间内的采样地址是否在对应于所接收的笔画曲线的规范空间的所述部分内的所述步骤,包括,确定当所述采样地址在规范空间内出现时在所述规范曲线上的至少一个点是否位于所述笔画曲线的参数范围内,从所述规范曲线到在规范空间内的所述采样地址能够画垂直于所述规范曲线的线。
3.根据权利要求1或2所述的方法,其中确定在规范空间内的采样地址是否在对应于所接收的笔画曲线的规范空间的所述部分内的所述步骤,包括,当所述采样地址在规范空间内出现时确定从所述规范曲线向所述采样地址垂直延伸的线的长度是否小于或等于所述笔画曲线的笔画宽度的一半。
4.根据权利要求1或2所述的方法,其中确定在规范空间内的采样地址是否在对应于所接收的笔画曲线的规范空间的所述部分内的所述步骤包括查找为规范空间内的多个离散地址而存储的预先确定的信息。
5.根据权利要求4所述的方法,其中所述预先确定的信息包括以下所列中的至少一个:用于所述规范曲线上的点的参数值,能从在规范空间内的各个地址向所述规范曲线上的点画垂直于所述规范曲线的线;以及在所述规范曲线上的点与在规范空间内的所述各个地址之间的垂直距离。
6.根据权利要求4所述的方法,其中所述预先确定的信息被存储在至少一个图形纹理内。
7.在图形处理系统中渲染用以显示的笔画曲线的方法,所述方法包括:
接收在用户空间定义的输入笔画曲线;
通过确定在规范空间内定义的对应于所接收的笔画曲线的规范曲线的部分来确定对应于所接收的笔画曲线的规范空间的部分;
使用接收的转换函数将所接收的笔画曲线投射进表面空间内;
定义一个或多个基元,其在表面空间内覆盖所投射的笔画曲线;以及
然后,对在所述一个或多个基元内的多个采样点中的每一个:
确定在规范空间内的对应地址;以及
采样一个或多个图形纹理的至少一个纹素(texel)以确定在规范空间内的所述对应地址是否在对应于所接收的笔画曲线的规范空间的所述部分内,所述一个或多个图形纹理具有多个纹素,每一个与涉及在所述规范空间内的至少一个离散地址的信息相关。
8.根据权利要求7所述的方法,其中,所述一个或多个图形纹理从供所述图形处理系统使用的可用的多个图形纹理中基于所接收的笔画曲线来选择,并且其中多个图形纹理各自存储涉及在规范空间的不同区域内的多个离散地址的信息。
9.构造当使用权利要求1-8中任一项所述的方法来渲染用于显示的笔画曲线时与图形处理系统一起使用的图形纹理的方法,该构造图形纹理的方法包括:
在定义的空间内定义曲线;
为在所述定义的空间内的多个地址中的每一个,确定涉及在所述空间内定义的所述曲线的信息;以及
产生并存储包括纹素阵列的图形纹理,其中每一个纹素对应于在所述定义的空间内的所述多个地址中的至少一个,并具有与它相关涉及在所述空间内定义的所述曲线的所确定的信息。
10.根据权利要求9所述的构造图形纹理的方法,其中涉及所定义的曲线的所述信息包括涉及在所定义的空间内的至少一个地址相对于所述所定义的曲线上的一个或多个点的位置(position)的信息。
11.用于在图形处理系统中渲染用于显示的笔画曲线的设备,该设备包括:
用于接收在用户空间定义的输入笔画曲线的装置;
用于通过确定在规范空间内定义的对应于所接收的笔画曲线的规范曲线的部分来确定所输入的笔画曲线对应的规范空间的部分的装置;
用于使用接收的转换函数将所接收的笔画曲线投射进表面空间内的装置;
用于定义一个或多个在表面空间内覆盖所投射的笔画曲线的基元的装置;
用于对在所述一个或多个基元内的多个采样点中的每一个确定在规范空间内的对应地址是否在对应于所接收的笔画曲线的规范空间的所述部分内的装置;以及
用于根据在规范空间内的对应地址是否在对应于所接收的笔画曲线的规范空间的所述部分内的所述确定来把用于渲染所接收的笔画曲线的数据分配到在表面空间内的所述多个采样点中的一个或多个的装置。
12.根据权利要求11所述的设备,其中用于确定在规范空间内的采样地址是否在对应于所接收的笔画曲线的规范空间的所述部分内的所述装置,包括,用于确定当所述采样地址在规范空间内出现时在所述规范曲线上的至少一个点是否位于所述笔画曲线的参数范围内的装置,从所述规范曲线到在规范空间内的所述采样地址能够画垂直于所述规范曲线的线。
13.根据权利要求11或12所述的设备,其中,用于确定在规范空间内的采样地址是否在对应于所接收的笔画曲线的规范空间的所述部分内的所述装置包括,用于当所述采样地址在规范空间内出现时确定所述从所述规范曲线向所述采样地址垂直延伸的线的长度是否小于或等于所述笔画曲线的笔画宽度的一半的装置。
14.根据权利要求11或12所述的设备,其中,用于确定在规范空间内的地址是否在对应于所接收的笔画曲线的规范空间的所述部分内的所述装置包括用于查找为规范空间内的多个离散地址而存储的预先确定的信息的装置。
15.根据权利要求14所述的设备,其中所述预先确定的信息包括以下所列中的至少一个:用于所述规范曲线上的点的参数值,能从在规范空间内的各个地址向所述规范曲线上的点画垂直于所述规范曲线的线;以及在所述规范曲线上的点与在规范空间内的所述各个地址之间的垂直距离。
16.根据权利要求14所述的设备,其中所述预先确定的信息被存储在至少一个图形纹理内。
17.用于在图形处理系统中渲染用于显示的笔画曲线的设备,所述设备包括:
用于接收在用户空间定义的笔画曲线的装置;
用于通过确定在规范空间内定义的对应于所接收的笔画曲线的规范曲线的部分来确定对应于所接收的笔画曲线的规范空间的部分的装置;
用于使用接收的转换函数将所接收的笔画曲线投射进表面空间内的装置;
用于定义一个或多个在表面空间内覆盖所投射的笔画曲线的基元的装置;
用于对在所述一个或多个基元内的多个采样点中的每一个确定在规范空间内的对应地址的装置;以及
用于采样一个或多个图形纹理的至少一个纹素以确定在规范空间内的所述对应地址是否在对应于所接收的笔画曲线的规范空间的所述部分内的装置,所述一个或多个图形纹理具有多个纹素,每一个均与涉及在所述规范空间内的离散地址的信息相关。
18.根据要求17所述的设备,其中,所述一个或多个图形纹理从供所述图形处理系统使用的可用的多个图形纹理中基于所接收的笔画曲线来选择,并且其中多个图形纹理各自存储涉及在规范空间内的不同区域内的多个离散地址的信息。
19.用于构造当使用权利要求11-18中任一项所述的设备来渲染用于显示的笔画曲线时与图形处理系统一起使用的图形纹理的设备,该用于构造图形纹理的设备包括:
用于在定义的空间内定义曲线的装置;
用于为在所述定义的空间中的多个地址中的每一个确定涉及在所述空间中定义的所述曲线的信息的装置;以及
用于产生并存储包括纹素阵列的图形纹理的装置,其中每一个纹素对应于在所述定义的空间中的所述多个地址中的至少一个并具有与它相关的涉及在所述空间内定义的所述曲线的所确定的信息。
20.根据权利要求19所述的用于构造图形纹理的设备,其中涉及在所述空间内定义的所述曲线的所述信息包括涉及在所定义的空间内的至少一个地址相对于所述曲线上的一个或多个点的位置的信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0818278.4 | 2008-10-06 | ||
GB0818278A GB0818278D0 (en) | 2008-10-06 | 2008-10-06 | Graphics processing systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101714261A CN101714261A (zh) | 2010-05-26 |
CN101714261B true CN101714261B (zh) | 2014-08-20 |
Family
ID=40042353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910179578.7A Active CN101714261B (zh) | 2008-10-06 | 2009-09-30 | 图形处理系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8928667B2 (zh) |
JP (1) | JP5600410B2 (zh) |
CN (1) | CN101714261B (zh) |
GB (2) | GB0818278D0 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0524804D0 (en) | 2005-12-05 | 2006-01-11 | Falanx Microsystems As | Method of and apparatus for processing graphics |
GB0913170D0 (en) * | 2009-07-28 | 2009-09-02 | Advanced Risc Mach Ltd | Graphics processing systems |
US20110285718A1 (en) | 2010-05-21 | 2011-11-24 | Kilgard Mark J | Point containment for quadratic bèzier strokes |
WO2012140910A1 (ja) | 2011-04-15 | 2012-10-18 | パナソニック株式会社 | 曲線描画装置、曲線描画方法、曲線描画プログラム及び集積回路 |
KR101848507B1 (ko) * | 2011-10-12 | 2018-04-13 | 삼성전자주식회사 | 미려화 필기 메시지 전송 장치 및 방법 |
US20130093668A1 (en) * | 2011-10-12 | 2013-04-18 | Samsung Electronics Co., Ltd. | Methods and apparatus for transmitting/receiving calligraphed writing message |
US9317948B2 (en) | 2012-11-16 | 2016-04-19 | Arm Limited | Method of and apparatus for processing graphics |
US10204391B2 (en) | 2013-06-04 | 2019-02-12 | Arm Limited | Method of and apparatus for processing graphics |
USD757773S1 (en) | 2014-07-08 | 2016-05-31 | Huawei Technologies Co., Ltd. | Display screen or portion thereof with animated graphical user interface |
CN107077754B (zh) | 2014-11-07 | 2020-10-16 | 三星电子株式会社 | 显示装置和控制显示装置的方法 |
KR101654865B1 (ko) * | 2015-01-12 | 2016-09-06 | 삼성전자주식회사 | 스트로크 기반의 이미지 렌더링 장치, 방법 및 컴퓨터 프로그램 |
GB2541644B (en) * | 2015-08-03 | 2017-11-22 | Advanced Risc Mach Ltd | Graphics processing systems |
US9984480B2 (en) * | 2016-03-21 | 2018-05-29 | Adobe Systems Incorporated | Enhancing curves using non-uniformly scaled cubic variation of curvature curves |
GB2553744B (en) | 2016-04-29 | 2018-09-05 | Advanced Risc Mach Ltd | Graphics processing systems |
KR102378860B1 (ko) * | 2016-07-29 | 2022-03-28 | 소니그룹주식회사 | 화상 처리 장치 및 화상 처리 방법 |
CN110297932B (zh) * | 2019-06-28 | 2021-07-23 | 北京金山安全软件有限公司 | 确定矢量图中封闭图形的最大内接圆的方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0763930A1 (en) * | 1995-09-15 | 1997-03-19 | Agfa-Gevaert N.V. | Method and apparatus for calculating color gamuts |
CN101046888A (zh) * | 2006-03-30 | 2007-10-03 | 株式会社东芝 | 渲染装置和方法,以及形状数据生成装置和方法 |
CN101051390A (zh) * | 2007-05-15 | 2007-10-10 | 北京金山软件有限公司 | 一种用于河流模拟的方法和系统 |
CN101189600A (zh) * | 2005-06-30 | 2008-05-28 | 微软公司 | 对程序几何对象进行三角剖分 |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4855934A (en) * | 1986-10-03 | 1989-08-08 | Evans & Sutherland Computer Corporation | System for texturing computer graphics images |
US5133052A (en) * | 1988-08-04 | 1992-07-21 | Xerox Corporation | Interactive graphical search and replace utility for computer-resident synthetic graphic image editors |
JP2919712B2 (ja) | 1993-06-30 | 1999-07-19 | キヤノン株式会社 | 文字発生方法および装置 |
JPH06274149A (ja) | 1993-03-24 | 1994-09-30 | Mutoh Ind Ltd | アウトラインフォントの幅変更処理方法および装置 |
JP2972047B2 (ja) | 1993-04-23 | 1999-11-08 | シャープ株式会社 | スイープ立体生成装置 |
US5381521A (en) * | 1993-05-14 | 1995-01-10 | Microsoft Corporation | System and method of rendering curves |
JPH11175740A (ja) * | 1997-12-05 | 1999-07-02 | Fuji Xerox Co Ltd | 太線描画方法および装置 |
JP3181877B2 (ja) * | 1998-04-14 | 2001-07-03 | 株式会社島精機製作所 | 3次元画像作成装置 |
AU5871500A (en) * | 1999-06-11 | 2001-01-02 | Sydney Hyman | Image making medium |
US6552725B1 (en) * | 2000-04-11 | 2003-04-22 | Corel Corporation | Heuristic method for adaptive subdivision of coons patches for rendering |
US6707452B1 (en) * | 2000-07-19 | 2004-03-16 | Pixar | Method and apparatus for surface approximation without cracks |
US6894695B2 (en) * | 2001-04-27 | 2005-05-17 | National Semiconductor Corporation | Apparatus and method for acceleration of 2D vector graphics using 3D graphics hardware |
US6792205B2 (en) * | 2002-04-17 | 2004-09-14 | Mitsubishi Electric Research Laboratories, Inc. | Method for generating a textured range image |
JP2004054584A (ja) | 2002-07-19 | 2004-02-19 | Rikogaku Shinkokai | 線属性の自動付加方法及び装置 |
US7158677B2 (en) * | 2002-08-20 | 2007-01-02 | National Instruments Corporation | Matching of discrete curves under affine transforms |
TW575841B (en) * | 2002-08-27 | 2004-02-11 | Ind Tech Res Inst | Descriptive method of characters for displaying the thickness of strokes thereof |
US6917369B2 (en) | 2003-03-25 | 2005-07-12 | Mitsubishi Electric Research Labs, Inc. | Method and apparatus for rendering cell-based distance fields using texture mapping |
US6982724B2 (en) * | 2003-03-25 | 2006-01-03 | Mitsubishi Electric Research Labs, Inc. | Method for antialiasing an object represented as a two-dimensional distance field in object-order |
US20060017955A1 (en) * | 2003-03-31 | 2006-01-26 | Sharp Laboratories Of America, Inc. | Selective graphic instance rendering |
US20050017969A1 (en) * | 2003-05-27 | 2005-01-27 | Pradeep Sen | Computer graphics rendering using boundary information |
US7764287B2 (en) * | 2003-07-07 | 2010-07-27 | Arcsoft, Inc. | Graphic engine for approximating a quadratic bezier curve in a resource-constrained device |
KR100682889B1 (ko) * | 2003-08-29 | 2007-02-15 | 삼성전자주식회사 | 영상에 기반한 사실감 있는 3차원 얼굴 모델링 방법 및 장치 |
EP1751713A1 (en) | 2004-05-18 | 2007-02-14 | Koninklijke Philips Electronics N.V. | Image processing system for automatic segmentation of a 3-d tree-like tubular surface of an object, using 3-d deformable mesh models |
JP4476733B2 (ja) * | 2004-07-30 | 2010-06-09 | 株式会社東芝 | パターン評価方法、プログラムおよびパターン評価装置 |
US7239319B2 (en) * | 2004-08-27 | 2007-07-03 | Microsoft Corporation | Rendering outline fonts |
US7742050B2 (en) * | 2004-10-04 | 2010-06-22 | Microsoft Corp. | System and method for optimizing a graphics intensive software program for the user's graphics hardware |
US7555163B2 (en) * | 2004-12-16 | 2009-06-30 | Sony Corporation | Systems and methods for representing signed distance functions |
JP4255449B2 (ja) * | 2005-03-01 | 2009-04-15 | 株式会社ソニー・コンピュータエンタテインメント | 描画処理装置、テクスチャ処理装置、およびテセレーション方法 |
US7405733B2 (en) * | 2005-03-24 | 2008-07-29 | Autodesk Canada Co. | Spline drawing in a computer-implemented graphics program |
US7657071B2 (en) * | 2005-04-11 | 2010-02-02 | Siemens Medical Solutions Usa, Inc. | Systems, devices, and methods for bundle segmentation in diffusion tensor magnetic resonance imaging |
US7289119B2 (en) * | 2005-05-10 | 2007-10-30 | Sony Computer Entertainment Inc. | Statistical rendering acceleration |
US7589730B1 (en) * | 2005-05-20 | 2009-09-15 | Adobe Systems Incorporated | System and method for drawing a dashed path |
US7432937B2 (en) * | 2005-06-30 | 2008-10-07 | Intel Corporation | System and method for concave polygon rasterization |
JP2007073043A (ja) | 2005-09-06 | 2007-03-22 | Sharp Corp | 図形インスタンスに対して選択的にレンダリングを実行するレンダリング装置、レンダリング方法、および、制御プログラム |
US7564459B2 (en) * | 2005-10-31 | 2009-07-21 | Microsoft Corporation | Resolution-independent curve rendering using programmable graphics hardware |
JP4693660B2 (ja) * | 2006-03-10 | 2011-06-01 | 株式会社東芝 | 描画装置、描画方法及び描画プログラム |
WO2008064362A2 (en) * | 2006-11-22 | 2008-05-29 | Take Two Interactive Software, Inc. | System and methods for fast simulation and visualization of sparse fluids |
US7872648B2 (en) * | 2007-06-14 | 2011-01-18 | Microsoft Corporation | Random-access vector graphics |
US8068106B1 (en) * | 2007-08-31 | 2011-11-29 | Adobe Systems Incorporated | Rendering cubic Bézier curves as quadratic curves using a GPU |
US7868887B1 (en) * | 2007-10-18 | 2011-01-11 | Adobe Systems Incorporated | Rendering rational quadratic Bézier curves on a GPU |
US8643644B2 (en) * | 2008-03-20 | 2014-02-04 | Qualcomm Incorporated | Multi-stage tessellation for graphics rendering |
US8773432B2 (en) * | 2008-04-18 | 2014-07-08 | Adobe Systems Incorporated | Triangulation for accelerated multi-resolution rendering of stroked paths |
US8917935B2 (en) * | 2008-05-19 | 2014-12-23 | Microsoft Corporation | Detecting text using stroke width based text detection |
US8300052B1 (en) * | 2008-09-24 | 2012-10-30 | Autodesk, Inc. | Application of bevel curves to splines |
US8538200B2 (en) * | 2008-11-19 | 2013-09-17 | Nec Laboratories America, Inc. | Systems and methods for resolution-invariant image representation |
-
2008
- 2008-10-06 GB GB0818278A patent/GB0818278D0/en not_active Ceased
-
2009
- 2009-09-30 CN CN200910179578.7A patent/CN101714261B/zh active Active
- 2009-10-05 JP JP2009231899A patent/JP5600410B2/ja active Active
- 2009-10-06 GB GB0917510A patent/GB2463992B/en active Active
- 2009-10-06 US US12/588,172 patent/US8928667B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0763930A1 (en) * | 1995-09-15 | 1997-03-19 | Agfa-Gevaert N.V. | Method and apparatus for calculating color gamuts |
CN101189600A (zh) * | 2005-06-30 | 2008-05-28 | 微软公司 | 对程序几何对象进行三角剖分 |
CN101046888A (zh) * | 2006-03-30 | 2007-10-03 | 株式会社东芝 | 渲染装置和方法,以及形状数据生成装置和方法 |
CN101051390A (zh) * | 2007-05-15 | 2007-10-10 | 北京金山软件有限公司 | 一种用于河流模拟的方法和系统 |
Non-Patent Citations (3)
Title |
---|
双三次曲面的应用研究;苏洲;《机电工程技术》;20031231;第32卷(第6期);第26-27页 * |
杨珂等.平行散点图:基于GPU的可视化分析方法.《计算机辅助设计与图形学学报》.2008,第20卷(第9期),1219-1228. * |
苏洲.双三次曲面的应用研究.《机电工程技术》.2003,第32卷(第6期),26-27. |
Also Published As
Publication number | Publication date |
---|---|
GB0818278D0 (en) | 2008-11-12 |
GB0917510D0 (en) | 2009-11-18 |
GB2463992B (en) | 2011-01-05 |
CN101714261A (zh) | 2010-05-26 |
JP2010092480A (ja) | 2010-04-22 |
US20100097382A1 (en) | 2010-04-22 |
JP5600410B2 (ja) | 2014-10-01 |
GB2463992A (en) | 2010-04-07 |
US8928667B2 (en) | 2015-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101714261B (zh) | 图形处理系统 | |
CN101714260B (zh) | 图形处理系统 | |
CN101986344B (zh) | 图形处理系统 | |
US7564459B2 (en) | Resolution-independent curve rendering using programmable graphics hardware | |
CN101689306B (zh) | 有效的二维及三维图形处理 | |
CN101714259B (zh) | 图形处理系统 | |
US8059119B2 (en) | Method for detecting border tiles or border pixels of a primitive for tile-based rendering | |
US20090046098A1 (en) | Primitive binning method for tile-based rendering | |
CN108734624A (zh) | 用于处理图形的方法和装置 | |
JP6863693B2 (ja) | グラフィックス処理システムおよび方法 | |
CN101714258B (zh) | 图形处理系统 | |
CN101533522A (zh) | 用于处理计算机图形的方法和设备 | |
US20180232915A1 (en) | Line stylization through graphics processor unit (gpu) textures | |
CN102096907A (zh) | 图像处理技术 | |
CN104025180A (zh) | 具有保守边界的五维光栅化 | |
US20080284780A1 (en) | Method for enabling alpha-to-coverage transformation | |
US7170528B1 (en) | Fast glyph rendering for vector based fonts | |
US20180144451A1 (en) | Cleartype resolution recovery resampling | |
US11776179B2 (en) | Rendering scalable multicolored vector content | |
Cha et al. | An optimized rendering algorithm for hardware implementation of openVG 2D vector graphics |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180807 Address after: cambridge Co-patentee after: Anne science and Technology (China) Co., Ltd. Patentee after: Advanced Risc Machines Ltd. Address before: Cambridge County Patentee before: Advanced Risc Machines Ltd. |
|
TR01 | Transfer of patent right |