发明内容
根据本发明的第一方面,提供一种用于在图形处理系统中渲染描边曲线进行显示的方法,该方法包括:
接收要显示的定义在用户空间中的输入描边曲线;
使用所接收的变换把所接收的描边曲线投影到表面空间中进行显示;以及
对于表面空间中的一个或多个采样点中的每个:
确定投影空间中的对应采样位置;
使用预定信息来估计在沿着要显示的描边曲线的投影形式(projected form)的长度的一位置处投影空间中要显示的描边曲线的投影形式在所定义方向上的范围(extent),所述位置对应于投影空间中的采样位置沿着描边曲线的投影形式的长度的位置;
使用投影空间中要显示的描边曲线的投影形式在所定义方向上的估计范围来确定投影空间中的采样位置是否落在描边曲线的投影形式内;以及
依据所述确定,给与投影空间中的采样位置相对应的表面空间中的采样点分配用于渲染所接收的描边曲线进行显示的数据。
根据本发明的第二方面,提供一种用于在图形处理系统中渲染描边曲线进行显示的设备,该设备包括:
用于接收要显示的定义在用户空间中的输入描边曲线的装置;
用于使用所接收的变换把所接收的描边曲线投影到表面空间中进行显示的装置;以及
用于对于表面空间中的一个或多个采样点中的每个确定投影空间中的对应采样位置的装置;
用于使用预定信息来估计在沿着要显示的描边曲线的投影形式的长度的一位置处投影空间中要显示的描边曲线的投影形式在所定义方向上的范围的装置,所述位置对应于投影空间中的采样位置沿着描边曲线的投影形式的长度的位置;
用于使用投影空间中要显示的描边曲线的投影形式在所定义方向上的估计范围来确定投影空间中的采样位置是否落在描边曲线的投影形式内的装置;以及
用于依据所述确定给与投影空间中的采样位置相对应的表面空间中的采样点分配用于渲染所接收的描边曲线进行显示的数据。
在本发明中,要显示的定义在用户空间中的输入描边曲线通过首先把输入描边曲线变换到表面空间(其将例如对应于描边曲线要显示在其上的屏幕)而渲染。如本领域中的技术人员会明白的,这类似于用于渲染描边曲线的已知常规技术。
然而,在本发明中,不是对照表面空间中的描边曲线直接地测试表面空间中的采样点以查看它们是否落在曲线内,表面空间采样点被映射到“投影”空间中的对应采样点并且然后对照投影空间中要显示的描边曲线的投影形式来测试“投影”空间中的那些对应采样点。
因此,在本发明中,实际上通过为一个或多个采样点确定投影空间中的对应采样点是否落在投影空间中的描边曲线的投影形式内来渲染曲线进行显示。
具体地,申请人已意识到:关于采样点是否在表面空间中的描边曲线内的确定实际上可以针对“投影”空间中的描边曲线的投影形式来间接地执行,并且此外这可以提供一种确定哪些表面空间采样点落在描边曲线内或没有落在描边曲线内的高效且简单的方式。
此外,在本发明中通过使用预定信息来估计在沿着描边曲线的投影形式的长度的适当位置处即在沿着描边曲线的投影形式的长度的具有与投影空间中的采样位置相同的位置的位置处描边曲线的投影形式在所定义方向上(例如且优选地并且如下面将进一步讨论的,在“宽度”方向上)的范围,来实施关于采样点是否落在投影空间中的描边曲线的投影形式内的确定。
再次,如下面将进一步讨论的,申请人已意识到不仅可以以此方式渲染描边曲线进行显示而且可以提供众多优点。
关于投影空间中的采样点是否在描边曲线的投影形式内的确定的结果然后用来给表面空间中的对应采样点分配用于显示描边曲线的合适渲染数据。
本发明提供众多优点。
首先,本发明使用预定信息来估计描边曲线的投影形式在沿其长度的位置处在所定义(例如宽度)方向上的范围,如下面将进一步讨论的那样其可以事实上是一维的并且因此可以被存储为一维表(例如且优选地,存储信息以用于导出针对一系列“长度”位置的“宽度”值)并且使用一维“查找”进行检索。这就必须存储的数据量而言以及就检索使用中的该数据而言(以及因此例如针对存储器使用和带宽)具有优点。
同样且如下面将进一步讨论的,当在本发明中渲染描边曲线进行显示时为使用本发明的预定信息所需的计算实施相对简单并且可以使用现有的已知图形处理技术和硬件来实施。如下面将进一步讨论的,本发明因此适合于且有利于与已知的现有图形处理技术和硬件一起使用。
因此且如下面将进一步讨论的,本发明可以被方便地且有效地实施在典型的图形处理系统中而例如不需要对这样的系统的显著修改或添加。
而且,本发明可以提供一种用于渲染描边曲线且更具体地用于渲染那些被一个或多个应用重复(多次)需要的描边曲线(诸如形成字体的字符或部分字符的曲线)的、例如与使用“强制”细分和棋盘化(tessellation)技术相比更高效且方便的而不需要专用曲线渲染硬件的机制。
如下面将进一步讨论的,也使得本发明中使用的与描边曲线的投影形式有关的预定信息对于其所涉及的曲线的平移、旋转和均匀缩放以及对于用户空间中定义的对应曲线的描边宽度的变化是不变的。这意味着例如给定的预定信息集可以以本发明的方式用来渲染用户空间中定义的用于显示的对应描边曲线的各种不同形式,从而进一步增强本发明的有效性和实用性。
本发明一般可以用于要显示的任何合适且期望形式的描边曲线,尽管如下面将进一步讨论的,其尤其适合于渲染可能被重复且频繁使用的描边曲线(诸如且优选地是定义要显示的字体的字符(例如字母)或部分字符的描边曲线)进行显示。
如本领域的技术人员会明白的,本发明将用来渲染的要显示的描边曲线将典型地由要求显示曲线的应用向图形处理系统提供或指示。在这个阶段,如上面所讨论的,描边曲线将被定义在“用户空间”中。
在用户空间中定义的描边曲线可以以任何合适且期望的方式诸如且优选地就曲线的位置和与曲线有关的一个或多个参数而言进行定义。
例如,如上面所描述的,要显示的描边曲线将典型地由中心曲线和相关用户空间描边宽度被定义在用户空间中。中心曲线将典型地由用户空间中的典型地包括起始点、终止点和一个或多个中间点的多个控制点的位置以及在起始点和终止点之间要绘制的曲线的类型指示来定义。例如,描边的中心曲线可以包括:直线;二次贝塞尔曲线(要求单个中间控制点);三次贝塞尔曲线(要求两个中间控制点);椭圆弧;以及(非均匀有理)B样条。
因此,在优选的实施例中,本发明包括用于以用户空间中的多个控制点的位置、指示曲线的类型的信息以及指示用户空间中的描边宽度的信息的形式接收用户空间中定义的描边曲线以被渲染进行显示的步骤或装置。
使用本发明的过程被渲染进行显示的(在用户空间中定义的)描边曲线可以是由例如要求绘制曲线的应用初始定义或指示的描边曲线。
然而,使用本发明被渲染进行显示的描边曲线也可能是从例如定义在用户空间中的初始曲线中导出的曲线。换言之,也考虑使用本发明的过程被渲染的描边曲线可以通过把另一或初始曲线变换成其中其以本发明的方式被处理的形式来导出。例如,在优选的实施例中,使用本发明被渲染的描边曲线可以通过对先前曲线应用仿射变换(且具体地是仅由平移、旋转和/或均匀缩放分量组成的变换)来导出。
也可能的是,要渲染的描边曲线是由例如要求绘制曲线的应用初始定义或指示的另一或初始曲线的一部分。
例如,如本领域的技术人员会明白的,应用往往将要求渲染包括端到端连接的任何数量的合适线段的描边路径,所述线段诸如尽管不限于以下中的任何一个或多个:直线;二次贝塞尔曲线;三次贝塞尔曲线;椭圆弧;以及(非均匀有理)B样条。每个这样的线段然后可以形成使用本发明的技术被渲染的“输入”描边曲线。
在一个这样的实施例中,构成整个描边路径的每段可以使用本发明的技术进行处理和渲染(即描边路径的每个线段以本发明的方式被个别地处理和渲染)。可选地,在另一个实施例中,仅部分描边路径,例如形成描边曲线的线段中的一个或多个线段,使用本发明的技术进行处理和渲染,并且使用一种或多种其它渲染技术来渲染描边路径的其余部分(例如其它线段)。
在尤其优选的实施例中,本发明包括以本发明的方式处理用于显示的一个或多个(且优选地是多个)描边曲线的集合,其中曲线的集合一起形成或者在一些实施例中与其它线段组合形成要显示的总描边路径或对象,诸如且优选地是字体的字符(例如字母)。换言之,该集合中的一个或多个描边曲线的每个将形成总路径或对象的节段,并且一个或多个描边曲线的每个将以本发明的方式被渲染和处理。
同样考虑,使用本发明被渲染的描边曲线可以通过细分被定义在用户空间中的初始曲线来导出。
例如,申请人已意识到某些曲线,诸如具有自相交或尖点的三次曲线和自重叠的曲线(即弯曲至使得描边曲线重叠自己——描边曲线的一个区域重叠(侵入)描边曲线的另一个区域的程度的曲线),也许不能使用本发明的技术被直接处理至足够的准确度。然而,已意识到如果这样的初始曲线首先被分成多个更合适的曲线区段或节段,然后每个曲线区段或节段被个别地渲染,则这样的曲线可以能够使用本发明的技术被渲染。
因此,在尤其优选的实施例中,本发明还包括用于把定义在用户空间中的描边曲线细分成多个描边曲线段的步骤或装置,其中描边曲线段的一个或多个然后以本发明的方式被处理和渲染。关于细分描边曲线的适当方式的确定优选地由图形处理系统基于一个或多个预定义准则来做出,所述预定义准则诸如性能(例如渲染描边曲线所花的时间)和质量(例如描边曲线以其渲染形式的质量)之间期望的折衷。
因而,应当注意:在本文中对“要渲染进行显示的输入描边曲线”的参考旨在指代要经受本发明的特定处理的曲线,除非上下文另外要求;并且该曲线可以例如是:例如由所讨论的应用初始定义的曲线;例如由所讨论的应用初始定义的曲线或路径的一部分;或者例如从初始定义的曲线中导出或与其有关的曲线,诸如该曲线的子区段。
例如如本领域中已经已知的,可以以任何期望且合适的方式完成定义在用户空间中的要显示的输入描边曲线到表面空间表示的投影以便显示描边曲线。因此,这可以是且优选地是通过使用(实施)适当的“用户到表面”空间变换把用户空间中定义的描边曲线映射到表面空间中而完成的。这个“用户到表面”变换优选地连同要渲染的描边曲线一起(同时或在不同时间)被输入到图形处理系统或向图形处理系统指示,如本领域中已知的。(换言之,用户到表面变换不是由图形处理系统确定的,而是相反作为预定义变换被输入到系统或向系统指示,以指示为把用户空间中定义的描边曲线投影到表面空间中的其期望形式所需的映射。)
一旦生成了要显示的描边曲线到表面空间中的变换(投影),则表面空间中的一个或多个(且典型地是多个)采样点事实上对照表面空间中出现的描边曲线进行测试(但是使用本发明的技术)。
事实上对照要渲染的曲线进行测试的表面空间中的采样点可以采用任何期望且合适的形式,并且可以以任何合适的方式被视需要地导出和生成。这可能例如取决于图形处理系统赖其操作以渲染图像进行显示的特定机制。
例如,在射线投射(ray casting)系统的情况下,每个采样点可以且优选地确实对应于“射线”,并且每个射线(采样点)然后将以本发明的方式对照描边曲线的投影形式进行测试。(如本领域中已知的,射线投射是一种始于屏幕上的每个像素并且从观看者的眼睛跟踪路径(“射线”)通过该像素并进到画面中以确定射到什么(以及因此观看者看到什么)的技术。因此,每个射线事实上定义要测试的采样点。)
另一方面,在基于多边形光栅化的图形处理系统的情况下,可以例如且优选地通过首先生成一个或多个覆盖表面空间中的投影描边曲线的基元并且然后光栅化该一个或多个基元(如本领域中已知的)以生成采样点从而以本发明的方式对照描边曲线进行测试,来生成采样点。
在这种情况下,在尤其优选的实施例中本发明因此将还包括用于以下的步骤或装置:生成一个或多个覆盖表面空间中的投影描边曲线的基元;并且对于表面空间中的一个或多个基元内的一个或多个采样点中的每个,然后确定投影空间中的对应采样位置(其然后以本发明的方式对照描边曲线的投影形式进行测试)。
这里还应当指出,虽然在射线投射系统的情况下在生成要测试的采样点时例如生成覆盖表面空间中的投影描边曲线的划界基元(bounding primitive)不是必要的,但是例如可以首先生成划界基元并且如果需要的话然后以本发明的方式仅测试与划界基元相交的那些射线(采样点)。实际上,这可以促进本发明在射线投射系统中的改进实施,因为首先对照曲线的划界基元测试射线并且如果发现该射线(采样点)首先与划界基元相交的话然后对照曲线“自己”测试该射线可能更加高效。
在生成覆盖表面空间中出现的描边曲线的一个或多个图形基元的情况下,则可以使用任何合适的期望技术,诸如通过定义覆盖表面空间中出现的描边曲线的一个或多个划界盒和/或通过定义紧密配合表面空间中出现的描边曲线的末端(即在其起始和终止(控制)点)的划界多边形,来生成和定义该一个或多个图形基元。
表面空间中的(一个或多个)基元内的采样点(其如本领域的技术人员会明白的那样最终被适当地着色以显示曲线)然后被映射到“投影”空间中的对应采样位置(地点)。换言之,为显示描边曲线而被评价的表面空间中的每个采样点(例如且优选地在覆盖表面空间中的描边曲线的所生成一个或多个基元内的每个(适当的)采样点)被映射到投影空间中的适当对应采样点(该投影空间采样位置然后将对照与要显示的描边曲线对应的、投影空间中的描边曲线的投影形式进行测试(如下面将进一步讨论的))。
可以以任何合适或期望的方式确定与表面空间中的采样位置对应的投影空间中的采样位置。这可能例如取决于测试投影空间中的采样位置所对照的、要显示的描边曲线的“投影”形式的性质。
在尤其优选的实施例中,通过首先把表面空间中的采样点映射到用户空间的对应位置并且然后把用户空间中的对应位置映射到描边曲线的投影形式被定义在其中的投影空间中的对应位置,来确定与表面空间中的采样位置对应的投影空间中的采样位置。
在这种布置中,表面空间中的采样点优选地使用用于把所接收的描边曲线投影到表面空间的变换的逆(inverse)(即使用“用户到表面”变换的逆)而被映射到用户空间中的对应位置。(如上面所讨论的,其逆将用作这个过程的一部分的“用户到表面”变换将被提供到图形处理系统或向图形处理系统指示。适当的逆“用户到表面”变换(即“表面到用户”变换)因此将简单地为图形处理系统所知道或可被其导出。)
然后通过对采样点应用另一个变换,优选地至少部分实施用户空间中的对应位置到投影空间中的对应位置的映射,该另一个变换事实上把采样位置从用户空间中的其初始位置变换到投影空间中的其等效位置(或至少到从其可以简单确定投影空间中的对应位置的变换位置)。
这个后者变换在本文中将被称为“用户到投影(user to projected)”变换,并且如下面将更详细讨论的,事实上是当把用户空间中定义的描边曲线转换到投影空间中的其投影形式时必须被应用作为该过程的全部或部分的变换。
在尤其优选的实施例中(且如下面将更详细讨论的),这个“用户到投影”变换旨在被应用于均匀(homogeneous)空间(“用户空间”描边曲线(和采样点)的均匀空间表示),并因此在尤其优选的实施例中,用于把用户空间中的采样点映射到投影空间中的对应位置的步骤或装置包括用于如下的步骤或装置:首先把用户空间中的采样点放置在“均匀用户空间”中;对均匀用户空间中的采样点应用(适当的)用户到投影变换(以致采样点然后可以被认为在“均匀投影空间”中);以及通过对均匀投影空间中的采样点应用适当的透视除法(perspective division),把均匀投影空间中的如此变换的采样点投影到投影空间中。
如下面将更详细讨论的,每个给定曲线典型地将具有其自己的特定“用户到投影”变换,并且用于给定曲线的用户到投影变换可以一旦曲线已被图形处理系统接收就从与要显示的曲线有关的信息中被直接计算,或者其可以被预先预定并存储以在(和当)需要时使用。
更优选地,对于给定的定义曲线的一个或多个(且优选地多个)预定义“用户到投影”变换优选地连同它们应用到的一个或多个曲线的指示一起被存储在图形处理系统内的或可由图形处理系统访问的数据库(存储器)中。对于要渲染的特定曲线的“用户到投影”变换然后在渲染过程期间在(和当)需要时(例如当把相关的采样点映射到投影空间时)优选地从数据库(存储器)进行检索(查找)。
这是可能的且是期望的,因为申请人已意识到如本文所讨论的那样本发明具有在渲染重复需要渲染的描边曲线方面具有特定好处。例如,形成用于应用(例如在电子文件中)或与应用(例如在电子文件中)一起使用的特定字体的字母、数字、字符等等或者其部分的那些描边曲线和/或在卫星导航(satnav)应用中的地图上形成标记或其部分的那些描边曲线典型地将在使用中需要被反复地渲染。
这意味着可以且将使用本发明被渲染的描边曲线可以预先即在任何渲染操作的开始之前被知道。因此,每个这种曲线所要求的“用户到投影”变换可以被预先确定并且被存储以供图形处理系统随后使用,并且例如,适当的变换例如连同关于要显示的描边曲线的信息一起向图形处理系统供应或指示,或者一旦接收了要显示的描边曲线就由图形处理系统从数据库进行查找。
因而,在尤其优选的实施例中,当把用户空间中的采样点映射到投影空间中的对应采样位置以对照描边曲线的投影形式进行测试时,使用预定义或预定变换。
类似地,在尤其优选的实施例中,用于把表面空间中的采样点映射到投影空间中的对应采样位置的步骤或装置包括优选地以预定义的用户到表面空间(用户到表面)变换的逆以及然后预定义的“用户到投影”变换的形式使用一个或多个预定义或预定变换。
如本领域中的技术人员会明白的,尽管上面单独地讨论了“用户到表面”和“用户到投影”变换,但是这些变换实际上可以被单独地应用或被组合成单个“表面到投影”变换。
一旦确定了投影空间中的对应采样位置,则如上面所讨论的,这个采样位置对照投影空间中要显示的描边区域的投影形式来测试这个采样位置。
申请人已发现将用户空间曲线的投影形式用作在测试采样位置时使用的描边曲线的形式允许该过程(以及尤其是在本发明的过程中使用的关于曲线的预定信息)对于用户空间中定义的对应描边曲线的至少一些变化形式或变换是不变的。例如,其可以允许相同的预定信息用于用户空间中定义的不同形式(例如宽度、标度、定向等等)的对应描边曲线,并且也可以意味着例如为用户空间中定义的描边曲线可能经受的到表面空间的每个变换导出并存储与给定描边曲线相关不同的预定信息集不是必要的。
描边曲线的投影形式被定义在其中(且在其中测试采样位置)的投影空间可以例如根据描边曲线的投影形式的和/或关于该曲线使用的预定信息的性质而采用任何合适且期望的形式。
这里应当注意,在本文中对其中对照要显示的描边曲线的投影形式测试采样位置的投影空间的参考旨在仅指示(除非上下文另外要求)预定“范围”(例如宽度)估计信息涉及的描边曲线的特定形式被定义在其中的空间并且尤其不旨在另外隐含投影空间的任何特定属性或要求。
在优选的实施例中,本发明的投影空间是在本发明中也考虑的不同“空间”到“用户空间”和“表面空间”(以及到“均匀用户空间”和“均匀投影空间”)。然而,本领域的技术人员会理解这不是必需的并且在某些情形下投影空间可以例如是与用户空间相同的(等效的)。
在优选的实施例中,投影空间是二维的,因为这于是将允许其“匹配”本发明尤其适合于(诸如字体)的描边曲线将针对其进行定义的典型二维的用户空间。投影空间因此优选地具有两个(优选地是正交)轴,关于这两个轴可以定义要显示的描边曲线的投影形式(以及投影空间中的采样位置)。在优选的实施例中,投影空间是笛卡尔(Cartesian)坐标空间,在这种情况下投影空间方向中的两个轴将是该空间中的x轴和y轴。
因此,在尤其优选的实施例中,用于本发明的描边曲线的投影形式是用户空间中的描边曲线到定义的二维投影空间中的投影。
被用作本发明的描边曲线的投影形式的、投影空间中的“用户空间”描边曲线的投影形式可以采用任何合适且期望的形式,尽管其应当具有这样的形式以致其可以由信息表示从而允许估计对于沿其长度的一个或多个点的其在所定义(例如且优选地是“宽度”)方向上的范围(因为本发明使用该形式的预定信息来对照描边曲线的投影形式测试投影空间中的采样点)。
然而,申请人已意识到,如下面将进一步讨论的,描边曲线的某些投影形式在本发明的背景下将尤其有利。
例如,申请人已意识到,描边曲线的投影形式为使得描边曲线的端点位于特定位置、优选地是预定义位置、且最优选地位于相同轴上是有益的。
因此,在尤其优选的实施例中,描边曲线的投影形式是把曲线的端点放置在投影空间中的定义位置的、描边曲线的形式。最优选地,描边曲线的投影形式的端点两个都位于投影空间中的相同轴上,诸如且优选地是在x轴上。
如下面将进一步讨论的,还已意识到为了关于本发明的描边曲线的投影形式要使用的预定信息能够提供要显示的描边曲线的更准确表示(并因此该曲线的更准确渲染),有益的是把用户空间中的描边曲线的中心线上的法向定向成描边曲线的对应投影形式中仅可能地彼此平行,且最优选地平行于投影空间中的、将为其估计投影描边曲线的范围的定义(例如“宽度”)方向(例如且优选地,如下面将进一步讨论的,平行于轴方向(诸如且优选地是y轴))。
在本质上,这是因为如下面将进一步讨论的那样如果曲线的用户空间法线平行于描边曲线的对应投影形式中的所讨论的定义(例如宽度(例如轴))方向,则描边曲线的投影形式在该方向上的范围则应当(经受任何缩放因子)对应于用户空间定义的描边宽度(这将是已知的参数)。如下面将进一步讨论的,这然后将允许关于本发明中的描边曲线的投影形式使用的预定信息提供描边曲线在相关点处的范围(宽度)的更准确估计。因此,优选的是把在描边曲线的对应投影形式中出现的、曲线的用户空间法线对准以便尽可能地平行于相关定义的(例如宽度(例如轴))方向。
虽然理想地描边曲线的对应投影形式中的每一个用户空间法线将平行于投影空间中的相关定义的(例如宽度(例如轴))方向,但是这可能不大容易,所以申请人已意识到优选的是将用户空间法线的至少两个布置成彼此平行且最优选地平行于期望的方向,因为如果这么做,则其它法线也应当更接近该方向,如果就曲线的端点的法线而言这么做时尤其如此。
因此,在尤其优选的实施例中,描边曲线的投影形式是描边曲线的如下形式:其中与用户空间中的对应描边曲线的端点相关联的法向向量被配置成使得彼此平行且最优选地使得沿(平行于)投影空间中的特定(优选地预定或选定)方向(该方向优选地是投影空间中的、预定信息允许为其确定描边曲线的投影形式的范围的定义(例如“宽度”)方向)。如下面将进一步讨论的,在描边曲线的投影形式中这些法向向量优选地平行于投影空间的轴,诸如且优选地是y轴。
在尤其优选的实施例中,从用户空间中定义的描边曲线通过对描边曲线尤其应用特定(且合适的)变换来生成描边曲线的投影形式。换言之,描边曲线的投影形式至少部分是用户空间中定义的描边曲线的变换版本。
这种变换将是上面讨论的“用户到投影”变换,并且如上面讨论的其被优选地用在把采样位置从用户空间映射到投影空间时。
可能的是,“用户到投影”变换可以被直接应用到用户空间中的描边曲线以生成描边曲线的投影形式。然而如上面所讨论的,在尤其优选的实施例中,这种变换旨在被执行在均匀空间中,所以从用户空间中定义的描边曲线生成描边曲线的投影形式的过程另外将涉及首先把曲线放置在“均匀用户空间”中(生成用户空间中定义的描边曲线的均匀空间表示)以及在对均匀用户空间中的曲线应用用户到投影变换以形成“均匀投影空间”中的曲线后,然后使均匀投影空间中的变换曲线经受透视除法以把曲线投影到投影空间中(到其投影形式)。
因此,在尤其优选的实施例中,可以通过首先把用户空间(该用户空间例如且优选地是二维空间)中定义的描边曲线放置到均匀用户空间(例如且优选地是三维空间)中来生成描边曲线的投影形式。均匀用户空间中的曲线然后被优选地变换(使用“用户到投影”变换),并且均匀投影空间中的由此变换的曲线然后(以本领域中已知的方式)经受透视除法以把其投影到投影空间中(以致该曲线再次被表示在与用户空间的相同维度的空间中),从而生成曲线在投影空间中的投影形式。
在这种情况下,“用户到投影”变换将是应用于均匀用户空间中的曲线(即曲线在放置在均匀空间中时的用户空间形式)的变换。
申请人已意识到,有利的是如果用户空间中的描边曲线到投影空间中的其对应投影形式的映射是经由均匀空间(即与用户空间相比具有额外维度的空间)完成的。例如,经由均匀空间把用户空间中的描边曲线转换到其期望的投影形式是有益的,因为其可以促进使用可以与转换过程相关联的各种数学运算。这例如类似于在常规计算机图形学(例如透视变换)中使用齐次坐标(homogeneous coordinates),其中一个空间中的三维坐标被表示为均匀空间中的四维坐标。
在生成描边曲线的投影形式时使用的“用户到投影”变换可以例如根据描边曲线的期望投影形式而采用任何合适且期望的形式。然而,出于上面讨论的原因,“用户到投影”变换优选地如上面所讨论的那样把描边曲线变换成描边曲线的特定对应投影形式(或者在变换要被应用到曲线的均匀用户空间表示时,如上面所讨论的那样把曲线变换成其在经受透视除法时将提供曲线的特定投影形式的形式(在这种情况下,在均匀空间中应用的“用户到投影”变换应当是使得确保该曲线将具有投影空间中的期望形式(即在透视除法后)))。
因此,如上面所讨论的,在优选的实施例中,“用户到投影”变换包括(例如在透视除法后,其中这是在变换后完成的)将导致用户空间中定义的描边曲线上的至少两个点被映射到投影空间中的预定或预定义位置的变换。
因此,该变换优选地采用描边曲线(的中心曲线)上的第一点(优选地是曲线的一个端点)并且(在透视除法后,其中这是在变换后完成的)把其映射到第一预定义位置,并且也采用描边曲线(的中心曲线)上的第二点(优选地是曲线的另一个端点)并且(在透视除法后,其中这是在变换后完成的)把其映射到第二预定义位置。最优选地,用户到投影变换(在透视除法后,其中这是在变换后完成的)把曲线的起始和终止控制点映射到相同轴(诸如且优选地是x轴)上的(单独)点。
类似地,如上面所讨论的,“用户到投影”变换也优选地或者作为代替在一些实施例中是使得用户空间中定义的描边曲线的法向向量在其变换后(以及在透视除法后,其中这是在变换后完成的)彼此更加平行,且优选地使得它们(再次在透视除法后,视情况而定)将更加平行于投影空间的所定义(例如“宽度”)方向(优选地是轴方向)。
如上面所讨论的,这是优选地通过以下实现的:定义“用户到投影”变换以致使得与描边曲线上的两个点相关联的法向向量且优选地是与描边曲线上的两个端点相关联的法向向量在变换后(以及在透视除法后,其中这是在变换后完成的)正好平行(且优选地平行于期望的(例如“宽度”(例如轴))方向)。虽然在这样的变换后,投影空间中出现的其它法向向量可能未变得正好平行,但是申请人已发现这样的变换应当仍然导致它们被定向成处于改进的对准程度。
因此,在优选的实施例中,被用作把用户空间中的描边曲线投影到用于本发明的投影空间中的其对应投影形式的全部或部分过程的“用户到投影”变换包括改变与描边曲线上的两个或更多点(例如且优选地是描边曲线的起始点和终止点)相关联的法向向量的相对定向的变换。在尤其优选的实施例中,该变换是改变那些法向向量的相对定向以致它们在曲线的变换形式中彼此平行(并指向相同方向)且最优选地以致那些法向向量将沿投影空间中的、预定信息允许针对其估计描边曲线的投影形式的范围的定义(例如宽度)方向(例如轴方向)指向的变换。
因而,在本发明的其中关于正交x轴和y轴定义投影空间的优选实施例中,“用户到投影”变换优选地是使得重定向与用户空间中的描边曲线的起始和终止控制点相关联的法向向量以致在描边曲线的对应投影形式中那些法向向量被定向成彼此平行且平行于投影空间中的轴之一(例如且优选地是y轴)。
(如本领域的技术人员将理解的,如上面所讨论的那样改变描边曲线的两个或更多点的法向向量的定向的“用户到投影”变换将使得曲线上的每个点处的法向向量的角度从(相对于特定点处曲线的切线的)90°改变为描边曲线的变换形式中的非90°度,该角度典型地对于曲线上的每个点而言是不同的。然而,虽然描边曲线的变换形式中的这些向量因此可能不是常规意义上的“法向向量”,即它们将不垂直于描边曲线的变换形式,但是为方便起见它们将在本文中继续被称为“法向向量”。因此,被称为“法向向量”的在描边曲线的例如变换(和投影)形式中的向量因此是那些对应于描边曲线的“用户空间”形式中的法向向量的向量,除非上下文另外要求。)
“用户到投影”变换因此优选地包括:把描边曲线上的至少两个点映射到预定或预定义位置的变换;和/或改变与描边曲线上的两个或更多点相关联的法向向量的相对定向以致它们在对应的变换描边曲线中平行的变换(在这两种情况下在透视除法后,如果这是要作为部分“投影”曲线生成过程完成的)。在尤其优选的实施例中,用户到投影变换包括执行这两个动作且优选地关于用户空间中的描边曲线的相同两个或更多点执行的变换。
在把用户空间中的描边曲线映射到投影空间中的用于本发明的其对应投影形式时将使用的上面的“用户到投影”变换例如可以表示为仿射变换(分量)和投影变换(分量)。变换的仿射分量用来满足描边曲线上的至少两个点通过变换被映射到预定或预定义位置的条件,而变换的投影分量用来满足曲线上的至少两个点的用户空间法向向量(至少在透视除法后,其中该变换要在均匀空间中被执行)在曲线的投影形式中平行(且优选地平行于给定方向)的条件。然而如将会明白的,该变换可以以任何合适且期望的方式被表示(和计算)。
在“用户到投影”变换可以用来生成描边曲线的投影形式的情况下,则如上面所讨论的,正是这个“用户到投影”变换被优选地用于(作为全部或部分)把表面空间中的采样点映射到投影空间中的对应采样位置的过程。
因此,在尤其优选的实施例中,如上面所讨论的,多个这样的用户到投影变换针对期望能够渲染的相应描边曲线被导出和存储(并且然后视情况而定在当渲染相应描边曲线时把采样位置从用户空间映射到投影空间时被使用)。如本领域的技术人员会明白的,这些变换可以以任何合适且期望的方式针对用户空间中定义的描边曲线或每个描边曲线被容易地导出。
在本发明中,对照投影空间中的描边曲线的投影形式测试投影空间中的采样位置以查看它们是否落在投影空间中的描边曲线的投影形式内不是通过直接对照描边曲线的投影形式测试采样位置而是相反通过使用预定信息来估计在沿着描边曲线的投影形式的长度的、与所讨论的采样位置对应的位置处描边曲线的投影形式在所定义方向上的范围而实施的。
用于估计在本发明中使用的描边曲线的投影形式在所定义方向上的范围的预定信息可以采用任何合适且期望的形式,即可以采用允许单独地或与其它信息组合地使用预定信息来估计描边曲线的投影形式的相关范围的任何形式(如下面将进一步讨论的)。
这里应当注意,对如允许估计描边曲线的投影形式在所定义方向上的范围的预定信息的参考旨在指示该预定信息允许估计该曲线在给定方向上的范围。定义方向可以是关于曲线的任何合适且期望的方向,但最优选地是一般横跨曲线的“宽度”(对照沿“长度”)的方向(即该定义方向不是沿曲线的长度而是一般可以被认为是横跨曲线的宽度)。因此,在尤其优选的实施例中,在本发明中使用的预定信息允许估计描边曲线的投影形式在宽度方向上的范围。
然而,也应当注意,把方向定义为“宽度”方向不旨在要求预定信息允许估计曲线在与曲线的中心线精确垂直的方向上的范围(曲线上的一些点的情况可能如此,但是如下面将进一步讨论的,一般不是沿曲线的所有点的情况都是如此)。事实上,也不旨在要求可以使用预定信息来估计用户空间中定义的描边宽度。
相反,如下面将进一步讨论的,发明在于可以估计描边曲线在一般横跨其宽度的方向上的范围的估计,因为如下面将进一步讨论的,已发现这促进描边曲线的至少一些形式的高效且足够准确的渲染。
预定信息涉及的定义(例如宽度)方向优选地沿曲线不变化,即优选地存在单个定义(例如宽度)方向并且该预定信息允许确定在沿曲线的长度的各点处曲线在该单个定义方向上的范围。
因此,在优选的实施例中,预定信息所涉及的该定义(例如宽度)方向是对沿着描边曲线的投影形式的所有点都是相同的方向。
类似地应当理解,对沿着描边曲线的投影形式的“长度”的位置的参考旨在指代一般沿着描边曲线的投影形式的长度(与横跨宽度相区别)延伸的位置,而不隐含对那些位置的任何进一步的约束或要求。
换言之,一般而言,在其投影形式中,描边曲线将能够被认为实际上一般在给定方向上延伸并且正是这个方向将为关于曲线的“长度”方向。“宽度”方向则旨在是一般横跨或垂直于该长度方向的方向,尽管其不需要(但可能是)正好垂直于“长度”方向。
在一个优选的实施例中,“长度”方向被视为联接描边曲线的投影形式的起始点和终止点的(直)线。
在尤其优选的实施例中,该定义(例如宽度)方向被视为近似平行于描边曲线在其投影形式中的法线(且优选地平行于描边曲线在其投影形式中的起始点和终止点的处的法线)的方向。“长度”方向则是大体垂直于该方向的且在优选的实施例中垂直于该方向的方向。
这里也应当注意,虽然沿在本发明中使用和定义的曲线的点处描边曲线的投影形式在定义(例如宽度)方向上(例如在y方向上)的范围实际上可以被认为表示在该点处曲线在该方向上的“宽度”(并且实际上将允许估计在该点处曲线在该方向上的“宽度”),但是这个“范围”指示(例如曲线的“y范围”)将仅对应于描边曲线的用户空间定义的描边宽度w,如果描边曲线的投影形式的“突出”方向垂直于该点处的定义方向(例如y轴)(并且经受任何缩放因子)。因此,本发明不是仅仅存储和使用在沿曲线的“长度”方向的每个点处的用户空间描边宽度,而是使用允许估计在每个点处曲线在适当方向上的范围的值(或多个值)。
在尤其优选的实施例中,预定信息允许针对其估计描边曲线的投影形式的范围的定义(例如“宽度”)方向平行于投影空间的轴之一。因此,在尤其优选的实施例中,预定信息允许估计描边曲线的投影形式在平行于投影空间的轴之一的方向上的范围(并因此在本文中指代的定义(例如“宽度”)方向将是该轴的方向)。在这种情况下,沿着描边曲线的投影形式的“长度”的对应方向优选地平行于投影空间的另一个轴。
因此,在尤其优选的实施例中,本发明包括用于使用预定信息来估计在沿着投影空间中的第二轴方向的与所讨论的采样点在该第二轴方向上的位置对应的位置处描边曲线的投影形式在投影空间中的第一轴方向(其将是定义(例如“宽度”)方向)上的范围的步骤或装置。在投影空间为二维且具有正交x轴和y轴的优选情况下,第一轴方向(例如定义的“宽度”方向)可以例如且优选地沿y轴而第二轴方向(“长度”方向)沿x轴(或者反之亦然)。
因此,根据本发明的第三方面,提供一种在图形处理系统中渲染描边曲线进行显示的方法,该方法包括:
接收要显示的定义在用户空间中的输入描边曲线;
使用所接收的变换把所接收的描边曲线投影到表面空间中进行显示;以及
对于表面空间中的一个或多个采样点中的每个:
确定投影空间中的对应采样位置;
使用预定信息来估计在沿着投影空间中的第二轴方向的与投影空间的采样点沿投影空间的第二轴方向上的位置对应的位置处投影空间中要显示的描边曲线的投影形式在投影空间中的第一轴方向上的范围;
使用要显示的描边曲线的投影形式在投影空间的第一轴方向上的估计范围来确定投影空间中的采样位置是否落在描边曲线的投影形式内;以及
依据所述确定,给与投影空间中的采样位置相对应的表面空间中的采样点分配用于渲染所接收的描边曲线进行显示的数据。
根据本发明的第四方面,提供一种用于在图形处理系统中渲染描边曲线进行显示的设备,该设备包括:
用于接收要显示的定义在用户空间中的输入描边曲线的装置;
用于使用所接收的变换把所接收的描边曲线投影到表面空间中进行显示的装置;以及
用于对于表面空间中的一个或多个采样点中的每个,确定投影空间中的对应采样位置的装置;
用于使用预定信息来估计在沿着投影空间中的第二轴方向的与投影空间的采样点沿投影空间的第二轴方向上的位置对应的位置处投影空间中要显示的描边曲线的投影形式在投影空间中的第一轴方向上的范围的装置;
用于使用要显示的描边曲线的投影形式在投影空间的第一轴方向上的估计范围来确定投影空间中的采样位置是否落在描边曲线的投影形式内的装置;以及
用于依据所述确定,给与投影空间中的采样位置相对应的表面空间中的采样点分配用于渲染所接收的描边曲线进行显示的数据的装置。
如本领域的技术人与会明白的,发明的这些方面可以且优选地确实包括本文描述的本发明的优选且任选的特征中的任一个或多个或全部(视情况而定)。因此,例如,第一轴方向优选地沿投影空间中的y轴,而第二轴方向优选地沿x轴。
要明白,在这些布置中,描边曲线的投影形式实际上将就在沿曲线在一个轴方向(例如x方向)上的范围的各个点处其在另一个轴方向(例如y方向)上的范围而言进行定义。
换言之,不是就中心路径和沿该路径的固定垂直描边宽度(如上面所讨论的,其正常将是在用户空间中定义这种曲线的方式)而言定义描边曲线,至少在一些实施例中本发明将使用允许确定在沿一个轴方向上的曲线的一个或多个点处该曲线在另一个轴方向上的范围的描边曲线的定义。
申请人已意识到,可以以此方式表示和定义描边曲线,并且对于描边曲线的此类定义对渲染描边曲线有用且在实际中能够至少为描边曲线的一些形式提供足够准确的渲染效果。
本发明因此也延伸到描边曲线的这种定义的使用。
因此,根据本发明的第五方面,提供一种定义用于图形处理系统中的描边曲线的方法,该方法包括:
就用于估计针对沿给定空间的一个轴方向的多个位置的、曲线在给定空间的另一个轴方向上的范围的信息而言定义曲线。
因此,根据本发明的第六方面,提供一种定义用于图形处理系统中的描边曲线的设备,该设备包括:
用于就用于估计针对沿给定空间的一个轴方向的多个位置的、曲线在给定空间的另一个轴方向上的范围的信息而言定义曲线的装置。
因此,根据本发明的第七方面,提供一种定义用于图形处理系统中的描边曲线的数据结构,该数据结构包括:
数据值阵列,用于估计针对沿给定空间的一个轴方向的多个位置的、描边曲线在给定空间中的另一个轴方向上的范围。
如本领域的技术人与会明白的,发明的这些方面可以且优选地确实包括本文描述的本发明的优选且任选的特征中的一个或多个或全部(视情况而定)。因此,例如,给定空间优选地是二维的,并且两个轴方向优选地是正交的且优选地沿笛卡尔空间中的x轴和y轴(或者反之亦然)。
用于本发明的预定“范围估计”信息可以允许以任何合适且期望的方式估计在沿着描边曲线的投影形式的长度的位置处描边曲线的投影形式在相关定义的(例如宽度)方向上的范围。
在尤其优选的实施例中,预定信息允许估计描边曲线的投影形式覆盖的在所定义的(例如宽度(例如轴))方向上的位置范围。(这个位置范围然后对照投影空间中的采样点位置进行测试以查看采样点是否落在曲线内。)
在沿着描边曲线长度的特定位置处由描边曲线的投影形式覆盖的在所定义的(例如宽度)方向上的位置范围可以以任何合适且期望的方式被估计(其中预定信息被相应地配置)。
在尤其优选的实施例中,预定信息可以且优选地用来估计描边曲线的投影形式覆盖的在所定义方向上的最大和最小位置值。
在尤其优选的实施例中,这是通过使用预定信息来估计曲线的外边界(边缘)在相关定义的(例如宽度(例如轴))方向上的位置而完成的。
例如,预定信息优选地用来确定沿定义(例如宽度(例如轴))方向的表示描边曲线的投影形式的第一(例如上)外边界的估计的第一位置、以及沿定义(例如宽度(例如轴))方向的表示描边曲线的投影形式的另一(下)外边界的估计的第二位置。
由描边曲线的投影形式覆盖的在所定义的(例如宽度)方向上的位置范围则将是曲线的这些估计边界之间的位置范围。
如将会明白的,虽然至少在其中经由均匀空间生成描边曲线的投影形式的情况下,在沿曲线的给定点处从曲线的投影形式的中心线到曲线的一个(例如上)外边缘(边界)沿定义(例如宽度)方向的距离可能与在该点处中心线到曲线的另一个(例如下)外边缘沿宽度方向的距离相同,但是更普遍的情况可能是从曲线的中心线上的给定点到曲线的投影形式中的每个边缘的距离将由于在均匀投影空间中出现的描边曲线被投影到投影空间中时发生的透视除法而不同。
因此优选的是独立地估计曲线的每个边缘(外边界)的位置,而不是仅估计一个边界的位置以及然后对曲线的每侧(在曲线上方和下方)取该位置(尽管如果需要的话可以这么做)。
因此,在使用具有x轴和y轴的投影空间的情况下,例如预定“范围估计”信息优选地允许估计在给定的x位置处曲线所覆盖的投影空间中的最小和最大y值,该最小和最大y值然后将表示在所讨论的点处描边曲线的投影形式的上和下外边界(边缘)在y轴上的位置估计。
预定“范围估计”信息本身可以允许确定描边曲线的投影形式在所定义(例如宽度)方向上的范围。然而,在优选的实施例中,预定信息要与其它信息一起使用来获得描边曲线的投影形式的相关范围的估计。
在尤其优选的实施例中,与描边曲线的投影形式有关的预定信息要与要显示的曲线在用户空间中的描边宽度(如上面所讨论的,其将为图形处理系统所已知)一起使用(并与其一起使用)来估计描边曲线在相关定义(例如宽度(例如轴))方向上的范围。
如下面将进一步讨论的,使用要与要显示的曲线在用户空间中的描边宽度结合使用的预定信息尤其有利,因为它允许预定信息用于所讨论的描边曲线而与不管用户空间中的描边宽度(原因在于当估计描边曲线的投影形式的范围时将考虑到期望的描边宽度)。换言之,这允许预定信息对预定信息所对应的曲线的期望用户空间描边宽度中的变化是不变化的。
(在这种情况下,(由图形处理系统接收的)预定信息和描边曲线的用户空间描边宽度实际上将被组合地用来确定对照其测试投影空间中的采样位置的、描边曲线的“投影”形式的范围。)
在估计描边曲线的投影形式在所定义方向上的范围时使用的预定“范围估计”信息可以采用任何合适且期望的形式,该形式例如将允许估计在沿着描边曲线的投影形式的长度的相关位置处由投影空间中的描边曲线的投影形式覆盖的位置范围。
在尤其优选的实施例中且如从本文的讨论中将会明白的,在经由均匀空间实施到描边曲线的投影形式的变换时,使用预定“范围估计”信息的过程可以且优选地确实包括:在均匀投影空间中确定曲线的中心点和(经调节的-如下面将讨论的)单位法线,并且使用其以及用户空间描边宽度来估计均匀投影空间中曲线边界的位置,并且然后通过透视除法把估计的曲线边界点投影到投影空间中以及对照投影空间中的如此估计的曲线边界点测试投影空间中的采样点的(映射)位置(并且然后对曲线的外边缘(边界点)重复此过程)。
因此,在尤其优选的实施例中,要用来估计描边曲线的投影形式在所定义(例如宽度)方向上的范围的预定“范围估计”信息包括如下信息:其可以用来估计在沿着描边曲线的均匀投影空间形式的长度的相应位置处、在描边曲线的均匀投影空间中出现的用户空间中的描边曲线的单位法向向量在均匀投影空间中的相关(例如宽度)方向上的分量。
如下面将进一步讨论的,申请人已意识到描边曲线的外边缘相距曲线中心线的距离可以通过把在所讨论的位置处曲线的单位法向向量(的均匀投影空间形式)的相关分量缩放一半用户空间描边宽度w来估计(由于把单位法向向量缩放一半用户空间描边宽度将把法向向量从曲线的中心线上的点延伸到曲线边界上的点)。
因此,单位法向向量分量信息可以连同用户空间中的描边曲线的宽度(其将是已知的)一起使用来估计描边曲线的均匀投影空间形式在期望方向上的范围。
此外,如果允许单位法向向量的相关范围(分量)的预定信息被确定和使用,则这是有利的,因为其允许该信息用于所讨论的特定曲线的所有期望的用户空间描边宽度(与例如必须确定和存储其可能期望渲染的每个不同描边宽度的信息集相对照)。
而且,如下面将进一步讨论的,申请人已意识到如果沿着描边曲线的相关(例如宽度)方向的距离的这种估计被“添加”到描边曲线的均匀投影空间形式的中心线在相关(例如宽度)方向上的位置,则可以估计在该点处描边曲线的均匀投影空间形式所覆盖的相关方向上的边界位置。
因此,在尤其优选的实施例中,关于描边曲线的投影形式使用的预定信息也包括允许估计在相关长度位置处描边曲线的均匀投影空间形式的中心线在相关方向(例如宽度)方向上的位置的信息(即包括用于估计描边曲线的均匀投影空间形式的中心线在“宽度”方向上的位置)。
这个信息然后可以例如与在该位置处用户空间中的对应描边曲线的单位法向向量在均匀投影空间中的分量估计以及与用户空间中的描边宽度一起使用来估计要显示的描边曲线的投影形式将在投影空间中覆盖的y值的范围,如上面所讨论的。
因此,在本发明的尤其优选的实施例中,在估计描边曲线在投影空间中的给定方向上的范围时使用的预定信息包括用于估计描边曲线的均匀投影空间形式的中心线上的点的位置的信息、以及用于估计在描边曲线的均匀投影空间形式上的该点处描边曲线的均匀投影空间形式中出现的用户空间单位法向向量的定义(宽度)方向分量的信息。
申请人还已意识到如下面将进一步讨论的,可以通过在估计曲线的单位向量在相关方向上的分量时应用调节因子来提供在沿曲线的长度的位置处沿着描边曲线的均匀投影空间形式的相关(例如宽度)方向的范围的更准确估计。这样的更准确估计可以获得更好的渲染质量,并且可能例如在要渲染的描边曲线的宽度相对较大时尤其是期望的。
因此,在本发明的尤其优选的实施例中,预定“范围估计”信息包括允许确定曲线的用户空间单位法向向量的均匀投影空间形式在相关方向上的分量的调节估计的信息。最优选地,其实际上允许确定单位法向向量的分量加(或减)调节因子。
在这些布置中进行的调节(以及要应用的调节因子)可以被视需要地选择和导出。然而,在尤其优选的实施例中且如下面将进一步讨论的,其基于或使用沿曲线的长度的相关位置处曲线的中心线的切线向量(且优选地是在该过程经由均匀空间发生时在均匀投影空间中出现的切线向量)。
最优选地,该调节(因子)实际上使用或考虑到在沿曲线的长度的相关位置处曲线的中心线的单位切线向量在相关(例如宽度)方向上的分量。如下面将进一步讨论的,这然后可以用来“调节”对应单位法向向量的估计从而然后提供描边曲线的相关范围的更准确估计。
(再次,使用使用单位切线向量的相关分量的预定信息是有利的,因为其于是允许该信息用于所讨论的特定曲线的所有期望的用户空间描边宽度)。
因此,在尤其优选的实施例中,在估计在沿着描边曲线的均匀投影空间形式的长度的位置处描边曲线的投影形式在所定义(例如宽度)方向上的范围时使用的预定信息包括基于或涉及在沿着描边曲线的相关位置处描边曲线的单位法向向量的信息、优选地以及基于或涉及在沿着描边曲线的相关位置处曲线的中心线的单位切线向量的信息。
在尤其优选的实施例中,调节因子(分量)取决于切线向量和“法向”向量偏离投影空间中的定义(宽度)方向的范围。
要明白,在用于本发明的预定信息旨在允许估计描边曲线的均匀投影空间形式的中心线的位置和曲线的均匀投影空间形式中的用户空间单位法向向量的分量的情况下,则预定信息实际上将涉及要显示的对应描边曲线的中心线(路径)到投影空间中的投影,并且这然后将连同要显示的描边曲线的定义用户空间描边宽度w一起使用,以实际上“生成”对照其测试投影空间中的采样位置的、要显示的描边曲线的“实际”投影形式。
预定“范围估计”信息本身可以采用任何合适的允许估计与描边曲线的投影形式有关的信息的形式。
在尤其优选的实施例中,在如上面所讨论的那样经由在均匀空间中实施的变换来导出描边曲线的投影形式的情况下,预定“范围估计”信息包括关于均匀投影空间中的曲线的变换形式所导出的信息。尤其是,申请人已意识到通过在这样的布置中导出和存储与均匀投影空间中的曲线的变换形式有关的信息,仍然简单可以导出上面针对投影空间中的描边曲线的投影形式所讨论的对应信息,原因在于该信息通过实际上实施透视除法或使用与均匀投影空间中的曲线有关的信息、或者事实上通过直接使用与均匀投影空间中的曲线有关的信息,是可导出的。
例如,在预定信息是允许在沿曲线的长度的给定位置处估计曲线的中心线在所定义(例如宽度)方向上的位置的情况下,则在三维均匀投影空间例如由x、y和z轴定义的情况下,在均匀投影空间中的给定x位置处曲线的中心线的位置的y和z分量可以用来估计在投影空间中的曲线的中心线上的该x位置处的y位置,原因在于投影空间中的y位置将是均匀投影空间中的y分量除以均匀投影空间中的z分量。因此,通过例如把均匀投影空间中的曲线的位置的y和z分量存储为预定“范围估计”信息,这于是将允许估计针对所讨论的x位置的、投影空间中的曲线的中心线的对应y位置。
类似的评论应用于用户空间法向向量的相关分量的情况。再次,如果均匀投影空间中的曲线的变换形式中的用户空间单位法向向量具有x、y和z分量,则在给定x(长度)位置处在透视除法后投影空间中的单位法向向量的y分量将由均匀投影空间中的变换单位法向向量的y分量除以均匀投影空间中的变换单位法向向量的z分量来给出。因而,再次通过把均匀投影空间中的曲线的变换形式中的单位法向向量的y和z分量存储为预定“范围估计”信息,该信息于是可以被简单地用来导出投影空间中的单位法向向量的对应位置。
此外,在如上面所讨论的那样调节因子要被应用于单位法向向量的情况下,则如下面将进一步讨论的,这样的调节因子可以被简单地导出并应用于均匀投影空间中的变换曲线的单位法向向量的每个相应分量(例如y和z分量),该调节的分量然后可以仍然如上面所讨论的那样用来导出关于投影空间中的描边曲线的投影形式要使用的对应单位法向向量分量。
因此,在尤其优选的实施例中,在本发明中使用和存储的预定“范围估计”信息包括针对沿均匀投影空间中的曲线的“长度”(沿均匀投影空间中的轴方向)的给定位置,与在该位置处均匀投影空间中的其变换形式中的曲线的中心线的位置有关的信息、以及与在该位置处均匀投影空间中的曲线的变换形式中的单位法向向量有关的信息。后者优选地包括基于或涉及在所讨论的位置处均匀投影空间中的变换曲线的中心线的切线向量的因子。
因此,在尤其优选的实施例中,在渲染给定的描边曲线进行显示时使用的投影空间中的描边曲线的投影形式包括用户空间中的描边曲线经由均匀空间到投影空间中的投影的情况下,在估计投影空间中的定义方向上的描边曲线的范围时使用的预定信息包括涉及(至少部分定义)均匀投影空间中变换的描边曲线的中心线上的点的位置的信息、以及涉及(至少部分定义)在均匀投影空间中的变换描边曲线上的该点处用户空间单位法向向量在均匀投影空间中的方向的信息。
这里应当注意,如从上面将会明白的,尽管对照描边曲线测试采样点“逻辑上”如上所述发生在投影空间中,但是该测试的实施不必使用投影空间本身的或涉及投影空间本身的坐标或预定信息(尽管可以这么做),而是可以例如如上所述作为代替或也使用来自或涉及例如均匀投影空间的坐标和预定信息。因此,例如,使用来自均匀投影空间的坐标(而实际上不对那些坐标执行透视除法)的等效测试可以在实施本发明的过程时被使用。(但是采样点的测试仍然将(对照描边曲线的投影形式)逻辑上发生在投影空间中,这仅仅是因为可以使用涉及均匀投影空间的信息来实施该测试。)
如上面所讨论的,对于二维用户空间以及因此三维均匀空间,针对沿着描边曲线的长度的给定位置的预定信息因而优选地包括两个标量值,每个表示在沿均匀投影空间中的变换描边曲线的长度的位置处均匀投影空间中的描边曲线的中心线的位置的分量(例如且优选地是y和z分量)(并且其一起可以用来估计投影空间中的描边曲线的中心线在宽度方向上的位置)。
类似地,预定信息可以且优选地确实还包括两个标量值,每个表示或涉及在所讨论的位置处均匀投影空间中的变换描边曲线的单位法向向量的两个分量(例如且优选地是y和z分量)。优选地,这两个值包括(考虑到)调节因子,该调节因子基于在沿均匀投影空间中的描边曲线的与沿投影空间中的描边曲线的投影形式的长度的位置对应的位置处均匀投影空间中的变换曲线的中心线的切线向量。
因此,在尤其优选的实施例中,为沿曲线的长度的给定点存储的预定信息包括四个离散值。
要理解,在上面的实施例中,描边曲线的投影形式在所定义(例如宽度)方向上的范围可以被估计为用户空间描边宽度的线性有理函数(因为描边宽度被用来缩放相关估计的“单位”向量值)。然而也考虑,可以使用用户空间描边宽度的其它函数。例如,作为代替可以使用二次(或更高)有理近似以便提高估计的准确度,并因此提高渲染质量(如果需要的话)。(如将会明白的,二次(或更高)有理近似将解释均匀投影空间中曲线的切线和曲线本身之间的间隙、以及校正法向向量的导数。)
如从上面将会明白的,预定“范围估计”信息优选地具有多个离散值(优选地四个离散数据值)的形式,其可以个别或组合地且单独或(优选地)与其它数据一起用来例如且优选地估计描边曲线的投影形式的中心线在宽度(例如轴)方向上的位置以及在相关“长度”位置处描边曲线的投影形式在所定义(例如宽度)方向上的范围。
关于要显示的描边曲线的投影形式使用的预定信息可以以任何合适的方式被配置和存储以供图形处理系统使用。在尤其优选的实施例中,例如且优选地具有上面讨论的形式的多个离散数据值或数据值集被存储以用于要显示的描边曲线的给定形式。
最优选地,适当的“范围(例如宽度)估计”数据(例如且优选地是上面描述的预定信息)是关于沿投影空间中的描边曲线的相关“长度”方向的多个优选等距点(以及因此最优选地针对沿投影空间中的轴方向(例如x轴)等距的多个点)提供和存储的。
存储针对多个点且优选地针对多个等距点的“范围(例如宽度)估计”数据具有众多优点。例如,因为存储针对沿相关长度方向的多个点的信息,所以该信息可以被存储为一维(1D)数据结构(即为针对沿单个方向的多个点中的每个的数据集)。
类似地,通过以此方式存储预定“宽度估计”数据,该数据可以使用单个参数即感兴趣的沿曲线的相关长度方向的位置的度量来检索(“查找”)。因此,例如,如果存储针对沿投影空间中的例如x轴的多个点的预定“范围(宽度)估计”数据,则投影空间中的采样位置的相关x值可以用来在数据结构中查找对该特定x值适当的范围(宽度)估计数据。
因此,在尤其优选的实施例中,预定范围(“宽度”)估计数据是针对沿投影空间中的给定(优选为选择的)方向(其将是“长度方向”)(该方向优选地平行于投影空间中的轴,例如x轴)等距的多个点中的每个存储的。
“范围估计”数据被优选地存储成使得其可以通过参考其涉及的相关“长度”方向位置来检索(识别)。这可以例如通过将“范围估计”数据的每个相应集与其沿“长度”方向的对应位置(例如x值)相关联和/或通过把数据存储在对应于相应长度位置的阵列中来实现。
这然后将允许例如当期望确定给定的采样点是否落在描边曲线的投影形式内时使用沿投影空间中的采样位置的相关长度方向的位置(例如其x坐标)来采样(查找)数据库中适当的预定范围(“宽度”)估计数据。检索的预定“范围估计”信息然后可以例如且优选地以上面描述的方式用来确定在采样位置沿投影空间中的“长度”方向的位置处描边曲线的投影形式在相关(宽度)方向上的范围。
针对多个点中的每个的预定范围(例如“宽度”)估计数据可以以任何合适且期望的方式被存储。然而,在尤其优选的实施例中,数据被存储成一个或多个图形纹理的形式,且最优选地成一个或多个1D(一维)图形纹理。这是尤其有利且有益的,因为以纹理的形式存储预定数据允许通常包含在图形处理系统中的现有纹理映射过程被用来以本发明的方式渲染描边曲线。
例如且优选地,纹理中的每个纹理元素可以存储给定长度位置的适当范围(例如宽度)估计数据,并且适当的长度位置然后用来查找适当的一个或多个纹理元素(采样纹理)从而以正常的方式检索适当的预定范围(宽度)估计信息。
在这点上要明白,在优选的实施例中,多个这样的数据结构(例如纹理)将被提供并存储以供图形处理系统使用,每个与要渲染的给定描边曲线有关(并相关联)。每个这样的数据结构可以被单独地存储(例如作为个别纹理)或者多个这样的数据结构可以(以单个总体结构)被一起存储,例如一个接一个地存储在相同的纹理中。类似地,每个数据结构(例如纹理)可以存储单个曲线或多个曲线的数据。
关于要测试的给定采样位置使用的适当预定信息可以被视需要地识别和检索。
然而,在优选的实施例中且如上面所讨论的,所讨论的采样位置沿着描边曲线的投影形式的“长度”方向的相对位置用来检索或采样(查找)用于估计在该位置处描边曲线的投影形式在所定义(例如宽度)方向上的范围的预定信息。
因此,例如在描边曲线的投影形式关于具有正交x和y轴的投影空间定义的情况下,如在本发明的优选实施例中,对于投影空间中的给定采样位置(x1,y1),采样位置的x位置x1优选地用来查找用于估计在沿着描边曲线的投影形式的长度与采样位置的x位置x1对应的位置处描边曲线投影形式在宽度方向上的范围的信息。
如本领域的技术人与会明白的,在以图形纹理的形式存储预定信息的情况下,这个“查找”可以仅通过以正常的方式采样对应采样位置的纹理来实现。
如将会明白的,由于沿为其存储范围(例如宽度)估计数据的曲线的长度的有限数量点,也许可能并且事实上往往可能的是不为所考虑的采样点在投影空间中的精确位置存储范围估计数据。
因此,在一个实施例中,所使用的预定信息可以是与到被测试的采样位置的位置最近的点有关的存储信息。
然而,在优选的实施例中,当查找预定信息时使用内插或滤波过程,以便在例如不存在为所考虑的“长度”位置精确存储的数据值集的情况下提供提高的准确度。
例如,在尤其优选的实施例中,使用合适滤波或内插过程诸如线性滤波来采样存储的预定信息(例如纹理)。这将允许提高渲染的准确度,同时仍然使用相同的存储数据。(事实上,正是使用图形纹理来存储预定信息的优点以致标准的纹理采样和滤波技术然后可以以此方式用来检索该信息。)
在其中数据被存储为图形纹理的情况下,标准纹理滤波技术诸如双线性滤波可以且优选地被使用。
(也可能通过提高沿为其存储预定信息的曲线的长度方向的点数量来提高所存储数据的绝对分辨率。然而,这可能不总是期望的。在采样预定信息时滤波或内插过程的使用因此提供一种提高渲染准确度而无需提高所存储数据的绝对分辨率的可选方式。)
描边曲线的投影形式在所定义(例如宽度)方向上的估计范围可以以任何合适且期望的方式用来确定“投影”空间中的采样位置是否落在描边曲线的投影形式内。
然而,在优选的实施例中,描边曲线的投影形式在所定义(例如宽度)方向上的估计范围如上面所讨论的那样被用来确定描边曲线的投影形式覆盖的在所定义(宽度)方向上的位置范围,并且然后将该位置范围与所讨论的采样位置沿该方向的对应位置进行比较以查看采样位置是否落在该位置范围内(以及因此落在描边曲线的投影形式内)。如上面所讨论的,描边曲线所覆盖的位置范围优选地通过确定曲线的边界点的估计来估计。
如上面所讨论的,描边曲线的投影形式所覆盖的在相关定义(宽度)方向上的位置范围可以且优选地通过使用曲线的投影形式在所定义(例如宽度)方向上的估计范围、以及在沿曲线的长度的该点处描边曲线的投影形式的中心曲线在所定义(例如宽度)方向上的位置来确定。
因此,例如,在其中描边曲线的投影形式关于x和y轴(以笛卡尔坐标)被定义的优选情况下,则对于投影空间中的采样位置(x1,y1),预定信息被优选地用来估计在采样位置的x位置x1处曲线的投影形式所覆盖的y位置(值)的范围,并且投影空间中的y位置的估计范围然后与投影空间中的采样位置的y位置y1进行比较以确定采样位置的y位置以及因此采样位置作为整体是否落在描边曲线的投影形式内。
如果投影空间中的采样位置落在确定的位置范围内,则采样位置可以被认为落在描边曲线的投影形式内。可选地,如果采样位置落在确定的范围之外,则采样位置可以被认为在描边曲线的投影形式之外。
一旦确定了投影空间中的采样位置是否落在描边曲线的投影形式内,该信息然后因而可以用来渲染(着色)表面空间中的对应采样位置,即如果发现(投影空间中的)对应采样位置落在描边曲线的(估计)投影形式内则将其显示为在描边曲线内,反之亦然。例如,然后基于该确定的结果,可以给表面空间中的每个采样点分配诸如红、绿和蓝(RGB)色值以及“alpha”(透明)值之类的数据。
在尤其优选的实施例中,该确定的结果事实上用来从关于描边曲线的进一步处理中保留或丢弃对应的表面空间采样位置(视情况而定)。优选地,如果该确定示出表面空间采样位置应当被认为在描边曲线内,则基元中的对应位置因而被着色(例如色彩化),但是如果其要被认为在描边曲线外,则基元中的对应位置不被着色成具有所讨论的描边曲线所需的属性(例如且优选地从关于描边曲线的进一步处理中被丢弃)。
在其它实施例中,代替如果其被认为在描边曲线外则从进一步处理中丢弃采样点,所讨论的采样点可以被着色以便完全透明并因此实际上不可见。
从上面将会明白,至少在本发明的优选实施例中,与表面空间中的采样点对应的投影空间中的采样位置优选地用来查找与要显示的描边曲线的投影形式有关的预定信息,并且该信息然后用来估计在沿着描边曲线的投影形式的长度的与投影空间中的采样点的位置相关联的点处描边曲线的投影形式在所定义(例如宽度)方向上的范围。优选地通过使用描边曲线的投影形式的估计范围来估计在所定义(例如宽度)方向上的、描边曲线的投影形式所覆盖的位置范围并且然后确定采样点是否落在该位置范围内,描边曲线的投影形式在所定义方向上的估计范围然后优选地用来确定投影空间中的采样点是否在描边曲线的投影形式内。
因此,在尤其优选的实施例中,本发明包括用于如下的步骤或装置:
使用投影空间中的相关采样点沿投影空间中的一个轴的位置来查找预定信息以用来估计在沿着投影空间中的第一轴的该位置处描边曲线沿投影空间中的第二轴的范围;以及
将在沿着投影空间中的第一轴的该位置处描边曲线的投影形式沿投影空间中的第二轴的估计范围与投影空间中的采样位置沿投影空间中的第二轴的位置进行比较以确定投影空间中的采样位置否落在投影空间中的描边曲线的投影形式内。
例如在使用笛卡尔坐标系统(即x和y轴)的这种布置中,则对于具有位置(x1,y1)的要测试的给定采样位置,采样位置的x坐标x1将用来查找信息以允许估计在x位置x1处描边曲线的投影形式在y方向上的范围,并且在x位置x1处描边曲线的投影形式的估计“y范围”(其优选地如上面所讨论的那样就曲线应当被认为覆盖的y值范围而言被确定)与被测试的采样位置的y位置y1进行比较以查看采样位置是否位于描边曲线的投影形式内。
如本领域的技术人员会明白的,这个测试步骤(即查找和使用预定信息来确定采样点是否落在描边曲线的投影形式内)应当针对要测试的表面空间中的每个采样点进行重复。因此其在实际中典型地针对多个采样点被执行以便渲染描边曲线进行显示。
尽管主要参考渲染给定的单个描边曲线进行显示来描述了本发明,但是如本领域的技术人员会明白的且如上面所讨论的,本发明可应用于多种不同形式的描边曲线并且在优选的实施例中可以用来渲染多个不同描边曲线的每个。
因此,在尤其优选的实施例中,多个不同的预定信息(例如纹理)集被提供并存储以供图形处理系统使用,每个表示要渲染的不同描边曲线。然后对于要绘制的任何给定曲线,对该曲线最适当的预定信息(纹理)可以被识别和选择并且用来渲染该曲线。因而,通过以本发明的方式表示曲线的合适范围,则应当可以渲染各种描边曲线,诸如且优选地是渲染给定字体进行显示所必需的描边曲线。
表示描边曲线的预定信息(纹理)集优选地被预先生成,并且然后被合适地存储以供图形处理系统使用,例如且优选地连同图形处理系统可以使用的其它纹理图一起供图形处理系统使用。给定的预定信息(纹理)集然后可以被选择并且在要渲染所讨论的描边曲线的适当时候使用。
用于要渲染进行显示的给定描边曲线的适当预定信息(纹理)集可以被视需要地识别和选择。例如,要求绘制描边曲线的应用可以向图形处理系统指示要使用哪个(哪些)预定信息(例如一个或多个纹理)集。
从上面将会明白,本发明实际上不是对照描边曲线本身的投影形式测试投影空间中的采样点,而是使用与描边曲线的投影形式有关或从其导出的预定信息来测试采样位置。此外,这个预定信息实际上通过使用用户空间中定义的描边曲线(或至少该曲线的中心路径)的定义投影形式来导出。
因此,根据本发明的第八方面,提供一种在图形处理系统中渲染描边曲线进行显示的方法,该方法包括:
接收要显示的定义在用户空间中的输入描边曲线;
使用所接收的变换把所接收的描边曲线投影到表面空间中进行显示;以及
对于表面空间中的一个或多个采样点中的每个:
确定投影空间中的对应采样位置;
使用投影空间中的采样位置的位置来采样预定信息集,该预定信息包含从描边曲线的定义投影中导出的信息;
使用采样的预定信息来确定投影空间中的采样位置是否落在描边曲线的投影形式内;以及
依据所述确定,给与投影空间中的采样位置相对应的表面空间中的采样点分配用于渲染所接收的描边曲线进行显示的数据。
因此,根据本发明的第九方面,提供一种在图形处理系统中渲染描边曲线进行显示的设备,该设备包括:
用于接收要显示的定义在用户空间中的输入描边曲线的装置;
用于使用所接收的变换把所接收的描边曲线投影到表面空间中进行显示的装置;以及
用于对于表面空间中的一个或多个采样点中的每个,确定投影空间中的对应采样位置的装置;
用于使用投影空间中的采样位置的位置来采样预定信息集的装置,该预定信息包含从描边曲线的定义投影中导出的信息;
用于使用采样的预定信息来确定投影空间中的采样位置是否落在描边曲线的投影形式内的装置;以及
用于依据所述确定,给与投影空间中的采样位置相对应的表面空间中的采样点分配用于渲染所接收的描边曲线进行显示的数据的装置。
如本领域的技术人员会明白的,本发明的这些方面和实施例可以且优选地确实包括本文描述的本发明的优选且任选的特征中的任一个(视情况而定)。因此,例如预定信息集被优选地存储成图形纹理的形式,优选地为1D纹理。
如上面所讨论的,在本发明中尤其优选的是把预定“范围(例如宽度)估计”信息存储成一个或多个图形纹理的形式,因为这是尤其有利且有益的。
事实上,认为这种形式的图形纹理(即包含在由图形处理系统渲染描边曲线中使用的宽度估计数据的图形纹理)的使用可能本身是新的且有利的。此外,这样的纹理可以如上面所讨论的那样被预先生成,并因此例如本身被提供为商品以与图形处理系统一起使用,例如为纹理集以被加载以供图形处理系统使用。
本发明因而也扩展到这种纹理的构造以及这种纹理它们本身。
因此,根据本发明的第十方面,提供一种在渲染描边曲线进行显示时用于图形处理系统中的图形纹理,其中该纹理的每个纹理元素将其与用于确定在曲线上的一点处被定义在所定义空间中的描边曲线在所定义方向上的范围的估计的信息相关联。
因此,根据本发明的第十一方面,提供一种在渲染描边曲线进行显示时构造用于图形处理系统中的图形纹理的方法,该方法包括:
在用户空间中定义描边曲线;
确定用于变换描边曲线以致该描边曲线具有所定义变换形式的变换;
确定用于确定在沿着描边曲线的变换形式的长度的多个点中的每个处描边曲线的变换形式在一个或多个所定义方向上的范围的估计的信息;以及
生成并存储一个或多个图形纹理,每个图形纹理包括纹理元素阵列,其中一个或多个纹理的每个纹理元素与沿着描边曲线的变换形式的长度的多个点中的至少一个相关联并且包含该至少一个点的一些或所有确定的信息。
因此,根据本发明的第十二方面,提供一种在渲染描边曲线进行显示时构造用于图形处理系统中的图形纹理的设备,该设备包括:
用于在用户空间中定义描边曲线的装置;
用于确定用于变换描边曲线以致该描边曲线具有所定义变换形式的变换的装置;
用于确定用于确定在沿着描边曲线的变换形式的长度的多个点中的每个处描边曲线的变换形式在一个或多个所定义方向上的范围的估计的信息的装置;以及
用于生成并存储一个或多个图形纹理的装置,每个图形纹理包括纹理元素阵列,其中一个或多个纹理的每个纹理元素与沿着描边曲线的变换形式的长度的多个点中的至少一个相关联并且包含该至少一个点的一些或所有确定的信息。
如本领域的技术人员会明白的,本发明的这些方面和实施例可以且优选地确实包括本文描述的本发明的优选且任选的特征中的任一个(视情况而定)。因此,例如,描边曲线的变换形式优选地如上面所讨论的并且该变换优选地在均匀空间中被执行。类似地,该过程优选地涉及:把描边曲线放置在均匀空间中;对均匀空间中的曲线应用变换;以及借助于透视除法,把变换曲线投影到投影空间中,并且然后确定用于确定在沿着描边曲线的投影和/或变换形式的长度的多个点中的每个处描边曲线的投影和/或变换形式(均匀投影空间形式)在一个或多个所定义方向上的范围的估计的信息。
类似地,图形纹理优选地包括1D纹理,并且为每个纹理元素存储的信息优选地包括优选地具有本文讨论的(一个或多个)形式的多个(最优选地四个)数据值,最优选地其可以连同其它信息(例如用户空间中描边曲线的描边宽度)一起用来估计在纹理元素所涉及的点处投影空间中的描边曲线在所定义(例如“宽度”)方向上的范围。用于把描边曲线变换到其变换形式的所确定的变换优选地也被存储(并与其所涉及的曲线相关联)。
针对沿曲线的长度的给定点的预定信息可以被存储在图形纹理的单个纹理元素中。例如,在四通道图形纹理(存储RGBA)中,每个纹理元素可以用来存储上面讨论的四个值。
可选地,针对投影空间中的点的预定信息(例如四个值)可以被存储在单个图形纹理的或多个图形纹理的多个纹理元素中。例如,对于单通道(灰度)图形纹理,图形纹理的四个个别纹理元素可以用来存储上面讨论的四个值(预定信息项)。
尽管如上面所讨论的,单个图形纹理可以用来存储用于渲染任何数量的描边曲线的预定宽度估计数据,但是在尤其优选的实施例中,单个图形纹理用来存储仅针对单个描边曲线的宽度估计数据。换言之,每个图形纹理优选地包含为仅渲染特定描边曲线所需的信息。
例如,本发明的图形处理系统优选地使用(能够访问)多个图形纹理,其中每个纹理包含用于渲染特定描边曲线(例如形成特定字体的字母、数字、符号等等或其部分的描边曲线)的信息。
以此方式构造图形纹理尤其是有益的,因为其允许在适当的时候例如当通过给系统已经可获得使用的多个纹理添加相关图形纹理(用于渲染新字体)来创建新字体时更新图形处理系统。
如将会明白的,图形处理系统要使用的多个数据结构例如图形纹理可以被视需要地构造并提供给图形处理系统。
例如,在一个优选的实施例中,例如图形纹理中的一些或全部可以且优选的由图形处理系统本身构造并然后存储在系统的或系统可访问的合适数据库(例如存储器)中。
在这种情况下,要求渲染描边曲线的应用可以例如初始定义要渲染的描边路径,其可以包括一个或多个线段。优选地,描边路径由用户空间中的一个或多个控制点的位置、关于在控制点之间绘制(由控制点定义)的曲线(线)的类型的信息、以及指示用户空间中的描边宽度的信息来定义。定义要渲染的描边路径的这个信息然后优选地由应用传送到图形处理系统,该图形处理系统将渲染描边曲线。
优选地,图形处理系统然后将基于从应用中接收的信息来确定初始由应用定义的描边路径是否需要例如被细分为形成描边路径的单独线段和/或因为要渲染的特定描边曲线不能以其当前的形式被渲染,并且如果需要的话,必要时基于这一确定的结果把初始定义的描边曲线细分为多个个别描边曲线进行渲染。
所接收的描边曲线或者在细分后生成的每个个别描边曲线优选地然后被图形处理系统分配(提供)标识符,例如具体的标识(ID)号。优选地也被传送到应用的这个标识符将被图形处理(实施方式)和应用用来(例如在将来)识别曲线。
图形处理系统然后依据本发明优选地确定为渲染一个或多个曲线所需的信息,并且把这个信息与所讨论的每个相应曲线的标识符例如ID号相关联。例如,系统优选地为要渲染的每个曲线确定用户到投影变换和预定信息(例如一个或多个特殊构造的图形纹理的形式)。这个信息然后可以被存储并与所讨论的曲线相关联以然后(和在将来)用来以本发明的方式渲染曲线。
还考虑多个数据结构(例如图形纹理)和用户到投影变换可以在图形处理系统之外被确定并且被提供给图形处理系统进行使用。这可以例如在任何合适的处理器或计算机系统(诸如主机系统)上完成。所生成的数据结构等等然后例如可以例如被存储在便携式计算机可读介质诸如闪存卡、CD-ROM、ROM等上,并且便携式计算机可读介质上的信息然后转移到图形处理系统(或可由其访问)的合适数据库(例如存储器)进行使用。如果需要的话,这样的数据转移也可以或作为代替例如经由因特网、无线地、等等完成。
这可能尤其适合于(例如)用于渲染字体的纹理,因为在这种情况下曲线(以及因此纹理)可以全部被预定义。
要明白,在这些布置中,在渲染描边曲线之前,图形处理系统将针对该信息可用于的每个描边曲线访问包含在渲染描边曲线时使用的预定“范围估计”信息的存储数据结构(其优选地以图形纹理的形式)、以及在渲染描边曲线时使用(用于把采样点映射到描边曲线的投影形式被定义在的投影空间)的预定义的用户到投影变换两者。(如上面所讨论的,用户到投影变换和/预定信息可以由系统本身确定(计算),或者可选地可以从例如计算机可读介质中获得。)
这个信息将优选地与一个或多个适当的标识符相关联地被存储以允许基于描边曲线的给定标识符检索它。
为了然后渲染描边曲线进行显示,要求曲线的应用优选地指定要渲染的一个或多个曲线的用户到表面变换、用户空间描边宽度以及一个或多个标识符(例如(一个或多个)ID号),并且把信息传送到图形处理系统。这些信息片可以同时或可选地且如本领域的技术人会明白的那样在不同的时间被传送到系统。
图形处理系统然后可以使用一个或多个所接收的曲线标识符来查找(检索)与所讨论的一个或多个曲线相关联的存储预定渲染信息,例如用户到投影变换和一个或多个特殊构造的纹理,并且然后可以例如且优选地以上面描述的方式使用该信息来选择一个或多个描边曲线进行显示。
因此,根据本发明的其它方面,提供一种在图形处理系统中渲染描边曲线进行显示的方法,其中针对描边曲线的一个或多个预定义形式中的每个且以对图形处理系统可访问的方式、与预定信息和预定义用户到投影变换所涉及的曲线的标识符相关联地存储预定信息和描边曲线的预定义用户到投影变换,所述预定信息用于估计在沿着描边曲线的投影形式的长度的多个点中的每个处投影空间中的描边曲线的投影形式在所定义方向上的范围,该方法包括:
应用要求与要渲染的描边曲线的预定义形式之一对应的描边曲线,向图形处理系统提供识别要渲染的描边曲线的标识符、用于把要渲染的描边曲线变换到表面空间进行显示的所定义用户到表面变换、以及描边曲线的期望用户空间描边宽度;以及
图形处理系统使用要渲染的描边曲线的所提供标识符来检索用于该曲线的所存储的预定范围估计信息和用户到投影变换,并且然后使用该信息以及指定的用户到表面变换和用户空间描边宽度来渲染描边曲线进行显示。
根据本发明的其它方面,提供一种用于渲染描边曲线的图形处理系统,在该系统中针对描边曲线的一个或多个预定义形式中的每个且以对图形处理系统可访问的方式、与预定信息和预定义用户到投影变换所涉及的曲线的标识符相关联地存储预定信息和描边曲线的预定义用户到投影变换,所述预定信息用于估计在沿着描边曲线的投影形式的长度的多个位置中的每个处投影空间中的描边曲线的投影形式在所定义方向上的范围,该系统包括:
用于从要求与要渲染的描边曲线的预定义形式之一对应的描边曲线的应用中接收识别要渲染的描边曲线的标识符、用于把要渲染的描边曲线变换到表面空间进行显示的所定义用户到表面变换、以及描边曲线的期望用户空间描边宽度的装置;以及
用于使用要渲染的描边曲线的所提供标识符来检索用于该曲线的所存储的预定范围估计信息和用户到投影变换,并且然后使用该信息以及指定的用户到表面变换和用户空间描边宽度来渲染描边曲线进行显示的装置。
如本领域的技术人员会明白的,本发明的这些方面和实施例可以且优选地确实包括本文描述的本发明的优选且任选的特征中的任一个或多个或全部(视情况而定)。因此,例如,预定信息等等优选地用来以本文描述的一个或多个方式渲染描边曲线进行显示。
本发明可以用来渲染描边曲线的任何期望形式。如上面所讨论的,认为本发明将尤其尽管不是专门适合于要用来构造字体的(例如形成字体的所有或部分字符诸如字母的)描边曲线的渲染。因此,在尤其优选的实施例中,在本发明中要显示的描边曲线是涉及字体的字符的描边曲线。类似地,在优选的实施例中,存储和使用多个预定义信息(例如纹理)集等等,每个涉及与字体的字符有关的描边曲线。
如本领域的技术人员将会明白的,对如上面和这里描述的本发明的各种修改、变型和添加将是可能的。
例如,在优选的实施例中,在透视除法中用来把均匀投影空间中的变换描边曲线投影成投影形式的这些值,例如典型地是3D均匀空间的第三坐标值,优选地被交叉相乘,因为这将有助于优化估计过程。如果这样做,则可优选的是确保所有这些值(即透视除法中使用的值)严格为正。这可以例如通过检查用于渲染曲线的基元(例如划界多边形)在均匀空间中如上面所讨论的那样被合适地变换后所有都具有正的第三坐标值(或者不管在透视除法中使用什么值)来实现。在那些值被线形内插在顶点之间的情况下,则优选地直接仅检查划界多边形的顶点的值(因为如果那些值是正的,则这应当确保基元内的所有值也是正的)。
例如也可以使用“两遍(two pass)”方法来实施本发明的测试步骤,其中基于指定的曲线标度(curve scale)和线宽来导出曲线在所定义(例如宽度)方向上的范围的中间查找表。
例如,在“一遍”方法中,为了确定表面空间中的采样点是否落在描边曲线内,纹理中的相关预定数据优选地与用户空间描边宽度组合来确定在沿其长度的相关位置处由描边曲线的投影形式所覆盖的在例如宽度方向上的位置范围(确定沿宽度方向的第一(最大)和第二(最小)位置)。采样点沿宽度方向的位置然后优选地与确定的第一(最大)和第二(最小)位置进行比较,并且该结果用来确定采样点是否在描边曲线内。
在“两遍”方法中,针对其信息被存储的沿“长度”方向的每个位置,(例如)在一个或多个图形纹理中存储的预定信息可以连同用户空间描边宽度一起用来在第一“遍”中确定在沿其长度的每个位置处描边曲线的投影形式所覆盖的在宽度方向上的位置范围并且将其存储在纹理中(例如确定沿宽度方向的第一(最大)和第二(最小)位置)。
在第一遍中构造的为沿“长度”方向的每个位置存储确定的第一(最大)和第二(最小)位置(例如两个标量值)的这个纹理然后可以用于第二“遍”中来(通过采样所构造的纹理以获得沿采样点的宽度方向的第一(最大)和第二(最小)值,并且将所获得的范围与采样点沿宽度方向的位置进行比较)确定采样点是否在描边曲线内。
以此方式使用“两步”方法执行本发明可能在某些情况下是有益的,因为其将一些处理从每片段操作(2D域)移到每x操作(1D域),尽管潜在地以域的建立开销和潜在不均匀采样为代价。
本发明的方法和系统可以以任何合适且期望的方式被实现和实施在图形处理系统上或中。例如,图形处理系统可以包括已适合被编程为执行本发明的步骤的可编程片段着色器硬件。可选地,图形处理系统可以包括合适的固定功能硬件。
例如,在图形处理系统具有可编程片段着色器硬件的情况下,用于确定在落入表面空间中的描边曲线内时是否保留或丢弃表面空间采样点的“比较和丢弃”过程可以例如使用比较和条件丢弃例程来实施。
在本发明例如以使得禁用标准的多重采样反混淆(antialiasing)的方式被实施在片段着色器中的情况下,则如果需要的话,这可以例如通过确定接近曲线边界的片段的覆盖值来补偿。
利用具有固定功能硬件的图形处理系统,这个操作可以通过例如把采样点传送经过图形处理流水线一次或多次以便实施关于期望序列中的每个采样点的必要操作来实施。
在尤其优选的实施例中,本发明的各种功能被实施在单个图形处理平台上,所述单个图形处理平台生成并输出被写到显示设备的帧缓冲器的数据。
本发明可应用于任何形式或配置的渲染器(renderer),例如具有“流水线”布置的渲染器(在这种情况下,该渲染器将以渲染流水线的形式)。在优选的实施例中,该渲染器被应用于硬件图形渲染流水线。本发明的各种功能和元件等可以根据需要来实施,例如并且优选地通过使用适当的功能单元、处理逻辑、电路、处理器和微处理器布置等来实施。
如上面所讨论的,本发明可应用于所有形式的渲染,例如基于光栅化的渲染或射线跟踪、快速方式渲染(immediate mode 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示意性地示出其中一个或多个预定义描边曲线被渲染用于显示的本发明实施例的原理过程。使用本发明技术进行渲染的预定义描边曲线可以例如是字体集中的字符(例如字母、数字、符号等等)的部分或者卫星导航(satnav)系统中的地图上的标记(例如箭头)的部分。
在本实施例即图1所示的实施例中,示出要被渲染的预定义描边路径,其中描边路径由共同形成字母“e”的六个个别线段1a-1f形成。
现在将针对标为1a的线段来描述本发明实施例的渲染技术,然而要明白字母的每个其它线段例如1b-1f将同样使用这样的技术或可选地任何其它所需的渲染技术进行渲染。
在本实施例中,线段1a是二次贝塞尔曲线2,其初始在2D用户空间4中由如下来定义:该曲线的起始控制点和终止控制点c0和c2的位置;中间控制点c1的位置;以及描边宽度w。然而,不过要理解本发明的技术可以用来渲染其它类型的描边曲线,例如椭圆弧、三次曲线和B样条(例如非均匀有理B样条(NURBS))。
为了渲染描边曲线进行显示,描边曲线或典型地定义描边曲线的信息(诸如用户空间中控制点c0、c1和c2的位置以及曲线类型)初始被输入到图形处理系统。
如本领域中已知的,在渲染过程期间,在用户空间中定义的描边曲线2被投影到2D表面空间6中,该2D表面空间6具有该描边曲线将在其上面被查看的显示的相同透视(几何)。把所述描边曲线从用户空间2投影到表面空间4的变换在本文中被称为用户到表面变换(TUS),并且将被提供到使用中的图形处理系统。
一旦把描边曲线投影到表面空间中,则生成基元(或多个基元)诸如图1所示的多边形8,其紧密配合并且覆盖表面空间6中所投影的描边曲线7。
如本领域中已知的,然后把基元8光栅化成多个采样点,并且光栅化过程中定义的多个采样点将(基于它们是否被认为落在表面空间中被描边曲线划界的区域内)最终被适当地着色以便显示描边曲线。
在本实施例中并且依据本发明,通过使用与用户空间描边曲线到投影空间中的特定投影有关的预定信息来做出关于表面空间中的采样点是否落在表面空间中的描边曲线内的确定。用户空间描边曲线到投影空间中的投影被设计成具有如下形式:其允许估计针对沿投影空间中的垂直(“长度”)方向(其在本实施例中是x轴)的给定位置的、曲线的投影形式沿投影空间中的定义“宽度”方向(其在本实施例中是沿y轴)的范围。如下面更详细解释的,描边曲线的投影形式沿投影空间中的y轴(宽度方向)的这个估计范围然后可以被用来确定采样点是否应当被认为落在描边曲线内。
现在将讨论这个预定信息采用的形式以及其被生成的方式。
在本实施例中并且如图2所示,描边曲线的投影形式是用户空间描边曲线的投影10的特定形式以致用户空间描边曲线的起始控制点c0被映射到投影空间中的第一位置而用户空间描边曲线的终止控制点c2被映射到投影空间中的第二位置。在本实施例中,第一位置,即起始点c0被投影到的位置是(0,0)(投影空间中的原点)——在笛卡尔坐标中给出的投影空间中的坐标,而第二位置,即终止点c2被投影到的位置在投影空间中是(1,0)。然而,要理解,第一和第二位置可以被视需要地选择并且可以在要被渲染的不同描边曲线之间变化。
此外,描边曲线的投影形式是用户空间描边曲线的如下投影:用户空间描边曲线中的起始和终止控制点的法向向量nco和nc2被重定向成使得它们平行于投影空间12中的y轴(即平行于投影空间中的定义“宽度”方向)(并且沿着y轴向上指向)。如将会明白的,与曲线的两个端点相关联的用户空间法向向量的这种重定向将导致(如用户空间中定义的)曲线的其它法向向量也被重定向成使得更加平行于(并且使得近似平行于)投影空间中的y轴(如图2所示)。
在本实施例中,描边曲线的投影形式尤其通过把在用户空间中出现的描边曲线变换到或至少朝投影空间中的其期望投影形式的变换(“用户到投影”变换)而与描边曲线的用户空间形式有关。换言之,该布置使得描边曲线的投影形式可以通过尤其使用特定“用户到投影”变换而从用户空间中定义的描边曲线来生成。
此外,在本实施例中,在把用户空间描边曲线映射到其在投影空间中的投影形式时使用的用户到投影变换被应用在均匀空间中(许多计算机图形处理通常这么做)。这具有如下优点:矩阵乘法可以用来表示旋转和缩放以及还有平移和透视,如本领域中已知的。为此,用户空间中定义的曲线首先被放置到均匀用户空间中,然后对其应用相关的用户到投影变换以把曲线放置在均匀投影空间中。如本领域中已知的,如此变换的曲线然后可以经受透视除法以把变换曲线从均匀投影空间投影到投影空间中。
这个过程被图解在图3、4和5中。
图3示出(2D)用户空间4中的描边曲线2被放置到3D均匀用户空间14。
如图4所示,然后使用用户到投影变换R把均匀空间14中的描边曲线2变换成均匀投影空间14’中的描边曲线的变换形式16。
然后通过透视除法把变换的描边曲线16投影到2D投影空间12中。这被示于图5中。
(这里应当注意,为清楚起见,图4和5在描边曲线的变换和投影形式中仅示出描边曲线从描边曲线的中心线100起的一侧。然而,如本领域的技术人员会明白的,在实际中描边曲线16的下半部分将(适当地)存在于描边曲线的变换和投影形式中。)
在计算要在渲染描边曲线时使用的预定信息中的第一步骤在本实施例中因此是确定用户到投影变换R,其将在把用户空间4中定义的描边曲线2投影到投影空间12中的其期望投影形式时被应用在均匀空间中。
这个用户到投影变换的导出在本实施例中被如下执行:
假设要显示的描边曲线具有在用户空间中处于A=(a1,a2)和B=(b1,b2)的起始和终止控制点,其中在点A和B处的用户空间单位法向向量分别为向量c=c1i+c2j和d=d1i+d2j,其中i和j是用户空间的笛卡尔基本向量。如上面所讨论的,变换被期望使得用户空间中的这个曲线可以被投影到投影空间以致:
i)用户空间中的点A映射到投影空间中的点(0,0);
ii)用户空间中的点B映射到投影空间中的点(1,0);
iii)用户空间中的法向向量c在投影空间中是垂直的(即平行于y轴),并且具有无限小范围的正确标度(scale),即在用户空间中(A+εc)→在投影空间中(0,ε)同时ε→0;以及
iv)用户空间中的法向向量d在投影空间中是垂直的,并且具有无限小范围的正确标度,即在用户空间中(B+εd)→在投影空间中(1,ε)同时ε→0。
如将会明白的,这样的用户到投影变换(其将在本文中被表示为R)可以被表达为两个单独变换的结果:仿射变换M,其旋转、平移和缩放曲线以便满足条件(i)和(ii);以及投影变换P,其强制条件(iii)和(iv)同时使曲线的投影形式中的两个端点的位置不受影响。
通过利用齐次坐标,即通过在3D均匀空间中表示2D用户空间中的点,用户到投影变换R可以被表达为:
由于矩阵M是仿射的,则:
矩阵M的计算是线性代数中的标准练习,并且可以例如通过使用合适配置的处理器而针对特定曲线容易地被确定。
例如,矩阵M可以被表达为M=MsMrMt,其中:矩阵Mt平移点A以致其将终止在投影空间中的位置(0,0)(即在透视除法后);矩阵Mr使(平移的)曲线在投影空间中绕原点(0,0)旋转以致点B将位于投影空间中的x轴上(即在透视除法后);并且最后矩阵Ms缩放(平移且旋转的)曲线以致点B将位于投影空间中的位置(1,0)(即在透视除法后)。
转到矩阵P,首先要明白矩阵P必须对曲线的变换端点的位置没有影响。换言之,
PM(a1 a2 1)T=P(0 0 1)T=(0 0 1)T;以及
PM(b1 b2 1)T=P(1 0 1)T=(1 0 1)T
因而,技术人员将显而易见矩阵P的元素P13、P23和P31必须为零。
因此:
通过对矩阵P强制上面的条件(iii)和(iv),则可以形成线性联立方程组。通过求解这些方程,可以确定仅存在针对矩阵P的一个可能解,其为:
其中c′=Mc,即M(c1 c2 0)T=(c1′c2′0)T;以及
d′=Md,即M(d1 d2 0)T=(d1′d2′0)T
(如将会明白的,如果c2′或d2′为零,即在描边曲线的端点处的法向向量在应用矩阵M后将是水平的,则将不可能使用本实施例的技术来渲染曲线(至少在该用户空间形式中)。在这样的情况下,初始描边曲线优选地被细分并且然后作为两个单独的描边曲线进行渲染。)
在上面之后,将知道“用户到投影”变换,其把从用户空间4放置到均匀用户空间14中的描边曲线变换成合适的形式以致在(通过透视除法)把变换的曲线从均匀投影空间14’投影到投影空间中后该曲线在投影空间12中具有期望的形式。这个变换然后优选地与其涉及的曲线的标识符相关联地被存储以供将来使用。
现在将参考图3、4和5来描述用于计算与描边曲线的投影形式有关的在本实施例中将使用的预定信息的下一步骤。
为了图解与描边曲线的投影形式有关的在本实施例中将使用的预定信息的计算,将考虑用户空间描边曲线2上的点p。如图3所示,在用户空间4中的位置(P1,P2)处的这个点p具有相关(单位)法向向量n(其中||n||=1)。在曲线2的边界上存在对应点q,其对应于在沿法向向量n突出到曲线2的边界时的点p(即针对距离w/2,其中w是定义的用户空间描边宽度)。因此在用户空间4中的位置(q1,q2)处的q处于沿法向向量n相距点p的距离w/2。
在均匀用户空间14中,在通过用户到投影变换矩阵R对曲线变换之前,点p可以被认为处于点(p1 p2 1)T且法向向量n为(n1 n2 0)T。如果然后曲线被矩阵R变换(以便形成如图4所示的变换描边曲线16),则在均匀投影空间14’中:
p→p′=Rp=(p1′p2′p3′)T;以及
n→n′=Rn=(n1′n2′n3′)T
因而,在均匀投影空间14’中的用户空间描边曲线2的变换形式16中,与用户空间4中的边界点q对应的曲线16的边界上的点q’将对应于在沿变换的法向向量n’突出等于半用户空间描边宽度的距离时的点p’,因此:
当均匀投影空间14’中的变换曲线16经历透视除法,以便再次被表示在2D空间即投影空间12中时,则如图5所示,均匀投影空间14’中的点p’被投影到投影空间12中的位置p”,其对应于
(由于透视除法涉及将均匀空间中的第一和第二坐标除以均匀空间中的第三坐标,如本领域中已知的),并且均匀投影空间14’中的点q’被投影到投影空间12中的位置q”,其对应地处于如下位置:
由于投影变换即R矩阵的分量矩阵P,重定向端点的法向向量以致它们平行于投影空间12中的y轴,并且因此如上面所讨论的,例如使向量n”(其为在用户空间描边曲线2中的点p处的法向向量n的投影形式)与投影空间12中的y轴更接近(且近似)对准,要明白在用户空间中的点p在投影空间中的x轴上的位置处投影空间12中的投影描边曲线18在y方向上的上边缘(边界)的位置的近似度量(approximate measure)可以由投影空间中的点q”在y方向上的位置(该位置将等于点p”(在点p”处曲线中心线)的y位置加上投影空间中单位法向向量n”的y分量乘以半用户空间描边宽度
)给出。
换言之且如图5所示,点s”在投影空间12中的y位置(坐标)(这是在投影空间中点p”的x位置处投影描边曲线18在y方向上的“真实”边界)可以由投影空间中具有与点q”相同的y位置(坐标)的点r”的y位置来近似。
因此,可以把点r”的位置用作在点p”的x位置(长度位置)处投影描边曲线18沿y轴(宽度方向)的上边缘(边界)的位置的近似。
如可以从图5看到的,投影空间中点r”的位置将由点p”的x坐标和点q”的y坐标给出。因此,综上所述,要明白点r”在投影空间中的坐标将由下式给出:
如果知道用户空间描边宽度w、点p’在均匀投影空间14’中的第二和第三坐标p2′,p3′、以及单位法向向量n’在均匀投影空间14’中的第二和第三分量n2′,n3′,则投影空间12中点r”的y坐标以及因此投影描边曲线18的上边界沿y轴的位置的估计所以可导出。
类似地,要明白投影空间12中投影描边曲线18的下边界(在图5中未示出)沿y轴的位置的估计可以由在曲线的中心线100下方与r”的等效点(被标记为r”(下))的位置给出(其中在本术语中点r”被标记为r”(上)):
再次,一旦知道用户空间描边宽度w、点p’在均匀投影空间14’中的第二和第三坐标p
2′,p
3′、以及单位法向向量n’在均匀投影空间14’中的第二和第三分量n
2′,n
3′,就可以导出曲线的下边界在投影空间中的期望y位置
在点p”处描边曲线的投影形式的边界(边缘)的这两个估计的上方和下方y值,即r”(下)和r”(上),然后可以用来导出在相应x位置处描边曲线的投影形式所覆盖的y位置的估计范围(y位置的该范围然后可以对照采样点进行测试,如上面所讨论的)。
因此通过确定和存储投影空间中针对相应x位置(这将对应于
)的这四个坐标值(其将是标量值)中的每个(即以致可以使用该x位置来查找它们),该信息可以连同用户空间描边宽度w(其将是已知的参数)一起用来估计一起定义在所讨论的x位置处描边曲线的投影形式所覆盖的沿y轴的位置范围的最大y和最小y值。
在这个实施例中,针对沿着描边曲线的给定位置所存储和使用的预定“范围估计”信息将因此包括这四个坐标值,即p2′,p3′,n2′和n3′。
在这种布置中,p2′和p3′实际上表示(可以用来导出)在所讨论的“长度”位置处描边曲线的投影形式的中心线的y位置,并且n2′和n3′实际上表示(可以用来导出)在所讨论的“长度”位置处描边曲线的投影形式的中心线的经变换且投影的单位法向向量的y分量。
因此要看到,通过计算和存储针对沿(在投影空间中)x轴的多个位置的值p2′,p3′,n2′和n3′,则可以建立包含信息(上面提及的预定“范围估计”信息)的数据库,其可以以下面更详细讨论的方式用来确定表面空间6中的采样点是否落在描边曲线内。
申请人还意识到可以通过在上面的过程中应用调节因子来获得投影描边曲线的上边缘和下边缘的更准确估计。这可以给出更好的渲染质量,尤其对于具有较大宽度的描边曲线以及对于更宽范围的曲线形状和粗度。
因此,在参考图6描述的另一个优选的实施例中,投影描边曲线的上边界(即点s”)沿y轴的位置被估计为投影空间12中的点u”的y坐标,其中u”是均匀投影空间14’中的点u’的投影并且被如下定义:
i)u”从p”沿宽度(y轴)方向伸展,即u”的x坐标与p”的x坐标相同;以及
ii)通过q’和u’的线的方向平行于均匀投影空间14’中变换曲线16的中心线100在点p’处的切线t’。
要明白,上面的第二条件要求:
u′=q′+λt′
其中λ是某个标量值。
因此,通过把第二条件应用到第一条件,其要求
由此可知:
通过重新整理其产生:
并因此:
因此,
如上面所讨论的,已明白投影空间12中的投影描边曲线18的上边界和下边界沿y轴的位置的改进估计将由
给出,其分别为:
在这种情况下,针对给定的“长度”位置所计算和存储的预定宽度估计信息因此将是值p
2′,p
3′,
和
在这种布置中,如上所讨论的,被应用于单位法向向量分量n
2′,n
3′的因子
实际上是尤其基于均匀投影空间中的切线向量t’的调节因子,即其把尤其基于单位切线向量t’的调节因子应用于单位法向向量n’。
在本实施例中,(上面讨论的任一形式的)预定范围估计数据被存储成1D图形纹理的形式。例如,在本实施例中,图形纹理是4通道(RGBA)纹理,并且纹理的每个纹理元素与投影空间中沿x轴的给定位置相关联。每个纹理元素的红通道用来存储p
2′值(对于每个x位置),而绿、蓝和alpha通道分别用来存储p
3′,n
2′和n
3′值或者p
3′,
和
当然,其它布置将是可能的。例如,四个1通道(灰度)图形纹理可以用来存储预定数据。
因而,要理解,对于要显示的特定描边曲线2,在本实施例中创建包含针对投影空间中沿x轴的多个等距点的、投影空间中的该描边曲线的特定投影形式的上面描述的预定数据的纹理。图7示出这样的纹理的示例,其中存储x轴上的四个示例性点p1
x″,p2
x″,p3
x″和p4
x″的数据,其中例如
如上面所讨论的,这个预定(且存储的)数据然后可以用来确定针对在投影空间中在x轴上的点的、描边曲线18的投影形式沿y轴的范围的近似度量,并从而估计在该点处描边曲线的投影形式所覆盖的投影空间中的y位置的范围。
例如且再次参考图4,在点p1x″处曲线所覆盖的y位置的范围可以被估计为如下范围:
曲线所覆盖的y位置的范围的这个估计然后可以用来确定投影空间中的点是否应当被认为在描边曲线的投影形式内。
例如,为了确定图7中投影空间中的点A是否在描边曲线的投影形式18内,点A在y轴上的位置可以与在投影空间中点A在x轴上的位置处曲线所覆盖的投影空间中的y位置的范围进行比较,该范围是上面给出的范围,并且基于该结果做出确定。在点A的情况下,(从图7)可以看出:
并因此点A可以被认为不在描边曲线的投影形式内。
现在将描述使用本实施例的技术渲染所接收的描边曲线的方法。
在本实施例中,应用创建或加载例如就多个控制点以及在控制点之间要绘制的线段类型而言将要求渲染的描边曲线的描述,并且把该信息传送到图形处理系统。例如且参考图1,应用向系统发送描述线段1a-1f的信息,在这种情况下所述线段每个都使用本发明的技术进行渲染。
图形处理系统接着确定线段1a-1f的一个或多个是否需要被细分成多个线段部分以便使用本发明的技术进行渲染,并且对认为其必要的那些线段进行细分。例如,如果线段1a-1f中的一个是具有自相交或尖点的三次曲线或者是自重叠曲线,则该线段将典型地需要被细分。
系统然后对每个个别线段或线段部分分配诸如ID号的名称(handle),以致每个曲线在系统内被唯一地识别。
图形处理系统接着确定在把曲线转换到其投影空间形式时所使用的R矩阵(用户到投影矩阵),并且完成此后,然后确定如上所讨论的关于曲线的投影形式的适当预定信息,并且创建包含预定信息的一个或多个所需纹理。这是针对每个个别线段或线段部分完成的。每个线段的相应R矩阵和(一个或多个)图形纹理然后以使得可由使用中的系统访问的方式被存储,其中所存储的信息与被分配给所讨论的线段(曲线)的名称(ID)相关联。
这优选地对应用可能要求渲染的每个曲线进行重复。
可选地,可以被图形处理系统接收的多个描边曲线的每个的R矩阵和预定信息(例如(一个或多个)纹理)可以预先在系统之外被确定,并且例如被存储在可移动存储介质,诸如CD-ROM等等上。存储在介质上的信息然后可以在需要时例如被应用输入到图形处理系统而不是在运行时进行计算。
随后,当应用要求渲染曲线进行显示时,应用将向图形处理系统传送用户到表面变换(TUS)、用户空间描边宽度w以及要渲染的曲线的名称(标识)。当然要理解,虽然这些信息片的每个可以被同时传送到系统,但是更普通的是它们将在渲染过程中的不同阶段被传送到系统。
从应用所接收的要渲染的曲线的名称(ID)然后被图形处理系统用来选择与要渲染的曲线有关的存储的R矩阵和预定信息(一个或多个纹理)。图形处理系统然后使用该信息来渲染曲线进行显示,如下面更详细讨论的。
例如且再次参考图1,为了渲染所接收的用户空间描边曲线2,首先使用从应用接收的用户到表面变换把该曲线投影到表面空间6。
然后生成覆盖表面空间6中的曲线的投影7的基元(或多个基元)8,并且(一个或多个)基元被光栅化以定义表面空间中的多个采样点。
通过首先应用用户到表面变换的逆并且然后通过对被渲染的特定曲线应用用户到投影变换R(其如所讨论的那样连同要用于该曲线的纹理一起被存储)来在投影空间12中定义描边曲线的投影形式,表面空间6中的每个采样点然后被映射到投影空间12中的对应位置。优选地仅就基元的顶点执行该变换,其中基元内的采样点然后例如且优选地被光栅化硬件内插,如本领域中已知的。
在此之后,将知道与表面空间中(即在覆盖表面空间中的描边曲线的(一个或多个基元)内)的每个采样点位置对应的投影空间中的采样点位置。然后以上面讨论的方式使用关于存储在所讨论的描边曲线的(一个或多个)纹理中的曲线的投影形式的预定信息对照描边曲线在投影空间中的投影形式测试投影空间中的采样位置。
因此,对于投影空间中的每个采样位置,适当的(一个或多个)纹理被采样(使用采样位置的x位置作为查找)以获得在x轴上的所需位置的四个存储数据值。
因此,例如,考虑图7所示的投影空间中的采样位置A,该采样位置在投影空间中的x位置即p1x″将被用作查找以采样所讨论的曲线的纹理从而获得在x轴上的所需位置的、上面讨论的四个数据值。
在本实施例中,使用双线性滤波(bi-linear filtering)来采样纹理以便在投影空间中的采样点处于不直接存储其数据集的沿x轴的一位置处的情况下(诸如图4的点B的情况)允许要用于沿投影空间中x轴的给定位置的相关数据值被适当地内插。当然也可以使用其它滤波或内插方法。
通过采样纹理所导出的四个数据值然后连同定义在用户空间中的曲线的描边宽度w(其将被图形处理系统接收以定义该曲线)一起被用来以上面描述的方式估计针对x轴上的位置的、描边曲线的投影形式沿投影空间中y轴的范围,即确定表示在所讨论的x轴上的位置处投影描边曲线的上边界和下边界的估计的、y轴上的最小值和最大值。
针对被考虑的采样点在x轴上的位置的、描边曲线的投影形式沿投影空间中y轴的估计范围,即确定的最大和最小y值然后如上面所讨论的那样与投影空间中的所讨论的采样点的y位置进行比较以确定投影空间中的采样点是否应当被认为落在描边曲线的投影形式内。
然后基于这一确定的结果,即投影空间中的采样点是否被认为在描边曲线的投影形式内,可以做出就表面空间中的对应采样位置而言的对应决定,并且因而该表面空间采样位置可以在描边曲线内部时被保留或者在描边曲线外部时被丢弃。然后给表面空间中的对应采样点分配合适的着色数据,例如RGBA值。
这个过程针对表面空间中的每个期望采样点(即在实际中针对覆盖表面空间中的描边曲线的一个或多个基元中的表面空间中的每个采样点)进行重复,以便适当地显示描边曲线。
本发明的过程可以使用任何合适的图形处理系统(包括常规的现有图形处理系统)来实施。
例如,在可编程图形硬件上,这些过程可以被实施在片段着色器中。(当以此方式实施时,即当接受和拒绝片段着色器中的片段时,如果标准的多重采样反混淆因而被禁用,则(若需要)这可以通过确定靠近曲线的边界的片段的覆盖值来修正)。
在固定功能硬件上,本发明的过程可以使用通过渲染流水线的一遍或多遍来实施。
本实施例可以用来渲染描边曲线的任何期望形式,尽管其将尤其可应用于需要被重复渲染的描边曲线的渲染(原因在于其使用存储的预定信息)。如上面所讨论的,认为本发明将尤其尽管不是专门适合于要用来构造字体的(例如形成字体的所有或部分字符,诸如字母)描边曲线的渲染。因此,在尤其优选的实施例中,要显示的描边曲线是涉及字体的字符的描边曲线。类似地,在优选的实施例中,存储和使用多个预定义信息(例如纹理)集等等,每个涉及与字体的字符有关的描边曲线。
如本领域的技术人员将会明白的,对如上面和这里描述的本发明的各种修改、变型和添加将是可能的。
例如,在优选的实施例中,上面讨论的均匀投影空间中的透视除法值被交叉相乘,因为这将有助于优化估计过程。如果这样做,则可优选的是确保所有这些值严格为正。这可以例如通过至少在那些值然后被线形内插在顶点之间的情况下检查用于渲染曲线的边界基元在用户到投影变换的变换后所有都具有正的第三标量值(由于在这种情况下检查边界基元的顶点的值应当确保基元内的所有值也是正的)来实现。
类似地,尽管上面针对使用事实上是用户空间描边宽度w的线形有理函数来估计描边曲线的投影形式在y方向上的相关范围而描述了本发明(由于如上面所讨论的,为此使用的曲线的投影形式的边缘(边界)的y位置是用户空间描边宽度w的线形函数),但是作为代替将可以使用用户空间描边宽度的其它函数来估计投影空间中的描边曲线的投影形式的范围(若需要的话)。例如,若需要的话,可以使用二次有理近似。
使用诸如二次的高阶近似可以允许例如通过更好地补偿图6所示的点u”和s”之间的间隙来更准确地估计描边曲线的投影形式的相关范围(以及因此允许更准确的渲染)。
例如也将可以使用“两遍”方法来实施本发明的测试和比较步骤。
在这样的实施例中,第一遍可以用来如上面所讨论的那样使用用户空间描边宽度w和一个或多个相关纹理中的预定数据来确定沿x轴的位置的规则采样(regular sampling)的最小和最大y值。这些最大和最小y值然后可以以与上面针对存储预定数据的纹理所描述的类似方式被存储在其它纹理(或者如果必要的话是多个纹理)中(即以致其它纹理的每个纹理元素存储表示特定x位置的最小y值或最大y值的标量值,并且使用被测试的沿x轴的位置来采样其它纹理)。
然后在第二遍中通过如上面所讨论的那样光栅化基元例如划界多边形8并且确定采样点是否在描边曲线内来采样这个纹理,所述确定是通过采样其它纹理以查找特定x位置的存储的最大和最小y值并且对照这个确定的范围比较采样点的y位置而完成的。
以此方式即使用“两步”方法执行本发明将一些处理从每片段操作(2D域)移到每x操作(per x operation)(1D域),尽管潜在地以域的建立开销和潜在不均匀采样为代价。
如上面所讨论的,在本发明的本实施例中,描边曲线到投影空间中的投影具有把描边曲线的端点放置在沿投影空间的基本向量之一(即x轴)的两个单独位置处的形式。而且,与描边曲线的端点相关联的法向向量被重定向成使得沿投影空间的另一基本向量(即y轴)伸展。
如从上面将会明白的,法向向量更靠近y轴方向的这种重定向意味着点r”和u”将更靠近曲线的投影形式的“真实”边缘点s”,从而使得用于本发明的估计更加准确。因此优选的是R矩阵包括投影分量即矩阵P以便以此方式重定向描边曲线的投影形式中的法向向量。然而,在其它实施例中也考虑R矩阵不以此方式重定向用户空间法向向量(例如R矩阵可以仅由仿射矩阵M组成)。尽管在这种情况下描边曲线的“估计”投影形式可能不如在用户到投影变换确实如上面所讨论的那样重定向法向向量时准确,但是申请人已发现本发明的这样布置至少在某些情况下仍然可以用来满意地渲染描边曲线。
虽然关于使用基于光栅化的技术的实施例讨论了本发明,但是也考虑本发明可以与基于射线跟踪的技术一起使用。在这样的技术中,如本领域中已知的,射线的路径从观看者的眼睛被跟踪通过表面(屏幕)空间中的每个位置进到画面中以确定射到什么以及因此观看者看到什么。因而,当画面包括描边曲线时,必须做出关于射线是射到还是错过描边曲线的确定,并且如将会明白的,这样的确定可以使用本发明的技术来做出。
从上面可以看出,至少在其优选的实施例中本发明提供一种用于渲染描边曲线的方法和设备,并且其尤其可以以(就CPU上的负荷而言)比用常规技术可能的显著更高效的方式被实施在传统的固定功能3D图形硬件和未修改的现有硬件图形加速器上。
具体而言,至少在其优选的实施例中本发明要求预定信息的仅一维表格。这尤其使其存储更高效。
此外,预定信息对于描边曲线的平移、旋转和均匀缩放以及对于用户空间中曲线的描边宽度的变化是不变的。
用于实施发明的每采样点图形处理操作也相对简单并且因此可以例如使用仅固定功能图形硬件来实施。
至少在本发明的优选的实施例中,这是通过使用用户空间中的描边曲线到投影空间的投影变换来实现的,所述投影变换使用户空间中的曲线的法线近似平行于投影空间中的期望方向。通过使法线接近平行,即使对于相对大的描边宽度,一阶近似能够产生足够准确的结果。
涉及描边曲线的投影形式的预定信息然后被导出并且以被优选编码为1D纹理的查找表的形式被存储。当渲染描边曲线进行显示时,这种纹理然后可以被采样以导出信息从而允许确定给定的采样位置是否应当被认为落在描边曲线内。