CN101714260A - 图形处理系统 - Google Patents
图形处理系统 Download PDFInfo
- Publication number
- CN101714260A CN101714260A CN200910178763A CN200910178763A CN101714260A CN 101714260 A CN101714260 A CN 101714260A CN 200910178763 A CN200910178763 A CN 200910178763A CN 200910178763 A CN200910178763 A CN 200910178763A CN 101714260 A CN101714260 A CN 101714260A
- Authority
- CN
- China
- Prior art keywords
- curve
- limit curve
- retouching
- limit
- input
- 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.)
- Granted
Links
Images
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
本发明涉及图形处理系统。由图形处理系统接收的输入描边曲线1可以使用至少两个并且优选地两个以上可供该系统使用的渲染过程来渲染。基于该输入描边曲线是否包括一个或多个具有特定特征的区域,例如输入描边曲线1是否包括一个或多个自重叠的区域来选择用于渲染所接收的描边曲线1的过程。优选地,所述至少两个渲染过程每个都能够正确地渲染描边曲线的不同集合。此外,所述至少两个渲染过程优选地在它们给图形处理系统造成的处理负担方面不同。
Description
技术领域
本发明涉及在计算机图形系统中渲染(render)图像的过程,尤其是涉及在这样的系统中对描边(stroked)曲线的渲染。
背景技术
近年来,在计算机图形中日益普遍地使用矢量图形。如本领域公知的那样,矢量图形比光栅图形优越的一个关键地方是提供与分辨率无关的图像的能力,这种图像即能够在不劣化(degrading)的情况下基本上被不定缩放的图像。例如,诸如TrueTypeTM的计算机字体中的各个表征器(characteriser)通常被存储为矢量图像。
矢量图形基于单独定义的几何对象的使用,并且通常由一个或多个线段、例如直线或者曲线(例如二次(贝塞尔)曲线、椭圆曲线、三次(贝塞尔)曲线)来描述,其中所述一个或多个线段在锚点处连接在一起而形成路径(path)。
矢量图形对象/路径在通常称为“用户空间”的空间中被定义和操作。然而,为了将矢量图形对象/路径输出到视频显示器或者打印机,在用户空间中定义的对象/路径需要被转换成合适的形式以便显示在屏幕上或者输出到打印机上。该转换通常包括将在用户空间中定义的对象/路径投影到另一个通常被称为“表面空间(surface space)”的空间,该表面空间对应于所述对象/路径将在上面被查看的输出(例如屏幕或者打印机)的透视(几何)。用户空间与表面空间之间的变换通常称为“用户到表面变换”。
一旦矢量图形对象/路径已经被转换成了表面空间表示,然后就渲染这些矢量图形对象/路径。
本领域中公知的这个过程通常包括:产生一个或多个图形基元(primitive)、例如三角形,其中所述图形基元覆盖所述对象/路径的表面空间表示;以及将该基元光栅化(rasterize)成所述基元之内的多个采样点,这些采样点然后被采样以便确定每个采样点是否处于所投影的对象/路径之内。基于该确定,适当地给所述多个采样点分配数据、例如红、绿和蓝(RGB)颜色值以及“alpha”透明度值,以便允许所述对象/路径被正确地显示。通常,这些过程分别被称为光栅化和着色(shading)。
(在3D图形文献中,术语“光栅化”有时用来表示到采样位置的对象转换和着色这二者的意思。然而在此,光栅化将用来仅仅指将对象数据转换到采样点地址。)
如本领域中公知的那样,通常这些过程通过使用通常称为“片段(fragment)”的离散图形实体表示采样点而被执行,其中在所述图形实体上执行图形处理操作(例如着色)。因此,片段实际上是被图形处理系统(其通过图形流水线(pass through the graphics pipeline))处理的图形实体。
可以合理地认为每个片段实际上相当于正被处理的场景的一个“像素”。每个片段可以对应于一个或多个采样点。每个片段可以对应于最终显示(输出)中的单个像素(图像元素)(由于像素是最终显示中的奇点(singularity),因而可能存在图形处理器所操作的片段与所述显示的像素之间的一一映射)。然而,更典型的情况将是:例如在显示最终图像之前对所渲染的图像执行特定形式的后处理、例如缩小(down-scaling)的情况下,不存在片段与显示像素之间的一一对应。
通常在矢量图形中找到的两类对象被称为“填充(filled)”对象和描边(stroked)对象。填充过程包括将单块(single block)的颜色、梯度、图案或者图像应用到对象之内或者闭合路径之内的区域。同时,可以认为描边过程实际上是:通过沿着该路径拖动具有特定宽度的线形笔尖来给该路径加上宽度。更具体而言,该笔尖的中心点遵循该路径,并且该尖被定向为使得一直垂直于该路径。因此等效地,也可以通过如下的点的集合来定义描边路径的边界:从所述点可以绘制长度(最多)为w/2(描边路径的宽度为w)并且垂直于该路径的线到该路径上的点。
通常,对描边路径以及尤其是描边曲线的渲染在CPU的负荷方面是昂贵的操作。此外,对描边曲线的渲染可能经常是复杂的,因为在某些情况下,描边曲线的第一部分可能与该描边曲线的第二部分重叠。在本领域中,这种情况通常称为“自重叠(self overlap)”,并且在中心曲线的曲率半径小于描边宽度(stroke width)的一半时发生。
渲染描边曲线的一种常用方法是在CPU上将该曲线细分成多个单独的线或者填充路径,这些单独的线或者填充路径然后分别被渲染。经常被用于渲染描边曲线的另一种方法是使用专用的曲线渲染硬件。
然而,本申请人认为存在另外的和改进的用于渲染描边路径以及尤其是描边曲线的技术的领域。
发明内容
根据本发明的第一方面,提供了一种用于在图形处理系统中渲染描边曲线以用于显示的方法,该系统能够使用至少两个过程来用于渲染描边曲线的目的,该方法包括:
接收在所定义的空间中定义的输入描边曲线;
确定该输入描边曲线是否包括一个或多个具有特定特征的区域;以及,
基于该确定结果,使用该图形处理系统的用于渲染描边曲线的第一过程和/或该图形处理系统的用于渲染描边曲线的第二过程来渲染该输入描边曲线以用于显示。
根据本发明的第二方面,提供了一种用于在图形处理系统中渲染描边曲线以用于显示的装置,该系统能够使用至少两个过程来用于渲染描边曲线的目的,该装置包括:
用于接收在所定义的空间中定义的输入描边曲线的装置;
用于确定该输入描边曲线是否包括一个或多个具有特定特征的区域的装置;以及,
用于基于该确定结果使用所述图形处理系统的用于渲染描边曲线的第一过程和/或所述图形处理系统的用于渲染描边曲线的第二过程渲染该输入描边曲线以用于显示的装置。
在本发明中,所述图形处理系统具有该图形处理系统可用的至少两种(不同的)用于渲染描边曲线的技术,并且根据给定的输入描边曲线是否具有拥有特定特征的区域而将这些技术中的一种或者另一种或者二者用于渲染该输入描边曲线。换言之,渲染描边曲线的方式基于该曲线的确定的特征。
能够理解,因此可以实际上认为本发明是:基于所接收的描边曲线的区域是否具有特定的预定特征来选择多个用于渲染该区域的可能过程中的一个或多个。
因此,根据本发明的第三方面,提供了一种用于在图形处理系统中渲染描边曲线以用于显示的方法,该系统能够使用多个过程来用于渲染描边曲线的目的,该方法包括:
接收在所定义的空间中定义的输入描边曲线;
确定该输入描边曲线是否包括一个或多个具有特定特征的区域;以及,
基于该输入描边曲线的区域是否被确定具有所述特定特征来选择图形处理系统的将被用于渲染该输入描边曲线的区域的过程。
根据本发明的第四方面,提供了一种用于在图形处理系统中渲染描边曲线以用于显示的装置,该系统能够使用多个过程来用于渲染描边曲线的目的,该装置包括:
用于接收在所定义的空间中定义的输入描边曲线的装置;
用于确定该输入描边曲线是否包括一个或多个具有特定特征的区域的装置;以及,
用于基于该输入描边曲线的区域是否被确定具有所述特定特征来选择图形处理系统的将被用于渲染该区域的过程的装置。
如同在后面将要详述的那样,本申请人已经认识到:在描边曲线包含具有特定特征的区域如自重叠的区域的情况下,在渲染该曲线的区域的至少一部分时可能需要采取额外的处理以保证该至少一部分被正确地渲染。然而,该更仔细的处理可能对于该描边曲线的非自重叠的区域而言不是必需的。
因此,尽管一种选项可能是为所有将被描边的输入曲线使用一种特定的、更严格的处理技术以便把在曲线中可能存在例如自重叠区域的可能性考虑在内,但是本申请人已经认识到如果能够识别那些这样的严格处理不应该是必需的接收的描边曲线和/或接收的描边曲线的部分,则可能对这些曲线和/或这样的曲线的部分使用其它的潜在没有那么强度大或者繁重的处理技术,由此提供一种效率更高和更有效的用于在图形处理系统中渲染描边曲线的机制。
本发明通过具有两个或两个以上可能的渲染描边曲线的方式以及然后基于给定的输入描边曲线的确定的特征而选择这些技术中的哪一个用于渲染该输入描边曲线来实现该目的,其中所述可能的方式例如并且优选地是第一渲染过程,其能够正确地渲染可能的和/或期望的输入描边曲线的给定集合,以及第二渲染过程,其仅仅能够正确地渲染第一渲染过程能够正确渲染的可能的和/或期望的输入描边曲线的集合的子集,但其处理强度较低(less processing intensive)。
作为到本发明图形处理系统的输入而被接收的描边曲线通常在称为用户空间的空间中被定义,并且可以以任何合适和期望的方式被定义。例如并且优选地,该图形处理系统可以接收定义该描边曲线的信息、例如曲线位置和与该曲线有关的任何参数。
优选地在用户空间中由中心曲线和关联的描边宽度来定义所接收的描边曲线。优选地由用户空间中的多个控制点的位置以及将在起始控制点和终止控制点之间绘制的曲线的类型指示来定义该描边的中心曲线,所述多个控制点通常包括起始点、终止点以及一个或多个中间点。例如并且优选地,该描边的中心曲线包括以下之一:二次贝塞尔(bezier)曲线(需要一个中间控制点);三次贝塞尔曲线(需要两个中间控制点);以及椭圆弧。
因此,在优选的实施例中,用于接收描边曲线的步骤或者装置包括接收用户空间中的多个控制点的位置、指示用户空间中的曲线类型和描边宽度的信息。
被输入到所述图形处理系统的描边曲线可以是用户空间中初始由例如需要该曲线被绘制的应用定义的描边曲线。然而,输入描边曲线也可以是从用户空间中定义的另一曲线中得到的曲线。例如,也可以考虑可以通过将另一(或者初始的)曲线变换成用户空间形式而得到该输入描边曲线,其中通过本发明以所述用户空间形式接收所述曲线。
同样可以考虑可以通过细分在用户空间中定义的初始的曲线来得到该输入描边曲线。例如并且出于将在后面详述的原因,三次曲线或者椭圆弧可以被细分成多个二次曲线,所述二次曲线然后以本发明的方式被渲染。
因此,在特别优选的实施例中,本发明进一步包括用于将在所定义的空间(例如用户空间)中定义的描边曲线细分成多个描边曲线段的步骤或者装置,其中所述描边曲线段的一个或多个然后形成在该定义空间中定义的输入描边曲线,该输入描边曲线然后被处理并渲染。
因此,应当注意,在此所指的输入描边曲线,除非上下文在其它情况下需要,意在指“输入”到本发明的渲染过程中的曲线,并且该输入曲线可以例如是初始例如由所讨论的应用定义的曲线,或者是从初始的“用户定义”的曲线中得到的曲线,例如该曲线的分段。
如上所述,本发明包括用于确定输入描边曲线是否包括一个或多个具有特定特征的区域的步骤或者装置。所述特征可以是任何合适和期望的属性,其中所述属性将例如允许确定应当如何渲染该输入描边曲线(即确定应当将哪个或者哪些渲染过程用于渲染该输入描边曲线)。实际上,该目的是测试可以被输入描边曲线拥有并且将指示应该如何处理该输入描边曲线的给定特征的存在(例如该输入描边曲线是否需要至少部分地以更严格的、例如处理强度大的方式被处理)。
在特别优选的实施例中,针对其测试输入描边曲线的特定特征是该输入描边曲线是否潜在地包括一个或多个自重叠的区域。
如上所述,描边曲线的自重叠区域是如下的区域:在所述区域中,中心曲线弯曲(被弯)成这样的程度,使得该描边曲线自重叠(即该描边曲线的一个区域与该描边曲线的另一区域重叠(侵占该描边曲线的另一区域))。这样的自重叠区域在渲染用于显示的描边曲线时可以并且通常导致问题。因此,通过识别这样的区域,可以使对要渲染的描边曲线的处理适于把自重叠区域的存在(与否)考虑在内。
可以根据需要执行确定,即确定输入描边曲线是否具有一个或多个具有特定特征的区域(例如为自重叠)。然而,在特别优选的实施例中,使用预定的测试来作出该确定。该测试应当能够识别特定的所选择的特征的存在,但是可以以任何合适的方式被配置和执行以便完成这个任务。
应当理解,因此可以实际上将本发明看成是针对特定特征测试输入描边曲线并且然后为了处理目的而基于该测试将该描边曲线归类。
因此,根据本发明的第五方面,提供了一种用于在图形处理系统中渲染描边曲线以用于显示的方法,该系统能够使用多个过程来用于渲染描边曲线的目的,该方法包括:
接收在所定义的空间中定义的输入描边曲线;
确定该输入描边曲线是否包括一个或多个具有特定特征的区域;以及
基于该确定为了渲染该描边曲线的目的而将该输入描边曲线归类。
因此,根据本发明的第六方面,提供了一种用于在图形处理系统中渲染描边曲线以用于显示的装置,该系统能够使用多个过程来用于渲染描边曲线的目的,该装置包括:
用于接收在所定义的空间中定义的输入描边曲线的装置;
用于确定该输入描边曲线是否包括一个或多个具有特定特征的区域的装置;以及
用于基于该确定为了渲染该描边曲线的目的而将该输入描边曲线归类的装置。
可以通过将该输入描边曲线作为一个整体(基于如果该曲线作为一个整体具有所述(多个)特征,则该曲线必然含有至少一个具有所述(多个)特征的区域)来测试来确定该曲线是否具有一个或多个具有特定特征的区域。然而,在特别优选的实施例中,该确定是使得允许所接收的描边曲线的具有(多个)特定特征的特定区域得到识别的确定。
在曲线的待确定的特定特征是该曲线是否具有任何自重叠区域的情况下,在特别优选的实施例中,该确定包括确定该输入描边曲线是否存在任何其中该曲线的曲率半径小于该输入描边曲线的(在用户空间中定义的)描边宽度的一半的区域。该测试可以确定描边曲线是否具有自重叠的区域,因为本申请人已经认识到:针对所接收的特定描边曲线,自重叠的区域将出现在沿着该描边的中心曲线的如下点处:在所述点处曲率半径小于描边宽度的一半。反之,正常的、即非自重叠的区域将出现在沿着该描边的中心曲线的如下点处:在所述点处曲率半径大于描边宽度的一半。
因此,在该优选的实施例中,其中所测试的预定特征是所接收的描边曲线是否具有任何自重叠的区域,用于确定该输入描边曲线是否包括一个或多个自重叠的区域的步骤或者装置优选地包括确定在所接收的描边曲线的中心曲线上的一个或多个点处的曲率半径,以及将所确定的曲率半径与描边宽度的一半相比较。
优选地仅仅在沿着该曲线的一个或多个特定的、优选选择的点处确定该曲率半径。例如,在特别优选的实施例中,在与所接收的描边曲线相关联的如下点中的至少一个点、以及优选的全部点处确定该曲率半径:所接收的描边曲线的曲率最大的点(例如在输入描边曲线是描边二次曲线时的中心曲线的最低点(nadir));所接收的描边曲线的起始(控制)点;以及所接收的描边曲线的终止(控制)点。
(如能够理解的那样,描边曲线的曲率最大的(多个)点可以在所定义的描边的中心曲线上(即在该输入描边曲线的起始(控制)点与终止(控制)点之间的位置处),或者可以在所定义的描边的中心曲线的外推部分上(即在该输入描边曲线的起始(控制)点与终止(控制)点之外的位置处)。但是,在这两种情况下,可以以任何合适和期望的方式从该输入描边曲线中合适地得到曲率最大的(多个)点的位置。)
通过确定上述点处的曲率半径,因此可以确定曲率最大的(多个)点和/或起始(控制)点和/或终止(控制)点是否与自重叠的区域相关联,由此确定所接收的描边曲线作为一个整体是否具有任何自重叠的区域。
本领域的技术人员能够理解,在中心曲线上的远离曲率最大的(多个)点(即远离二次曲线的最低点)的点处,所接收的描边曲线的中心曲线的曲率将总是较小。因此,如果确定所有曲率最大的点都具有大于描边宽度一半的曲率半径,则该输入描边曲线将不具有任何自重叠的区域(无论所述曲率最大的点是位于所接收的描边曲线之上还是之外)。(因此,对于输入描边二次曲线而言,如果确定该最低点具有大于描边宽度一半的曲率半径,则该输入曲线将不具有任何自重叠的区域)。
然而,也能够理解,仅仅因为确定所有的曲率最大的点(例如二次曲线的最低点)具有小于描边宽度一半的曲率半径并不一定意味着该输入描边曲线将具有自重叠的区域。
例如,在所接收的描边曲线是描边二次曲线的情况下,当最低点并不位于所定义的描边曲线之内时(即当该最低点是起始点和终止点之外的、该曲线上的外推外置时),则如果起始(控制)点和终止(控制)点之一或者二者都具有小于描边宽度一半的曲率半径,那么该描边曲线将仅具有一个自重叠的区域。因此,如果起始(控制)点和终止(控制)点二者都具有大于描边宽度一半的曲率半径,则即使最低点具有大于描边宽度一半的曲率半径,该输入描边曲线仍然将不具有自重叠的区域。反之,当最低点确实位于所定义的描边曲线之内并且具有小于描边宽度一半的曲率半径时,则能够理解该输入描边曲线将总是具有至少一个自重叠的区域(在最低点周围)。
因此,在特别优选的实施例中,这些信息(即曲率最大的(多个)点、起始点和/或终止点是否与自重叠的区域相关联,以及曲率最大的(多个)点是否在描边曲线的起始点与终止点之间)中的一条或多条或全部被确定,并且优选地然后被用于将由图形处理系统接收的输入描边曲线归类(识别)为多个预定义的或者预先确定的描边曲线之一。
因此,在本发明的该实施例中,其中所接收的描边曲线是描边二次曲线,优选地使用如下四条信息中的一条或多条或全部来将输入描边曲线归类(识别)为多个预定义的或者预先确定的描边曲线之一:在最低点、起始(控制)点和终止(控制)点处的曲率半径是否小于(用户空间中定义的)描边宽度的一半;以及最低点是否在描边曲线的起始(控制)点与终止(控制)点之间。
(尽管情况通常是需要使用所有四条信息来对输入描边二次曲线进行归类(识别),但是本申请人已经认识到并不总是如此。例如,当最低点的曲率半径大于描边宽度的一半时,不一定确定两个端点是否具有小于描边宽度一半的曲率半径(因为内在规律是它们将不具有)。类似地,当两个端点的曲率半径小于描边宽度的一半时,不一定确定最低点的曲率半径是否小于描边宽度的一半(因为内在规律为是)。
当如上所述图形处理系统所接收的描边曲线优选地被归类(识别)为多个预定义或者预确定的描边曲线之一时,这些多个预定义或者预确定的描边曲线优选地由如下之一组成:(i)单个正常的(即非自重叠的)区域;(ii)单个自重叠的区域;或者(iii)二者的混合,即至少一个正常区域和至少一个自重叠的区域。
例如,在采取该优选的实施例的情况下,其中输入描边曲线是描边二次曲线,或者当全部3个被测试的点(即最低点、起始(控制)点和终止(控制)点)都具有大于描边宽度一半的曲率半径时或者当起始(控制)点和终止(控制)点具有大于描边宽度一半的曲率半径而最低点在所定义的曲线之外时,所接收的描边曲线将由单个正常区域组成。当起始(控制)点和终止(控制)点具有小于描边宽度一半的曲率半径时(无论最低点是在所定义的曲线之内还是之外,在这种情况下该最低点将总是具有小于描边宽度一半的曲率半径),所接收的描边曲线将由单个自重叠的区域组成。所有其它的输入描边曲线将由自重叠和正常区域的混合组成。
一旦输入描边曲线已经例如通过执行一个或多个上述测试(优选地为四个上述测试中的一个或多个或者全部)并且在输入曲线是描边二次曲线的情况下而被归类(测试),就知道了所接收的描边曲线是否包括一个或多个具有特定特征的区域(例如并且优选地,一个或多个自重叠的区域)。然后根据该确定使用一个或多个合适的过程(选自多个可用的过程)来渲染该描边曲线。
然而应当指出,将并不一定使用单个渲染过程来渲染被确定具有预先确定的(多个)特征的区域。例如,描边曲线的区域的第一部分可以使用第一过程来渲染,而该区域的第二部分可以使用不同的第二过程(例如处理强度较低的过程)来渲染。换言之,对输入描边曲线的具有特定(多个)特征的区域的识别仅仅用来指示可能潜在地需要(或者可能潜在地使用)不同渲染过程来渲染所识别的区域的至少一部分。
因此,本发明优选地进一步包括如下步骤或者装置:其用于基于所述确定所接收的描边曲线是否包括一个或多个具有特定特征的区域(例如并且优选地,所接收的描边曲线是否包括一个或多个自重叠的区域)的步骤而将输入描边曲线细分成两个或两个以上部分。换言之,基于是否发现输入描边曲线的任何区域具有特定的所选择的特征而将该曲线优选地适当细分成多个部分。
(在此应当注意,如上所述,将所接收的在所定义的空间(例如用户空间)中定义的描边曲线细分成多个描边曲线段的步骤优选地在基于所述确定所接收的描边曲线(或者所接收的描边曲线段)是否包括一个或多个具有特定特征的区域的步骤而将所接收的描边曲线(或者所接收的描边曲线段)细分成两个或两个以上部分的步骤之前发生。)
然后使用合适的和期望的(所选择的)技术来适当地渲染输入描边曲线被细分成的部分的每一个。例如,如果输入描边曲线被细分成两个部分,则第一渲染过程被优选地用来渲染所述部分之一,而第二(不同的)过程被优选地用来渲染另一部分。
能够理解,输入描边曲线将并不总是需要以这种方式被细分,即使例如发现该输入曲线包括一个或多个具有(多个)特定特征的区域。例如,即使该输入曲线实际上可以被细分成不同的部分(在需要时可以对这些部分应用不同的渲染过程),仍然可以优选地仅仅使用同一个渲染过程来渲染整个输入曲线。
类似地,输入描边曲线可以被识别为由单个正常区域组成,因此通常使用仅仅一个渲染过程来渲染,例如如上所述比其它也能够渲染该描边曲线的过程处理强度低的过程。
此外,即使输入描边曲线被识别为包括一个或多个自重叠的区域并且因此将通常使用至少两个渲染过程来渲染,该输入曲线仍然可以具有意味着需要仅仅使用单个渲染过程的某些其它特性,该单个渲染过程例如所述至少两个可用的渲染过程中处理强度较低的渲染过程。例如,当输入描边曲线包括被包夹在(夹在)两个正常区域之间的自重叠区域时,本申请人已经认识到如果该自重叠的区域并不延伸到这两个正常区域的(外)端部之外,则整个曲线可以使用单个、例如处理强度较低的渲染过程来渲染。
因此,本发明优选地进一步包括如下的步骤或者装置:基于一个或多个预定义或预先确定的标准来确定为了渲染是否将输入描边曲线细分成两个或两个以上部分。然后基于所述确定将该输入描边曲线细分成两个或两个以上部分。
在特别优选的实施例中,该描边曲线被细分成两个或两个以上部分,此时可以使用第一渲染技术来渲染输入描边曲线的部分之一,同时可以使用与所述第一技术不同并且通常给图形处理系统造成较小处理负担的第二渲染技术来渲染该描边曲线的另一部分,例如相邻的(邻接的)部分。
换言之,是否将输入描边曲线细分这一问题优选至少初始基于该输入描边曲线被归类(识别)为何种预定义或者预确定的描边曲线。然后可以测试(确定)与该输入曲线相关联的其它标准以便弄清关于是否为了渲染而细分该曲线的该初始决定是否正确,或者可替换地弄清是否需要更改该决定,例如通过根本不细分该曲线或者通过更改(调整)细分该曲线的方式(例如改变该曲线被细分成的部分的数目或者改变该曲线被细分成的部分的“形状”)。
例如,在优选的实施例中,如上所述,用于弄清是否(或如何)细分输入描边曲线的其它(附加)标准可以包括确定位于两个正常区域之间的自重叠区域是否延伸到所述两个正常区域的(外)端部之外。
当输入描边曲线被以上述方式细分成两个或者两个以上部分时,该描边曲线可以以任何合适和期望的方式被细分。
例如,输入描边曲线可以在被确定具有所述(多个)特定特征的区域(如自重叠的区域)与被确定不具有所述(多个)特定特征的区域(如正常区域之间)的边界处被细分。
因此,用于将输入描边曲线细分成两个或者两个以上部分以用于处理的步骤或者装置优选地进一步包括如下步骤或者装置:其用于确定所述一个或多个被确定具有所述特定特征的区域中的至少一个区域(优选全部区域)的边界。
因此,例如当所接收的描边曲线被确定包括具有所选择的被搜索的特征的第一区域时,其中第一区域与不具有所选择的特征的第二区域邻接,该第一区域例如是与正常区域邻接的自重叠区域,则第一区域与第二区域之间的边界被识别,并且该描边曲线被沿着所确定的边界至少部分地细分成与第一区域(例如自重叠的区域)相关联的第一部分以及与第二区域(例如正常区域)相关联的第二部分,所述第一部分使用第一渲染过程来渲染;所述第二部分使用不同的第二渲染过程(例如处理强度较低的渲染过程)来渲染。
所述一个或多个被识别的区域的边界可以以任何合适和期望的方式来确定。然而,在该优选的实施例中,其中所测试的预确定的特征是所接收的描边曲线是否具有任何自重叠的区域,优选地通过确定该输入描边曲线的中心曲线上的、在此曲率半径等于描边宽度一半的点(或多个点)来确定所述一个或多个自重叠的区域的边界。
在优选的实施例中,可以沿着输入描边曲线的中心曲线来细分该输入描边曲线。例如在优选的实施例中,当所接收的描边二次曲线被确定构成单个自重叠的区域(并且最低点并不在所定义的曲线的起始(控制)点与终止(控制)点之间)时,该描边曲线被细分成两个部分。第一部分构成被中心曲线上方的描边曲线包围(bound)的区域,而第二部分构成被中心曲线下方的描边曲线包围的区域。
(因此能够认识到,描边曲线的每个部分(在该描边曲线被细分之后)的边界优选由如下来定义:该描边的中心曲线的至少一部分和/或该描边的外边界的至少一部分和/或该描边曲线的被确定具有所选择的(多个)特征的区域中的至少一个的边界的至少一部分。)
可供图形处理系统用于渲染描边曲线(或者如果描边曲线被如上所述那样细分的话,则为该描边曲线的部分)的渲染过程可以是任何合适和期望的渲染技术。
如上所述,应当存在至少两个可供图像处理系统选择和使用的渲染技术,但是可以存在并且优选存在两个以上可用的渲染技术。
每个渲染过程优选能够(正确地)渲染给定集合或者范围的可能被输入到图形处理系统的描边曲线。最优选地,所述可用的描边曲线渲染过程中的至少两个在它们可以正确渲染的描边曲线的(集合)(形式)方面彼此不同。例如以及如上所述,优选地一个过程仅能够渲染具有(或者不具有)特定特征的曲线,而另一渲染过程能够正确渲染更多形式的描边曲线。
因此,该系统可用的一个渲染过程优选能够比该系统可用的另一渲染过程正确地渲染更大集合或者范围的可能(形式)的描边曲线。
在一个实施例中,该系统可用的两个或者两个以上渲染过程仅能够(正确地)渲染可能描边曲线(或者可能描边曲线的部分)的不同的、相异的子集。例如,如果图形处理系统仅具有两个可用的渲染过程,则被确定具有一个或多个具有第一特定特征的区域的描边曲线(或该描边曲线的部分)可能需要使用所述渲染过程之一来渲染(因为另一渲染过程可能不能适当地渲染该描边曲线),而被确定不具有一个或多个具有第一特定特征的区域(或者具有例如与第一特定特征不同的第二特定特征的区域)的另一描边曲线(或该另一描边曲线的部分)可能需要使用另一渲染过程来渲染以便被适当地渲染。
在优选的实施例中,该系统可用的两个或两个以上渲染过程中的每一个都能(正确地)渲染可能描边曲线的至少一个子集,其中可能描边曲线的所述子集至少部分地以及优选完全地重叠。优选地,存在第一渲染过程,该第一渲染过程仅能够(正确地)渲染某些(形式的)描边曲线(描边曲线的给定子集)或者其部分,例如那些包括一个或多个具有(或者不具有)特定特征的区域的描边曲线,以及存在第二渲染过程,该第二渲染过程能够(正确地)渲染所述某些描边曲线(第一渲染过程能够正确处理的、描边曲线的给定子集)以及其它附加(形式)的、可能被输入到该系统的描边曲线(例如并且优选地,无论所述描边曲线是否包括具有该特定特征的区域)。
如上所述,特别优选地,所述可用的渲染过程之一给图形处理系统造成比所述可用的描边曲线渲染过程中另一渲染过程或者其它渲染过程更小的处理负担。因此,优选地,所述可用的渲染过程之一需要比所述可用的渲染过程中其它渲染过程更繁重的处理。例如,可能存在并且优选地存在第一渲染过程,该第一渲染过程可能仅仅适于渲染描边曲线(或其部分)的特定子集,以及存在第二渲染过程,该第二渲染过程是更“通用”的过程并且适于渲染更大集合的描边曲线(或其部分),但是需要更繁重的处理。
因此,优选地,在实施例中,其中所述两个或两个以上渲染过程在它们适于渲染(能够适当地渲染)的描边曲线的范围方面部分地或者完全地重叠,当渲染也能够使用另一技术来渲染的那些描边曲线时,所述渲染过程中的一个或者另一个将给图形处理系统造成更轻的负担,即将是处理强度较小的。因此以及如上所述,在由该系统接收的特定描边曲线(或者描边曲线的部分)能够使用这些第一或第二渲染过程中的任一来适当渲染的情况下,优选地,所述过程之一能够以一种比另一过程处理强度更小的方式来渲染描边曲线(或曲线部分),并且正是该过程优选地被选择和用于渲染该描边曲线(或曲线部分)。
图形处理系统可用的不同渲染过程可以例如在它们的精确度或者准确度方面不同。然而优选地,当渲染本发明中的可供图形处理系统使用的不同渲染过程所适于的(它们可以被用于适当地渲染)描边曲线(或该描边曲线的部分)时,这些不同的渲染过程具有相似但不一定相同等级的数值(计算)精确度。换言之,如果描边曲线可以使用两个可用的渲染过程来(正确地)渲染,则无论所述两个渲染技术中的哪个被使用,所产生的渲染出的描边曲线将在渲染“质量”方面基本上相似。因此,不同的渲染过程在处理它们能够正确处理的曲线时最优选地在它们能够正确处理的描边曲线的范围方面不同,而不是在它们的精确度方面不同。
可能的是,所述可供图形处理系统使用的不同渲染过程中的两个或者两个以上可以以相同的通用方式运行,但是例如在它们被应用的方式的细节和/或彻底性(thoroughness)方面不同。例如,如在下面将会更详细论述的那样,渲染过程可以查找关于一个或多个参考曲线的预确定信息(已经被存储),并且所述两个或者两个以上过程在被查找来渲染所接收的描边曲线(或该描边曲线的部分)的预先确定信息的数量方面不同。
同样可能的是,所述不同渲染过程中的两个或者两个以上可以在它们运行的方式方面完全不同。例如,所述渲染过程之一可以使用上面所提到的以前存储的数据,而另一渲染过程可以是细分技术和/或棋盘化(tessellation)过程。
例如以及如在后面将会更详细地论述的那样,本申请人已经认识到一种渲染描边曲线的优选方式是存储并然后查找关于一个或多个参考曲线的预确定信息。另外,本申请人已经认识到当这样做时,如果希望试图保证描边曲线被正确地渲染,则对于一些形式的输入描边曲线或其部分而言,可以在渲染该曲线时仅仅使用(测试)相关存储的关于该参考曲线的预确定信息的子集,而对于其它输入描边曲线或其部分而言,必须使用(测试)更多的以及通常全部的相关存储的关于该参考曲线的预确定信息。
因此,在特别优选的实施例中,可用于渲染描边曲线的渲染过程(或者如果两个以上渲染过程可用,则为所述渲染过程中的至少两个)包括为渲染描边曲线的目的查找预确定信息的过程,并且所述过程之一被授权(mandate)比另一过程(或其它过程)查找更多的信息。优选地,根据采样位置来存储和查找所述信息(在后面将会详述),并且因此所述渲染过程之一优选地每采样点比另一过程(或其它过程)查找更多的信息。(该意图是:需要查找更多存储的信息的过程一般应当能够正确渲染更多形式的描边曲线,但是可能(将)需要更繁重的处理(因为更多数据被查找并且例如被测试),反之亦然)。
在特别优选的实施例中,可用的渲染过程包括细分技术和/或棋盘化技术、以及一个或多个(优选至少两个)为渲染描边曲线的目的查找预确定信息的过程。
尽管如上所述将在本发明中使用的不同渲染过程应当例如在它们正确渲染某些形式的描边曲线的能力方面和/或在它们使用时的处理要求方面不同,但对它们而言可能的是,每个都具有一个或多个或(实际上)许多共同特性和/或步骤,并且实际上优选情况就是如此。
例如,优选所述不同渲染过程中的一个或多个或者全部都通过以下操作来运行:在表面空间中(即实际上是屏幕或者其它输出空间)表示输入描边曲线,然后定义在该曲线出现在表面空间中时覆盖该曲线的一个或多个图形基元,以及通过将合适的数据分配给该基元内的一个或多个采样点来渲染该曲线。
因此,在特别优选的实施例中,所述可用于渲染所接收的输入描边曲线的不同渲染过程中的一个或多个或全部,尤其还通过如下方式来渲染在所定义的空间(即用户空间)中定义的所接收的描边曲线或者所接收的描边曲线的部分:
使用所接收的变换将所接收的描边曲线或者所接收的描边曲线的部分投影到表面空间;
在表面空间中定义一个或多个覆盖所投影的所接收的描边曲线或者所接收的描边曲线的部分的图形基元;以及
将用于渲染所接收的描边曲线或者所接收的描边曲线的部分的数据分配给在所述一个或多个图形基元内的任何采样点。
(本领域的技术人员能够理解,在一些情况下,将使用上述过程来渲染的描边曲线可以具有一种形式使得没有采样点被定义在覆盖该曲线的(多个)图形基元内。在这种情况下,将确定该曲线在显示时将不会在场景中被看见。
在上述特别优选的实施例中,如本领域公知的,优选使用(实施)通过(输入到)图形处理系统接收的变换(用户到表面变换)来将所接收的描边曲线或者所接收的描边曲线部分投影到表面空间。
可以适当地使用任何合适和期望的技术来定义在描边曲线或者描边曲线的部分出现在表面空间(即所投影的描边曲线(的部分))时所生成的覆盖该描边曲线或者该描边曲线的部分的一个或多个图形基元。例如,可以定义覆盖所投影的描边曲线(的部分)的包围盒bounding box)。然而在优选地实施例中,所述渲染过程的至少之一可以并且优选地确实定义一个或多个图形基元,所述图形基元构成与所投影的描边曲线(的部分)的端部(即起始(控制)点和终止(控制)点)紧密配合(fit)的包围多边形。
在这些设置中,优选地基于用户空间中与表面空间中所述一个或多个图形基元内的采样点对应的位置是否处于在用户空间中定义的所接收的描边曲线或者所接收的描边曲线的部分内而将渲染(着色)数据分配给所述采样点。
确定用户空间中的所述对应位置是否处于所接收的描边曲线的部分内这一步骤可以以任何合适和期望的方式来执行。然而,在特别优选的实施例中,这通过首先将所接收的(输入)描边曲线或者所接收的描边曲线的部分映射到已经在参考或者“典范(canonical)空间”中定义了的预定义参考曲线的对应部分来实现。然后,该典范(参考)空间中的位置被采样(测试)以便确定表面空间中的对应位置是否处于所接收的描边曲线的部分内。
特别是,本申请人已经认识到,仅仅使用平移、旋转和均匀缩放就可以将某种曲线族中的所有曲线变换到预定义的单个或者基本“参考”曲线(在此称为“典范曲线”)的至少一部分上。
因此,这允许将关于单个曲线(single curve)(即典范曲线)的信息用于确定关于由图形处理系统接收来用于渲染的多个描边曲线的信息。换言之,仅仅需要得到或者存储关于该典范曲线的数据,而不必例如得出或者存储关于由图形系统接收的待渲染的每个个别描边曲线的数据。该数据然后被用于渲染属于该“典范曲线”所表示的描边曲线族(集合)的每个个别曲线或者其部分。
因此,在特别优选的实施例中,在本发明中使用的渲染过程中的至少一个以及优选地每一个尤其还包括:
通过确定在典范空间中定义的对应于所接收的描边曲线或者所接收的描边曲线的部分的典范曲线部分来确定对应于所接收的描边曲线或者所接收的描边曲线的部分的典范空间部分;以及
将用于渲染所接收的描边曲线或者所接收的描边曲线的部分的数据通过如下方式分配给在一个或多个上述图形基元内的一个或多个采样点:
针对在所述一个或多个图形基元内的多个采样点中的每一个;
确定典范空间内的对应位置是否处于对应于所接收的描边曲线或者所接收的描边曲线的部分的典范空间部分中;以及
根据典范空间内的对应位置是否处于对应于所接收的描边曲线或者所接收的描边曲线的部分的典范空间部分中的所述确定,将用于渲染所接收的描边曲线或者所接收的描边曲线的部分的数据分配给表面空间中多个采样点中的一个或多个。
该优选的渲染技术可以用于如下的任何形式的描边曲线:针对所述描边曲线可以得到具有上述性质的“典范曲线”。因此,由图形处理系统接收的输入描边曲线可以是来自能够具有适当关联的典范曲线的曲线族的任何曲线。
能够具有相关联的、该形式的典范曲线的一种曲线族是二次曲线。在这种情况下,典范曲线将是基本二次曲线,即具有形式y=x2的曲线。
本申请人已经进一步认识到:如上所述,如果将渲染不具有对应的典范曲线的曲线,则可以将该初始曲线细分成多个曲线段,其中所述曲线段每个都具有对应的典范曲线(即所述曲线段是具有相关联的典范曲线的曲线族的成员)。例如,可以将三次曲线或者椭圆弧细分成多个二次曲线。这因此将允许将上述技术也用于渲染如下的曲线:针对所述曲线可能并不存在直接对应的典范曲线,但是所述曲线可以被分成如下的曲线:针对该曲线存在对应的(多个)典范曲线。
在这些设置中,必须确定典范空间的、表示所接收的描边曲线或者其部分的对应部分。该确定可以以任何合适和期望的方式来执行。然而在特别优选的实施例中,这是通过确定为了取在用户空间中定义的描边的中心曲线并将该中心曲线放置在典范曲线的对应部分上所需的变换来实现的。如上所述,该变换(“用户到典范”变换)应当仅仅需要平移、旋转和/或均匀缩放。
因此,用于确定将用户空间中的描边曲线或其部分变换到典范曲线的合适部分上的变换的步骤或者装置优选地包括:如果有的话确定该变换的平移部分(分量)。优选地,当所接收的描边曲线(以及因此典范曲线)是二次曲线时,通过确定为了将用户空间中的输入描边曲线的最低点移动到(典范空间中的)典范曲线的最低点上所需的平移来确定该变换的平移部分(分量)。
类似地,用于确定将用户空间中的描边曲线或其部分变换到典范曲线的合适部分上的变换的步骤或者装置优选地包括:如果有的话确定该变换的旋转部分(分量)。优选地并且再次当所接收的描边曲线(以及因此典范曲线)是二次曲线时,通过确定为了使在所接收的描边曲线的中心曲线上的两个点之间所绘制的线平行于针对典范曲线所绘制的对应线所需的旋转(所述两个点到最低点的距离相等并且处于最低点的对侧)来确定该变换的旋转部分(分量)。
类似地,用于确定将用户空间中的描边曲线或其部分变换到典范曲线的合适部分上的变换的步骤或者装置优选地包括:如果有的话确定该变换的均匀缩放部分(分量)。优选地并且再次当所接收的描边曲线(以及因此典范曲线)是二次曲线时,通过如下方式来确定该变换的均匀缩放部分(分量):确定在所接收的描边曲线的中心曲线上的两个点之间所绘制的第一线与从第一线的中点至最低点绘制的第二线的长度比值(所述两个点到最低点的距离相等并且处于最低点的对侧)然后确定为了使得该比值等于从典范曲线得到的对应比值所需要的缩放因子(scaling factor)。
一旦已经确定了为了将输入描边曲线或其部分的中心曲线映射到典范曲线所需要的变换,则优选地通过使用所确定的(用户到典范)变换来确定对应于输入描边曲线或者输入描边曲线的部分的典范空间部分(即输入描边曲线所覆盖的典范空间部分),其中使用所确定的(用户到典范)变换是为了确定:处于典范曲线上、对应于输入描边曲线或者输入描边曲线的部分的中心曲线的起始点和终止点的两个位置;以及输入描边曲线在典范空间中将具有的宽度(该宽度将等于该曲线在用户空间中的宽度乘以所确定的用户到典范变换的缩放因子)。由此这给出了输入描边曲线或者输入描边曲线的部分在典范空间中的位置。
一旦已经确定了对应于输入描边曲线的典范空间部分(位置),则确定了对应于表面空间中针对所生成的图形基元的采样点的典范空间中的采样点(从而可以确定:所述典范空间中的对应于表面空间中采样点的位置是否处于该描边曲线部分在典范空间中的位置之内)。这可以以任何合适和期望的方式来实现,但是优选地,通过如下方式来确定典范空间中的对应于表面空间中采样点的位置:首先使用用于将所接收的描边曲线投影到表面空间的变换(用户到表面变换)的逆变换来将表面空间中的采样点(的位置)映射到用户空间中的对应位置,然后使用所确定的将在用户空间中定义的描边曲线或其部分变换到典范曲线的对应部分的变换(用户到典范变换)来将用户空间中的对应位置映射到典范空间中的对应位置。
因此,在这些设置的优选的实施例中,用于确定典范空间中的对应于表面空间中采样点的位置的步骤或者装置包括:将表面空间中的该采样点映射到用户空间中的对应位置;然后将用户空间中的该对应位置映射到典范空间中的对应位置。
能够理解,在该步骤之后就知道了典范空间中的对应于表面空间中采样点的位置。
一旦已经确定了典范空间中的对应采样位置,就确定了当其出现在典范空间中时,该位置是否处于所述描边曲线或者描边曲线的部分内。这然后可以用于确定表面空间中的采样点是否处于该描边曲线或者描边曲线的部分内,并且因此用于相应地给表面空间中的采样点着色。
可以根据需要来执行当其出现在典范空间中时典范空间中的采样位置是否处于所述描边曲线或者描边曲线的部分内的这一确定。
然而,本申请人已经认识到:针对典范空间中的每个离散位置(采样点),在典范曲线上都将存在整数数目的点(“解(solution)”),从所述点到所述离散位置(采样点)能够绘制垂直于典范曲线的(直)线。优选地,下面将会详细论述,这些在典范曲线上的一个或多个点(解)被用于确定:当描边曲线的给定部分出现在典范空间中时,典范空间中的采样位置是否处于所述给定部分内。
首先,能够理解,典范空间中的描边曲线部分,以及更具体而言是典范曲线本身的对应段将在典范空间中的至少一个特定参数范围内延伸。(相异参数范围的数目取决于典范空间的维数。)例如,对于形式为y=x2的典范曲线而言,该曲线将在“x”值的范围以及″y″(=x2)值的范围内延伸,因此“x”和“y”都可以用作该曲线的“参数”。
(在此应当注意,特定典范曲线所延伸的参数范围可以通过对该曲线的任何合适的参数化来表示。因此,尽管对于形式为y=x2的典范曲线而言可以并且优选地将这些轴用作参数,但是并不是对所有的典范曲线都如此。)
因此,可以对照由典范空间中的描边曲线或者描边曲线的部分所覆盖的特定参数范围来测试典范曲线上的、与典范空间中的给定(采样)位置相关联的解的参数值,以便知道所述(采样)位置是否具有处于该特定参数范围之内的解。
本领域的技术人员将会理解,尽管通常由多个参数范围(例如当典范曲线是基本二次曲线时由“x”值和“y”值)来表示描边曲线,但是仅仅对照一个参数范围来测试就足够了,因为如果一个点处于由描边曲线覆盖的典范曲线段内,则无论该范围如何定义,该点都将处于该曲线的每个参数范围内。因此,例如对于形式为y=x2的典范曲线而言,优选仅仅对照与典范空间中的所接收的描边曲线部分相关联的“x”值范围来测试解的“x”值。在该实施例中,优选地将“x”用作待测试的“参数”,因为在典范空间的原点附近的区域中,使用“x”比使用“y”更精确。
在其它实施例中,可以测试沿着曲线在典范曲线上的解与典范曲线上的预确定的点之间的距离。例如,在其中典范曲线是基本二次曲线的实施例中,可以确定沿着该曲线从最低点到典范曲线上的与典范空间中的给定位置相关联的解的距离,然后将该距离与在描边曲线出现在典范空间中时由该描边曲线覆盖的特定距离范围相比较。
(当待渲染的描边曲线将利用给定的点画图案而被点画(stipple)(例如被显示为一系列点和/或虚线)时,上述后一实施例可以是特别有利的。例如,在优选的实施例中,可以以任何合适和期望的方式、例如作为1D纹理来存储一个或多个点画图案,并且可以相对于曲线上的预先确定的点、例如最低点来将所选择的点画图案(使用合适的变换)应用于典范曲线。然后可以将从该预先确定的点沿着曲线针对每个与典范空间中的给定位置相关联的解确定的距离与所选择的点画图案相比较,并且可以相应地渲染表面空间中的对应位置(即基于在描边曲线出现在典范空间中时该位置是否处于该描边曲线之内,以及其中与该位置相关联的(多个)解处于所选择的点画图案中)。)
其次,并且如上所述,描边路径的边界由如下点的集合来定义:从所述点到该路径上的点可以绘制具有预先确定的宽度并且垂直于该路径的线。
因此,可以对照描边曲线在典范空间中的描边宽度的一半来测试从典范曲线上的、与典范空间中的给定位置相关联的解到该位置的垂直距离,即从典范曲线上的该点(解)到离散位置(采样点)绘制的(直)线的长度,以便知道当该描边曲线的部分出现在典范空间中时,该位置是否具有落入该描边曲线部分的宽度范围内的解。(如上面讨论的,描边曲线在典范空间中的描边宽度等于用户空间中的描边宽度乘以用户空间与典范空间之间的变换的缩放因子部分(分量)。)
因此,在一个优选的实施例中,用于确定典范空间中的采样位置点是否处于对应于所接收的描边曲线或者所接收的描边曲线的部分的典范空间部分之内的步骤包括:根据典范曲线上的至少一个点(从所述至少一个点到典范空间中的采样位置可以绘制垂直于该曲线的(直)线)来确定典范曲线上的点(从所述点到典范空间中的采样位置可以绘制垂直于该典范曲线的(直)线)是否处于由该描边曲线的部分在典范空间中覆盖的参数范围之内,和/或典范空间中的采样位置与典范曲线上的点(可以绘制垂直于典范曲线的(直)线到所述点)之间的(直线)(最短)距离是否小于或等于当描边曲线出现在典范空间中时该描边曲线的描边宽度的一半。如果典范曲线上的点满足这两个对典范空间中的所测试的采样位置的要求,则当该描边曲线或者该描边曲线的部分出现在典范空间中时,所述采样位置处于该描边曲线或者该描边曲线的部分之内,并且因此表面空间中的对应采样位置也处于该描边曲线或者该描边曲线的部分之内(因此允许相应地给表面空间中的采样位置着色)。
能够理解,上述优选地用于确定典范曲线上的针对采样位置的点是否指示典范空间中的该采样位置处于典范空间中的描边曲线之内的两个步骤(测试)可以以任何期望的顺序来执行。在一个优选的实施例中,顺序执行所述两个测试,其中仅当典范曲线上的点(解)通过了第一测试时才执行第二测试(即基于第一测试来确定以潜在地指示采样点处于描边曲线之内)。然而在可替换的实施例中,并行执行所述两个测试,其中第一测试与第二测试同时发生。
能够理解,如上所述,典范空间中的给定采样位置可以具有多个在典范曲线上的这样的“解”,并且此外可能的是:对于给定的输入曲线,一些但是不是所有与给定采样点相关联的“解”将指示在描边曲线出现在典范空间中时该采样点处于所述描边曲线之内。然而,如果这些解中的任何一个指示在描边曲线出现在典范空间中时该采样点处于所述描边曲线之内,则所述采样位置处于该描边曲线之内(即使存在并不指示此情况的其它解)。
这因此在原理上暗示了,必须根据给定的输入描边曲线来测试每个及每一个这样的针对典范空间中的采样点的解,以便确信正确地确定了在输入描边曲线出现在典范空间中时典范空间中的采样位置是否处于所述输入描边曲线之内。然而,本申请人实际上已经发现情况不一定如此。
本申请人已经发现:对于描边曲线的自重叠区域,情况可能是:典范曲线上的针对给定采样位置的点(解)(即从所述点到相应采样点可以绘制垂直于典范曲线的(直)线)之一在被按照以上述方式测试时将指示当描边曲线部分出现在典范空间中时该位置处于该描边曲线部分之内,而针对该采样位置的另一点(解)在被测试时可能指示当描边曲线部分出现在典范空间中时该位置处于该描边曲线部分之外。因此,如上所述,为了精确地渲染采样位置,必须测试与该位置相关联的所有点(解)。
然而,本申请人已经发现:在待测试的输入描边曲线并不自重叠的其它情况下,如果典范空间中的特定采样位置处于描边曲线之内(当该描边曲线出现在典范空间中时),那么典范曲线上的最接近于该采样位置的解(即对于其而言,从该曲线到该采样位置的垂直距离最短)在被以上述方式测试时将总是被发现指示该采样位置处于描边曲线之内。
此外,本申请人还认识到:当用于渲染特定描边曲线或其部分的图形基元被定义为与所渲染的曲线的端部紧密配合的包围多边形时,即使得所有可以在该图形基元内被采样的点都将处于所渲染的曲线的参数范围之内,则对典范空间中的采样位置是否处于对应于所接收的描边曲线或者所接收的描边曲线的部分的典范空间部分之内的确定可以仅仅通过,并且优选地仅仅通过如下方式来作出:确定典范空间中的采样位置与典范曲线上的解之间的距离是否小于或等于当所渲染的曲线出现在典范空间中时所述被渲染曲线的一半描边宽度。例如,在渲染某些输入描边曲线或其部分时,可以通过仅仅测试典范曲线上的与采样位置相关联的最接近点(解)的距离值来正确地确定典范空间中的特定位置是否处于该描边曲线的部分之内。
本申请人已经发现,这样做的效果是:依据待处理的描边曲线的特征(例如是否自重叠)和/或如何生成覆盖该曲线的图形基元,需要测试针对给定采样位置的解的全部或者子集(优选单个(最接近的)解),并且将需要测试为所述(多个)解存储的所有数据或者仅仅所述数据的子集,以便精确地渲染该曲线。
从上面能够理解,优选包括图形处理系统可用的渲染过程中的一个或多个或全部的上述渲染技术(即“解”的测试)本身可以依据实施该过程的方式来提供多个用于(以本发明的方式来)渲染描边曲线的不同渲染过程。
例如并且优选地,该系统可以支持更“基本的”较不彻底的并且优选较不繁重的(处理强度)渲染过程,该渲染过程可以并且优选地确实包括:以上述方式来测试典范曲线上的针对典范空间中特定位置的可能的点(解)中的仅仅一个点(解),以便确定在描边曲线或者描边曲线的部分出现在典范空间中时,该位置是否处于所述描边曲线或者描边曲线的部分之内。如上所述,在该设置中,所测试的(单个)点(解)优选地是最接近典范空间中相应位置的点(解),即该(典范)曲线上的到相应采样位置的垂直距离最小的点(解)。该过程将仅能够正确地渲染输入曲线(或者曲线部分)的子集(即不自重叠的曲线或曲线部分),其中为所述输入曲线的子集存储了相关的预先确定的数据。
类似地,该系统优选地支持更“高级”(更彻底)的渲染过程,所述渲染过程可以并且优选确实包括:以上述方式来测试针对典范空间中特定位置的(多个)可能点(解)中的所有点(解),以便确定在描边曲线或者描边曲线的部分出现在典范空间中时,该位置是否处于所述描边曲线或者描边曲线的部分之内。该过程应当能够正确地渲染任何为其存储了相关的预先确定的数据的输入曲线。
在需要时也可以例如具有第三“中间”渲染过程,所述渲染过程包括测试多个针对典范空间中特定位置的可能点(解)中的大于一个但不是全部等等。
此外,优选地,例如依据如何定义覆盖表面空间中的所接收的描边曲线或其部分的一个或多个图形基元,上述渲染过程中的一个或多个或者全部可以并且优选地确实包括两级测试。例如,一级测试而且通常是所述两级中最不繁重(处理强度)的那级将包括:仅仅测试典范曲线上的、针对典范空间中所测试的特定位置的点(解)的(直线)距离,但是需要生成紧密配合的包围多边形作为用于渲染所述曲线的图形基元。同时,第二级测试包括测试典范曲线上的、针对典范空间中所测试的特定位置的点(解)的(直线)距离以及参数值二者,但是可以将简单的包围盒用作用于渲染所述曲线的(多个)图形基元。
本领域的技术人员能够理解,在这些设置中,上述仅仅测试单个解的更“基本”的渲染过程将通常是处理强度较低的,例如将需要比更“高级”的渲染过程的“中间”渲染过程更少的在渲染流水线(rendering pipeline)中的渲染穿过(rendering pass)。类似地,仅仅测试所述解的子集(但不是全部)的“中间”过程将通常比更“高级”的渲染过程处理强度更低。因此,如上所述,优选地使用“更基本”的渲染过程来渲染尽可能多的输入描边曲线,并且仅在需要时才使用更复杂(高级)的渲染过程。如上所述,这可以通过如下方式来实现:识别(确定)描边曲线的那些可能需要使用更高级渲染过程的区域,以及优选地根据该确定将描边曲线细分成多个部分、即细分成可以使用该基本渲染过程的(多个)部分以及需要更高级的渲染过程的(多个)部分。
(如上所述,上述基于“解”测试的(多个)渲染过程优选地仅包括可供图形处理系统用于渲染描边曲线的渲染过程的子集。例如,如上所述,该系统也可以并且优选地确实也支持其它渲染过程如细分技术和/或棋盘化技术,该棋盘化技术优选的是三角化(triangulation)技术,这些技术在需要时可以被选择用于渲染特定的所接收的描边曲线或其部分。)
在上面的(“解”测试)实施例中,可以以任何合适和期望的方式来执行确定典范空间中的采样位置是否处于对应于所接收的描边曲线部分的典范空间部分内的步骤,该步骤优选地包括上述步骤(测试)。然而,在优选的实施例中,这通过查找预先确定的、允许执行该过程的信息(即预先已经存储的数据)来实现。
特别的,本申请人已经认识到:典范曲线上的针对典范空间中给定(采样)位置的每个解的参数位置以及到典范空间中的针对该每个解的(采样)位置的垂直距离,可以预先被得到并被存储,然后例如在该位置将在典范空间中被测试时被查找。所存储的关于典范空间中(采样)位置的信息然后可以与所考虑的给定描边曲线部分在典范空间中的参数范围以及描边宽度(的一半)相比较,以便知道典范空间中的位置是否在典范曲线上具有任何指示该位置处于所考虑的描边曲线部分之内的解。因此,如果为多个覆盖典范空间的位置(采样位置的集合)存储这样的数据,则可以为典范空间中需要被测试的任何给定位置而查找所存储的数据。
因此,在本发明的这些设置的特别优选的实施例中,用于确定典范空间中的(对应于表面空间中采样位置的)位置在描边曲线或其部分出现在典范空间中时是否处于所述描边曲线或其部分之内的步骤或者装置包括:查找数据存储器(data store),所述数据存储器为典范空间中的多个位置存储有典范曲线上的一个或多个点的参数值(其中从典范空间中的所述位置到所述一个或多个点可以绘制垂直于该曲线的线),以及存储有典范曲线上的所述一个或多个点与典范空间中的相应位置之间的垂直距离。
关于典范空间中的采样点阵列的信息集合,例如该数据存储器,可以以任何期望和合适的方式来存储。然而,在本发明的优选的实施例中,关于典范空间中的多个离散位置的信息被以一个或多个图形纹理的形式存储。
因此,在特别优选的实施例中,在本发明中使用的渲染过程中的一个或多个或者全部尤其还包括如下步骤或者装置,所述步骤或装置用于:
通过确定在典范空间中定义的、对应于所接收的描边曲线或所接收的描边曲线的部分的典范曲线部分来确定对应于所接收的描边曲线或所接收的描边曲线的部分的典范空间部分;以及
将用于渲染所接收的描边曲线或者所接收的描边曲线的部分的数据通过如下方式分配给在所述一个或多个图形基元内的一个或多个采样点:
为在所述一个或多个图形基元内的多个采样点的每一个,确定典范空间中的对应位置;以及
对图形纹理的至少一个纹元(texel)进行采样以便确定所确定的、在典范空间中的相应位置是否处于对应于所接收的描边曲线的部分的典范空间部分之内,其中该图形纹理具有多个纹元,每个纹元都与关于典范空间中的至少一个离散位置的信息相关联。
在这些设置中,(多个)图形纹理中的每个纹元都优选地都具有与其相关联的、关于典范曲线上的针对该纹元位置的(多个)解的上述信息。换言之,每个纹元都将表示典范空间中的位置,并且存储关于典范曲线上的针对典范空间中的该位置的解点的信息(例如并且优选地,在该曲线上的参数值以及到该曲线的垂直距离)。例如并且优选地,该信息是(多个)解点的参数值、或者从典范曲线上的预先确定的点到(多个)解点的距离、或者从(多个)解点到该曲线的垂直距离。例如,纹理的红色和绿色通道可以存储参数位置以及对于典范空间中所考虑的位置的一个解点而言到该曲线(或者反之亦然)的垂直距离,而蓝色和alpha通道可以存储针对该曲线上的其它解点的对应数据,等等,如果该纹理支持其它数据通道的话。
然而本申请人已经注意到:对于典范空间中的多个离散位置(其中将为所述离散位置存储“解数据”)的一个或多个而言,可能不存在典范曲线上的任何如下的点:可以从(多个)相应位置到所述点绘制垂直于该曲线的(直)线(即在该曲线上可能不存在针对该点的任何解)。同样,在典范空间中可能存在一些位置,这些位置具有比其它位置更多的解。优选地,在不存在或者存在较少的针对给定位置的解的情况下,其中将为所述给定位置存储数据,要么不存储信息,要么在特别优选的实施例中,存储预先确定或者预定义(缺省)的信息,例如,下面将会更详细描述,为“缺失(missing)”的解存储预先确定的或者预定义(缺省)的信息。
本申请人还认识到:对于典范空间中的任何离散位置而言,并且其中典范曲线是基本二次曲线,将存在零个(0)、一个(1)或者两个(2)相关联的点(解),从所述相关联的点(解)到典范曲线的一个半边(one half)上(即如果该典范曲线关于其反射(reflective)对称轴而被切分(分开))的相应离散位置可以绘制垂直于该典范曲线的(直)线。
因此,在特别优选的实施例中,其中典范曲线具有反射对称轴(例如穿过二次典范曲线的最低点)而使得典范曲线可以被切分(分开)成两个互为镜像的半边,仅仅为在典范空间中定义的每个离散位置(采样点)、为针对该位置的在典范曲线的仅仅一个半边上的“解”点来存储信息,例如上述信息。
因此,本发明优选的进一步包括如下步骤或者装置:其用于基于所接收的描边曲线的最大曲率点(例如描边二次曲线的最低点)是否处于所接收的描边曲线的中心曲线上来将输入描边曲线细分成两个或两个以上部分。换言之,如果该最大曲率点处于描边曲线的起始点与终止点之间,则优选适当地将输入描边曲线关于每个(该)最大曲率点细分成两个部分。
(在此应当注意,将所接收的描边曲线(或者所接收的描边曲线段)关于最大曲率点细分成两个部分的步骤优选地附加于、并且通常在如下步骤之后发生:所述步骤基于确定所接收的描边曲线(或者所接收的描边曲线段)是否包括一个或多个具有上述特定特征的区域的所述步骤而将所接收的描边曲线(或者所接收的描边曲线段)细分成一个或多个部分。)
因此,在本发明的优选实施例中,其中为典范空间中的每个离散位置都存储有典范曲线上的所关联的识别点(解)的参数值以及在典范曲线上的所关联的识别点(解)与相应离散位置之间的距离,在这种情况下,仅仅需要为典范空间中的每个离散位置(采样位置)存储最多四个(4)分量(不连续的信息),即(i)典范曲线上的第一(例如最接近的)的识别点(解)的参数值;(ii)在典范曲线上的第一(例如最接近的)的识别点(解)与离散位置之间的距离;(iii)典范曲线上的第二(例如最远的)的识别点(解)的参数值;(iv)在典范曲线上的第二(例如最远的)的识别点(解)与离散位置之间的距离。应当理解,这四个分量可以方便地存储在单个“四通道”的图形纹理的单个纹元中,因为如上所述,这样的单个纹元将具有四个数据通道--红色通道、绿色通道、蓝色通道和alpha通道。
在这样的实施例中,即其中典范空间中的任何离散位置具有最多两个(2)典范曲线上的关联解,能够理解上述“解”测试渲染技术将包括两个渲染过程:基本渲染过程,在所述基本渲染过程中测试所述两个可能解中的仅仅一个、优选最接近的那个;以及高级的渲染过程,在所述高级的渲染过程中测试所述两个可能(存储的)解中的二者。
为了有利于此,优选地,关于针对每个离散位置的最接近的解的信息(或者如果不存在最接近的解则是关于“缺失”的解的合适数据)总是存储在纹元的相同部分中(即在相同的配置中),例如总是存储在红色和绿色的通道中。这意味着:当使用更基本的、单个解测试渲染过程时,该系统可以通过仅仅测试预先确定的、存储关于最接近的解的信息的数据“通道”而直接实现该目的。
如上所述,对于典范空间中的一个或多个与一个或多个纹理相关联的离散位置而言,可能在典范曲线上不存在如下点(解):从所述点到相应离散位置可以绘制垂直于典范曲线的(直)线,或者在典范曲线上可能存在比所述一个或多个纹理被构造为用来保存(hold)的解的数目更少的点(解)。例如,在上述实施例中,尽管所述一个和多个纹理被构造为使得每个纹元都优选地能够存储关于典范曲线上的两个点(解)的信息,即与单个离散位置相关联的点(解)的最大数目,但是所述纹元中的一个或多个可能需要仅仅存储关于一个点(解)的信息,或者甚至根本不需要存储关于任何点(解)的信息,即那些与典范空间中在典范曲线上仅仅具有一个或者不具有相关联的点(解)的位置相关联的纹元。
优选地,针对那些数目小于相关联的点(解)的最大数目的离散位置(纹元),将预先确定的或者预定义的值存储在将产生“缺失”解的纹元的相关“参数”和/或“距离”分量中,其中所述“缺失”解未能通过如下测试:该测试用于确定在描边曲线或其部分出现在典范空间中时所述“缺失”的解是否处于描边曲线或其部分内。
例如,在优选的实施例中,在任何输入描边曲线出现在典范空间中时总是大于该输入描边曲线的描边宽度一半的值被存储在这样的“缺失”解的“距离”分量中。在这样的实施例中,该纹元的相关联的“参数”分量可以要么为空(未定义),要么适当地可以包含任何适合和期望的值,因为一个解仅仅需要未通过两个针对“缺失”解的测试之一就被确定为在描边曲线出现在典范空间中时处于所述描边曲线之外。
在将以上述方式来使用图形纹理的情况下,可以根据需要对该纹理采样以便获得针对典范空间中的给定位置的解数据。例如,在特别优选的实施例中,使用合适的本领域公知的纹理过滤或者插值过程(例如并且优选地双线性过滤(bilinear filtering))来对该纹理采样。
在特别优选的实施例中,为每个在典范空间中定义的离散位置(例如每个纹元)存储的信息包括典范曲线上的一个或多个识别的点中的每一个与相应离散位置之间带符号(signed)的距离、而不是绝对距离。能够理解,带符号的距离不仅指示两点之间的距离(绝对距离),而且指示该离散位置落到典范曲线的哪一侧。例如,如果该离散位置处于典范曲线的上方,则该距离被赋正值,而如果该离散位置处于典范曲线的下方,则该距离被赋负值(或者当然反之亦然)。使用带符号的距离将有助于允许在使用过滤或者插值时精确地对纹理采样。
在将把“解”测试技术用作本发明中可用的渲染过程中至少一个的情况下,优选地预先生成表示(多个)典范曲线的(多个)纹理,然后将所述纹理适当地存储以供图形处理系统(例如并且优选地与该图形处理系统可以使用的其它(静态)纹理映射(texture map)一起)使用。然后,在将要渲染所考虑的描边曲线时,适当选择并使用给定的纹理映射。
一旦在使用“解”测试技术时,例如使用本发明的上述优选步骤而已经确定了表面空间中的一个或多个图形基元内的采样点在描边曲线部分出现在典范空间中时是否处于所述描边曲线部分之内,就可以基于该确定适当地将数据例如红色、绿色和蓝色(RGB)颜色值和“alpha”(透明度)值分配给所述采样点。然后优选地针对在表面空间中定义的多个采样点中的每一个重复该过程,并且相应地渲染该描边曲线。(类似地,当使用其它可能(可用)的渲染技术之一例如细分和/或棋盘化时,一旦已经确定了表面空间中的图形基元之一内的采样点在描边曲线或其部分出现在用户空间中时是否处于所述描边曲线或其部分之内,则可以基于该确定适当地将数据例如红色、绿色和蓝色(RGB)颜色值和“alpha”(透明度)值分配给所述采样点。)
因此从上面可以得知,在本发明的优选的实施例中,(以本领域公知的方式)将一个或多个图形基元光栅化成采样点,并且生成片段,并且通过对该纹理中的、对应于图形基元采样点位置的位置进行采样,为所述一个或多个图形基元的每个采样点来对表示合适典范曲线以及典范空间部分的纹理进行采样。
然后将采样的纹理值与针对所考虑的描边曲线或其部分的对应值(例如并且优选地,典范空间中的参数范围以及描边宽度(的一半))相比较,并且相应地保留或者丢弃表面空间中的对应采样点。
该“比较和丢弃”过程可以以任何期望的和对所考虑的图形处理系统合适的方式来执行。
例如,在图形处理系统具有可编程片段着色器(fragment shader)硬件的情况下,可以使用并且优选地使用“比较和有条件丢弃”例程(routine)。
在图形处理系统具有固定功能的硬件的情况下,可以例如通过使采样点(片段)多次穿过图形渲染流水线来实现本发明的该操作。例如,第一次穿过图形渲染流水线可以用于检查一个或多个解之一与采样位置之间的距离是否小于或等于描边曲线的描边宽度的一半,然后如果需要的话,第二次穿过图形渲染流水线可以用于检查该解的参数值在该描边曲线出现在典范空间中时是否处于该描边曲线的参数范围之内。类似的穿过或者成对的穿过可以在需要时进行以便检查典范曲线上的与该采样位置相关联的一个或多个解中的其它解。
在需要时可以在这样的固定功能硬件的实施例的情况下使用点积来生成在上述测试中使用的任何信息的绝对值,例如将带符号的距离转换成绝对距离。此外,优选地使用(该)alpha测试来实施上述“解”测试中所需的比较。如上所述,在特别优选的实施例中,如果一个解在其第一次穿过渲染流水线时未能通过该测试,则并不继续测试(通过第二次穿过该流水线)该解。这优选地使用模板缓冲区(stencilbuffer)来实现。
在这样的实施例中可以得知,根据典范空间中的给定位置来测试单个(例如并且优选地,最接近的)解的更“基本的”解测试渲染过程因此需要进行一次穿过或者一对穿过,以便确定当描边曲线或者描边曲线的部分出现在典范空间中时该采样位置是否处于所述描边曲线或者描边曲线的部分之内,而测试更多(两个)解的更“高级”的解测试渲染过程将需要进行两次穿过或者两对穿过来作出相同的确定。
从上面可以得知,在本发明的特别优选的实施例中,用于渲染描边曲线的渲染过程中的至少一个或多个包括查找数据,优选地是图形纹理形式的数据,其中所述数据是针对多个相对于参考曲线的采样位置预存储的,并且所述数据可以用于确定给定采样位置是否处于被映射到(对应于)该参考曲线的描边曲线之内。类似地,该渲染过程优选地包括:针对待测试的给定采样位置测试从该采样位置中得到的或者为该采样位置存储的一个或多个数据集合,以便确定该采样位置是否处于待渲染的描边曲线的表示之内。
所存储的和所测试的信息优选地涉及相对于预定义的曲线上的一个或多个点的位置的地点。优选地,存储这样的信息,并且可以根据多个这样的点针对每个给定的相应(采样)位置来测试这样的信息。
优选地,每个存储的采样位置具有针对该采样位置(与该采样位置相关联)的两个或者两个以上的(相似)数据集合,并且渲染过程可以类似地使用(并且优选地测试)针对待测试的给定采样位置的一个或多个(两个)数据集合。
更优选地,在这些设置中,用于渲染描边曲线的一个渲染过程将根据待测试的采样位置(针对所述采样位置将确定该采样位置是否处于描边曲线之内)而使用(例如并且优选地,测试)多个、并且优选地所有可用的数据集合(该渲染过程可以例如并且优选地用于(潜在)自重叠的曲线或者曲线的区域),并且另一渲染过程根据待测试的采样位置仅仅使用(测试)所述数据集的(一些但不是全部)子集,并且优选地仅仅使用所述数据集合中的仅仅一个(该渲染过程可以例如并且优选地用于并不自重叠的曲线或者曲线的区域的)。
因此,在特别优选的实施例中,可用于渲染描边曲线的渲染过程包括第一过程和第二过程,所述第一过程和第二过程每个都根据待测试的采样位置而测试数据集合,其中,为预先确定的采样位置阵列存储这样的数据集合,所存储的每个阵列采样位置具有与该阵列采样位置相关联的多个数据集合,并且其中第一渲染过程针对每个待测试的采样位置测试多个数据集合,而第二渲染过程针对每个待测试的采样位置仅仅测试所述多个数据集合(并且最优选地是仅一个数据集合)的子集。
本发明的各种(优选的)功能,例如对所接收的描边曲线进行归类(识别)的步骤、将所接收的描边曲线细分(分开)成两个或两个以上部分的步骤、以及选择合适的技术来渲染所接收的描边曲线或其部分的步骤,可以按照需要例如使用图形处理系统的CPU(例如主CPU上的图形驱动器)和/或一个或多个着色器(例如并且优选地,顶点着色器和几何着色器)的组合来实施。
在特别优选的实施例中,本发明的各种(优选的)功能在单个图形处理平台上执行,所述单个图形处理平台生成并输出被写到显示设备的帧缓冲区(frame buffer)的数据。
本发明适用于任何形式或配置的渲染器(renderer),例如具有“流水线”设置的渲染器(在这种情况下,该渲染器将具有渲染流水线的形式)。在优选的实施例中,该渲染器被应用于硬件图形渲染流水线。本发明的各种功能和元素等可以根据需要来实施,例如并且优选地由合适的功能单元、处理逻辑、处理器和微处理器设置等来实施。
本发明适用于所有形式的渲染,例如快速方式渲染(immediatemode rendering)、延迟模式渲染(deferred mode rendering)、碎片纹理渲染(tile-based rendering)等等。
从上面能够理解,本发明尤其是但不是仅仅适用于3D图形处理器和处理设备,并且因此扩展到包括本发明在此所述的任一或多个方面的装置或者根据本发明在此所述的任一或多个方面运行的装置在内的3D图形处理器和3D图形处理平台。受制于执行上述特定功能所需要的任何硬件,这样的3D图形处理器可以在其它情况下包括3D图形处理器所包括的任何一个或多个或全部的常用功能单元等。
本发明类似地扩展到2D图形处理器和扩展到2D图形处理。
本领域的技术人员能够理解,本发明的所有已描述的方面和实施例可以并且优选地确实适当地包括在此所述的优选的和可选的特征的任何之一或多个或全部。
根据本发明的方法可以至少部分地使用软件、例如计算机程序来实施。因此能够得知:当从其它方面来看,本发明提供的计算机软件特别适于在被安装在数据处理装置上时执行在此所述的方法,计算机程序单元包括计算机软件代码部分,所述计算机软件代码部分用于在该程序单元在数据处理装置上运行时执行在此所述的方法,并且计算机程序包括代码方法,所述代码方法适于在该程序运行在数据处理系统上时执行在此所述的方法的所有步骤。数据处理器可以是微处理器系统、可编程FPGA(现场可编程门阵列)等等。
本发明也扩展到计算机软件载体,所述计算机软件载体包括这样的软件:所述软件在被用于操作图形处理器、渲染器或者包括数据处理装置的微处理器系统时,结合所述数据处理装置使所述处理器、渲染器或者系统执行本发明的方法的步骤。这样的计算机软件载体可以是物理存储介质,例如ROM芯片、CD ROM或者磁盘,或者可以是信号,例如导线上的电信号、光信号或者诸如到卫星等的无线电信号。
此外还能够理解,并不是本发明的方法的所有步骤都需要由计算软件来执行,并且因此根据另一宽的方面,本发明提供计算机软件,并且这样的软件被安装在计算机软件载体上以便执行在此所提出的方法的步骤中的至少之一。
本发明可以相应地被适当地实施为计算机程序产品以供与计算机系统一起使用。这样的实施方式可以包括一系列计算机可读指令,所述指令要么固定在有形介质例如计算机可读介质(例如磁盘、CD-ROM、ROM或者硬盘)上,要么可以经由调制解调器或者其它接口设备通过包括但不限于光学或者模拟通信线的有形介质或者无形地使用包括但不限于微波、红外或其它传输技术的无线技术而被传输到计算机系统。在此,该系列的计算机可读指令实施前面所述的全部功能或者一部分功能。
本领域的技术人员能够理解,这样的计算机可读指令可以以多种编程语言来编写以供与许多计算机体系结构或者操作系统一起使用。此外,这样的指令可以使用任何当前的或者未来的、包括但不限于半导体、磁的、光学的存储技术来存储,或者使用任何当前的或者未来的、包括但不限于光学的、红外的或者微波的通信技术来传输。所考虑的是:这样的计算机程序产品可以作为可移动介质连同附带的印刷或者电子文献一起发布-例如现成套装(shrink-wrapped)软件,与计算机系统一起预装(例如预装在系统ROM或者固定磁盘上),或者从服务器或者电子公告牌通过网络(例如因特网或者万维网)来发布。
附图说明
下面,仅仅通过例子并参考附图来说明本发明的多个优选的实施例,其中:
图1示出了示例性的描边二次贝塞尔曲线;
图2示意性地示出了在本发明的实施例中渲染表面曲线的方式的原理过程;
图3图解说明了为了将输入描边曲线映射到典范曲线的对应部分所需的变换的确定;
图4示意性地示出了将用户空间中的描边曲线变换到典范空间中的典范曲线的对应部分上的变换;
图5示出了典范空间中的二次典范曲线以及该典范曲线上的、与典范空间中的特定位置相关联的解;
图6示出了对应于覆盖在图5的二次典范曲线上的输入描边曲线的典范曲线部分;
图7图解说明了将典范曲线细分成单独的段的细分,其中每个单独的段都与特定的纹理相关联;
图8示出了类型1曲线的例子;
图9示出了类型2曲线的例子;
图10示出了类型3曲线的例子;
图11示出了类型5曲线的例子;
图12示出了与优选实施例相关联的渲染流水线;
除非另行说明,给相同的部件使用相同的附图标记。
具体实施方式
如图1所示,描边二次贝塞尔曲线1形式的矢量图形对象初始在2D用户空间2中由如下来定义:该曲线的起始控制点和终止控制点c0和c2的位置;中间控制点c1的位置;以及描边宽度w。
如本领域公知的那样,一般的二次贝塞尔曲线由下式来定义:
<x(t),y(t)>=P(t)=P0(1-t)2+2P1t(1-t)+P2t2,其中t∈[0,1]。
本领域的技术人员能够理解,诸如图1所示的曲线1的描边曲线可以包括一个或多个称为自重叠区域的区域。在这些常常需要使用相对繁重(处理强度大)的渲染技术的区域中,该描边曲线的一段侵占该描边曲线的另一段,使得无论该描边曲线的中心曲线是否平滑,该描边曲线的边界都不再平滑。
在本实施例中,使用密切圆的概念来在数学上确定这些有问题的自重叠区域。如本领域公知的那样,针对曲线上给定点的密切圆是从该曲线的一侧经过曲线上的该点到达该曲线的另一侧的圆,并且该密切圆的圆心处于该曲线上的该点处的内(凹侧)法线上。在该曲线上的特定点处定义的密切圆的圆心和半径被称为该点的曲率中心和曲率半径。
该密切圆的半径rosc在数学上被定义为:
其中′表示对t微分(differentiation with respect to t)。
能够容易地认识到,自重叠的区域将出现在该描边的中心曲线上的如下点处:在所述点处,曲率半径小于该描边宽度的一半,即rosc<w/2。
在下面的说明中,将与中心曲线上的具有rosc<w/2的点相关联的描边曲线区域表示为“红色”区域,而将与中心曲线上的具有rOSC>w/2的点相关联的描边曲线区域表示为“绿色”区域。
对于例如图1所示的二次贝塞尔曲线而言,曲率在最低点4处总是最大,并且随着沿着该曲线远离最低点4移动而逐渐减小。因此,如果二次贝塞尔曲线具有任何红色区域的话,则至少最低点4必须为“红色”的。反之,如果最低点4是“绿色”的,则整个曲线将是“绿色”的。
本申请人已经认识到:可以基于二次贝塞尔曲线是否仅仅由绿色区域、仅仅由红色区域或者两者的混合组成来将所有的二次贝塞尔曲线归类为特定类型。更具体而言,在本实施例中,通过对给定曲线执行四个单独的测试来将二次贝塞尔曲线归类,所述测试即:
测试1-该曲线的最低点是红色的吗?
测试2-该曲线的起始控制点是红色的吗?
测试3-该曲线的终止控制点是红色的吗?
测试4-该曲线的最低点处于该曲线的区间[0,1]之内吗?
第一测试用于检查最低点4是否是红色的,其中该最低点可能是也可能不是该曲线本身上的点(见测试4)。换言之,确定最低点4处的曲率半径是否小于描边宽度的一半(w/2),并且如果情况如此,则最低点4是红色的。
如上所述,因为最低点4是该曲线上曲率最大的点,所以当第一测试未能通过、即当最低点是绿色时,该曲线上的所有点(包括起始控制点和终止控制点c0和c2)一定也是绿色的。然而,如果第一测试通过、即当最低点是红色时,则必须接下来确定该起始控制点和终止控制点c0和c2之一或二者是否也是红色的,这通过第二和第三测试来完成。
与第一测试的方式类似,第二和第三测试确定起始控制点和终止控制点c0和c2处的曲率半径是否小于描边宽度的一半(w/2),并且如果对于所述两点中的任何一个情况如此,则相应点就是红色的。
最后,第四测试用于确定该曲线的最低点4是否对应于该曲线上的在起始控制点与终止控制点之间的实际点。如果最低点4是该曲线上的点,则该最低点处于该贝塞尔曲线的参数t的区间[0,1]之内,否则该最低点处于该区间之外,并且因此处于该曲线之外。
通常,以在上面列出所述测试的顺序来执行所述测试,即首先执行用来得知最低点4是否是红色的测试,但是,能够理解所述测试可以根据需要以任何的顺序执行。实际上,依据首先执行所述测试的哪一个,本申请人已经认识到可以减少在某种情况下需要执行的测试的数目。例如,如果最低点4被首先测试,并且被发现是绿色的,则不需要测试控制点c0和c2,因为它们一定也是绿色的。可替换地,如果控制点c0和c2被首先测试,并且二者都被发现是红色的,则不需要测试最低点4,因为它一定也是红色的。
能够认识到,这些测试导致所定义的八种类型的曲线,所述曲线如下所示:
类型 | 最低点 | 端点 | 处于[0,1]内 |
12345678 | 绿色绿色红色红色红色红色红色红色 | 绿色|绿色绿色|绿色红色|红色红色|红色红色|绿色红色|绿色绿色|绿色绿色|绿色 | 否是否是否是否是 |
对于类型1和类型2的曲线而言,例如见图8和图9,因为最低点是绿色的,则整个描边曲线都是绿色的。类似地,尽管类型7曲线的最低点是红色的,但是因为该最低点不在区间[0,1]内、即不是该曲线本身上的点,并且起始点和终止点二者都是绿色的,所以整个描边曲线又将是绿色的。
对于类型3和类型4的曲线而言,例如见图10,因为起始点和终止点二者、以及最低点都是红色的,因此整个曲线也将是红色的(无论最低点是否在区间[0,1]内)。
对于类型5和类型6的曲线而言,例如见图11,其中最低点是红色的,并且起始点和终止点之一是红色的,则该曲线将具有红色区域,该红色区域从红色端点延伸并且其与从绿色端点延伸的绿色区域邻接。类似地,类型8的曲线具有红色的最低点,但是具有两个绿色的端点(而不是一个绿色和一个红色的端点)。因此,该曲线将具有两个绿色的区域,所述绿色区域分别从每个端点延伸,并且与包围最低点的红色区域邻接。
在本实施例中,通过确定曲率半径等于描边宽度一半时的参数t的值,即通过解如下方程来计算该曲线上的对应于红色与绿色区域之间的(类型5、6和8曲线中的)边界的点:
本申请人已经认识到:可以将所有的描边二次贝塞尔曲线归类为上面定义的八种类型之一,并且此外可以依据特定描边曲线被确定为哪种类型的曲线来制定渲染该特定描边曲线的方式。
(如果被输入到图形处理系统以进行渲染的描边曲线是描边三次贝塞尔曲线或者椭圆弧而不是图1所示的描边二次贝塞尔曲线,则可以将输入曲线细分成多个描边二次曲线段,使得每个曲线段都可以被归类为上述八种类型之一并且被适当地渲染。)
本实施例的图形处理系统能够使用多个可能的渲染过程来渲染描边曲线11以用于显示,所述渲染过程包括:细分技术(即将输入曲线切分,并使用该系统可用的渲染过程来分别地渲染所示被切分的曲线的每个不同部分);棋盘化(例如三角化)过程(即将输入曲线(几何)分成可以被直接渲染的图形基元,例如三角形);以及在图4中示意性示出的渲染过程和在下面将更详细说明的渲染过程。在需要时也可以支持其它合适和期望的渲染技术。
如图2所示,初始在用户空间12中定义描边二次贝塞尔曲线11形式的矢量图形对象,然后,初始地将描边曲线11、或者通常将定义该描边曲线的信息输入到图形处理系统以便渲染描边曲线11以用于显示。
如本领域公知的那样,在该渲染过程期间,在用户空间12中定义的描边曲线(或者该描边曲线的部分)11被投影到2D表面空间13,该2D表面空间13具有该描边曲线将在其上面被查看的显示的相同的透视(几何)。将所述描边曲线11从用户空间12投影到表面空间13的变换通常称为用户到表面变换(TUS),并且通常将包括非均匀的缩放。因此,所投影的描边曲线11′在表面空间13中的描边宽度将通常沿着该曲线的长度变化,而不是像在描边曲线11的情况下那样具有单个恒定的值。
一旦已经将描边曲线11投影到表面空间13,由此定义了所投影的描边曲线11′,则生成图形基元14、例如图2所示的多边形,所述图形基元14覆盖表面空间13中的所投影的描边曲线11′。如本领域公知的那样,然后将图形基元14光栅化,并且对光栅化过程中定义的多个采样点适当地着色(基于它们是否处于被所投影的描边曲线11′包围的区域之内),以便显示所投影的描边曲线11′。
该确定(确定表面空间13中的采样点是否处于所投影的描边曲线11′之内)通过如下方式作出:把在用户空间12中定义的描边曲线11映射到典范空间15的对应部分11″(在此称为描边典范曲线段),然后确定典范空间15中的对应于表面空间13中的采样点的对应位置是否落入描边典范曲线段11″之内。
如上所述,在典范空间15中定义了典范曲线16,该典范曲线16是预定义的单个或者基本曲线,其中曲线族内的所有曲线都可以仅仅使用平移、旋转和/或均匀缩放而被变换到所述单个或者基本曲线(或者至少所述单个或者基本曲线的一部分)上。例如,在本实施例中,其中在用户空间12中定义的描边曲线1是二次曲线,典范曲线16是曲线y=x2。
能够理解,为了实施本实施例,必须确定用户到典范变换(TUC),即将在用户空间12中定义的描边曲线11映射到典范曲线16的对应部分11″的变换。
在图3中示出了本实施例中针对任何给定的输入二次贝塞尔曲线得到用户到典范变换的方式。
如上所述,通用的二次贝塞尔曲线由下式定义:
<x(t),y(t)>=P(t)=P0(1-t)2+2P1t(1-t)+P2t2,其中t∈[0,1],
而典范二次曲线由下式定义:
<x(t′),y(t′)>=<t′,t′2>。
如上所述,用户到典范变换仅仅由平移(由矩阵Mt定义)、旋转由矩阵Mr定义)和/或均匀缩放(由矩阵Ms=kI定义,其中k是常数,I是单位矩阵)组成。
本实施例中的用于确定用户到典范变换的过程的第一阶段是确定该变换的平移分量(平移矩阵Mt)。所需要的平移被确定为:为了将用户空间12中的输入二次贝塞尔曲线18的最低点(底点)20平移到典范空间15中的典范曲线16的最低点22(在原点(0,0)处)而需要的-见图3(i)。能够理解,输入曲线18的最低点20是该曲线上具有最大曲率的点,并且因为该曲线是二次曲线,所以最低点20也是参数t的变化产生该曲线上的最小位置变化的点。
输入曲线18上的两点(x,y)与(x+Δx,y+Δy)之间的距离由给出,该距离在Δx和Δy都趋于零的极限情况下导致该曲线上的位置的无穷小变化由给出,其中′表示对t的微分。因此,通过计算D′(t)=0时的t的值来确定输入曲线10的最低点20的位置,其中计算D′(t)=0时的t的值等价于解方程:(D(t)2)′=0,并且该最低点20的位置具有如下解:
ax=x0-2x1+x2
ay=y0-2y1+y2
bx=2x1-2x0
by=2y1-2y0
其中(x0,y0)是用户空间12中的描边曲线11的起始控制点c0的位置(描边曲线11的中心曲线是输入二次贝塞尔曲线18);(x1,y1)是描边曲线11的中间控制点c1的位置;而(x2,y2)是描边曲线11的终止控制点c2的位置。
通过将t的上述值代入x(t)和y(t)的方程中,可以确定用户空间12中的最低点20的坐标(x,y),并且因此可以确定为了将输入曲线18的最低点20移动到典范曲线16的最低点22(即典范空间15中的原点(0,0))所需的平移。
一旦确定了用户到典范变换的平移分量,就在接下来确定旋转分量(即旋转矩阵Mr)。该过程在图3(ii)中示出。
通过定位典范空间15中的经过平移的输入曲线19上的、到最低点距离相等的两个一般性点30、32来确定所需要的旋转。然后可以在这两个点之间绘制线34,并且所需要的旋转是使该线水平所需的旋转(即使得该线上的所有点都具有相同的y值)。
将把经过平移的输入曲线19上的坐标(提供为列矢量)转换成典范曲线16的旋转矩阵Mr因此可以作为如下式子来计算:
px=2axt+bx
py=2ayt+by
最后,确定用户到典范变换的均匀缩放分量(即缩放矩阵Ms)。这在图3(iii)中示出。
能够理解,一旦已经将用户空间12中的输入曲线18适当地平移和旋转到典范空间15中,即图3(iii)中的曲线21,则该曲线现在具有形式y=kx2,其中k是待确定的缩放因子。因此,如果为了计算该旋转矩阵而定义的点30与32之间的线34的长度是2l1,并且从该线的中点延伸到曲线21的在原点处的最低点的线的长度被定义为l2,则所需等级(level)的缩放是:
一旦已经计算了为了把在用户空间12中定义的输入描边曲线11的中心曲线映射到典范曲线16的对应部分所需的用户到典范变换、即TUC=MsMrMt=kMrMt,则可以通过将所确定的变换应用于输入描边曲线11的参数来确定典范空间15的、由描边典范曲线段11″所覆盖的实际段。该过程在图4中图解说明。
如图4所示,使用用户到典范变换将在用户空间12中定义的并且具有控制点c0、c1和c2以及描边宽度w的输入描边曲线11映射到典范曲线的对应部分11″。由于用户到典范变换的性质,描边典范曲线段11″本身是具有单个描边宽度w″的描边曲线,并且该描边曲线在典范曲线16上的起始点c0″与终止点c2″之间延伸。
描边典范曲线段11″的起始点和终止点c0″和c2″定义了输入描边曲线11在典范空间15中的参数(x)范围。因此,如图4所示,描边典范曲线段11″具有在参数位置xA与xB之间延伸的参数范围。
此外,由于在应用均匀缩放的情况下,欧式距离(euclideandistance)线性地缩放,因此描边典范曲线段11″的描边宽度w″将等于kw,即等于在用户空间中定义的输入描边曲线11的描边宽度w乘以用户到典范变换的缩放因子k。
如上所述,为了确定表面空间13内的图形基元14之内的采样点是否处于所投影的描边曲线11′之内,使用用户到表面变换的逆变换将该采样点投影到用户空间12中的对应位置,然后使用用户到典范变换将用户空间12中的所述对应位置映射到典范空间15中的对应位置。最后,作出关于典范空间15中的对应位置是否处于描边典范曲线段11″之内的确定。
如果能够从典范空间15中的位置绘制直线到典范曲线16上的点(所述点形成描边典范曲线段11″的中心曲线)使得所述直线垂直于该曲线并且具有小于或等于(描边典范曲线段11″的)描边宽度一半的长度,则将典范空间15中的所述位置定义为处于描边典范曲线段11″之内。典范空间15中的任何不满足该条件的位置(点)将处于描边典范曲线段11″之外。
在本实施例中,利用典范二次曲线的第二性质来作出该确定,所述第二性质即对于典范曲线的平面中的任何点,可以从平面中的该点到其绘制垂直于该曲线的线的该曲线上的点的数目一定是常数。因此,换言之,对于典范空间15中的任何点((x,y)位置),能够从该点绘制垂直于典范曲线16的线到典范曲线16上的整数个点。因此,对于典范空间中的每个(x,y)位置,将存在整数n个解(该曲线上的这样的点),其中n=0,1,2,3。
例如,如图5所示,典范空间15中的点40具有三个这样的解。第一解(即该垂直线“击中(hit)”曲线16的地方)在x=x1之处,并且所产生的、从点40到曲线16的点x=x1处的线具有长度d1。第二解和第三解分别在x=-x2和x=-x3处,其中相关联的线分别具有长度d2和d3。
因此,应当注意,典范曲线16上的、与典范空间15中的点(位置)相关联的每个解都通过如下两条信息来定义:首先,其参数(x)值;以及其次,其距典范空间15中的点(位置)的垂直距离。
在下面将会参照图6来更详细地说明,在本实施例中,这两条关于典范曲线上的针对典范空间15中特定位置的每个解的信息被用于确定所述特定位置是否处于描边典范曲线段11″之内。
图6示出了覆盖在前面在图5所示的二次典范曲线上的描边典范曲线段11″,其中描边典范曲线段11″在x值的范围xA≤x≤xB内延伸,并且具有关联的描边宽度w″。
为了确定典范空间中的点40是否处于描边典范曲线段11″之内,首先确定与点40相关联的解的至少一个是否处于范围xA≤x≤xB之内。如图6所示,可以得知针对点40的第一解具有参数(x)值x1,其中该参数值处于期望的范围之内。接下来确定该第一解是否具有小于或等于描边宽度w″一半的垂直距离。从图6还可以得知,针对点40的垂直距离d1小于w″/2。因此,点40处于描边典范曲线段11″之内。
(如果例如将图形基元14定义为紧密地包围描边曲线的端部的多边形(例如,如图8和图9所示),则可以在某些情况下放弃用于确定与典范空间中的点相关联的解是否处于典范曲线段的参数范围内的测试,因为已知它们将会如此(因为被紧密限定的图形基元保证了仅有处于该曲线的参数范围内的点将被测试)。因此在这种情况下,仅仅需要确定所述解是否具有小于或等于描边宽度w″一半的垂直距离。)
在本实施例中,这样的测试通过为与在典范空间15中定义的多个离散位置相关联的解存储上述两条信息来实施。在本实施例中,这是针对典范空间15中的位置的常规阵列来实现的,但是这并不是必不可少的(essential),并且所述位置可以定义在典范空间15内的任何期望的点处。
在本实施例中,上述信息以一个或多个专门构造的图形纹理的形式被存储。如上所述,这是特别有利的,因为通过以这种形式来存储数据,可以将图形处理系统的现有纹理映射过程用于渲染描边曲线。
如本领域公知的那样,图形纹理的每个纹元(纹理元素)通常具有四个通道:红色通道、绿色通道、蓝色通道、以及alpha通道,并且因此能够存储四条单独的数据。因此在本实施例中,针对第一解的值的集合(即参数值和距离)存储在纹元的红色和绿色通道中,而针对第二解的值的集合存储在该纹元的蓝色和alpha通道中。
尽管因此可以为典范空间中的、具有两个以上解的任何位置将所需信息存储在该图形纹理或者另一图形纹理中的两个或者两个以上的纹元中,但是在本实施例中,由图形处理系统接收的所有输入描边曲线都被沿着最低点切分,这意味着仅需要存储那些具有非负参数值的解,为此对于典范空间15中的任何位置,仅存在最多两个解。因此,在本实施例中,存在图形纹理的纹元与典范空间15中的位置之间的一一对应。
例如,本实施例中所使用的、包括与图5中的点40相关联的信息的图形纹理将仅存储针对第一解的值的集合、即(x1,d1),而不存储针对第二解和第三解的值的集合、即(-x2,d2)、(-x3,d3)。对于典范空间中是点40的镜像的点(即点40关于y轴所反射的点),该点因此具有解(-x1,d1)、(x2,d2)以及(x3,d2),图形纹理将为第二解和第三解存储值的集合,而不为第一解存储值的集合。
实际上可以构造(使用)多个图形纹理,其中每个图形纹理与典范曲线的特定段(参数范围)相关联。例如并且参照图7,为典范曲线16的、0≤x<xA之间的段构造第一纹理(即为多个在着色区域50中定义的离散位置存储解),为典范曲线16的、0≤x<xB之间的段构造第二纹理,并且为典范曲线的、0≤x<xC之间的段构造第三纹理。以这种方式建立多个纹理意味着:在大多数情况下,图形处理系统所接收的任何输入描边曲线11可以(在需要时)在最低点处被切分,并且输入描边曲线11的每个段可以仅仅使用单个纹理来渲染。
如上所述,为了确定表面空间13中的采样点是否处于所投影的描边曲线11′内,将该采样点映射到典范空间15中的对应位置。典范空间15中的所述位置可以准确地对应于如下位置:为所述位置在纹理中存储有相关联的解。然而情况常常将是:典范空间15中的对应于表面空间13中的采样点的位置并不会准确地对应于如下位置:为所述位置在纹理中存储有相关联的解。因此使用合适的过滤或者插值过程对该纹理进行采样。例如,在本实施例中,使用双线性插值过程来对该纹理进行采样,在所述过程中,获得所存储的、关于四个最接近于期望位置的位置的数据,并且采取加权平均以便确定针对该期望位置的数据。然后,以上述方式使用所述经过插值的数据来确定针对该位置的解的至少一个是否通过了用于确定该位置是否处于描边典范曲线段11″之内的两个测试。如果所述解之一通过了所述两个测试,则该位置处于描边典范曲线段11″之内,并且表面空间13中的采样点被相应地着色。
在本实施例中,为了适当地实施该双线性插值过程,将带符号的距离而不是绝对距离存储在专门构造的纹理中。换言之,依据典范空间15中的相关联的位置是在典范曲线16上方还是下方来给每个所存储的值赋予符号,正号或者负号。
能够认识到:纹理之内的一些纹元将不具有针对所有四个分量所定义的值。例如,对应于在典范空间的左下象限(即x<0且y<0)中的采样位置的那些纹元不具有拥有非负参数值的解,并且因此不具有针对该纹理的四个分量中的任何一个所定义的值。另外,对应于具有仅仅一个解(而不是最多两个解)的采样位置的那些纹元,例如图5和图6中的点40,将仅仅具有针对该纹理的前两个分量所定义的值。为了将这些“缺失”的解考虑在内并且为了避免在测试程序中出现任何潜在错误肯定(false-positive)的结果,给相关联的纹元中的“缺失”解的距离分量赋予一个比将会与该分量进行比较的任何(一半)描边宽度大的值。
也可以认识到,仅有对应于典范曲线的左上象限(即x<0且y>0)中的采样位置的纹元具有两个不同的解,并且因此具有针对该纹理的所有四个分量所定义的值。因此,在本实施例中,可以通过建立两个单独的纹理来优化纹理存储,其中第一纹理为针对典范空间15所有四个象限中的离散位置的第一解存储值的集合,而第二纹理仅仅为针对典范空间左上象限中的离散位置的第二解存储值的集合。(因此,第二纹理的大小仅为第一纹理的四分之一)。
该纹理(或这些纹理)用于提供渲染描边曲线的有效方法(在此称为“解测试”),并且可用作在图形处理系统中连同其它诸如细分和棋盘化(三角化)的渲染过程一起被选择的选项。
在第一种类型的“解测试”渲染中,仅仅测试解的距离分量,该解测试渲染在此被称为“简单击中(plain-hit)”渲染。简单击中渲染通常可仅供在图形基元是紧密包围的多边形时使用,由此否定测试(多个)解的参数值的需要。
在第二种类型的“解测试”渲染中,测试解的参数分量和距离分量二者,并且该解测试渲染在此称为“范围击中(ranged hit)”渲染。
能够理解,范围击中渲染比简单击中渲染的效率低,因为需要执行更多的计算来测试典范空间15中的特定采样位置是否处于描边典范曲线段11′之内,因此希望在渲染描边曲线时使简单击中渲染的使用最大化。
实施“解测试”渲染的特定方式,例如是能够使用简单击中渲染还是范围击中渲染的特定方式,首先取决于图形基元14是如何被定义的,但是也更重要地取决于所接收的描边曲线11是如何使用上述归类技术而被归类的。
例如,如上所述,已经认识到对于描边曲线的绿色区域(即正常非重叠区域)而言,仅仅需要测试针对典范空间15中的给定采样位置的最接近的解是否处于描边典范曲线段11″之内。
同时,对于表面曲线的红色区域(即自重叠区域)而言,或者如下面将会更详细说明的那样常常对于红色区域的仅仅一部分而言,通常必须(但不总是)测试针对典范空间15中特定采样位置的两个解的任何一个是否处于描边典范曲线段11″之内。
因此,在本实施例中,图形处理系统所接收的每个描边二次贝塞尔曲线都被归类为上述八种不同类型之一,然后如果确定必须细分,则基于该曲线类型(例如基于能够将简单击中渲染还是范围击中渲染用在该部分中,以及最低点是否位于该描边的中心曲线上)而被细分成两个或者两个以上部分。然后,该描边曲线或者该描边曲线的每个部分(如果该曲线已经被细分了的话)使用从该图形处理系统中可用的渲染过程中选出的合适的渲染过程来渲染。
类型1曲线
图8中示出了这种类型的示例性描边曲线。
对于这种类型的曲线而言,因为最低点是绿色的,因此从上述说明中能够理解:因而整个描边曲线都是绿色的,并且因此可以完全使用简单击中渲染来渲染。
因此,该描边曲线作为单个部分而被渲染(该单个部分覆盖整个描边曲线),所述单个部分由多边形{pL,mL,mK,mR,pR}示出。
类型2曲线
图9中示出了这种类型的示例性描边曲线。
对于这种类型的曲线而言,因为最低点是绿色的,那么又能够理解整个描边曲线都是绿色的。然而,在这种情况下,因为最低点是该描边的中心曲线上的点,即处于区间[0,1]中,并且该纹理仅仅包含针对具有非负参数值的解的值集合,因此该曲线必须在能够被渲染之前关于最低点被细分成两个部分。第一部分被多边形{mL,mLK,mN,pN,pL}包围,而第二区域被多边形{mN,mRK,mR,pR,pN}包围。
因此,每个部分有效地形成一个类型1曲线,所述类型1曲线的每个都完全使用简单击中渲染来渲染。
类型3曲线
图10中示出了这种类型的示例性描边曲线。
对于这种类型的曲线而言,因为两个端点都是红色的,那么从上述说明中能够理解整个描边曲线都是红色的。然而,从图12可以得知,自重叠的区域仅在该曲线的一侧出现(在本情况下中,该曲线上方的区域),并因此仅仅需要在该描边曲线的这个区域中使用范围击中渲染。
因此,该描边曲线被细分成两个部分:被多边形{L,pR,pK,pL,R}包围的第一部分,该部分使用范围击中渲染来渲染;以及被多边形{L,mL,mK,mR,R}包围的第二部分,该部分使用简单击中渲染来渲染。
类型4曲线
对于这种类型的曲线而言,因为最低点和两个端点都是红色的,那么能够理解整个描边曲线都是红色的。
在这种情况下,因为最低点是该描边的中心曲线上的点(与类型3曲线不同),并且该纹理仅仅包含针对具有非负参数值的解的值集合,因此该曲线必须在能够被渲染之前关于最低点首先被细分成两个部分。能够理解,这些部分中的每一个都有效地形成一个类型3曲线,然后其相应地通过进一步将每个部分细分成两个部分而被渲染,其中所述两个部分之一使用简单击中渲染来渲染,而另一部分使用范围击中来渲染。
类型5曲线
图11中示出了这种类型的示例性描边曲线。
如上所述,这种类型的曲线具有红色区域,该红色区域从红色端点延伸,并且与从绿色端点延伸的绿色区域邻接。在这种情况下,该曲线在红色区域与绿色区域之间的边界、即线{pI,mI}处被细分。然后,该绿色区域,即该曲线在所述边界右边的区域可以有效地作为类型1曲线而被渲染,而该红色区域,即该曲线在边界左边的区域可以有效地作为类型3曲线而被渲染。换言之,该曲线作为由多边形{pI,cI,mI,mK,mR,R,pR}包围的第一简单击中区域、由多边形{cI,L,mL,Lh,mI}包围的第二简单击中区域、和由多边形{pI,L,cI,pL,Rh}包围的范围击中区域而被渲染。
类型6曲线
如上所述,这种类型的曲线具有红色区域,该红色区域从红色端点延伸,穿过最低点并且与从绿色端点延伸的绿色区域邻接。
在这种情况下,因为最低点是该描边的中心曲线上的点(与类型5曲线不同),并且该纹理仅仅包含针对具有非负参数值的解的值集合,因此该曲线必须在能够被渲染之前首先关于最低点被细分成两个部分。所述部分之一,即从最低点延伸到红色端点的部分有效地为类型3曲线,并且可以相应地来渲染。另一部分,即从最低点延伸到绿色端点的部分有效地为类型5曲线(其中红色区域与绿色区域邻接),并且因此可以相应地来渲染。
类型7曲线
如上所述,尽管这种类型曲线的最低点是红色的,但是因为最低点不是该描边的中心曲线上的点,并且两个端点本身是绿色的,因此整个曲线都是绿色的。因此,类型7曲线可以作为类型1曲线来渲染。
类型8曲线
如上所述,这种类型的曲线具有两个绿色区域,所述两个绿色区域从所述端点的每一个延伸,并且都与包围最低点的红色区域邻接。
通常,这些曲线首先关于最低点(以与类型2、4和6曲线相同的方式)而被细分成两个部分,然后每个部分作为类型5曲线(使用简单击中与范围击中渲染的组合)而被渲染。然而,某些类型8曲线可以完全使用简单击中渲染来渲染(即以与类型2曲线相似的方式来渲染)。
这些“特殊”的类型8曲线在红色区域并不延伸到该曲线的绿色端点之外时出现。这可以通过如下方式来确定:检查红色区域所延伸到的参数值是否小于两个端点的绝对参数值。因为与红色区域相关联的参数值难以在数值上计算,因此作为替代而使用估计值。该估计g(w)由下式给出:
并且形成该参数值的上限(即该参数值决不会超过g(w),尽管g(w)可能较小)。如果该曲线的两个端点(在变换到典范空间中以后)处于区间[-g(w),g(w)]之外,则该曲线是“特殊”的类型8曲线。
本领域的技术人员能够理解,尽管通常将在每当可能这样做时以上述方式使用简单击中和/或范围击中渲染来渲染不同类型的输入描边曲线,但是在认为合适和/或有利的情况下可以使用任何其它可用的渲染技术(例如,细分或者棋盘化成三角形)或者图形处理系统所支持的任何其它公知技术来渲染任何的描边输入曲线或其部分,例如当所述曲线不是针对其存储有关于对应的参考曲线的数据的曲线形式时。
图12图解说明了在本实施例中用于渲染描边曲线的渲染流水线。
首先,在步骤60,描边曲线在用户空间中被定义。在步骤62,该描边曲线被归类,并且因此例如被确定为二次曲线、椭圆弧或者三次曲线。如果该描边曲线被确定为椭圆弧或者三次曲线,则该曲线被相应地细分成多个二次曲线段,见步骤64。
然后,在步骤65,该二次曲线或者每个二次曲线段被归类为上述八种类型曲线之一。
接下来,待渲染的该二次曲线、或者每个二次曲线段、或者该二次曲线或者二次曲线段的部分在所述段由于存在自重叠区域而必须被进一步细分的情况下输入到该系统的图形处理单元(GPU),并且相关联的描边曲线在该GPU内被生成(见步骤66)。然后,以上述方式使用用户到表面变换将该输入描边曲线变换到表面空间中(步骤68),并且生成以及光栅化覆盖经过变换的描边曲线的图形基元(步骤70)。
然后使用上述过程(例如简单击中渲染、简单击中渲染与范围击中渲染的组合、棋盘化(三角化)等)确定:在光栅化过程中确定的每个采样点是否处于经过变换的描边曲线之内,并且基于该确定相应地对所述采样点着色。如本领域公知的那样,后一步骤通常被分成剪裁(clipping)和遮盖(masking)(步骤72)、颜料生成(paintgeneration)(步骤74)、图像插值(步骤76)以及混合和反走样(antialiasing)(步骤78)的步骤。
本发明的过程至少部分地可以使用例如CPU和任何合适的常规现有的图形处理系统来实施,例如使用(在顶点着色器和几何着色器中)可编程的图形硬件或者在固定功能的硬件上。特别是,(在简单击中和范围击中渲染中使用的)解测试通常在片段着色器和/或片段流水线的其它部分中执行。
从上面可以得知,本发明至少在其优选的实施例中提供了用于以比常规技术实质上更有效(在CPU上的负荷方面)的方式,尤其在传统的固定功能3D图形硬件以及在未改动的现有硬件图形加速器上来渲染描边路径和特别是描边曲线的方法和装置。
Claims (21)
1.一种用于在图形处理系统中渲染描边曲线以用于显示的方法,该系统能够使用至少两个过程来用于渲染描边曲线的目的,该方法包括:
接收在定义的空间中定义的输入描边曲线;
确定该输入描边曲线是否包括一个或多个具有特定特征的区域;以及,
基于该确定结果,使用图形处理系统的用于渲染描边曲线的第一过程和/或该图形处理系统的用于渲染描边曲线的第二过程渲染该输入描边曲线以用于显示。
2.一种用于在图形处理系统中渲染描边曲线以用于显示的方法,该系统能够使用多个过程来用于渲染描边曲线的目的,该方法包括:
接收在定义的空间中定义的输入描边曲线;
确定该输入描边曲线是否包括一个或多个具有特定特征的区域;以及,
基于该输入描边曲线的区域是否被确定具有特定特征来选择图形处理系统的将被用于渲染该输入描边曲线的区域的过程。
3.根据权利要求1或2所述的方法,进一步包括:基于关于输入描边曲线是否包括一个或多个具有特定特征的区域的确定而将该输入描边曲线归类为多个预定义的或者预先确定的描边曲线之一。
4.一种用于在图形处理系统中渲染描边曲线以用于显示的方法,该系统能够使用多个过程来用于渲染描边曲线的目的,该方法包括:
接收在定义的空间中定义的输入描边曲线;
确定该输入描边曲线是否包括一个或多个具有特定特征的区域;以及
基于该确定为了渲染该描边曲线的目的而将该输入描边曲线归类。
5.根据前述权利要求中的任一所述的方法,其中确定输入描边曲线是否包括一个或多个具有特定特征的区域的步骤包括:确定该输入描边曲线是否包括一个或多个自重叠的区域。
6.根据权利要求5所述的方法,其中确定输入描边曲线是否包括一个或多个自重叠的区域的步骤包括:确定所接收的描边曲线的中心曲线上的一个或多个点处的曲率半径,以及将所确定的曲率半径与该输入描边曲线的描边宽度的一半相比较。
7.根据前述权利要求中的任一所述的方法,进一步包括:
基于确定所接收的描边曲线是否包括一个或多个具有特定特征的区域的步骤来确定是否应该为了渲染的目的而将输入描边曲线细分成两个或两个以上部分;以及
基于所述确定该将输入描边曲线细分成两个或两个以上部分。
8.根据前述权利要求中的任一所述的方法,其中可供图形处理系统用于渲染描边曲线目的的多个过程包括:第一渲染过程,该第一渲染过程能够精确地渲染描边曲线的第一集合;以及第二渲染过程,该第二渲染过程能够精确地渲染描边曲线的第二集合,描边曲线的第二集合大于描边曲线的第一集合。
9.根据前述权利要求中的任一所述的方法,其中可供图形处理系统用于渲染描边曲线目的的多个过程包括:第一渲染过程以及第二渲染过程,第二渲染过程需要比第一渲染过程更繁重的处理。
10.根据前述权利要求中的任一所述的方法,其中可供图形处理系统用于渲染描边曲线目的的多个过程包括:第一渲染过程以及第二渲染过程,所述渲染过程每个都为了渲染输入描边曲线目的而查找预先确定的信息,并且其中第二渲染过程被授权比第一渲染过程查找更多的信息。
11.一种用于在图形处理系统中渲染描边曲线以用于显示的装置,该系统能够使用至少两个过程来用于渲染描边曲线的目的,该装置包括:
用于接收在定义的空间中定义的输入描边曲线的装置;
用于确定该输入描边曲线是否包括一个或多个具有特定特征的区域的装置;以及,
用于基于该确定的结果使用图形处理系统的用于渲染描边曲线的第一过程和/或图形处理系统的用于渲染描边曲线的第二过程渲染该描边曲线以用于显示的装置。
12.一种用于在图形处理系统中渲染描边曲线以用于显示的装置,该系统能够使用多个过程来用于渲染描边曲线的目的,该装置包括:
用于接收在定义的空间中定义的输入描边曲线的装置;
用于确定该输入描边曲线是否包括一个或多个具有特定特征的区域的装置;以及,
用于基于该输入描边曲线的区域是否被确定具有特定特征来选择图形处理系统的将被用于渲染该区域的过程的装置。
13.根据权利要求11或12所述的装置,进一步包括如下装置:所述装置用于基于关于输入描边曲线是否包括一个或多个具有特定特征的区域的确定而将该输入描边曲线归类为多个预定义的或者预先确定的描边曲线之一。
14.一种用于在图形处理系统中渲染描边曲线以用于显示的装置,该系统能够使用多个过程来用于渲染描边曲线的目的,该装置包括:
用于接收在定义的空间中定义的输入描边曲线的装置;
用于确定该输入描边曲线是否包括一个或多个具有特定特征的区域的装置;以及
用于基于该确定为了渲染该描边曲线的目的而将该输入描边曲线归类的装置。
15.根据权利要求11至14中的任一所述的装置,其中用于确定输入描边曲线是否包括一个或多个具有特定特征的区域的装置包括:用于确定该输入描边曲线是否包括一个或多个自重叠的区域的装置。
16.根据权利要求15所述的装置,其中用于确定输入描边曲线是否包括一个或多个自重叠的区域的装置包括如下装置:所述装置用于确定所接收的描边曲线的中心曲线上的一个或多个点处的曲率半径并且将所确定的曲率半径与该输入描边曲线的描边宽度的一半相比较。
17.根据权利要求11至16中的任一所述的装置,其进一步包括:
用于基于关于所接收的描边曲线是否包括一个或多个具有特定特征的区域的确定来确定是否应该为了渲染目的而将输入描边曲线细分成两个或两个以上部分的装置;以及
用于基于所述确定该将输入描边曲线细分成两个或两个以上部分的装置。
18.根据权利要求11至17中的任一所述的装置,其中可供图形处理系统用于渲染描边曲线目的的多个过程包括:第一渲染过程,该第一渲染过程能够精确地渲染描边曲线的第一集合;以及第二渲染过程,该第二渲染过程能够精确地渲染描边曲线的第二集合,描边曲线的第二集合大于描边曲线的第一集合。
19.根据权利要求11至18中的任一所述的装置,其中可供图形处理系统用于渲染描边曲线目的的多个过程包括:第一渲染过程以及第二渲染过程,第二渲染过程需要比第一渲染过程更繁重的处理。
20.根据权利要求11至19中的任一所述的装置,其中可供图形处理系统用于渲染描边曲线目的的多个过程包括:第一渲染过程以及第二渲染过程,所述渲染过程每个都为了渲染输入描边曲线的目的而查找预先确定的信息,并且其中第一渲染过程被授权比第二渲染过程查找更多的信息。
21.一种计算机程序单元,包括用于在该程序单元运行在数据处理装置上时执行根据权利要求1至10中的任一所述的方法的计算机软件代码部分。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0818277.6 | 2008-10-06 | ||
GB0818277A GB0818277D0 (en) | 2008-10-06 | 2008-10-06 | Graphics processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101714260A true CN101714260A (zh) | 2010-05-26 |
CN101714260B CN101714260B (zh) | 2014-07-16 |
Family
ID=40042352
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910178763.4A Active CN101714260B (zh) | 2008-10-06 | 2009-09-30 | 图形处理系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8928668B2 (zh) |
JP (1) | JP2010092481A (zh) |
CN (1) | CN101714260B (zh) |
GB (2) | GB0818277D0 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708585A (zh) * | 2012-05-09 | 2012-10-03 | 北京像素软件科技股份有限公司 | 一种渲染模型轮廓边缘的方法 |
CN106462487A (zh) * | 2014-05-16 | 2017-02-22 | 微软技术许可有限责任公司 | 检测来自应用的图形输出数据与规范的相符性 |
CN110070555A (zh) * | 2018-10-19 | 2019-07-30 | 北京微播视界科技有限公司 | 图像处理方法、装置、硬件装置 |
TWI708208B (zh) * | 2015-08-03 | 2020-10-21 | 英商Arm有限公司 | 圖形處理系統 |
CN113052939A (zh) * | 2019-12-10 | 2021-06-29 | 辉达公司 | 对路径描边的补丁区段、顶端和连接统一编码 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US9547930B2 (en) * | 2011-11-30 | 2017-01-17 | Qualcomm Incorporated | Hardware switching between direct rendering and binning in graphics processing |
AU2012202651A1 (en) | 2012-05-04 | 2013-11-21 | Canon Kabushiki Kaisha | A method for stroking paths |
CN103390283B (zh) * | 2012-05-09 | 2017-10-31 | 腾讯科技(深圳)有限公司 | 绘制平行曲线的方法和设备 |
KR20140073951A (ko) * | 2012-12-07 | 2014-06-17 | 삼성전자주식회사 | 베이지어 커브를 렌더링하는 장치 및 방법 |
USD757773S1 (en) * | 2014-07-08 | 2016-05-31 | Huawei Technologies Co., Ltd. | Display screen or portion thereof with animated graphical user interface |
US9321461B1 (en) | 2014-08-29 | 2016-04-26 | Google Inc. | Change detection using curve alignment |
KR101654865B1 (ko) * | 2015-01-12 | 2016-09-06 | 삼성전자주식회사 | 스트로크 기반의 이미지 렌더링 장치, 방법 및 컴퓨터 프로그램 |
KR102376431B1 (ko) | 2015-07-06 | 2022-03-22 | 삼성디스플레이 주식회사 | 표시 장치 |
CN107808367B (zh) * | 2017-11-29 | 2020-10-16 | 天津聚飞创新科技有限公司 | 鱼眼图像校正方法、装置、无人机及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5381521A (en) * | 1993-05-14 | 1995-01-10 | Microsoft Corporation | System and method of rendering curves |
US20060256112A1 (en) * | 2005-05-10 | 2006-11-16 | Sony Computer Entertainment Inc. | Statistical rendering acceleration |
US20070211061A1 (en) * | 2006-03-10 | 2007-09-13 | Yoshiyuki Kokojima | Image processing apparatus, image processing method, and image processing program |
CN101046888A (zh) * | 2006-03-30 | 2007-10-03 | 株式会社东芝 | 渲染装置和方法,以及形状数据生成装置和方法 |
Family Cites Families (51)
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 | シャープ株式会社 | スイープ立体生成装置 |
EP0763930B1 (en) | 1995-09-15 | 2002-10-16 | Agfa-Gevaert | Method for calculating color gamuts |
JPH11175740A (ja) | 1997-12-05 | 1999-07-02 | Fuji Xerox Co Ltd | 太線描画方法および装置 |
JP3181877B2 (ja) | 1998-04-14 | 2001-07-03 | 株式会社島精機製作所 | 3次元画像作成装置 |
EP1208150A4 (en) | 1999-06-11 | 2005-01-26 | Sydney Hyman | IMAGE FORMING MATERIAL |
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차원 얼굴 모델링 방법 및 장치 |
CN1954340A (zh) * | 2004-05-18 | 2007-04-25 | 皇家飞利浦电子股份有限公司 | 使用三维可变形网格模型对物体的三维树状管形表面自动分段的图像处理系统 |
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 |
US7336820B2 (en) * | 2005-02-04 | 2008-02-26 | Kabushiki Kaisha Toshiba | Method and apparatus for rapid shading in a raster image processor |
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 |
US7589730B1 (en) * | 2005-05-20 | 2009-09-15 | Adobe Systems Incorporated | System and method for drawing a dashed path |
US7408548B2 (en) | 2005-06-30 | 2008-08-05 | Microsoft Corporation | Triangulating procedural geometric objects |
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 |
JP4621618B2 (ja) * | 2006-03-28 | 2011-01-26 | 株式会社東芝 | 図形描画装置、図形描画方法、およびプログラム |
WO2008064362A2 (en) | 2006-11-22 | 2008-05-29 | Take Two Interactive Software, Inc. | System and methods for fast simulation and visualization of sparse fluids |
JP2008165264A (ja) * | 2006-12-26 | 2008-07-17 | Dynacomware Taiwan Inc | ネットワークを利用して多様なフォントを用いたアジアWebページ文書を編集するためのシステム及び方法 |
CN100578547C (zh) | 2007-05-15 | 2010-01-06 | 北京金山软件有限公司 | 一种用于河流模拟的方法和系统 |
US7872648B2 (en) | 2007-06-14 | 2011-01-18 | Microsoft Corporation | Random-access vector graphics |
US7952580B1 (en) * | 2007-08-31 | 2011-05-31 | Adobe Systems Incorporated | Classification of exterior and interior triangles for artwork rendering |
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 |
US20100079454A1 (en) * | 2008-09-29 | 2010-04-01 | Legakis Justin S | Single Pass Tessellation |
GB0818280D0 (en) | 2008-10-06 | 2008-11-12 | Advanced Risc Mach Ltd | Graphics processing systems |
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 GB0818277A patent/GB0818277D0/en not_active Ceased
-
2009
- 2009-09-30 CN CN200910178763.4A patent/CN101714260B/zh active Active
- 2009-10-05 JP JP2009231900A patent/JP2010092481A/ja active Pending
- 2009-10-06 US US12/588,175 patent/US8928668B2/en active Active
- 2009-10-06 GB GB0917511A patent/GB2463993B/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5381521A (en) * | 1993-05-14 | 1995-01-10 | Microsoft Corporation | System and method of rendering curves |
US20060256112A1 (en) * | 2005-05-10 | 2006-11-16 | Sony Computer Entertainment Inc. | Statistical rendering acceleration |
US20070211061A1 (en) * | 2006-03-10 | 2007-09-13 | Yoshiyuki Kokojima | Image processing apparatus, image processing method, and image processing program |
CN101046888A (zh) * | 2006-03-30 | 2007-10-03 | 株式会社东芝 | 渲染装置和方法,以及形状数据生成装置和方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708585A (zh) * | 2012-05-09 | 2012-10-03 | 北京像素软件科技股份有限公司 | 一种渲染模型轮廓边缘的方法 |
CN102708585B (zh) * | 2012-05-09 | 2015-05-20 | 北京像素软件科技股份有限公司 | 一种渲染模型轮廓边缘的方法 |
CN106462487A (zh) * | 2014-05-16 | 2017-02-22 | 微软技术许可有限责任公司 | 检测来自应用的图形输出数据与规范的相符性 |
TWI708208B (zh) * | 2015-08-03 | 2020-10-21 | 英商Arm有限公司 | 圖形處理系統 |
CN110070555A (zh) * | 2018-10-19 | 2019-07-30 | 北京微播视界科技有限公司 | 图像处理方法、装置、硬件装置 |
CN113052939A (zh) * | 2019-12-10 | 2021-06-29 | 辉达公司 | 对路径描边的补丁区段、顶端和连接统一编码 |
CN113052939B (zh) * | 2019-12-10 | 2024-03-08 | 辉达公司 | 对路径描边的补丁区段、顶端和连接统一编码 |
Also Published As
Publication number | Publication date |
---|---|
CN101714260B (zh) | 2014-07-16 |
GB2463993B (en) | 2011-04-06 |
US20100097383A1 (en) | 2010-04-22 |
US8928668B2 (en) | 2015-01-06 |
GB0818277D0 (en) | 2008-11-12 |
GB0917511D0 (en) | 2009-11-18 |
JP2010092481A (ja) | 2010-04-22 |
GB2463993A (en) | 2010-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101714260B (zh) | 图形处理系统 | |
CN101714261B (zh) | 图形处理系统 | |
CN101986344B (zh) | 图形处理系统 | |
CN101689306B (zh) | 有效的二维及三维图形处理 | |
US7944442B2 (en) | Graphics system employing shape buffer | |
JP6863693B2 (ja) | グラフィックス処理システムおよび方法 | |
CN108734624A (zh) | 用于处理图形的方法和装置 | |
CN101911123B (zh) | 图形描绘装置以及图形描绘方法 | |
JP2005100177A (ja) | 画像処理装置およびその方法 | |
US20080030522A1 (en) | Graphics system employing pixel mask | |
US10540789B2 (en) | Line stylization through graphics processor unit (GPU) textures | |
CN101714259B (zh) | 图形处理系统 | |
US9401034B2 (en) | Tessellation of two-dimensional curves using a graphics pipeline | |
US20160275710A1 (en) | Method and apparatus for tile-based rendering | |
CN101714258A (zh) | 图形处理系统 | |
JP2005100176A (ja) | 画像処理装置およびその方法 | |
KR20160046614A (ko) | 텍스쳐를 처리하는 방법 및 장치 | |
US20090309898A1 (en) | Rendering apparatus and method | |
JP2008299642A (ja) | 図形描画装置 | |
KR102585220B1 (ko) | 타일 기반 렌더링을 수행하는 방법 및 장치 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180615 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. |